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

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