From 8c32dcc482ce7691f58d1315c3fe212491f54e1f Mon Sep 17 00:00:00 2001
From: eight <641137800@qq.com>
Date: 星期三, 09 四月 2025 12:00:35 +0800
Subject: [PATCH] 叫号屏数据调整   监控信息调整

---
 src/api/ecg/room/index.ts                  |   14 ++-
 src/views/ecg/room/RoomSetting.vue         |   10 +-
 src/api/ecg/screen/index.ts                |    8 +
 src/views/ecg/callingscreen/bigscreen.vue  |   20 ++--
 src/views/ecg/callingscreen/roomscreen.vue |  148 +++++++++++++++++++++++++-----------
 5 files changed, 133 insertions(+), 67 deletions(-)

diff --git a/src/api/ecg/room/index.ts b/src/api/ecg/room/index.ts
index e99915e..6e527b9 100644
--- a/src/api/ecg/room/index.ts
+++ b/src/api/ecg/room/index.ts
@@ -15,9 +15,9 @@
 }
 
 export interface MonitorInfo {
-  queueNum : number
-  activeQueueNum : number
-  priorityQueueNum : number
+  openingBedNum : number
+  docBedNum : number
+  routingBedNum : number
   openingFlag : number
   checkTypeBedInfo: object
 }
@@ -35,8 +35,12 @@
   },
 
   // 鏌ヨ璇婂鍜岃瘖鐤楀簥璇︽儏
