Browse Source

改变事件上报的方式

master
王梦远 2 weeks ago
parent
commit
5293419cf6
  1. 133
      src/app.vue
  2. 15
      src/components/home/HomeOperation.vue
  3. 1
      src/layouts/default.vue
  4. 18
      src/stores/debugStore.ts
  5. 10
      src/stores/deviceStore.ts
  6. 7
      src/stores/homeStore.ts
  7. 67
      src/stores/systemStore.ts
  8. 9
      src/types/debug.d.ts
  9. 13
      src/types/home.d.ts
  10. 18
      src/views/liquid/index.vue
  11. 19
      src/views/seal/index.vue

133
src/app.vue

@ -5,10 +5,11 @@ import { useLiquidStore } from 'stores/liquidStore'
import { useSystemStore } from 'stores/systemStore' import { useSystemStore } from 'stores/systemStore'
import { onBeforeMount, ref } from 'vue' import { onBeforeMount, ref } from 'vue'
import { sendCmd } from '@/apis/system'
import { sendCmd, subscribeEvent } from '@/apis/system'
import { useDebugStore } from './stores/debugStore'
import { useFormulaStore } from './stores/formulaStore' import { useFormulaStore } from './stores/formulaStore'
import { useSealStore } from './stores/sealStore'
/** /**
* 应用初始化组件 * 应用初始化组件
* @description 负责系统初始化流程控制包括设备信息获取数据同步及进度展示 * @description 负责系统初始化流程控制包括设备信息获取数据同步及进度展示
@ -20,7 +21,10 @@ const homeStore = useHomeStore()
const formulaStore = useFormulaStore() const formulaStore = useFormulaStore()
const liquidStore = useLiquidStore() const liquidStore = useLiquidStore()
const systemStore = useSystemStore() const systemStore = useSystemStore()
const sealStore = useSealStore()
const deviceStateStore = useDeviceStore()
const debugStore = useDebugStore()
const deviceType = useDeviceStore().deviceTypeMap
// //
const progress = ref(0) // const progress = ref(0) //
const version = __APP_VERSION__ // const version = __APP_VERSION__ //
@ -32,39 +36,32 @@ let timer: any = null // 进度条定时器
*/ */
onBeforeMount(async () => { onBeforeMount(async () => {
startProgress() // startProgress() //
// 10
setInterval(async () => {
await readH2o2Data()
}, 10 * 1000)
//
getSystemTime()
await systemStore.getSystemTime() //
}) })
const getSystemTime = () => {
systemStore.getSystemTime()
}
/**
* @function 初始化设备信息
* @desc 从服务端获取设备信息并更新到状态存储
*/
const initDeviceInfo = async () => {
const deviceParams = {
className: 'DeviceInfoMgrService',
fnName: 'getDeviceInfo',
// store
subscribeEvent('stateUpdate', (data) => {
if (data.fromClass === 'AirLeakDetectTest') { //
sealStore.updateSealInfo(data.rely)
} }
const res = await sendCmd(deviceParams)
deviceStore.updateDeviceInfo(res)
return res
}
/**
* @function 获取默认配方数据
* @desc 从服务端获取所有配置信息并更新配方配置
*/
const getFormualDefaultData = async () => {
formulaStore.getFormualDefaultData()
}
else if (data.fromClass === 'AddLiquidService') { //
liquidStore.updateAddLiquidWorkState(data.rely)
}
else if (data.fromClass === 'DrainLiquidService') { //
liquidStore.updateDrainLiquidWorkState(data.rely)
}
else if (data.fromClass === 'DisinfectionCtrlServiceExt') { //
homeStore.updateHomeDisinfectionState(data.rely)
}
else if (data.fromClass === 'FrontEndRealtimeDisplayContentMgr') { //
homeStore.updateHomeData(data.rely)
}
else if (data.fromClass === 'AppCore') { //
deviceStateStore.setDeviceState(data.rely)
}
else if (data.fromClass === 'TestPageCtrlService') { //
debugStore.updateDebugPageState(data.rely)
}
})
/** /**
* @function 启动初始化进度条 * @function 启动初始化进度条
@ -75,13 +72,14 @@ const startProgress = () => {
// 1-9% // 1-9%
const randomStep = Math.floor((Math.random() * 9) + 1) const randomStep = Math.floor((Math.random() * 9) + 1)
progress.value = Math.min(progress.value + randomStep, 100) progress.value = Math.min(progress.value + randomStep, 100)
//
await initData()
await initLiquidConfig()
await initDeviceInfo()
await getFormualDefaultData()
const deviceInfo: Device.DeviceInfo = await initDeviceInfo()
if (deviceInfo.deviceType === deviceType.LargeSpaceDM_B) {
await initData() //
}
else {
await initData() //
await initLiquidConfig() //
}
// //
if (progress.value >= 100) { if (progress.value >= 100) {
clearInterval(timer) clearInterval(timer)
@ -90,24 +88,8 @@ const startProgress = () => {
} }
/** /**
* @function 读取过氧化氢传感器数据
* @desc 轮询获取环境传感器数据并更新到主页状态
*/
const readH2o2Data = async () => {
const envParams = {
fnName: 'readH2O2SensorData',
className: 'FrontEndRealtimeDisplayContentMgr',
params: {},
}
await sendCmd(envParams)
// if (resData.val.length) {
// homeStore.updateHomeData(resData.val)
// }
}
/**
* @function 初始化核心数据 * @function 初始化核心数据
* @desc 同步获取消毒状态液体余量和设备状态数据
* @desc 同步获取消毒状态
*/ */
const initData = async () => { const initData = async () => {
// //
@ -117,26 +99,24 @@ const initData = async () => {
} }
const disinfectionData = await sendCmd(disinfectionParams) const disinfectionData = await sendCmd(disinfectionParams)
homeStore.updateHomeDisinfectionState(disinfectionData) homeStore.updateHomeDisinfectionState(disinfectionData)
//
const liquidParams = {
fnName: 'getState',
className: 'AddLiquidService',
}
const liquidData = await sendCmd(liquidParams)
liquidStore.updateLiquidState(liquidData)
//
await formulaStore.getFormualDefaultData() //
}
/**
* @function 初始化设备信息
* @desc 从服务端获取设备信息并更新到状态存储
*/
const initDeviceInfo = async () => {
const deviceParams = { const deviceParams = {
className: 'AppCore',
fnName: 'startStateReport',
className: 'DeviceInfoMgrService',
fnName: 'getDeviceInfo',
} }
await sendCmd(deviceParams)
// deviceStore.setDeviceState(deviceData)
const res = await sendCmd(deviceParams)
deviceStore.updateDeviceInfo(res)
return res
} }
/** /**
* @function 初始化液体配置
* @function 初始化
* @desc 获取液体最大容量和更新周期配置 * @desc 获取液体最大容量和更新周期配置
*/ */
const initLiquidConfig = async () => { const initLiquidConfig = async () => {
@ -146,6 +126,13 @@ const initLiquidConfig = async () => {
} }
const liquidConfig = await sendCmd(params) const liquidConfig = await sendCmd(params)
liquidStore.initLiquidConfig(liquidConfig) liquidStore.initLiquidConfig(liquidConfig)
const liquidParams = {
fnName: 'getState',
className: 'AddLiquidService',
}
const liquidData = await sendCmd(liquidParams)
liquidStore.updateLiquidState(liquidData)
} }
</script> </script>

