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

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