-  getRoomByIP: async () => {
-    return await request.get({ url: `/clinic/room/get-room-by-ip`})
+  getRoomByIP: async (roomId :number) => {
+    if (!roomId || roomId === 0) {
+      return await request.get({url: `/clinic/room/get-room-by-ip`})
+    }
+
+    return await request.get({url: `/clinic/room/get-room-by-ip?roomId=` + roomId})
   },
 
   // 鏂板璇婂鍜岃瘖鐤楀簥
diff --git a/src/api/ecg/screen/index.ts b/src/api/ecg/screen/index.ts
index a7d8913..249602a 100644
--- a/src/api/ecg/screen/index.ts
+++ b/src/api/ecg/screen/index.ts
@@ -21,8 +21,12 @@
 // 鍙彿灞� API
 export const ScreenApi = {
   //
-  getRoomScreenData: async () => {
-    return await request.get({ url: `/ecg/screen/room-screen-data` })
+  getRoomScreenData: async (roomId :number) => {
+    if (!roomId || roomId === 0) {
+      return await request.get({ url: `/ecg/screen/room-screen-data` })
+    } else
+
+    return await request.get({ url: `/ecg/screen/room-screen-data?roomId=` + roomId })
   },
 
   getBigScreenData: async () => {
diff --git a/src/views/ecg/callingscreen/bigscreen.vue b/src/views/ecg/callingscreen/bigscreen.vue
index 8411ae9..a253078 100644
--- a/src/views/ecg/callingscreen/bigscreen.vue
+++ b/src/views/ecg/callingscreen/bigscreen.vue
@@ -9,9 +9,9 @@
 
 const checkTypeStore = useCheckTypeStore()
 
-const displayColInfo = ref({})
+const displayColInfo = ref<Map<number, String[]>>(new Map())
 
-const list = ref({});
+const mapColumnVsPatients = ref<Map<number, ScreenQueueVO[]>>(new Map());
 
 let curSpeakPat : CallVO | null = null;
 
@@ -22,7 +22,7 @@
 
 const getList = async () => {
   const data = await ScreenApi.getBigScreenData()
-  list.value = data;
+  mapColumnVsPatients.value = data;
 }
 
 const startScrolling = () => {
@@ -112,14 +112,12 @@
       </div>
     </div>
     <div style="display:flex; justify-content:space-around; align-items: flex-start; flex-grow: 1; font-size: 20px">
-      <div v-for="[disColId2, mapSlot] of Object.entries(list)" :key="disColId2" style="width: 300px; height: 100%; border-left: solid 2px var(--el-color-primary-light-7) ">
-        <div v-for="[slotId, slotQueue] of Object.entries(mapSlot)" :key="slotId">
-          <div v-for="(item, index) in slotQueue" :key="index" :class="getItemCssClass(item)">
-            <span style="display:inline-block; width:60px;">{{checkTypeStore.getCheckTypeSeqPrefix(item.bookCheckType)}}{{item.bookSeqNum}}</span>
-            <span style="display:inline-block; width:80px;">{{ nameDesensitize(item.patName) }} </span>
-            <span style="display:inline-block; width:80px;">{{queueStatusConvert(item.status)}} </span>
-            {{item.roomName}}
-          </div>
+      <div v-for="[disColId2, columnPatientList] of Object.entries(mapColumnVsPatients)" :key="disColId2" style="width: 300px; height: 100%; border-left: solid 2px var(--el-color-primary-light-7) ">
+        <div v-for="(item, index) in columnPatientList" :key="index" :class="getItemCssClass(item)">
+          <span style="display:inline-block; width:60px;">{{checkTypeStore.getCheckTypeSeqPrefix(item.bookCheckType)}}{{item.bookSeqNum}}</span>
+          <span style="display:inline-block; width:80px;">{{ nameDesensitize(item.patName) }} </span>
+          <span style="display:inline-block; width:80px;">{{queueStatusConvert(item.status)}} </span>
+          {{item.roomName}} {{item.bedNo}}
         </div>
       </div>
     </div>
diff --git a/src/views/ecg/callingscreen/roomscreen.vue b/src/views/ecg/callingscreen/roomscreen.vue
index 3ae2ead..530c0a3 100644
--- a/src/views/ecg/callingscreen/roomscreen.vue
+++ b/src/views/ecg/callingscreen/roomscreen.vue
@@ -8,24 +8,25 @@
 import {useCheckTypeStore} from "@/store/modules/checkType";
 
 defineOptions({ name: 'roomscreen' })
+let roomId = ref<number>(0)
 
 const checkTypeStore = useCheckTypeStore()
 
-const list = ref<ScreenQueueVO[]>([]) // 鍒楄〃鐨勬暟鎹�
-//const listPassed = ref<ScreenQueueVO[]>([]) // 杩囧彿鍒楄〃鐨勬暟鎹�
+const checkRelatedPatientList = ref<ScreenQueueVO[]>([])
+const installRelatedPatientList = ref<ScreenQueueVO[]>([])
 
 let curSpeakPat : CallVO | null = null;
 
 const roomProfile = ref<RoomProfileVO>()
 
 const getList = async () => {
-  const data = await ScreenApi.getRoomScreenData()
-  list.value = data[1]
-  // listPassed.value = data[2]
+  const data = await ScreenApi.getRoomScreenData(roomId.value)
+  checkRelatedPatientList.value = data[1]
+  installRelatedPatientList.value = data[2]
 }
 
 const getRoomByIp = async () => {
-  const data = await RoomApi.getRoomByIP()
+  const data = await RoomApi.getRoomByIP(roomId.value)
   roomProfile.value = data
 }
 
@@ -101,51 +102,97 @@
 
 <template>
   <el-container style="height: 100%;">
-    <el-header style="font-size: 25px">{{ roomProfile.roomName }}</el-header>
+    <el-header style="font-size: 25px">
+      {{ roomProfile?.roomName||'-' }}
+      <el-input-number v-model="roomId"  @change="getRoomByIp" />
+    </el-header>
     <el-main>
-      <el-table
-          :data="list"
-          :show-header="false"
-          style="width: 100%; height: 100%; border: solid var(--el-color-primary-light-7); font-size: 18px;"
-          :row-class-name="tableRowClassName"
-      >
-        <el-table-column
-            prop="patName"
-            label="棰勭害搴忓彿"
-            width="60px">
-          <template #default="scope">
-            <span style="display:inline-block; width:60px;">{{checkTypeStore.getCheckTypeSeqPrefix(scope.row.bookCheckType)}}{{scope.row.bookSeqNum}} </span>
-          </template>
-        </el-table-column>
-        <el-table-column
-            prop="patName"
-            label="鎮h�呭鍚�"
-            width="80px">
-          <template #default="scope">
-            <span style="display:inline-block; width:80px;">{{ nameDesensitize(scope.row.patName) }} </span>
-          </template>
-        </el-table-column>
-        <el-table-column
-            prop="patName"
-            label="妫�鏌ラ」鐩�"
-            width="80px">
-          <template #default="scope">
-            <span style="display:inline-block; width:80px;">{{scope.row.bookCheckType && checkTypeStore.getCheckTypeName(scope.row.bookCheckType)}} </span>
-          </template>
-        </el-table-column>
-        <el-table-column label="鐘舵��" align="center" width="100px">
-          <template #default="scope">
-<!--            <dict-tag :type="DICT_TYPE.ECG_QUEUE_STATUS" :value="scope.row.status" />-->
-            {{queueStatusConvert(scope.row.status)}}
-          </template>
-        </el-table-column>
-      </el-table>
+      <div class="layout-content">
+        <div class="left">
+          <el-table
+              :data="checkRelatedPatientList"
+              :show-header="false"
+              style="width: 100%; height: 100%; border: solid var(--el-color-primary-light-7); font-size: 18px;"
+              :row-class-name="tableRowClassName"
+          >
+            <el-table-column
+                prop="patName"
+                label="棰勭害搴忓彿"
+                width="60px">
+              <template #default="scope">
+                <span style="display:inline-block; width:60px;">{{checkTypeStore.getCheckTypeSeqPrefix(scope.row.bookCheckType)}}{{scope.row.bookSeqNum}} </span>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="patName"
+                label="鎮h�呭鍚�"
+                width="80px">
+              <template #default="scope">
+                <span style="display:inline-block; width:80px;">{{ nameDesensitize(scope.row.patName) }} </span>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="patName"
+                label="妫�鏌ラ」鐩�"
+                width="80px">
+              <template #default="scope">
+                <span style="display:inline-block; width:80px;">{{scope.row.bookCheckType && checkTypeStore.getCheckTypeName(scope.row.bookCheckType)}} </span>
+              </template>
+            </el-table-column>
+            <el-table-column label="鐘舵��" align="center" width="200px">
+              <template #default="scope">
+                <!--            <dict-tag :type="DICT_TYPE.ECG_QUEUE_STATUS" :value="scope.row.status" />-->
+                {{queueStatusConvert(scope.row.status)}} {{scope.row.bedNo}}
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+        <div class="right">
+          <el-table
+              :data="installRelatedPatientList"
+              :show-header="false"
+              style="width: 100%; height: 100%; border: solid var(--el-color-primary-light-7); font-size: 18px;"
+              :row-class-name="tableRowClassName"
+          >
+            <el-table-column
+                prop="patName"
+                label="棰勭害搴忓彿"
+                width="60px">
+              <template #default="scope">
+                <span style="display:inline-block; width:60px;">{{checkTypeStore.getCheckTypeSeqPrefix(scope.row.bookCheckType)}}{{scope.row.bookSeqNum}} </span>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="patName"
+                label="鎮h�呭鍚�"
+                width="80px">
+              <template #default="scope">
+                <span style="display:inline-block; width:80px;">{{ nameDesensitize(scope.row.patName) }} </span>
+              </template>
+            </el-table-column>
+            <el-table-column
+                prop="patName"
+                label="妫�鏌ラ」鐩�"
+                width="80px">
+              <template #default="scope">
+                <span style="display:inline-block; width:80px;">{{scope.row.bookCheckType && checkTypeStore.getCheckTypeName(scope.row.bookCheckType)}} </span>
+              </template>
+            </el-table-column>
+            <el-table-column label="鐘舵��" align="center" width="200px">
+              <template #default="scope">
+                <!--            <dict-tag :type="DICT_TYPE.ECG_QUEUE_STATUS" :value="scope.row.status" />-->
+                {{queueStatusConvert(scope.row.status)}} {{scope.row.bedNo}}
+              </template>
+            </el-table-column>
+          </el-table>
+        </div>
+      </div>
     </el-main>
     <el-button @click="speak('娆㈣繋浣跨敤')" >娆㈣繋浣跨敤</el-button>
 <!--
     <el-footer height="100px" style="padding: 0 0">
           <el-header height="30px" style="background-color: #98b8e5; line-height: 30px;">杩囧彿鍖�</el-header>
-          <span v-for="(passedItem, index) in listPassed" :key="index">
+          <span v-for="(passedItem, index) in installRelatedPatientList" :key="index">
                 {{nameDesensitize(passedItem.patName) + "&nbsp;&nbsp;&nbsp;&nbsp;"}}
           </span>
     </el-footer>
@@ -183,4 +230,15 @@
   --el-table-tr-bg-color: var(--el-color-success-light-9);
 }
 
+.layout-content {
+  display: flex;
+  height: 100%;
+}
+
+.left, .right {
+  flex: 1;
+  border: 1px solid #ccc;
+  padding: 10px;
+}
+
 </style>
diff --git a/src/views/ecg/room/RoomSetting.vue b/src/views/ecg/room/RoomSetting.vue
index 7e79a0c..b736add 100644
--- a/src/views/ecg/room/RoomSetting.vue
+++ b/src/views/ecg/room/RoomSetting.vue
@@ -16,10 +16,12 @@
     </el-main>
     <el-aside width="250px">
       <div>寮�璇婃椂闂达細{{ openingPeriod }}  {{ monitorInfo.openingFlag }}  </div>
-      <div>宸ヤ綅姒傚喌锛� {{monitorInfo.queueNum}} {{monitorInfo.activeQueueNum}} {{monitorInfo.priorityQueueNum}} </div>
+      <div>宸ヤ綅姒傚喌锛� {{monitorInfo.openingBedNum}} {{monitorInfo.docBedNum}} {{monitorInfo.routingBedNum}} </div>
       <div v-for="(value, key) in monitorInfo.checkTypeBedInfo" :key="key">
         {{ checkTypeStore.getCheckTypeName(Number(key)) }}  {{ value }}
       </div>
+      <div>宸ヤ綅姒傚喌锛氬紑鏀剧殑宸ヤ綅  鏈夊尰鐢熷伐浣�  鍙備笌鍒嗘祦宸ヤ綅</div>
+      <div>妫�鏌ョ被鍨� 寮�鏀剧殑宸ヤ綅 (妫�鏌�/棰嗙敤 | 瀹夎)  鏈夊尰鐢熷伐浣� (妫�鏌�/棰嗙敤 | 瀹夎)</div>
     </el-aside>
   </el-container>
 </template>
@@ -37,9 +39,9 @@
 
 const openingPeriod = ref<string>('')
 const monitorInfo = ref<MonitorInfo>({
-  queueNum: 0,
-  activeQueueNum: 0,
-  priorityQueueNum: 0,
+  openingBedNum: 0,
+  docBedNum: 0,
+  routingBedNum: 0,
   openingFlag: 0,
   checkTypeBedInfo: {}
 })

--
Gitblit v1.9.3