15
src/components/home/HomeOperation.vue

@ -1,5 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import { sendCmd, subscribeEvent } from 'apis/system'
import { sendCmd } from 'apis/system'
import homeFinish from 'assets/images/home/home-finish.svg' import homeFinish from 'assets/images/home/home-finish.svg'
import homeStart from 'assets/images/home/home-start.svg' import homeStart from 'assets/images/home/home-start.svg'
import { startTimer, stopTimer } from 'libs/countdownTimer' import { startTimer, stopTimer } from 'libs/countdownTimer'
@ -58,22 +58,9 @@ watchEffect(() => {
* @description 订阅消毒状态更新事件 * @description 订阅消毒状态更新事件
*/ */
onMounted(async () => { onMounted(async () => {
await systemStore.subscribeDisinfectEvent() //
subscribeEvent('stateUpdate', handleDisinfectState)
}) })
/** /**
* @function 处理消毒状态更新事件
* @param {Socket.WebSocketResponse<Home.DisinfectState>} report - 状态更新报告
* @desc 接收并更新消毒状态数据
*/
const handleDisinfectState = (report: Socket.WebSocketResponse<Home.DisinfectState>) => {
if (report.fromClass === 'DisinfectionCtrlServiceExt') {
homeStore.updateHomeDisinfectionState(report.rely)
}
}
/**
* @function 开始消毒操作 * @function 开始消毒操作
* @desc 校验设备状态并发起消毒请求 * @desc 校验设备状态并发起消毒请求
*/ */

1
src/layouts/default.vue

@ -45,7 +45,6 @@ const isLowCost = ref()
onMounted(() => { onMounted(() => {
// 3 // 3
onFullScreen() onFullScreen()
deviceStore.startSubscribDevice()
}) })
const onFullScreen = () => { const onFullScreen = () => {

18
src/stores/debugStore.ts

@ -0,0 +1,18 @@
import { defineStore } from 'pinia'
import { ref } from 'vue'/**
*
* @module useHomeStore
*/
export const useDebugStore = defineStore('debug', () => {
// 状态定义
const debugPageState = ref<Debug.DebugPageState>()
const updateDebugPageState = (data: Debug.DebugPageState) => {
debugPageState.value = data
}
return {
debugPageState,
updateDebugPageState,
}
})

10
src/stores/deviceStore.ts

@ -1,7 +1,6 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { ref } from 'vue' import { ref } from 'vue'
import { subscribeEvent } from '@/apis/system'
import { DEVICE_STATES } from '@/libs/utils' import { DEVICE_STATES } from '@/libs/utils'
const initDeviceInfo = { const initDeviceInfo = {
@ -57,14 +56,6 @@ export const useDeviceStore = defineStore('device', () => {
deviceStete.value = deviceInfo deviceStete.value = deviceInfo
} }
const startSubscribDevice = () => {
subscribeEvent('stateUpdate', (report: Socket.WebSocketResponse<Device.State>) => {
if (report.fromClass === 'AppCore') {
deviceStete.value = report.rely
}
})
}
return { return {
deviceTypeMap, deviceTypeMap,
deviceInfo, deviceInfo,
@ -72,6 +63,5 @@ export const useDeviceStore = defineStore('device', () => {
deviceStete, deviceStete,
updateDeviceInfo, updateDeviceInfo,
setDeviceState, setDeviceState,
startSubscribDevice,
} }
}) })

7
src/stores/homeStore.ts

@ -46,9 +46,10 @@ export const useHomeStore = defineStore('home', () => {
* @param {Home.DisplayrelyMgr[]} data - * @param {Home.DisplayrelyMgr[]} data -
* @desc 湿 * @desc 湿
*/ */
const updateHomeData = (data: Home.DisplayrelyMgr[]) => {
if (data && data.length) {
data.forEach((item, index) => {
const updateHomeData = (data: Home.DisplayrelyMgrs) => {
const sensordata = data.sensordata
if (sensordata && sensordata.length) {
sensordata.forEach((item, index) => {
h2O2SensorData.value[index] = { h2O2SensorData.value[index] = {
...h2O2SensorData.value[index], ...h2O2SensorData.value[index],
...item, ...item,

67
src/stores/systemStore.ts

@ -1,7 +1,7 @@
import { defineStore } from 'pinia' import { defineStore } from 'pinia'
import { ref } from 'vue' import { ref } from 'vue'
import { sendCmd, syncSendCmd } from '@/apis/system'
import { sendCmd } from '@/apis/system'
export const useSystemStore = defineStore('system', () => { export const useSystemStore = defineStore('system', () => {
const websocketConnected = ref(true) const websocketConnected = ref(true)
@ -44,53 +44,40 @@ export const useSystemStore = defineStore('system', () => {
* @function subscribeDisinfectEvent * @function subscribeDisinfectEvent
* @desc * @desc
*/ */
const subscribeDisinfectEvent = async () => {
// 发起订阅
const subParams = {
className: 'DisinfectionCtrlServiceExt',
fnName: 'startStateReport',
}
syncSendCmd(subParams)
}
// const subscribeDisinfectEvent = async () => {
// // 发起订阅
// const subParams = {
// className: 'DisinfectionCtrlServiceExt',
// fnName: 'startStateReport',
// }
// syncSendCmd(subParams)
// }
/** /**
* @function subscribeAddLiquidEvent * @function subscribeAddLiquidEvent
* @desc * @desc
*/ */
const subscribeAddLiquidEvent = async () => {
// 发起订阅
const subParams = {
className: 'AddLiquidService',
fnName: 'startStateReport',
}
syncSendCmd(subParams)
}
// const subscribeAddLiquidEvent = async () => {
// // 发起订阅
// const subParams = {
// className: 'AddLiquidService',
// fnName: 'startStateReport',
// }
// syncSendCmd(subParams)
// }
/** /**
* @function subscribeDrainLiquidEvent * @function subscribeDrainLiquidEvent
* @desc * @desc
*/ */
const subscribeDrainLiquidEvent = async () => {
// 发起订阅
const subParams = {
className: 'DrainLiquidService',
fnName: 'startStateReport',
}
syncSendCmd(subParams)
}
/**
* @function subscribeSealEvent
* @desc
*/
const subscribeSealEvent = async () => {
// 执行订阅
const subParams = {
className: 'AirLeakDetectTest',
fnName: 'startStateReport',
}
syncSendCmd(subParams)
}
// const subscribeDrainLiquidEvent = async () => {
// // 发起订阅
// const subParams = {
// className: 'DrainLiquidService',
// fnName: 'startStateReport',
// }
// syncSendCmd(subParams)
// }
const getSystemTime = async () => { const getSystemTime = async () => {
const timeParams = { const timeParams = {
@ -115,10 +102,6 @@ export const useSystemStore = defineStore('system', () => {
updateLoading, updateLoading,
updateConnected, updateConnected,
subscribeDisinfectEvent,
subscribeAddLiquidEvent,
subscribeDrainLiquidEvent,
subscribeSealEvent,
getSystemTime, getSystemTime,
} }
}) })

9
src/types/debug.d.ts

@ -0,0 +1,9 @@
declare namespace Debug {
interface DebugPageState {
airCompressorCurrent: number // 空压机电流 DT600N:√ DT300N:√ DT300W:√ DT600B:√ DT100N:√
airCompressorCurrentNoExpection: number
blowerCurrent: number // 风机电流 DT600N:√ DT300N:√ DT300W:√ DT600B:√ DT100N:√
heaterCurrent: number // 加热片电流 DT600N:√ DT300N:√ DT300W:√ DT600B:√ DT100N:√
heaterTemperature: number // 加热片温度 DT600N:√ DT300N:√ DT300W:√ DT600B:√ DT100N:√
}
}

13
src/types/home.d.ts

@ -1,16 +1,21 @@
declare namespace Home { declare namespace Home {
interface DisplayrelyMgr { interface DisplayrelyMgr {
temp: number
h2o2: number
rh: number rh: number
rs: number rs: number
h2o2: number
sensorId?: number
temp: number
type: string // 传感器类型 Internal, WiredExSensor
} }
interface DisplayrelyMgrParams extends DisplayrelyMgr { interface DisplayrelyMgrParams extends DisplayrelyMgr {
type: string
title: string title: string
chartId: string chartId: string
} }
interface DisplayrelyMgrs {
internalSensorNum: number // 内置传感器数量
wiredExSensorNum: number // 外置有线传感器数量
sensordata: DisplayrelyMgr[]
}
interface ResultData { interface ResultData {
val: DisplayrelyMgr[] val: DisplayrelyMgr[]
} }

18
src/views/liquid/index.vue

@ -1,5 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import { subscribeEvent, syncSendCmd } from 'apis/system'
import { syncSendCmd } from 'apis/system'
import homeFinish from 'assets/images/home/home-finish.svg' import homeFinish from 'assets/images/home/home-finish.svg'
import homeStart from 'assets/images/home/home-start.svg' import homeStart from 'assets/images/home/home-start.svg'
import SoftKeyboard from 'components/common/SoftKeyboard/index.vue' import SoftKeyboard from 'components/common/SoftKeyboard/index.vue'
@ -41,9 +41,7 @@ const btnStyle = {
} }
onMounted(() => { onMounted(() => {
systemStore.subscribeAddLiquidEvent()
systemStore.subscribeDrainLiquidEvent()
subScribeLiquid()
}) })
watchEffect(() => { watchEffect(() => {
@ -60,18 +58,6 @@ watch(inputValue, (newVal: string | number) => {
stopatg.value = Number(newVal) stopatg.value = Number(newVal)
}) })
const subScribeLiquid = () => { //
subscribeEvent('stateUpdate', (data: Socket.WebSocketResponse<Liquid.LiquidData>) => {
if (data.fromClass === 'AddLiquidService') {
liquidStore.updateAddLiquidWorkState(data.rely)
}
if (data.fromClass === 'DrainLiquidService') {
liquidStore.updateDrainLiquidWorkState(data.rely)
}
})
}
const openKeyboard = () => { const openKeyboard = () => {
keyboardVisible.value = true keyboardVisible.value = true
} }

19
src/views/seal/index.vue

@ -1,5 +1,5 @@
<script lang="ts" setup> <script lang="ts" setup>
import { sendCmd, subscribeEvent, syncSendCmd } from 'apis/system'
import { sendCmd, syncSendCmd } from 'apis/system'
import homeFinish from 'assets/images/home/home-finish.svg' import homeFinish from 'assets/images/home/home-finish.svg'
import homeStart from 'assets/images/home/home-start.svg' import homeStart from 'assets/images/home/home-start.svg'
import SealInstrumentSvg from 'assets/images/seal/seal-instrument.svg' import SealInstrumentSvg from 'assets/images/seal/seal-instrument.svg'
@ -12,13 +12,11 @@ import { getDeviceStatus } from '@/libs/deviceComm'
import { FtMessage } from '@/libs/message' import { FtMessage } from '@/libs/message'
import { FtMessageBox } from '@/libs/messageBox' import { FtMessageBox } from '@/libs/messageBox'
import { useSealStore } from '@/stores/sealStore' import { useSealStore } from '@/stores/sealStore'
import { useSystemStore } from '@/stores/systemStore'
defineOptions({ defineOptions({
name: 'Seal', name: 'Seal',
}) })
const sealStore = useSealStore() const sealStore = useSealStore()
const systemStore = useSystemStore()
const sealInfo = ref(sealStore.sealInfo) const sealInfo = ref(sealStore.sealInfo)
const inputValue = ref('') const inputValue = ref('')
const keyboardVisible = ref(false) const keyboardVisible = ref(false)
@ -31,10 +29,7 @@ const realTimePressure = ref(sealStore.sealInfo.pressure)
const loading = ref(false) const loading = ref(false)
onMounted(() => { onMounted(() => {
// initData()
systemStore.subscribeSealEvent()
subscribeSealState()
initAirLeakConfig()
initAirLeakConfig() //
}) })
const getFirstPressure = () => { const getFirstPressure = () => {
@ -79,16 +74,6 @@ const initAirLeakConfig = async () => {
inflationTime.value = res.inflationTimeMs inflationTime.value = res.inflationTimeMs
} }
const subscribeSealState = () => {
//
subscribeEvent('stateUpdate', (data: Socket.WebSocketResponse<Seal.SealStateItem>) => {
if (data.fromClass === 'AirLeakDetectTest') {
//
sealStore.updateSealInfo(data.rely)
}
})
}
const stopText = computed(() => { const stopText = computed(() => {
return sealInfo.value.workState === 'stopping' ? '停止中...' : '停止测试' return sealInfo.value.workState === 'stopping' ? '停止中...' : '停止测试'
}) })

Loading…
Cancel
Save