From f52a1a84b223c53b1dcb338f2a01a99329a88bc1 Mon Sep 17 00:00:00 2001 From: zhangjiming Date: Fri, 17 Jan 2025 17:10:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=80=97=E6=9D=90=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=80=A5=E8=AF=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/Index/Index.vue | 11 + src/pages/Index/Regular/Emergency.vue | 9 +- src/pages/Index/Regular/Running.vue | 38 ++- .../components/Consumables/MoveLiquidArea.vue | 287 +++++++-------------- src/store/modules/consumables.ts | 5 - src/store/modules/device.ts | 24 +- src/store/modules/emergency.ts | 36 ++- src/store/modules/settingTestTube.ts | 1 + src/store/modules/testTube.ts | 7 +- src/websocket/socket.ts | 17 +- 10 files changed, 192 insertions(+), 243 deletions(-) diff --git a/src/pages/Index/Index.vue b/src/pages/Index/Index.vue index bbd9943..625a5b4 100644 --- a/src/pages/Index/Index.vue +++ b/src/pages/Index/Index.vue @@ -237,6 +237,7 @@ import { User } from '../../types/Index' import { useConsumablesStore, useDeviceStore, + useEmergencyStore, useSettingTestTubeStore, useTestTubeStore, } from '../../store' @@ -245,6 +246,7 @@ import type { AppEventMessage, ConsumablesStateMessage, DeviceWorkStateMessage, + EmergencyPosStateMessage, FooterMessageState, IncubationPlateStateMessage, OptScanModuleStateMessage, @@ -273,6 +275,7 @@ const deviceStore = useDeviceStore() const runningStore = useRunningStore() const settingTubeStore = useSettingTestTubeStore() const tubeRackStore = useTestTubeStore() +const emergencyStore = useEmergencyStore() // 新增的变量 const user = ref( @@ -393,6 +396,10 @@ const handleConsumablesState = (data: ConsumablesStateMessage['data']) => { consumableStore.setConsumablesData(data) } +const handleEmergencyPosState = (data: EmergencyPosStateMessage['data']) => { + emergencyStore.setInfo(data.tube) +} + const getProjectList = async () => { const res = await getProjectInfo() if (res.success) { @@ -436,6 +443,10 @@ onMounted(() => { 'OptScanModuleState', handleOptScanModuleStateMessage, ) + wsState.subscribe( + 'EmergencyPosState', + handleEmergencyPosState, + ) wsState.connect() getProjectList() diff --git a/src/pages/Index/Regular/Emergency.vue b/src/pages/Index/Regular/Emergency.vue index f63ed30..546f085 100644 --- a/src/pages/Index/Regular/Emergency.vue +++ b/src/pages/Index/Regular/Emergency.vue @@ -190,10 +190,13 @@ const selectBloodType = (item: { key: BloodType }) => { // 处理回显数据 onMounted(() => { + if (!emergencyStore.emergencyInfo) { + return + } if ( - deviceStore.deviceState.workState === 'PAUSE' && - emergencyStore.emergencyInfo && - emergencyStore.emergencyInfo!.state === 'RESOURCE_IS_READY' + deviceStore.deviceState.workState === 'IDLE' || + (deviceStore.deviceState.workState === 'PAUSE' && + emergencyStore.emergencyInfo!.state === 'TO_BE_PROCESSED') ) { emergencyPosition.value = { sampleBarcode: emergencyStore.emergencyInfo.sampleBarcode, diff --git a/src/pages/Index/Regular/Running.vue b/src/pages/Index/Regular/Running.vue index 59cf1a9..6014415 100644 --- a/src/pages/Index/Regular/Running.vue +++ b/src/pages/Index/Regular/Running.vue @@ -19,7 +19,7 @@
- 光学模组 + 检测模组
扫描中检测中 {{ runningStore.optScanModuleState.userid }} {{ @@ -88,9 +88,9 @@ > 急诊
-
+
@@ -186,11 +186,34 @@ const settingTubeStore = useSettingTestTubeStore() const emergencyStore = useEmergencyStore() //从急诊页面添加的急诊数据 const router = useRouter() +const showEmergencyTube = computed(() => { + if (!emergencyStore.emergencyInfo) { + return false + } + return ( + emergencyStore.emergencyInfo.projIds.length > 0 && + !( + emergencyStore.emergencyInfo.state === 'EMPTY' || + emergencyStore.emergencyInfo.state === 'PROCESS_COMPLETE' || + emergencyStore.emergencyInfo.state === 'ERROR' + ) + ) +}) const canSetEmergency = computed(() => { + if (!emergencyStore.emergencyInfo) { + return false + } return ( - emergencyStore.emergencyInfo && - (emergencyStore.emergencyInfo.state === 'EMPTY' || - emergencyStore.emergencyInfo.state === 'PROCESS_COMPLETE') + deviceStore.deviceState.workState === 'IDLE' || + (deviceStore.deviceState.workState === 'WORKING' && + (emergencyStore.emergencyInfo.state === 'EMPTY' || + emergencyStore.emergencyInfo.state === 'PROCESS_COMPLETE' || + emergencyStore.emergencyInfo.state === 'ERROR')) || + (deviceStore.deviceState.workState === 'PAUSE' && + (emergencyStore.emergencyInfo.state === 'EMPTY' || + emergencyStore.emergencyInfo.state === 'TO_BE_PROCESSED' || + emergencyStore.emergencyInfo.state === 'PROCESS_COMPLETE' || + emergencyStore.emergencyInfo.state === 'ERROR')) ) }) //确认添加急诊 @@ -280,7 +303,6 @@ watch( .emergency-button { width: 80px; height: 80px; - background: #ff6b6b; border-radius: 20px; display: flex; align-items: center; diff --git a/src/pages/Index/components/Consumables/MoveLiquidArea.vue b/src/pages/Index/components/Consumables/MoveLiquidArea.vue index 7ab9be1..20f7db7 100644 --- a/src/pages/Index/components/Consumables/MoveLiquidArea.vue +++ b/src/pages/Index/components/Consumables/MoveLiquidArea.vue @@ -80,21 +80,22 @@
-
- 1 -
+ + {{ + emergencyStore.emergencyInfo + ? emergencyStateDesc[emergencyStore.emergencyInfo.state] || + '未知' + : '--' + }} +
@@ -106,7 +107,7 @@ - - - -
@@ -170,40 +157,57 @@
- + + + + +