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

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