新型管道消毒机前端代码
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.

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