From d553a4be94d4f6ee162cc353a28b220403909cfc Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期六, 03 十月 2026 00:58:19 +0800
Subject: [PATCH] ai优化
---
src/components/RoomStatus/src/RoomStatus.vue | 179 ++++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 127 insertions(+), 52 deletions(-)
diff --git a/src/components/RoomStatus/src/RoomStatus.vue b/src/components/RoomStatus/src/RoomStatus.vue
index 53c06d4..e15d596 100644
--- a/src/components/RoomStatus/src/RoomStatus.vue
+++ b/src/components/RoomStatus/src/RoomStatus.vue
@@ -1,17 +1,22 @@
<script lang="ts" setup>
import { RoomApi, RoomVO } from '@/api/ecg/room'
import { QueueApi } from '@/api/ecg/queue'
-import {PropType} from "vue";
-import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
-import {useCheckTypeStore} from "@/store/modules/checkType";
-import {getCheckTypeName} from "../../../utils/checkTypeFormatter";
+import { PropType } from "vue";
+import { DICT_TYPE, getIntDictOptions } from "@/utils/dict";
+import { useCheckTypeStore } from "@/store/modules/checkType";
+import { getCheckTypeName } from "../../../utils/checkTypeFormatter";
+// 鍔ㄦ�� :src 涓嶄細琚� Vite 鑷姩澶勭悊锛岄渶瑕佹樉寮� import锛堜笌 RoomBedSelect 涓�鑷达級
+import closeImg from '@/assets/room/close.jpg'
+import openImg from '@/assets/room/open.jpg'
+import doctorImg from '@/assets/room/desk-doctor.jpg'
+
const emit = defineEmits(['refresh'])
defineComponent({
name: 'RoomStatus'
})
-const props = defineProps({
+const props = defineProps({
title: {
type: String,
required: true
@@ -34,6 +39,19 @@
emit('refresh')
}
+/**
+ * 宸ヤ綅鐘舵�佸浘銆備笌銆岃瘖瀹ら�夋嫨銆嶉〉 (RoomBedSelect) 鐢ㄥ悓涓�濂楄祫婧愪笌灏哄锛�
+ * 鏈紑鏀�(0) 鈫� close.jpg
+ * 宸插紑鏀�(10) 鈫� open.jpg
+ * 鏈夊尰鐢�(20/30) 鈫� desk-doctor.jpg
+ */
+const bedImg = (item: any) => {
+ const st = Number(item?.status)
+ if (st === 20 || st === 30) return doctorImg
+ if (st === 10) return openImg
+ return closeImg
+}
+
/** 鍒濆鍖� **/
onMounted(() => {
})
@@ -41,66 +59,123 @@
</script>
<template>
- <el-card style="width: 200px" shadow="hover" >
- <template #header>{{title}}</template>
- <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">
- {{getCheckTypeName(checkType)}}
- </div>
- <div>
- {{bedItem.opType === 1?"棰嗙敤":""}}
- {{bedItem.opType === 2?"瀹夎":""}}
- </div>
- <el-divider/>
+ <!--
+ 闇�姹傦細鏈〉鍗$墖鏀规垚涓庛�岃瘖瀹ら�夋嫨銆嶉〉涓�鑷寸殑鏍峰紡銆�
+ 鍥犳杩欓噷鐨勬帓鐗�/瀛楀彿/鍥剧墖灏哄/闂磋窛**閫愰」瀵归綈** components/RoomBedSelect/src/RoomBedSelect.vue锛�
+ 路 鍗$墖澶达細灞呬腑銆乸adding 6px 10px銆佹爣棰� 16px/600
+ 路 鍗$墖浣擄細绾靛悜鎺掑垪銆佹按骞冲眳涓�乬ap 4px銆乸adding 10px
+ 路 鍥剧墖锛�80脳64銆乷bject-fit contain
+ 路 涓绘爣绛撅紙搴婁綅鍙�+鍖荤敓鍚嶏級锛�15px/600銆佸眳涓�
+ 路 妫�鏌ラ」鐩瓑娆¤淇℃伅锛�14px銆佹瑕佽壊銆佸眳涓�佸彲鎹㈣
+ 鍖哄埆锛氳瘖瀹ら�夋嫨鏄�"涓�涓伐浣嶄竴寮犲崱鐗�"锛屾湰椤垫槸"涓�涓瘖瀹や竴寮犲崱鐗囥�佸崱鍐呭垪鍑鸿璇婂鍚勫伐浣�"锛�
+ 鏁呭崱鍐呮瘡涓伐浣嶆槸涓�涓� bed-block锛涜瑙夎鏍间笌鍓嶈�呬繚鎸佷竴鑷淬��
+ -->
+ <el-card class="room-status-card" shadow="hover">
+ <template #header>
+ <div class="bed-card__title">{{ title }}</div>
+ </template>
+
+ <div
+ v-for="(bedItem, index) in bedList"
+ :key="index"
+ class="bed-block"
+ >
+ <img
+ class="bed-card__img"
+ :src="bedImg(bedItem)"
+ :alt="bedItem.status === 0 ? '宸ヤ綅宸插叧闂�' : (bedItem.status === 10 ? '宸ヤ綅寮�鏀句腑' : '鏈夊尰鐢�')"
+ @click="bedItem.status === 0 ? openBed(bedItem) : (bedItem.status === 10 ? closeBed(bedItem) : undefined)"
+ />
+
+ <div class="bed-card__label">
+ {{ bedItem.bedNo }} {{ bedItem.docName }} {{ bedItem.status === 30 ? "-鏆傚仠" : "" }}
+ </div>
+
+ <div class="bed-card__meta">
+ <span v-for="(checkType, subIndex) in bedItem.checkTypes" :key="subIndex">
+ {{ getCheckTypeName(checkType) }}
+ </span>
+ <span v-if="bedItem.opType === 1">棰嗙敤</span>
+ <span v-if="bedItem.opType === 2">瀹夎</span>
</div>
</div>
</el-card>
</template>
<style scoped lang="scss">
-.card-title {
- font-size: 14px;
- font-weight: 600;
+/* 鍗$墖鏈綋锛氫笌 RoomBedSelect 鐨� .bed-card 瀵归綈锛堝彧鏄搴︽寜鏈〉闇�瑕佺暐绐勶級 */
+.room-status-card {
+ display: flex;
+ flex-direction: column;
+ width: 168px;
+ margin: 0 6px 6px 0;
+ overflow: hidden;
- &::before {
- position: relative;
- top: 8px;
- left: -5px;
- display: inline-block;
- width: 3px;
- height: 14px;
- //background-color: #105cfb;
- background: var(--el-color-primary);
- border-radius: 5px;
- content: '';
- transform: translateY(-50%);
+ // 鍗$墖澶达紙璇婂鍚嶏級
+ :deep(.el-card__header) {
+ flex: none;
+ padding: 6px 10px;
+ text-align: center;
+ }
+
+ // 鍗$墖浣擄細绾靛悜鎺掑垪銆佹按骞冲眳涓�
+ // 娉ㄦ剰锛氳繖閲�**涓嶇敤** flex:1 鈥斺�� RoomBedSelect 鏄湪绛夐珮缃戞牸閲屾墠闇�瑕佸畠鎾戞弧锛�
+ // 鏈〉鍗$墖楂樺害鐢卞伐浣嶆暟鍐冲畾锛岃嫢鎾戞弧浼氭妸鍐呭椤跺埌涓婃柟銆佺暀涓嬪ぇ鐗囩┖鐧姐��
+ :deep(.el-card__body) {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 4px;
+ padding: 10px;
}
}
-.deskwarp {
+/* 鍗″唴鍗曚釜宸ヤ綅锛氫笌 RoomBedSelect 鍗$墖浣撶殑鎺掑竷涓�鑷� */
+.bed-block {
display: flex;
flex-direction: column;
align-items: center;
+ gap: 4px;
+ width: 100%;
+ padding-bottom: 6px;
+ border-bottom: 1px dashed var(--el-border-color-lighter);
+
+ &:last-child {
+ padding-bottom: 0;
+ border-bottom: none;
+ }
}
+.bed-card__title {
+ font-size: 16px;
+ font-weight: 600;
+ line-height: 1.2;
+}
+
+/* 鍥剧墖鍥哄畾灏忓昂瀵革紝涓嶉殢鍗$墖瀹藉害鏀惧ぇ锛堜笌 RoomBedSelect 鐩稿悓锛� */
+.bed-card__img {
+ flex: none;
+ width: 80px;
+ height: 64px;
+ object-fit: contain;
+ cursor: pointer;
+}
+
+.bed-card__label {
+ font-size: 15px;
+ font-weight: 600;
+ line-height: 1.3;
+ text-align: center;
+}
+
+.bed-card__meta {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0 5px;
+ justify-content: center;
+ font-size: 14px;
+ line-height: 1.3;
+ color: var(--el-text-color-secondary);
+ text-align: center;
+}
</style>
--
Gitblit v1.9.3