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
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)
|
|
},
|
|
},
|
|
})
|