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

279 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
  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. } = sensor_data
  80. if ([1, 2, 3, 4].includes(disinfectionWorkState)) {
  81. operatorStore.updateShowStartReady(false)
  82. } else {
  83. operatorStore.updateStopReady(false)
  84. }
  85. settingStore.updateChargingPumpRPM(chargingPumpRPM)
  86. settingStore.updateSprinklerPumpRPM(sprinklerPumpRPM)
  87. operatorStore.updateDrainingWorkState(drainingWorkState)
  88. operatorStore.updateReplenishingFluidsWorkState(
  89. replenishingFluidsWorkState,
  90. )
  91. testStore.updateWaterImmersionSensor1(
  92. waterImmersionSensor1 == 0 ? false : true,
  93. )
  94. testStore.updateWaterImmersionSensor2(
  95. waterImmersionSensor2 == 0 ? false : true,
  96. )
  97. // 将sensor_data中的数据更新到store中
  98. testStore.updateAirCompressorObj(airCompressor)
  99. testStore.updateAirBlowerObj(airBlower)
  100. testStore.updateHeatingStripObj(heatingStrip)
  101. testStore.updateSprinklerPump(sprinklerPump)
  102. testStore.updateChargingPump(chargingPump)
  103. settingStore.updateDeviceIp('192.168.8.10')
  104. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  105. deviceStore.updateBinTemperature(temp_1)
  106. deviceStore.updateBinHumidity(humid_1)
  107. deviceStore.updateBinHP(h2o2_1)
  108. deviceStore.updateBinSaturation(saturation_1)
  109. deviceStore.updateEnvirTemperature1(temp_2)
  110. deviceStore.updateEnvirHumidity1(humid_2)
  111. deviceStore.updateEnvirHP1(h2o2_2)
  112. deviceStore.updateEnvirTemperature2(temp_3)
  113. deviceStore.updateEnvirHumidity2(humid_3)
  114. deviceStore.updateEnvirHP2(h2o2_3)
  115. userStore.updatePermission(permissionLevel)
  116. settingStore.updateInitLoading()
  117. operatorStore.updatePreHeatRaminTimeS(preHeatRaminTimeS)
  118. operatorStore.updatePreHeat(preHeat)
  119. operatorStore.updateDisinfectStatus(disinfectionWorkState)
  120. operatorStore.updateEstimatedRemainingTimeS(estimatedRemainingTimeS)
  121. operatorStore.updateDisinfectionId(disinfection_id)
  122. // 将sensor_data中的数据更新到store中
  123. if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
  124. saveEchartsDataToLocal(
  125. moment(timeStamp).format('HH:mm'),
  126. [temp_1, humid_1, h2o2_1, saturation_1],
  127. [temp_2, humid_2, h2o2_2, saturation_1],
  128. [temp_3, humid_3, h2o2_3, saturation_1],
  129. )
  130. echartsStore.updateBinCharts(
  131. JSON.parse(localStorage.getItem('bin')),
  132. )
  133. echartsStore.updateEnvir1Charts(
  134. JSON.parse(localStorage.getItem('envir1')),
  135. )
  136. echartsStore.updateEnvir2Charts(
  137. JSON.parse(localStorage.getItem('envir2')),
  138. )
  139. }
  140. break
  141. case 'getAllUser':
  142. const { dbval } = JSON.parse(ev.data)
  143. console.log(dbval, 'dbva;')
  144. userStore.updateUserList(dbval)
  145. break
  146. case 'chpasswd':
  147. if (ackcode != 0) {
  148. // 修改失败
  149. showFailToast('修改失败')
  150. } else {
  151. showSuccessToast('修改成功')
  152. }
  153. break
  154. case 'startReplenishingFluids':
  155. if (ackcode == 0) {
  156. operatorStore.updateReplenishingFluidsWorkState(1)
  157. }
  158. case 'startDraining':
  159. if (ackcode == 0) {
  160. operatorStore.updateDrainingWorkState(1)
  161. }
  162. case 'startDisinfection':
  163. break
  164. case 'stopDisinfection':
  165. break
  166. case 'login':
  167. if (ackcode == 0) {
  168. window.location.href = 'http://127.0.0.1/'
  169. }
  170. break
  171. case 'getAllRecords':
  172. break
  173. case 'getAllSetting':
  174. const { dbval: allSetting } = JSON.parse(ev.data)
  175. console.log(JSON.parse(ev.data))
  176. settingStore.updateAllSettingList(allSetting)
  177. break
  178. default:
  179. break
  180. }
  181. }
  182. this.socketCommandInstance = init
  183. },
  184. sendCommandMsg(message) {
  185. this.socketCommandInstance?.msg(message)
  186. },
  187. initEventSocket() {
  188. const url = import.meta.env.VITE_BASE_WS2_URL
  189. const init = new Socket(url)
  190. init.connect()
  191. const deviceStore = useDeviceStore()
  192. const testStore = useTestStore()
  193. const settingStore = useSettingStore()
  194. const operatorStore = useOperatorStore()
  195. const echartsStore = useEchartsStore()
  196. init.ws.onmessage = function (ev) {
  197. // console.log(JSON.parse(ev.data))
  198. const { command, timeStamp } = JSON.parse(ev.data)
  199. switch (command) {
  200. case 'RealtimeSensorDataReport':
  201. const { sensor_data } = JSON.parse(ev.data)
  202. const {
  203. h2o2_1,
  204. h2o2_2,
  205. h2o2_3,
  206. humid_1,
  207. humid_2,
  208. humid_3,
  209. temp_1,
  210. temp_2,
  211. temp_3,
  212. saturation_1,
  213. airCompressor,
  214. disinfectant_volume,
  215. heatingStrip,
  216. airBlower,
  217. sprinklerPump,
  218. chargingPump,
  219. waterImmersionSensor1,
  220. waterImmersionSensor2,
  221. } = sensor_data
  222. // 将sensor_data中的数据更新到store中
  223. testStore.updateWaterImmersionSensor1(
  224. waterImmersionSensor1 == 0 ? false : true,
  225. )
  226. testStore.updateWaterImmersionSensor2(
  227. waterImmersionSensor2 == 0 ? false : true,
  228. )
  229. testStore.updateAirCompressorObj(airCompressor)
  230. testStore.updateAirBlowerObj(airBlower)
  231. testStore.updateHeatingStripObj(heatingStrip)
  232. testStore.updateSprinklerPump(sprinklerPump)
  233. testStore.updateChargingPump(chargingPump)
  234. settingStore.updateDeviceIp('192.168.8.10')
  235. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  236. deviceStore.updateBinTemperature(temp_1)
  237. deviceStore.updateBinHumidity(humid_1)
  238. deviceStore.updateBinHP(h2o2_1)
  239. deviceStore.updateBinSaturation(saturation_1)
  240. deviceStore.updateEnvirTemperature1(temp_2)
  241. deviceStore.updateEnvirHumidity1(humid_2)
  242. deviceStore.updateEnvirHP1(h2o2_2)
  243. deviceStore.updateEnvirTemperature2(temp_3)
  244. deviceStore.updateEnvirHumidity2(humid_3)
  245. deviceStore.updateEnvirHP2(h2o2_3)
  246. // 对数据进行处理 并存入到localstorage中
  247. if ([1, 2, 3, 4].includes(operatorStore.disinfectStatus)) {
  248. saveEchartsDataToLocal(
  249. moment(timeStamp).format('HH:mm'),
  250. [temp_1, humid_1, h2o2_1, saturation_1],
  251. [temp_2, humid_2, h2o2_2, saturation_1],
  252. [temp_3, humid_3, h2o2_3, saturation_1],
  253. )
  254. echartsStore.updateBinCharts(
  255. JSON.parse(localStorage.getItem('bin')),
  256. )
  257. echartsStore.updateEnvir1Charts(
  258. JSON.parse(localStorage.getItem('envir1')),
  259. )
  260. echartsStore.updateEnvir2Charts(
  261. JSON.parse(localStorage.getItem('envir2')),
  262. )
  263. }
  264. break
  265. default:
  266. break
  267. }
  268. }
  269. this.socketEventInstance = init
  270. },
  271. sendEventMsg(message) {
  272. this.socketEventInstance?.msg(message)
  273. },
  274. },
  275. })