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

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