src/api/ecg/room/index.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/RoomBedSelect/src/RoomBedSelect.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/RoomStatus/src/RoomStatus.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/permission.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/router/modules/remaining.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/room/RoomLoginSelect.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/ecg/room/RoomStatusSetting.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/ecg/room/index.ts
@@ -7,7 +7,7 @@ roomName: string // 诊室名称 bedNo: string // 诊疗床编号 status: number //开诊状态 0-关闭 1-关闭中 10-已开通 20-有医生 30-暂停 docId: number docId: number | null docName: string } src/components/RoomBedSelect/src/RoomBedSelect.vue
@@ -2,6 +2,7 @@ import { RoomApi, RoomVO } from '@/api/ecg/room' import {PropType} from "vue"; import {useUserStore} from "@/store/modules/user"; const emit = defineEmits(['haveSeat']) defineComponent({ name: 'RoomBedSelect' @@ -16,7 +17,7 @@ type: Array as PropType<RoomVO[]>, required: true }, modelValue: { curBed: { type: Object as PropType<RoomVO>, required: true } @@ -25,15 +26,18 @@ const userStore = useUserStore() const curUser = userStore.getUser const emit = defineEmits<{ (e: 'update:modelValue', message: string): void; }>(); // const emit2 = defineEmits<{ // (e: 'update:curBed', message: string): void; // }>(); const onclick = (item) => { item.docId = curUser.id item.docName = curUser.nickname emit('update:modelValue', item); const onclick = (newItem) => { emit('haveSeat', newItem) } /** 初始化 **/ onMounted(() => { console.info(props.bedList) }) </script> @@ -42,16 +46,18 @@ <template #header>{{title}}</template> <div v-for="(bedItem, index) in bedList" :key="index"> <div class="deskwarp"> <img v-if="modelValue.roomId !== bedItem.roomId || modelValue.bedNo !== bedItem.bedNo" <img v-if="curBed.roomId !== bedItem.roomId || curBed.bedNo !== bedItem.bedNo" src="@/assets/room/desk.png" style="width: 100%" style="width: 100%" /> <img v-else <img v-else src="@/assets/room/desk-doctor.jpeg" style="width: 100%" style="width: 100%" /> <div>{{bedItem.bedNo}} - {{bedItem.docName}}</div> <el-button v-if="modelValue.docId === 0" @click = onclick(bedItem)> <div>{{bedItem.bedNo}} {{bedItem.docName}}</div> <el-button v-if="bedItem.docId === null" @click = onclick(bedItem)> 入座 </el-button> </div> src/components/RoomStatus/src/RoomStatus.vue
@@ -2,7 +2,6 @@ import { RoomApi, RoomVO } from '@/api/ecg/room' import { queueApi } from '@/api/ecg/queue' import {PropType} from "vue"; import {defineEmits} from 'vue' const emit = defineEmits(['refresh']) defineComponent({ @@ -36,21 +35,23 @@ <el-card style="width: 200px" shadow="hover" > <template #header>{{title}}</template> <div v-for="(bedItem, index) in bedList" :key="index"> <img v-if="bedItem.status === 0 || bedItem.status === 1" src="@/assets/room/close.jpg" style="width: 100%" @click = openBed(bedItem) /> <img v-else-if="bedItem.status === 10" src="@/assets/room/open.jpg" style="width: 100%" @click = closeBed(bedItem) /> <img v-else-if="bedItem.status === 20 || bedItem.status === 30" src="@/assets/room/doctor.png" style="width: 100%" /> {{bedItem.bedNo}} - {{bedItem.docName}} - {{bedItem.status === 30?"暂停":""}} <div class="deskwarp"> <img v-if="bedItem.status === 0 || bedItem.status === 1" src="@/assets/room/close.jpg" style="width: 100%" @click = openBed(bedItem) /> <img v-else-if="bedItem.status === 10" src="@/assets/room/open.jpg" style="width: 100%" @click = closeBed(bedItem) /> <img v-else-if="bedItem.status === 20 || bedItem.status === 30" src="@/assets/room/doctor.png" style="width: 100%" /> {{bedItem.bedNo}} {{bedItem.docName}} {{bedItem.status === 30?"-暂停":""}} </div> </div> </el-card> </template> @@ -74,4 +75,11 @@ transform: translateY(-50%); } } .deskwarp { display: flex; flex-direction: column; align-items: center; } </style> src/permission.ts
@@ -83,7 +83,7 @@ // 新增【诊室选择】逻辑 if (userStore.getRoles.includes("doctor") && !userStore.getIsSetRoom ) { next({path: `/login-room-select?redirect=${to.fullPath}`}) next({path: `/roomselect?redirect=${to.fullPath}`}) } // <<<【诊室选择】<<< else { src/router/modules/remaining.ts
@@ -205,7 +205,7 @@ } }, { path: '/login-room-select', path: '/roomselect', component: () => import('@/views/ecg/room/RoomLoginSelect.vue'), name: 'LoginRoomSelect', meta: { src/views/ecg/room/RoomLoginSelect.vue
@@ -2,25 +2,21 @@ <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" v-model="curSel"/> <RoomBedSelect :title="key" :bedList="value" :curBed="curSel" @haveSeat="haveSeat"/> </div> </div> <el-button type="primary" @click="roomConfirm">确认</el-button> <el-button type="primary" @click="test">TEST</el-button> </div> </template> <script setup lang="ts"> import {RoomBedSelect} from "@/components/RoomBedSelect" import { RoomApi, RoomVO } from '@/api/ecg/room' import { queueApi, queueVO } from '@/api/ecg/queue' import { queueApi } from '@/api/ecg/queue' import {useUserStore} from "@/store/modules/user"; import {CACHE_KEY, useCache} from "@/hooks/web/useCache"; import {ElMessage} from "element-plus"; import {isStringEmpty} from "@/utils/stringUtil" const { push } = useRouter() const { wsCache } = useCache() defineOptions({ name: 'RoomLoginSelect' }) @@ -31,17 +27,9 @@ const bedMap = ref() // 列表的数据 const originalSel = ref<RoomVO>({ id: 0, roomId: 0, roomName: "", bedNo: "", status: 0, docId: 0, docName: "" }); const originalSel = ref<RoomVO>(); const curSel = ref<RoomVO>({ let curSel = ref<RoomVO>({ id: 0, roomId: 0, roomName: "", @@ -81,7 +69,20 @@ } if (curSel.value !== originalSel.value) { const data = await queueApi.bedDoctorOn(curSel.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, @@ -90,23 +91,27 @@ }); return } originalSel.value = curSel.value } userStore.setRoomInfoAction(curSel.value) if (isStringEmpty(route.redirectedFrom?.fullPath)) push({ path: "/"}) else if(route.redirectedFrom?.fullPath === "/login-room-select" ) else if(route.redirectedFrom?.fullPath === "/roomselect" ) push({ path: "/"}) else push({ path: route.redirectedFrom?.fullPath}) } const test = () => { userStore.getRoom; console.info(userStore.getRoom); const haveSeat = (roomVO: RoomVO) => { console.info(roomVO) const userInfo = wsCache.get(CACHE_KEY.USER) console.info(userInfo); curSel.value.docId = null curSel.value.docName = '' roomVO.docId = curUser.id roomVO.docName = curUser.nickname curSel.value = roomVO } /** 初始化 **/ src/views/ecg/room/RoomStatusSetting.vue
@@ -1,5 +1,5 @@ <template> <div style="display: flex; flex-wrap: wrap; margin-bottom: 20px"> <div style="display: flex; flex-wrap: wrap; justify-content: center; margin-bottom: 20px"> <div class=wrap v-for="(value, key) in bedMap" :key="key"> <RoomStatus :title="key" :bedList="value" @refresh="getList"/> </div>