大空间消毒机
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

307 lines
11 KiB

import { defineStore } from 'pinia'
import Socket from '@/socket'
import moment from 'moment'
import { useSettingStore } from './setting'
import { useUserStore } from './user'
import { useOperatorStore } from './operator'
import { useDeviceStore } from './device'
import { useTestStore } from './test'
import { useAuditStore } from './audit'
import { useFormulaStore } from './formula'
import { useEchartsStore } from './echarts'
import { showSuccessToast, showFailToast } from 'vant'
import { saveEchartsDataToLocal } from '@/utils'
export const useWebSocketStore = defineStore({
id: 'websocket', // id必填,且需要唯一
// state
state: () => {
return {
// 命令websocket 实例
socketCommandInstance: null,
// 事件上报websocket 实例
socketEventInstance: null,
}
},
// actions
actions: {
initCommandSocket() {
const url = import.meta.env.VITE_BASE_WS1_URL
const init = new Socket(url)
const settingStore = useSettingStore()
const userStore = useUserStore()
const testStore = useTestStore()
const deviceStore = useDeviceStore()
const operatorStore = useOperatorStore()
const echartsStore = useEchartsStore()
const auditStore = useAuditStore()
const formulaStore = useFormulaStore()
init.connect()
init.ws.onmessage = function (ev) {
const { ackcode, messageId, timeStamp } = JSON.parse(ev.data)
console.log(JSON.parse(ev.data))
switch (messageId) {
case 'getState':
// 初始化完毕
const { state } = JSON.parse(ev.data)
const {
disinfectionWorkState,
disinfectionState,
preHeat,
preHeatRaminTimeS,
estimatedRemainingTimeS,
disinfection_id,
isLogin,
permissionLevel,
sensor_data,
drainingWorkState,
replenishingFluidsWorkState,
} = state || {}
if (!isLogin) {
window.location.href = 'http://127.0.0.1/#/login'
return
}
const {
h2o2_1,
h2o2_2,
h2o2_3,
humid_1,
humid_2,
humid_3,
saturation_1,
temp_1,
temp_2,
temp_3,
airCompressor,
disinfectant_volume,
heatingStrip,
airBlower,
sprinklerPump,
chargingPump,
waterImmersionSensor1,
waterImmersionSensor2,
chargingPumpRPM,
sprinklerPumpRPM,
sprinklerPumpGPM,
} = sensor_data
const { nowlog } = disinfectionState || {}
deviceStore.updateNowLog(nowlog)
if ([1, 2, 3, 4].includes(disinfectionWorkState)) {
operatorStore.updateShowStartReady(false)
} else {
operatorStore.updateStopReady(false)
}
settingStore.updateSprinklerPumpGPM(sprinklerPumpGPM)
settingStore.updateChargingPumpRPM(chargingPumpRPM)
settingStore.updateSprinklerPumpRPM(sprinklerPumpRPM)
operatorStore.updateDrainingWorkState(drainingWorkState)
operatorStore.updateReplenishingFluidsWorkState(
replenishingFluidsWorkState,
)
testStore.updateWaterImmersionSensor1(
waterImmersionSensor1 == 0 ? false : true,
)
testStore.updateWaterImmersionSensor2(
waterImmersionSensor2 == 0 ? false : true,
)
// 将sensor_data中的数据更新到store中
testStore.updateAirCompressorObj(airCompressor)
testStore.updateAirBlowerObj(airBlower)
testStore.updateHeatingStripObj(heatingStrip)
testStore.updateSprinklerPump(sprinklerPump)
testStore.updateChargingPump(chargingPump)
settingStore.updateDeviceIp('192.168.8.10')
deviceStore.updateDisinfectantCapacity(disinfectant_volume)
deviceStore.updateBinTemperature(temp_1)
deviceStore.updateBinHumidity(humid_1)
deviceStore.updateBinHP(h2o2_1)
deviceStore.updateBinSaturation(saturation_1)
deviceStore.updateEnvirTemperature1(temp_2)
deviceStore.updateEnvirHumidity1(humid_2)
deviceStore.updateEnvirHP1(h2o2_2)
deviceStore.updateEnvirTemperature2(temp_3)
deviceStore.updateEnvirHumidity2(humid_3)
deviceStore.updateEnvirHP2(h2o2_3)
userStore.updatePermission(permissionLevel)
settingStore.updateInitLoading()
operatorStore.updatePreHeatRaminTimeS(preHeatRaminTimeS)
operatorStore.updatePreHeat(preHeat)
operatorStore.updateDisinfectStatus(disinfectionWorkState)
operatorStore.updateEstimatedRemainingTimeS(estimatedRemainingTimeS)
operatorStore.updateDisinfectionId(disinfection_id)
// 将sensor_data中的数据更新到store中
if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
saveEchartsDataToLocal(
moment(timeStamp).format('HH:mm'),
[temp_1, humid_1, h2o2_1, saturation_1],
[temp_2, humid_2, h2o2_2, saturation_1],
[temp_3, humid_3, h2o2_3, saturation_1],
)
echartsStore.updateBinCharts(
JSON.parse(localStorage.getItem('bin')),
)
echartsStore.updateEnvir1Charts(
JSON.parse(localStorage.getItem('envir1')),
)
echartsStore.updateEnvir2Charts(
JSON.parse(localStorage.getItem('envir2')),
)
}
break
case 'getAllUser':
const { dbval } = JSON.parse(ev.data)
console.log(dbval, 'dbva;')
userStore.updateUserList(dbval)
break
case 'chpasswd':
if (ackcode != 0) {
// 修改失败
showFailToast('修改失败')
} else {
showSuccessToast('修改成功')
}
break
case 'startReplenishingFluids':
if (ackcode == 0) {
operatorStore.updateReplenishingFluidsWorkState(1)
}
case 'startDraining':
if (ackcode == 0) {
operatorStore.updateDrainingWorkState(1)
}
case 'startDisinfection':
break
case 'stopDisinfection':
break
case 'exportUserBehaviorRecord':
settingStore.updateExportLoading(false)
break
case 'exportDisinfectionRecord':
settingStore.updateExportLoading(false)
break
case 'getAllFormula':
const { formula } = JSON.parse(ev.data) || {}
const { formulas } = formula || {}
formulaStore.updateFormulaList(formulas || [])
break
case 'getUserBehaviorRecordDescJson':
const { records } = JSON.parse(ev.data) || {}
const { iterms, page, total, totalpage } = records || {}
auditStore.updateAuditList(iterms || [])
auditStore.updateTotalPage(totalpage)
auditStore.updateTotal(total)
auditStore.updatePage(page)
break
case 'login':
// if (ackcode == 0) {
// window.location.href = 'http://127.0.0.1/'
// }
break
case 'getAllRecords':
break
case 'getAllSetting':
const { dbval: allSetting } = JSON.parse(ev.data)
console.log(JSON.parse(ev.data))
settingStore.updateAllSettingList(allSetting)
break
default:
break
}
}
this.socketCommandInstance = init
},
sendCommandMsg(message) {
this.socketCommandInstance?.msg(message)
},
initEventSocket() {
const url = import.meta.env.VITE_BASE_WS2_URL
const init = new Socket(url)
init.connect()
const deviceStore = useDeviceStore()
const testStore = useTestStore()
const settingStore = useSettingStore()
const operatorStore = useOperatorStore()
const echartsStore = useEchartsStore()
init.ws.onmessage = function (ev) {
// console.log(JSON.parse(ev.data))
const { command, timeStamp } = JSON.parse(ev.data)
switch (command) {
case 'RealtimeSensorDataReport':
const { sensor_data } = JSON.parse(ev.data)
const {
h2o2_1,
h2o2_2,
h2o2_3,
humid_1,
humid_2,
humid_3,
temp_1,
temp_2,
temp_3,
saturation_1,
airCompressor,
disinfectant_volume,
heatingStrip,
airBlower,
sprinklerPump,
chargingPump,
waterImmersionSensor1,
waterImmersionSensor2,
} = sensor_data
// 将sensor_data中的数据更新到store中
testStore.updateWaterImmersionSensor1(
waterImmersionSensor1 == 0 ? false : true,
)
testStore.updateWaterImmersionSensor2(
waterImmersionSensor2 == 0 ? false : true,
)
testStore.updateAirCompressorObj(airCompressor)
testStore.updateAirBlowerObj(airBlower)
testStore.updateHeatingStripObj(heatingStrip)
testStore.updateSprinklerPump(sprinklerPump)
testStore.updateChargingPump(chargingPump)
settingStore.updateDeviceIp('192.168.8.10')
deviceStore.updateDisinfectantCapacity(disinfectant_volume)
deviceStore.updateBinTemperature(temp_1)
deviceStore.updateBinHumidity(humid_1)
deviceStore.updateBinHP(h2o2_1)
deviceStore.updateBinSaturation(saturation_1)
deviceStore.updateEnvirTemperature1(temp_2)
deviceStore.updateEnvirHumidity1(humid_2)
deviceStore.updateEnvirHP1(h2o2_2)
deviceStore.updateEnvirTemperature2(temp_3)
deviceStore.updateEnvirHumidity2(humid_3)
deviceStore.updateEnvirHP2(h2o2_3)
// 对数据进行处理 并存入到localstorage中
if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
saveEchartsDataToLocal(
moment(timeStamp).format('HH:mm'),
[temp_1, humid_1, h2o2_1, saturation_1],
[temp_2, humid_2, h2o2_2, saturation_1],
[temp_3, humid_3, h2o2_3, saturation_1],
)
echartsStore.updateBinCharts(
JSON.parse(localStorage.getItem('bin')),
)
echartsStore.updateEnvir1Charts(
JSON.parse(localStorage.getItem('envir1')),
)
echartsStore.updateEnvir2Charts(
JSON.parse(localStorage.getItem('envir2')),
)
}
break
default:
break
}
}
this.socketEventInstance = init
},
sendEventMsg(message) {
this.socketEventInstance?.msg(message)
},
},
})