大空间消毒机
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.

336 lines
13 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. import { defineStore } from 'pinia'
  2. import Socket from '@/socket'
  3. import moment from 'moment'
  4. import { useSettingStore } from './setting'
  5. import { useUserStore } from './user'
  6. import { useOperatorStore } from './operator'
  7. import { useDeviceStore } from './device'
  8. import { useTestStore } from './test'
  9. import { useAuditStore } from './audit'
  10. import { useFormulaStore } from './formula'
  11. import { useEchartsStore } from './echarts'
  12. import { useRunningStore } from './running'
  13. import { showSuccessToast, showFailToast } from 'vant'
  14. import { saveEchartsDataToLocal } from '@/utils'
  15. export const useWebSocketStore = defineStore({
  16. id: 'websocket', // id必填,且需要唯一
  17. // state
  18. state: () => {
  19. return {
  20. // 命令websocket 实例
  21. socketCommandInstance: null,
  22. // 事件上报websocket 实例
  23. socketEventInstance: null,
  24. }
  25. },
  26. // actions
  27. actions: {
  28. initCommandSocket() {
  29. const url = import.meta.env.VITE_BASE_WS1_URL
  30. const init = new Socket(url)
  31. const settingStore = useSettingStore()
  32. const userStore = useUserStore()
  33. const testStore = useTestStore()
  34. const deviceStore = useDeviceStore()
  35. const operatorStore = useOperatorStore()
  36. const echartsStore = useEchartsStore()
  37. const auditStore = useAuditStore()
  38. const formulaStore = useFormulaStore()
  39. const runningStore = useRunningStore()
  40. init.connect()
  41. init.ws.onmessage = function (ev) {
  42. const { messageId, timeStamp } = JSON.parse(ev.data)
  43. console.log(JSON.parse(ev.data))
  44. switch (messageId) {
  45. case 'getState':
  46. // 初始化完毕
  47. const { state } = JSON.parse(ev.data)
  48. const {
  49. disinfectionWorkState,
  50. disinfectionState,
  51. preHeat,
  52. preHeatRaminTimeS,
  53. estimatedRemainingTimeS,
  54. disinfection_id,
  55. isLogin,
  56. permissionLevel,
  57. sensor_data,
  58. drainingWorkState,
  59. replenishingFluidsWorkState,
  60. } = state || {}
  61. if (!isLogin) {
  62. window.location.href = 'http://127.0.0.1/#/login'
  63. return
  64. }
  65. const {
  66. h2o2_1,
  67. h2o2_2,
  68. h2o2_3,
  69. humid_1,
  70. humid_2,
  71. humid_3,
  72. saturation_1,
  73. temp_1,
  74. temp_2,
  75. temp_3,
  76. airCompressor,
  77. disinfectant_volume,
  78. heatingStrip,
  79. airBlower,
  80. sprinklerPump,
  81. chargingPump,
  82. waterImmersionSensor1,
  83. waterImmersionSensor2,
  84. chargingPumpRPM,
  85. sprinklerPumpRPM,
  86. sprinklerPumpGPM,
  87. } = sensor_data
  88. const { nowlog, targetlog } = disinfectionState || {}
  89. deviceStore.updateTargetLog(targetlog)
  90. deviceStore.updateNowLog(nowlog)
  91. if ([1, 2, 3, 4].includes(disinfectionWorkState)) {
  92. operatorStore.updateShowStartReady(false)
  93. } else {
  94. operatorStore.updateStopReady(false)
  95. }
  96. settingStore.updateSprinklerPumpGPM(sprinklerPumpGPM)
  97. settingStore.updateChargingPumpRPM(chargingPumpRPM)
  98. settingStore.updateSprinklerPumpRPM(sprinklerPumpRPM)
  99. operatorStore.updateDrainingWorkState(drainingWorkState)
  100. operatorStore.updateReplenishingFluidsWorkState(
  101. replenishingFluidsWorkState,
  102. )
  103. testStore.updateWaterImmersionSensor1(
  104. waterImmersionSensor1 == 0 ? false : true,
  105. )
  106. testStore.updateWaterImmersionSensor2(
  107. waterImmersionSensor2 == 0 ? false : true,
  108. )
  109. // 将sensor_data中的数据更新到store中
  110. testStore.updateAirCompressorObj(airCompressor)
  111. testStore.updateAirBlowerObj(airBlower)
  112. testStore.updateHeatingStripObj(heatingStrip)
  113. testStore.updateSprinklerPump(sprinklerPump)
  114. testStore.updateChargingPump(chargingPump)
  115. settingStore.updateDeviceIp('192.168.8.10')
  116. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  117. deviceStore.updateBinTemperature(temp_1)
  118. deviceStore.updateBinHumidity(humid_1)
  119. deviceStore.updateBinHP(h2o2_1)
  120. deviceStore.updateBinSaturation(saturation_1)
  121. deviceStore.updateEnvirTemperature1(temp_2)
  122. deviceStore.updateEnvirHumidity1(humid_2)
  123. deviceStore.updateEnvirHP1(h2o2_2)
  124. deviceStore.updateEnvirTemperature2(temp_3)
  125. deviceStore.updateEnvirHumidity2(humid_3)
  126. deviceStore.updateEnvirHP2(h2o2_3)
  127. userStore.updatePermission(permissionLevel)
  128. settingStore.updateInitLoading()
  129. operatorStore.updatePreHeatRaminTimeS(preHeatRaminTimeS)
  130. operatorStore.updatePreHeat(preHeat)
  131. operatorStore.updateDisinfectStatus(disinfectionWorkState)
  132. operatorStore.updateEstimatedRemainingTimeS(estimatedRemainingTimeS)
  133. operatorStore.updateDisinfectionId(disinfection_id)
  134. // 将sensor_data中的数据更新到store中
  135. if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
  136. saveEchartsDataToLocal(
  137. moment(timeStamp).format('HH:mm'),
  138. [temp_1, humid_1, h2o2_1, saturation_1],
  139. [temp_2, humid_2, h2o2_2, saturation_1],
  140. [temp_3, humid_3, h2o2_3, saturation_1],
  141. )
  142. echartsStore.updateBinCharts(
  143. JSON.parse(localStorage.getItem('bin')),
  144. )
  145. echartsStore.updateEnvir1Charts(
  146. JSON.parse(localStorage.getItem('envir1')),
  147. )
  148. echartsStore.updateEnvir2Charts(
  149. JSON.parse(localStorage.getItem('envir2')),
  150. )
  151. }
  152. break
  153. case 'getAllUser':
  154. const { dbval } = JSON.parse(ev.data)
  155. console.log(dbval, 'dbva;')
  156. userStore.updateUserList(dbval)
  157. break
  158. case 'chpasswd':
  159. const { ackcode: chpasswdCode } = JSON.parse(ev.data)
  160. if (chpasswdCode != 0) {
  161. // 修改失败
  162. showFailToast('修改失败')
  163. } else {
  164. showSuccessToast('修改成功')
  165. }
  166. break
  167. case 'startReplenishingFluids':
  168. const { ackcode: startReplenishingCode } = JSON.parse(ev.data)
  169. if (startReplenishingCode == 0) {
  170. operatorStore.updateReplenishingFluidsWorkState(1)
  171. }
  172. case 'startDraining':
  173. const { ackcode: startDrainingCode } = JSON.parse(ev.data)
  174. if (startDrainingCode == 0) {
  175. operatorStore.updateDrainingWorkState(1)
  176. }
  177. case 'startDisinfection':
  178. break
  179. case 'stopDisinfection':
  180. break
  181. case 'exportUserBehaviorRecord':
  182. settingStore.updateExportLoading(false)
  183. const { ackcode: exportUserCode } = JSON.parse(ev.data) || {}
  184. if (exportUserCode == 3000) {
  185. showFailToast('未检测到U盘')
  186. }
  187. if (exportUserCode != 0 && exportUserCode != 3000) {
  188. showFailToast('导出错误')
  189. }
  190. break
  191. case 'exportDisinfectionRecord':
  192. settingStore.updateExportLoading(false)
  193. const { ackcode: disinfectionRecordCode } =
  194. JSON.parse(ev.data) || {}
  195. if (disinfectionRecordCode == 3000) {
  196. showFailToast('未检测到U盘')
  197. }
  198. if (disinfectionRecordCode != 0 && disinfectionRecordCode != 3000) {
  199. showFailToast('导出错误')
  200. }
  201. break
  202. case 'getAllFormula':
  203. const { formula } = JSON.parse(ev.data) || {}
  204. const { formulas } = formula || {}
  205. formulaStore.updateFormulaList(formulas || [])
  206. break
  207. case 'getUserBehaviorRecordDescJson':
  208. const { records } = JSON.parse(ev.data) || {}
  209. const { iterms, page, total, totalpage } = records || {}
  210. auditStore.updateAuditList(iterms || [])
  211. auditStore.updateTotalPage(totalpage)
  212. auditStore.updateTotal(total)
  213. auditStore.updatePage(page)
  214. break
  215. case 'getDisinfectionConfig':
  216. const { disinfectionConfig } = JSON.parse(ev.data)
  217. runningStore.updateDisinfectionConfig(disinfectionConfig)
  218. break
  219. case 'login':
  220. const { ackcode: loginCode } = JSON.parse(ev.data) || {}
  221. if (loginCode == 50001) {
  222. showFailToast('用户不存在')
  223. }
  224. if (loginCode == 5000) {
  225. showFailToast('密码错误')
  226. }
  227. break
  228. case 'getAllRecords':
  229. break
  230. case 'getAllSetting':
  231. const { dbval: allSetting } = JSON.parse(ev.data)
  232. console.log(JSON.parse(ev.data))
  233. settingStore.updateAllSettingList(allSetting)
  234. break
  235. default:
  236. break
  237. }
  238. }
  239. this.socketCommandInstance = init
  240. },
  241. sendCommandMsg(message) {
  242. this.socketCommandInstance?.msg(message)
  243. },
  244. initEventSocket() {
  245. const url = import.meta.env.VITE_BASE_WS2_URL
  246. const init = new Socket(url)
  247. init.connect()
  248. const deviceStore = useDeviceStore()
  249. const testStore = useTestStore()
  250. const settingStore = useSettingStore()
  251. const operatorStore = useOperatorStore()
  252. const echartsStore = useEchartsStore()
  253. init.ws.onmessage = function (ev) {
  254. // console.log(JSON.parse(ev.data))
  255. const { command, timeStamp } = JSON.parse(ev.data)
  256. switch (command) {
  257. case 'RealtimeSensorDataReport':
  258. const { sensor_data } = JSON.parse(ev.data)
  259. const {
  260. h2o2_1,
  261. h2o2_2,
  262. h2o2_3,
  263. humid_1,
  264. humid_2,
  265. humid_3,
  266. temp_1,
  267. temp_2,
  268. temp_3,
  269. saturation_1,
  270. airCompressor,
  271. disinfectant_volume,
  272. heatingStrip,
  273. airBlower,
  274. sprinklerPump,
  275. chargingPump,
  276. waterImmersionSensor1,
  277. waterImmersionSensor2,
  278. } = sensor_data
  279. // 将sensor_data中的数据更新到store中
  280. testStore.updateWaterImmersionSensor1(
  281. waterImmersionSensor1 == 0 ? false : true,
  282. )
  283. testStore.updateWaterImmersionSensor2(
  284. waterImmersionSensor2 == 0 ? false : true,
  285. )
  286. testStore.updateAirCompressorObj(airCompressor)
  287. testStore.updateAirBlowerObj(airBlower)
  288. testStore.updateHeatingStripObj(heatingStrip)
  289. testStore.updateSprinklerPump(sprinklerPump)
  290. testStore.updateChargingPump(chargingPump)
  291. settingStore.updateDeviceIp('192.168.8.10')
  292. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  293. deviceStore.updateBinTemperature(temp_1)
  294. deviceStore.updateBinHumidity(humid_1)
  295. deviceStore.updateBinHP(h2o2_1)
  296. deviceStore.updateBinSaturation(saturation_1)
  297. deviceStore.updateEnvirTemperature1(temp_2)
  298. deviceStore.updateEnvirHumidity1(humid_2)
  299. deviceStore.updateEnvirHP1(h2o2_2)
  300. deviceStore.updateEnvirTemperature2(temp_3)
  301. deviceStore.updateEnvirHumidity2(humid_3)
  302. deviceStore.updateEnvirHP2(h2o2_3)
  303. // 对数据进行处理 并存入到localstorage中
  304. if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
  305. saveEchartsDataToLocal(
  306. moment(timeStamp).format('HH:mm'),
  307. [temp_1, humid_1, h2o2_1, saturation_1],
  308. [temp_2, humid_2, h2o2_2, saturation_1],
  309. [temp_3, humid_3, h2o2_3, saturation_1],
  310. )
  311. echartsStore.updateBinCharts(
  312. JSON.parse(localStorage.getItem('bin')),
  313. )
  314. echartsStore.updateEnvir1Charts(
  315. JSON.parse(localStorage.getItem('envir1')),
  316. )
  317. echartsStore.updateEnvir2Charts(
  318. JSON.parse(localStorage.getItem('envir2')),
  319. )
  320. }
  321. break
  322. default:
  323. break
  324. }
  325. }
  326. this.socketEventInstance = init
  327. },
  328. sendEventMsg(message) {
  329. this.socketEventInstance?.msg(message)
  330. },
  331. },
  332. })