Browse Source

创建FooterMessageState

dev
zhangjiming 7 months ago
parent
commit
f6c008ecc7
  1. 15
      src/pages/Index/Index.vue
  2. 30
      src/pages/Index/Regular.vue
  3. 13
      src/store/modules/device.ts

15
src/pages/Index/Index.vue

@ -86,8 +86,14 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>
<img class="user-logo" src="@/assets/Index/user.svg" height="30"></img>
<button class="logout" style="width:100px" @click="onLogout">注销</button>
<img
class="user-logo"
src="@/assets/Index/user.svg"
height="30"
/>
<button class="logout" style="width: 100px" @click="onLogout">
注销
</button>
</el-dropdown-item>
</el-dropdown-menu>
</template>
@ -211,7 +217,9 @@ import {
import { User } from '../../types/Index'
import { useConsumablesStore, useDeviceStore } from '../../store'
import { createWebSocket } from '../../websocket/socket'
import type { AppEventMessage } from '../../websocket/socket'
import type {
AppEventMessage
} from '../../websocket/socket'
import { getServerInfo } from '../../utils/getServerInfo'
import { eventBus } from '../../eventBus'
import { logout } from '@/services/Login/login'
@ -312,6 +320,7 @@ const saveIdInfo = async () => {
const showInitDeviceAlert = () => {
showModal.value = true
}
onMounted(() => {
eventBus.on('initDevice', showInitDeviceAlert)
ws.connect()

30
src/pages/Index/Regular.vue

@ -15,10 +15,13 @@
import TabBar from './components/Consumables/TabBar.vue'
import { createWebSocket } from '@/websocket/socket'
import { getServerInfo } from '@/utils/getServerInfo'
import { onMounted, onDeactivated } from 'vue';
import type { DeviceWorkStateMessage } from '@/websocket/socket';
import { useDeviceStore, useSettingTestTubeStore } from '@/store/index';
import { getBloodTypes, getProjectInfo } from '@/services/Index/testTube';
import { onMounted, onDeactivated } from 'vue'
import type {
DeviceWorkStateMessage,
FooterMessageState,
} from '@/websocket/socket'
import { useDeviceStore, useSettingTestTubeStore } from '@/store/index'
import { getBloodTypes, getProjectInfo } from '@/services/Index/testTube'
const deviceStore = useDeviceStore()
const settingTubeStore = useSettingTestTubeStore()
@ -28,17 +31,23 @@ const ws = createWebSocket(wsUrl)
const handleDeviceState = (data: DeviceWorkStateMessage['data']) => {
deviceStore.setDeviceState(data)
}
const handleFooterState = (data: FooterMessageState['data']) => {
deviceStore.setMessageState(data)
}
onMounted(() => {
getProjectList()
getBloodTypeList()
ws.connect();
ws.subscribe<DeviceWorkStateMessage>('DeviceWorkState', handleDeviceState);
});
ws.connect()
ws.subscribe<DeviceWorkStateMessage>('DeviceWorkState', handleDeviceState)
ws.subscribe<FooterMessageState>('MessageBoxState', handleFooterState)
})
onDeactivated(() => {
ws.unsubscribe<DeviceWorkStateMessage>('DeviceWorkState', handleDeviceState);
ws.disconnect();
ws.unsubscribe<DeviceWorkStateMessage>('DeviceWorkState', handleDeviceState)
ws.unsubscribe<FooterMessageState>('MessageBoxState', handleFooterState)
ws.disconnect()
console.log('🚀 ~ onBeforeUnmount ~ regular页面销毁:')
});
})
const getProjectList = async () => {
const res = await getProjectInfo()
@ -52,7 +61,6 @@ const getBloodTypeList = async () => {
settingTubeStore.setBloodTypes(res.data)
}
}
</script>
<style scoped lang="less">

13
src/store/modules/device.ts

@ -1,6 +1,6 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'
import type { DeviceWorkStateMessage, SensorStateMessage } from '../../websocket/socket'
import type { DeviceWorkStateMessage, FooterMessageState, SensorStateMessage } from '../../websocket/socket'
export const useDeviceStore = defineStore('device', () => {
const deviceState = ref<DeviceWorkStateMessage['data']>({
@ -17,10 +17,19 @@ export const useDeviceStore = defineStore('device', () => {
sensorState.value = data
}
const messageState = ref<FooterMessageState['data'] | undefined>(undefined)
const setMessageState = (data: FooterMessageState['data']) => {
messageState.value = data
}
return {
deviceState,
setDeviceState,
sensorState,
setSensorState
setSensorState,
messageState,
setMessageState,
}
})
Loading…
Cancel
Save