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