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) + " "}} </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