<template>
|
<div style="display: flex; flex-direction: column; align-items: center;">
|
<div style="display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 20px">
|
<div class=roomwrap v-for="(value, key) in bedMap" :key="key">
|
<RoomBedSelect :title="key" :bedList="value" :curBed="curSel" @haveSeat="haveSeat"/>
|
</div>
|
</div>
|
<el-button type="primary" @click="roomConfirm">确认</el-button>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import {RoomBedSelect} from "@/components/RoomBedSelect"
|
import { RoomApi, RoomVO } from '@/api/ecg/room'
|
import { queueApi } from '@/api/ecg/queue'
|
import {useUserStore} from "@/store/modules/user";
|
import {ElMessage} from "element-plus";
|
import {isStringEmpty} from "@/utils/stringUtil"
|
const { push } = useRouter()
|
|
defineOptions({ name: 'RoomLoginSelect' })
|
|
const route = useRoute();
|
|
const userStore = useUserStore()
|
const curUser = userStore.getUser
|
|
const bedMap = ref() // 列表的数据
|
|
const originalSel = ref<RoomVO>();
|
|
let curSel = ref<RoomVO>({
|
id: 0,
|
roomId: 0,
|
roomName: "",
|
bedNo: "",
|
status: 0,
|
docId: 0,
|
docName: ""
|
});
|
|
/** 查询列表 */
|
const getList = async () => {
|
const data = await RoomApi.getOnstageBedMap()
|
bedMap.value = data;
|
|
for (const key in data) {
|
const roomVOArray = data[key] as RoomVO[];
|
roomVOArray.forEach((roomVO) => {
|
if (roomVO.docId === curUser.id) {
|
originalSel.value = roomVO
|
curSel.value = roomVO
|
return
|
}
|
} )
|
}
|
}
|
|
const roomConfirm = async () => {
|
console.info(curSel.value)
|
|
if (curSel.value.roomId === 0) {
|
ElMessage({
|
message: '请先选择工作的位置!',
|
type: 'info',
|
duration: 3000 // 自动关闭时间,默认为3000ms
|
});
|
return
|
}
|
|
if (curSel.value !== originalSel.value) {
|
console.info(originalSel.value)
|
let data;
|
if (originalSel.value !== undefined) {
|
data = await queueApi.bedDoctorOff(originalSel.value)
|
if (data !== 0) {
|
ElMessage({
|
message: '内部错误!' + data,
|
type: 'info',
|
duration: 3000 // 自动关闭时间,默认为3000ms
|
});
|
return
|
}
|
}
|
data = await queueApi.bedDoctorOn(curSel.value)
|
if (data !== 0) {
|
ElMessage({
|
message: '内部错误!' + data,
|
type: 'info',
|
duration: 3000 // 自动关闭时间,默认为3000ms
|
});
|
return
|
}
|
originalSel.value = curSel.value
|
}
|
|
userStore.setRoomInfoAction(curSel.value)
|
if (isStringEmpty(route.redirectedFrom?.fullPath))
|
push({ path: "/"})
|
else if(route.redirectedFrom?.fullPath === "/roomselect" )
|
push({ path: "/"})
|
else
|
push({ path: route.redirectedFrom?.fullPath})
|
}
|
|
const haveSeat = (roomVO: RoomVO) => {
|
console.info(roomVO)
|
|
curSel.value.docId = null
|
curSel.value.docName = ''
|
|
roomVO.docId = curUser.id
|
roomVO.docName = curUser.nickname
|
curSel.value = roomVO
|
}
|
|
/** 初始化 **/
|
onMounted(() => {
|
getList()
|
})
|
|
</script>
|
|
<style scoped lang="scss">
|
.roomwrap {
|
margin-right: 20px;
|
}
|
</style>
|