From 2d093a888b13f7a020b5923da571733edea7affa Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期二, 27 八月 2024 14:20:15 +0800 Subject: [PATCH] update --- src/router/modules/remaining.ts | 2 src/views/ecg/room/RoomLoginSelect.vue | 51 +++++++++------- src/api/ecg/room/index.ts | 2 src/views/ecg/room/RoomStatusSetting.vue | 2 src/components/RoomBedSelect/src/RoomBedSelect.vue | 34 ++++++---- src/components/RoomStatus/src/RoomStatus.vue | 40 ++++++++----- src/permission.ts | 2 7 files changed, 76 insertions(+), 57 deletions(-) diff --git a/src/api/ecg/room/index.ts b/src/api/ecg/room/index.ts index 6afabde..897a121 100644 --- a/src/api/ecg/room/index.ts +++ b/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 } diff --git a/src/components/RoomBedSelect/src/RoomBedSelect.vue b/src/components/RoomBedSelect/src/RoomBedSelect.vue index 040ed22..9fc6b2c 100644 --- a/src/components/RoomBedSelect/src/RoomBedSelect.vue +++ b/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> diff --git a/src/components/RoomStatus/src/RoomStatus.vue b/src/components/RoomStatus/src/RoomStatus.vue index c002b6f..2bd0145 100644 --- a/src/components/RoomStatus/src/RoomStatus.vue +++ b/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> diff --git a/src/permission.ts b/src/permission.ts index 6db7476..748c7d4 100644 --- a/src/permission.ts +++ b/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 { diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index f81f347..f5e2d94 100644 --- a/src/router/modules/remaining.ts +++ b/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: { diff --git a/src/views/ecg/room/RoomLoginSelect.vue b/src/views/ecg/room/RoomLoginSelect.vue index 93d6817..84960c6 100644 --- a/src/views/ecg/room/RoomLoginSelect.vue +++ b/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 } /** 鍒濆鍖� **/ diff --git a/src/views/ecg/room/RoomStatusSetting.vue b/src/views/ecg/room/RoomStatusSetting.vue index 48a9a99..d33712a 100644 --- a/src/views/ecg/room/RoomStatusSetting.vue +++ b/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> -- Gitblit v1.9.3