diff --git a/src/pages/Index/Index.vue b/src/pages/Index/Index.vue index 1b54b3b..9383923 100644 --- a/src/pages/Index/Index.vue +++ b/src/pages/Index/Index.vue @@ -230,14 +230,29 @@ import { saveMountedCardInfo, openBuzzer, closeBuzzer, + getProjectInfo, + getBloodTypes, } from '../../services/index' import { User } from '../../types/Index' -import { useConsumablesStore, useDeviceStore } from '../../store' +import { + useConsumablesStore, + useDeviceStore, + useSettingTestTubeStore, +} from '../../store' import { createWebSocket } from '../../websocket/socket' -import type { AppEventMessage } from '../../websocket/socket' +import type { + AppEventMessage, + DeviceWorkStateMessage, + FooterMessageState, + IncubationPlateStateMessage, + OptScanModuleStateMessage, + SensorStateMessage, + TubeHolderStateMessage, +} from '../../websocket/socket' import { getServerInfo } from '../../utils/getServerInfo' import { eventBus } from '../../eventBus' import { logout } from '@/services/Login/login' +import { useRunningStore } from '@/store/modules/running' // import { formatDate } from '@/utils/formDate' const selectedTab = ref(sessionStorage.getItem('selectedTab') || '常规') @@ -252,6 +267,9 @@ const showFailModal = ref(false) // const failItems = ref([]); const consumableStore = useConsumablesStore() const deviceStore = useDeviceStore() +const runningStore = useRunningStore() +const settingTubeStore = useSettingTestTubeStore() + // 新增的变量 const user = ref( JSON.parse(sessionStorage.getItem('token') || '{}') as unknown as User, @@ -270,9 +288,10 @@ const WarnMessage = ref('') const showRecentMsgDialog = ref(false) // WebSocket 实例 -const { wsUrl } = getServerInfo('/api/v1/app/ws/event') - -const ws = createWebSocket(wsUrl) +const eventUrl = getServerInfo('/api/v1/app/ws/event') +const wsEvent = createWebSocket(eventUrl.wsUrl) +const stateUrl = getServerInfo('/api/v1/app/ws/state') +const wsState = createWebSocket(stateUrl.wsUrl) // 处理应用事件消息 const handleAppEvent = (data: AppEventMessage['data']) => { @@ -336,10 +355,67 @@ const showInitDeviceAlert = () => { showModal.value = true } +const handleDeviceState = (data: DeviceWorkStateMessage['data']) => { + deviceStore.setDeviceState(data) +} +const handleSensorState = (data: SensorStateMessage['data']) => { + deviceStore.setSensorState(data) +} +const handleFooterState = (data: FooterMessageState['data']) => { + deviceStore.setMessageState(data) +} +const handleTubeHolderStateMessage = (data: TubeHolderStateMessage['data']) => { + runningStore.setTubeHolderState(data) +} + +const handleOptScanModuleStateMessage = ( + data: OptScanModuleStateMessage['data'], +) => { + runningStore.setOptScanModuleState(data) +} + +const handleIncubationPlateStateMessage = ( + data: IncubationPlateStateMessage['data'], +) => { + runningStore.setSubTanks(data.subtanks) +} +const getProjectList = async () => { + const res = await getProjectInfo() + if (res.success) { + settingTubeStore.setSupportedProjects(res.data) + } +} +const getBloodTypeList = async () => { + const res = await getBloodTypes() + if (res.success) { + settingTubeStore.setBloodTypes(res.data) + } +} onMounted(() => { eventBus.on('initDevice', showInitDeviceAlert) - ws.connect() - ws.subscribe('AppEvent', handleAppEvent) + wsEvent.connect() + wsEvent.subscribe('AppEvent', handleAppEvent) + wsState.connect() + wsState.subscribe( + 'DeviceWorkState', + handleDeviceState, + ) + wsState.subscribe('SensorState', handleSensorState) + wsState.subscribe('MessageBoxState', handleFooterState) + wsState.subscribe( + 'TubeHolderState', + handleTubeHolderStateMessage, + ) + wsState.subscribe( + 'IncubationPlateState', + handleIncubationPlateStateMessage, + ) + wsState.subscribe( + 'OptScanModuleState', + handleOptScanModuleStateMessage, + ) + getProjectList() + getBloodTypeList() }) // onBeforeUnmount(() => { diff --git a/src/pages/Index/Regular.vue b/src/pages/Index/Regular.vue index 45ff506..376b889 100644 --- a/src/pages/Index/Regular.vue +++ b/src/pages/Index/Regular.vue @@ -13,53 +13,7 @@