From e84705f4809b57509b8665f0b5db4fc435e08496 Mon Sep 17 00:00:00 2001 From: eight <641137800@qq.com> Date: 星期四, 10 十月 2024 16:36:59 +0800 Subject: [PATCH] 工位状态 动态查看 --- src/components/RoomStatus/src/RoomStatus.vue | 89 +++++++++++++++++++++++++++++++++----------- 1 files changed, 66 insertions(+), 23 deletions(-) diff --git a/src/components/RoomStatus/src/RoomStatus.vue b/src/components/RoomStatus/src/RoomStatus.vue index 471bf9f..417a93b 100644 --- a/src/components/RoomStatus/src/RoomStatus.vue +++ b/src/components/RoomStatus/src/RoomStatus.vue @@ -1,47 +1,83 @@ <script lang="ts" setup> -import {BedStatusVO} from "@/views/ecg/room/index"; +import { RoomApi, RoomVO } from '@/api/ecg/room' +import { QueueApi } from '@/api/ecg/queue' import {PropType} from "vue"; +import {DICT_TYPE, getIntDictOptions} from "@/utils/dict"; +const emit = defineEmits(['refresh']) defineComponent({ name: 'RoomStatus' }) -defineProps({ +const props = defineProps({ title: { type: String, required: true }, - doctorNum: { - type: Number, - required: true - }, - modelValue: { - type: Array as PropType<BedStatusVO[]>, + bedList: { + type: Array as PropType<RoomVO[]>, required: true } }) -const onclick = (item) => { - console.error(item); - item.opStatus = !item.opStatus; +let mapCheckType: Map<number, string> = new Map(); + +const openBed = async (item) => { + await QueueApi.bedOpen(item) + emit('refresh') } + +const closeBed = async (item) => { + await QueueApi.bedClose(item) + emit('refresh') +} + +const getCheckTypeList = () => { + const data = getIntDictOptions(DICT_TYPE.ECG_CHECK_TYPE) + console.info( data ) + data.forEach((checkTypeItem) => { + mapCheckType.set(checkTypeItem.value, checkTypeItem.label) + }) +} + +/** 鍒濆鍖� **/ +onMounted(() => { + getCheckTypeList() +}) </script> <template> - <el-card style="width: 180px" shadow="hover" > + <el-card style="width: 200px" shadow="hover" > <template #header>{{title}}</template> - <div v-for="(bedItem, index) in modelValue" :key="index"> - <img v-if="bedItem.opStatus" - src="@/assets/room/doctor.png" - style="width: 100%" - @click = onclick(bedItem) - /> - <img v-if="!bedItem.opStatus" - src="@/assets/room/doctor-off.jpeg" - style="width: 100%" - @click = onclick(bedItem) - /> + <div v-for="(bedItem, index) in bedList" :key="index"> + <div class="deskwarp"> + <img + v-if="bedItem.status === 0" + src="@/assets/room/close.jpg" + style="width: 100%" + @click = openBed(bedItem) + alt="宸ヤ綅宸插叧闂�" + /> + <img + v-else-if="bedItem.status === 10" + src="@/assets/room/open.jpg" + style="width: 100%" + @click = closeBed(bedItem) + alt="宸ヤ綅寮�鏀句腑" + /> + <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 v-for="(checkType, subIndex) in bedItem.checkTypes" :key="subIndex"> + {{mapCheckType.get(checkType)}} + </div> + <div> + {{bedItem.opType === 1?"棰嗙敤":""}} + </div> + </div> </div> </el-card> </template> @@ -65,4 +101,11 @@ transform: translateY(-50%); } } + +.deskwarp { + display: flex; + flex-direction: column; + align-items: center; +} + </style> -- Gitblit v1.9.3