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