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

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