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