管道式消毒机
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.

342 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
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/#/'
  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().utcOffset(8).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 == 0) {
  185. showSuccessToast('导出成功')
  186. }
  187. if (exportUserCode == 3000) {
  188. showFailToast('未检测到U盘')
  189. }
  190. if (exportUserCode != 0 && exportUserCode != 3000) {
  191. showFailToast('导出错误')
  192. }
  193. break
  194. case 'exportDisinfectionRecord':
  195. settingStore.updateExportLoading(false)
  196. const { ackcode: disinfectionRecordCode } =
  197. JSON.parse(ev.data) || {}
  198. if (disinfectionRecordCode == 0) {
  199. showSuccessToast('导出成功')
  200. }
  201. if (disinfectionRecordCode == 3000) {
  202. showFailToast('未检测到U盘')
  203. }
  204. if (disinfectionRecordCode != 0 && disinfectionRecordCode != 3000) {
  205. showFailToast('导出错误')
  206. }
  207. break
  208. case 'getAllFormula':
  209. const { formula } = JSON.parse(ev.data) || {}
  210. const { formulas } = formula || {}
  211. formulaStore.updateFormulaList(formulas || [])
  212. break
  213. case 'getUserBehaviorRecordDescJson':
  214. const { records } = JSON.parse(ev.data) || {}
  215. const { iterms, page, total, totalpage } = records || {}
  216. auditStore.updateAuditList(iterms || [])
  217. auditStore.updateTotalPage(totalpage)
  218. auditStore.updateTotal(total)
  219. auditStore.updatePage(page)
  220. break
  221. case 'getDisinfectionConfig':
  222. const { disinfectionConfig } = JSON.parse(ev.data)
  223. runningStore.updateDisinfectionConfig(disinfectionConfig)
  224. break
  225. case 'login':
  226. const { ackcode: loginCode } = JSON.parse(ev.data) || {}
  227. if (loginCode == 50001) {
  228. showFailToast('用户不存在')
  229. }
  230. if (loginCode == 5000) {
  231. showFailToast('密码错误')
  232. }
  233. break
  234. case 'getAllRecords':
  235. break
  236. case 'getAllSetting':
  237. const { dbval: allSetting } = JSON.parse(ev.data)
  238. console.log(JSON.parse(ev.data))
  239. settingStore.updateAllSettingList(allSetting)
  240. break
  241. default:
  242. break
  243. }
  244. }
  245. this.socketCommandInstance = init
  246. },
  247. sendCommandMsg(message) {
  248. this.socketCommandInstance?.msg(message)
  249. },
  250. initEventSocket() {
  251. const url = import.meta.env.VITE_BASE_WS2_URL
  252. const init = new Socket(url)
  253. init.connect()
  254. const deviceStore = useDeviceStore()
  255. const testStore = useTestStore()
  256. const settingStore = useSettingStore()
  257. const operatorStore = useOperatorStore()
  258. const echartsStore = useEchartsStore()
  259. init.ws.onmessage = function (ev) {
  260. // console.log(JSON.parse(ev.data))
  261. const { command, timeStamp } = JSON.parse(ev.data)
  262. switch (command) {
  263. case 'RealtimeSensorDataReport':
  264. const { sensor_data } = JSON.parse(ev.data)
  265. const {
  266. h2o2_1,
  267. h2o2_2,
  268. h2o2_3,
  269. humid_1,
  270. humid_2,
  271. humid_3,
  272. temp_1,
  273. temp_2,
  274. temp_3,
  275. saturation_1,
  276. airCompressor,
  277. disinfectant_volume,
  278. heatingStrip,
  279. airBlower,
  280. sprinklerPump,
  281. chargingPump,
  282. waterImmersionSensor1,
  283. waterImmersionSensor2,
  284. } = sensor_data
  285. // 将sensor_data中的数据更新到store中
  286. testStore.updateWaterImmersionSensor1(
  287. waterImmersionSensor1 == 0 ? false : true,
  288. )
  289. testStore.updateWaterImmersionSensor2(
  290. waterImmersionSensor2 == 0 ? false : true,
  291. )
  292. testStore.updateAirCompressorObj(airCompressor)
  293. testStore.updateAirBlowerObj(airBlower)
  294. testStore.updateHeatingStripObj(heatingStrip)
  295. testStore.updateSprinklerPump(sprinklerPump)
  296. testStore.updateChargingPump(chargingPump)
  297. settingStore.updateDeviceIp('192.168.8.10')
  298. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  299. deviceStore.updateBinTemperature(temp_1)
  300. deviceStore.updateBinHumidity(humid_1)
  301. deviceStore.updateBinHP(h2o2_1)
  302. deviceStore.updateBinSaturation(saturation_1)
  303. deviceStore.updateEnvirTemperature1(temp_2)
  304. deviceStore.updateEnvirHumidity1(humid_2)
  305. deviceStore.updateEnvirHP1(h2o2_2)
  306. deviceStore.updateEnvirTemperature2(temp_3)
  307. deviceStore.updateEnvirHumidity2(humid_3)
  308. deviceStore.updateEnvirHP2(h2o2_3)
  309. // 对数据进行处理 并存入到localstorage中
  310. if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
  311. saveEchartsDataToLocal(
  312. moment().utcOffset(8).format('HH:mm'),
  313. [temp_1, humid_1, h2o2_1, saturation_1],
  314. [temp_2, humid_2, h2o2_2, saturation_1],
  315. [temp_3, humid_3, h2o2_3, saturation_1],
  316. )
  317. echartsStore.updateBinCharts(
  318. JSON.parse(localStorage.getItem('bin')),
  319. )
  320. echartsStore.updateEnvir1Charts(
  321. JSON.parse(localStorage.getItem('envir1')),
  322. )
  323. echartsStore.updateEnvir2Charts(
  324. JSON.parse(localStorage.getItem('envir2')),
  325. )
  326. }
  327. break
  328. default:
  329. break
  330. }
  331. }
  332. this.socketEventInstance = init
  333. },
  334. sendEventMsg(message) {
  335. this.socketEventInstance?.msg(message)
  336. },
  337. },
  338. })