|
|
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 { 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() init.connect() init.ws.onmessage = function (ev) { console.log(JSON.parse(ev.data)) const { ackcode, messageId } = JSON.parse(ev.data)
switch (messageId) { case 'getState': // 初始化完毕
const { state } = JSON.parse(ev.data) const { workState, estimatedRemainingTimeS, disinfection_id, isLogin, permissionLevel, sensor_data, } = state || {} if (!isLogin) { window.location.href = '/login' return } const { h2o2_1, h2o2_2, h2o2_3, humid_1, humid_2, humid_3, temp_1, temp_2, temp_3, airCompressor, disinfectant_volume, heatingStrip, airBlower, sprinklerPump, chargingPump, waterImmersionSensor1, waterImmersionSensor2, } = sensor_data
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.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.updateDisinfectStatus(workState == 0 ? false : true) operatorStore.updateEstimatedRemainingTimeS(estimatedRemainingTimeS) operatorStore.updateDisinfectionId(disinfection_id) // 将sensor_data中的数据更新到store中
break case 'getAllUser': const { dbval } = JSON.parse(ev.data) userStore.updateUserList(dbval) break case 'chpasswd': console.log(JSON.parse(ev.data)) if (ackcode != 0) { // 修改失败
showFailToast('修改失败') } else { showSuccessToast('修改成功') } break case 'startDisinfection': break case 'stopDisinfection': break case 'login': break case 'getAllRecords': break case 'getAllSetting': const { dbval: allSetting } = 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, 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.updateEnvirTemperature1(temp_2) deviceStore.updateEnvirHumidity1(humid_2) deviceStore.updateEnvirHP1(h2o2_2) deviceStore.updateEnvirTemperature2(temp_3) deviceStore.updateEnvirHumidity2(humid_3) deviceStore.updateEnvirHP2(h2o2_3)
// 对数据进行处理 并存入到localstorage中
// console.log(moment(timeStamp).format('HH:mm:ss'))
// console.log(localStorage)
saveEchartsDataToLocal( moment(timeStamp).format('HH:mm'), [temp_1, humid_1, h2o2_1], [temp_2, humid_2, h2o2_2], [temp_3, humid_3, h2o2_3], ) 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) }, }, })
|