From d9e041b1020bebbfdaaa66141d94399340f88a17 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期二, 27 八月 2024 09:11:24 +0800 Subject: [PATCH] update --- src/views/ecg/room/RoomLoginSelect.vue | 49 ++++++++++++++- src/api/ecg/room/index.ts | 5 + src/components/RoomBedSelect/src/RoomBedSelect.vue | 11 ++- src/assets/room/open.jpg | 0 src/components/RoomStatus/src/RoomStatus.vue | 27 +++++---- src/api/ecg/queue/index.ts | 30 ++++++++- 6 files changed, 95 insertions(+), 27 deletions(-) diff --git a/src/api/ecg/queue/index.ts b/src/api/ecg/queue/index.ts index 1a82dea..8a4b317 100644 --- a/src/api/ecg/queue/index.ts +++ b/src/api/ecg/queue/index.ts @@ -55,14 +55,34 @@ return await request.download({ url: `/ecg/queue/export-excel`, params }) }, - // 鍒濆鍖栭槦鍒椾俊鎭紝鐢ㄤ簬寮�璇婅缃� - openingSetting: async () => { - return await request.get({ url: `/ecg/queue/opening-setting` }) - }, - // 鎵嬪姩寮�璇� startBiz: async () => { return await request.get({ url: `/ecg/queue/startbiz` }) + }, + + // 宸ヤ綅寮�閫� + bedOpen: async (params) => { + return await request.get({ url: `/ecg/queue/bed-open`, params }) + }, + + // 宸ヤ綅鍏抽棴 + bedClose: async (params) => { + return await request.get({ url: `/ecg/queue/bed-close`, params }) + }, + + // 鍖荤敓鏆傚仠锛屾帴鏀舵偅鑰� + bedDoctorPause: async (params) => { + return await request.get({ url: `/ecg/queue/bed-doctor-pause`, params }) + }, + + // 鍖荤敓鍏ュ骇锛� + bedDoctorOn: async (params) => { + return await request.get({ url: `/ecg/queue/bed-doctor-on`, params }) + }, + + // 鍖荤敓绂诲骇锛� + bedDoctorOff: async (params) => { + return await request.get({ url: `/ecg/queue/bed-doctor-off`, params }) } } diff --git a/src/api/ecg/room/index.ts b/src/api/ecg/room/index.ts index a18ae8f..6afabde 100644 --- a/src/api/ecg/room/index.ts +++ b/src/api/ecg/room/index.ts @@ -6,8 +6,9 @@ roomId: number // 璇婂缂栧彿 roomName: string // 璇婂鍚嶇О bedNo: string // 璇婄枟搴婄紪鍙� - status: number //寮�璇婄姸鎬� - doctor_name: string //鍖荤敓鍚� + status: number //寮�璇婄姸鎬� 0-鍏抽棴 1-鍏抽棴涓� 10-宸插紑閫� 20-鏈夊尰鐢� 30-鏆傚仠 + docId: number + docName: string } // 璇婂鍜岃瘖鐤楀簥 API diff --git a/src/assets/room/open.jpg b/src/assets/room/open.jpg new file mode 100644 index 0000000..ec80267 --- /dev/null +++ b/src/assets/room/open.jpg Binary files differ diff --git a/src/components/RoomBedSelect/src/RoomBedSelect.vue b/src/components/RoomBedSelect/src/RoomBedSelect.vue index d14bca6..c62a4cd 100644 --- a/src/components/RoomBedSelect/src/RoomBedSelect.vue +++ b/src/components/RoomBedSelect/src/RoomBedSelect.vue @@ -1,6 +1,7 @@ <script lang="ts" setup> import { RoomApi, RoomVO } from '@/api/ecg/room' import {PropType} from "vue"; +import {useUserStore} from "@/store/modules/user"; defineComponent({ name: 'RoomBedSelect' @@ -21,6 +22,9 @@ } }) +const userStore = useUserStore() +const curUser = userStore.getUser + const emit = defineEmits<{ (e: 'update:modelValue', message: string): void; }>(); @@ -39,14 +43,15 @@ <img v-if="modelValue.roomId !== bedItem.roomId || modelValue.bedNo !== bedItem.bedNo" src="@/assets/room/desk.png" style="width: 100%" - @click = onclick(bedItem) /> <img v-else src="@/assets/room/desk-doctor.jpeg" style="width: 100%" - @click = onclick(bedItem) /> - <div>{{bedItem.bedNo}}</div> + <div>{{bedItem.bedNo}} - {{bedItem.docName}}</div> + <el-button v-if="modelValue.docId === 0" @click = onclick(bedItem)> + 鍏ュ骇 + </el-button> </div> </div> </el-card> diff --git a/src/components/RoomStatus/src/RoomStatus.vue b/src/components/RoomStatus/src/RoomStatus.vue index a240b8c..9344db1 100644 --- a/src/components/RoomStatus/src/RoomStatus.vue +++ b/src/components/RoomStatus/src/RoomStatus.vue @@ -1,5 +1,6 @@ <script lang="ts" setup> import { RoomApi, RoomVO } from '@/api/ecg/room' +import { queueApi } from '@/api/ecg/queue' import {PropType} from "vue"; @@ -18,9 +19,12 @@ } }) -const onclick = async (item) => { - item.status = !item.status; - await RoomApi.updateRoom(item) +const openBed = async (item) => { + await queueApi.bedOpen(item) +} + +const closeBed = async (item) => { + await queueApi.bedClose(item) } </script> @@ -29,22 +33,21 @@ <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" + <img v-if="bedItem.status === 0 || bedItem.status === 1" src="@/assets/room/close.jpg" style="width: 100%" - @click = onclick(bedItem) + @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%" - @click = onclick(bedItem) /> - <img v-else-if="bedItem.status === 20" - src="@/assets/room/doctor-off.jpeg" - style="width: 100%" - @click = onclick(bedItem) - /> - {{bedItem.bedNo}} - {{bedItem.doctor_name}} + {{bedItem.bedNo}} - {{bedItem.docName}} - {{bedItem.status === 30?"鏆傚仠":""}} </div> </el-card> </template> diff --git a/src/views/ecg/room/RoomLoginSelect.vue b/src/views/ecg/room/RoomLoginSelect.vue index 8c30904..1498718 100644 --- a/src/views/ecg/room/RoomLoginSelect.vue +++ b/src/views/ecg/room/RoomLoginSelect.vue @@ -13,6 +13,7 @@ <script setup lang="ts"> import {RoomBedSelect} from "@/components/RoomBedSelect" import { RoomApi, RoomVO } from '@/api/ecg/room' +import { queueApi, queueVO } from '@/api/ecg/queue' import {useUserStore} from "@/store/modules/user"; import {CACHE_KEY, useCache} from "@/hooks/web/useCache"; import {ElMessage} from "element-plus"; @@ -26,24 +27,48 @@ const route = useRoute(); const userStore = useUserStore() +const curUser = userStore.getUser -const bedMap = ref<Map<String, RoomVO[]>>() // 鍒楄〃鐨勬暟鎹� +const bedMap = ref<Map<string, RoomVO[]>>() // 鍒楄〃鐨勬暟鎹� + +const originalSel = ref<RoomVO>({ + id: 0, + roomId: 0, + roomName: "", + bedNo: "", + status: 0, + docId: 0, + docName: "" +}); const curSel = ref<RoomVO>({ id: 0, roomId: 0, roomName: "", bedNo: "", - onstage: true - }); + status: 0, + docId: 0, + docName: "" +}); /** 鏌ヨ鍒楄〃 */ const getList = async () => { const data = await RoomApi.getOnstageBedMap() - bedMap.value = data as Map<String, RoomVO[]> + 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 = () => { +const roomConfirm = async () => { console.info(curSel.value) if (curSel.value.roomId === 0) { @@ -55,9 +80,23 @@ return } + if (curSel.value !== originalSel.value) { + const data = await queueApi.bedDoctorOn(curSel.value) + if (data !== 0) { + ElMessage({ + message: '鍐呴儴閿欒!' + data, + type: 'info', + duration: 3000 // 鑷姩鍏抽棴鏃堕棿锛岄粯璁や负3000ms + }); + return + } + } + userStore.setRoomInfoAction(curSel.value) if (isStringEmpty(route.redirectedFrom?.fullPath)) push({ path: "/"}) + else if(route.redirectedFrom?.fullPath === "/login-room-select" ) + push({ path: "/"}) else push({ path: route.redirectedFrom?.fullPath}) } -- Gitblit v1.9.3