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

182 lines
6.2 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
  1. import { defineStore } from 'pinia'
  2. import Socket from '@/socket'
  3. import { useSettingStore } from './setting'
  4. import { useUserStore } from './user'
  5. import { useOperatorStore } from './operator'
  6. import { useDeviceStore } from './device'
  7. import { useTestStore } from './test'
  8. export const useWebSocketStore = defineStore({
  9. id: 'websocket', // id必填,且需要唯一
  10. // state
  11. state: () => {
  12. return {
  13. // 命令websocket 实例
  14. socketCommandInstance: null,
  15. // 事件上报websocket 实例
  16. socketEventInstance: null,
  17. }
  18. },
  19. // actions
  20. actions: {
  21. initCommandSocket() {
  22. const url = import.meta.env.VITE_BASE_WS1_URL
  23. const init = new Socket(url)
  24. const settingStore = useSettingStore()
  25. const userStore = useUserStore()
  26. const testStore = useTestStore()
  27. const deviceStore = useDeviceStore()
  28. const operatorStore = useOperatorStore()
  29. init.connect()
  30. init.ws.onmessage = function (ev) {
  31. // console.log(JSON.parse(ev.data))
  32. const { ackcode, messageId } = JSON.parse(ev.data)
  33. if (ackcode == 0) {
  34. switch (messageId) {
  35. case 'getState':
  36. // 初始化完毕
  37. const { state } = JSON.parse(ev.data)
  38. const {
  39. workState,
  40. estimatedRemainingTimeS,
  41. disinfection_id,
  42. isLogin,
  43. permissionLevel,
  44. sensor_data,
  45. } = state || {}
  46. if (!isLogin) {
  47. window.location.href = '/login'
  48. return
  49. }
  50. const {
  51. h2o2_1,
  52. h2o2_2,
  53. h2o2_3,
  54. humid_1,
  55. humid_2,
  56. humid_3,
  57. temp_1,
  58. temp_2,
  59. temp_3,
  60. airCompressor,
  61. disinfectant_volume,
  62. heatingStrip,
  63. airBlower,
  64. sprinklerPump,
  65. chargingPump,
  66. } = sensor_data
  67. // 将sensor_data中的数据更新到store中
  68. testStore.updateAirCompressorObj(airCompressor)
  69. testStore.updateAirBlowerObj(airBlower)
  70. testStore.updateHeatingStripObj(heatingStrip)
  71. testStore.updateSprinklerPump(sprinklerPump)
  72. testStore.updateChargingPump(chargingPump)
  73. settingStore.updateDeviceIp('127.0.0.1')
  74. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  75. deviceStore.updateBinTemperature(temp_1)
  76. deviceStore.updateBinHumidity(humid_1)
  77. deviceStore.updateBinHP(h2o2_1)
  78. deviceStore.updateEnvirTemperature1(temp_2)
  79. deviceStore.updateEnvirHumidity1(humid_2)
  80. deviceStore.updateEnvirHP1(h2o2_2)
  81. deviceStore.updateEnvirTemperature2(temp_3)
  82. deviceStore.updateEnvirHumidity2(humid_3)
  83. deviceStore.updateEnvirHP2(h2o2_3)
  84. userStore.updatePermission(permissionLevel)
  85. settingStore.updateInitLoading()
  86. operatorStore.updateDisinfectStatus(workState)
  87. operatorStore.updateEstimatedRemainingTimeS(
  88. estimatedRemainingTimeS,
  89. )
  90. operatorStore.updateDisinfectionId(disinfection_id)
  91. // 将sensor_data中的数据更新到store中
  92. break
  93. case 'getAllUser':
  94. const { dbval } = JSON.parse(ev.data)
  95. userStore.updateUserList(dbval)
  96. break
  97. case 'chpasswd':
  98. break
  99. case 'startDisinfection':
  100. break
  101. case 'stopDisinfection':
  102. break
  103. case 'login':
  104. break
  105. case 'getAllRecords':
  106. break
  107. case 'getAllSetting':
  108. const { dbval: allSetting } = JSON.parse(ev.data)
  109. settingStore.updateAllSettingList(allSetting)
  110. break
  111. default:
  112. break
  113. }
  114. }
  115. }
  116. this.socketCommandInstance = init
  117. },
  118. sendCommandMsg(message) {
  119. this.socketCommandInstance?.msg(message)
  120. },
  121. initEventSocket() {
  122. const url = import.meta.env.VITE_BASE_WS2_URL
  123. const init = new Socket(url)
  124. init.connect()
  125. const deviceStore = useDeviceStore()
  126. const testStore = useTestStore()
  127. const settingStore = useSettingStore()
  128. init.ws.onmessage = function (ev) {
  129. // console.log(JSON.parse(ev.data))
  130. const { command } = JSON.parse(ev.data)
  131. switch (command) {
  132. case 'RealtimeSensorDataReport':
  133. const { sensor_data } = JSON.parse(ev.data)
  134. const {
  135. h2o2_1,
  136. h2o2_2,
  137. h2o2_3,
  138. humid_1,
  139. humid_2,
  140. humid_3,
  141. temp_1,
  142. temp_2,
  143. temp_3,
  144. airCompressor,
  145. disinfectant_volume,
  146. heatingStrip,
  147. airBlower,
  148. sprinklerPump,
  149. chargingPump,
  150. } = sensor_data
  151. // 将sensor_data中的数据更新到store中
  152. testStore.updateAirCompressorObj(airCompressor)
  153. testStore.updateAirBlowerObj(airBlower)
  154. testStore.updateHeatingStripObj(heatingStrip)
  155. testStore.updateSprinklerPump(sprinklerPump)
  156. testStore.updateChargingPump(chargingPump)
  157. settingStore.updateDeviceIp('127.0.0.1')
  158. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  159. deviceStore.updateBinTemperature(temp_1)
  160. deviceStore.updateBinHumidity(humid_1)
  161. deviceStore.updateBinHP(h2o2_1)
  162. deviceStore.updateEnvirTemperature1(temp_2)
  163. deviceStore.updateEnvirHumidity1(humid_2)
  164. deviceStore.updateEnvirHP1(h2o2_2)
  165. deviceStore.updateEnvirTemperature2(temp_3)
  166. deviceStore.updateEnvirHumidity2(humid_3)
  167. deviceStore.updateEnvirHP2(h2o2_3)
  168. break
  169. default:
  170. break
  171. }
  172. }
  173. this.socketEventInstance = init
  174. },
  175. sendEventMsg(message) {
  176. this.socketEventInstance?.msg(message)
  177. },
  178. },
  179. })