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

186 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
  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. import { showSuccessToast, showFailToast } from 'vant'
  9. export const useWebSocketStore = defineStore({
  10. id: 'websocket', // id必填,且需要唯一
  11. // state
  12. state: () => {
  13. return {
  14. // 命令websocket 实例
  15. socketCommandInstance: null,
  16. // 事件上报websocket 实例
  17. socketEventInstance: null,
  18. }
  19. },
  20. // actions
  21. actions: {
  22. initCommandSocket() {
  23. const url = import.meta.env.VITE_BASE_WS1_URL
  24. const init = new Socket(url)
  25. const settingStore = useSettingStore()
  26. const userStore = useUserStore()
  27. const testStore = useTestStore()
  28. const deviceStore = useDeviceStore()
  29. const operatorStore = useOperatorStore()
  30. init.connect()
  31. init.ws.onmessage = function (ev) {
  32. // console.log(JSON.parse(ev.data))
  33. const { ackcode, messageId } = JSON.parse(ev.data)
  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('192.168.8.10')
  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(estimatedRemainingTimeS)
  88. operatorStore.updateDisinfectionId(disinfection_id)
  89. // 将sensor_data中的数据更新到store中
  90. break
  91. case 'getAllUser':
  92. const { dbval } = JSON.parse(ev.data)
  93. userStore.updateUserList(dbval)
  94. break
  95. case 'chpasswd':
  96. console.log(JSON.parse(ev.data))
  97. if (ackcode != 0) {
  98. // 修改失败
  99. showFailToast('修改失败')
  100. } else {
  101. showSuccessToast('修改成功')
  102. }
  103. break
  104. case 'startDisinfection':
  105. break
  106. case 'stopDisinfection':
  107. break
  108. case 'login':
  109. break
  110. case 'getAllRecords':
  111. break
  112. case 'getAllSetting':
  113. const { dbval: allSetting } = JSON.parse(ev.data)
  114. settingStore.updateAllSettingList(allSetting)
  115. break
  116. default:
  117. break
  118. }
  119. }
  120. this.socketCommandInstance = init
  121. },
  122. sendCommandMsg(message) {
  123. this.socketCommandInstance?.msg(message)
  124. },
  125. initEventSocket() {
  126. const url = import.meta.env.VITE_BASE_WS2_URL
  127. const init = new Socket(url)
  128. init.connect()
  129. const deviceStore = useDeviceStore()
  130. const testStore = useTestStore()
  131. const settingStore = useSettingStore()
  132. init.ws.onmessage = function (ev) {
  133. // console.log(JSON.parse(ev.data))
  134. const { command } = JSON.parse(ev.data)
  135. switch (command) {
  136. case 'RealtimeSensorDataReport':
  137. const { sensor_data } = JSON.parse(ev.data)
  138. const {
  139. h2o2_1,
  140. h2o2_2,
  141. h2o2_3,
  142. humid_1,
  143. humid_2,
  144. humid_3,
  145. temp_1,
  146. temp_2,
  147. temp_3,
  148. airCompressor,
  149. disinfectant_volume,
  150. heatingStrip,
  151. airBlower,
  152. sprinklerPump,
  153. chargingPump,
  154. } = sensor_data
  155. // 将sensor_data中的数据更新到store中
  156. testStore.updateAirCompressorObj(airCompressor)
  157. testStore.updateAirBlowerObj(airBlower)
  158. testStore.updateHeatingStripObj(heatingStrip)
  159. testStore.updateSprinklerPump(sprinklerPump)
  160. testStore.updateChargingPump(chargingPump)
  161. settingStore.updateDeviceIp('192.168.8.10')
  162. deviceStore.updateDisinfectantCapacity(disinfectant_volume)
  163. deviceStore.updateBinTemperature(temp_1)
  164. deviceStore.updateBinHumidity(humid_1)
  165. deviceStore.updateBinHP(h2o2_1)
  166. deviceStore.updateEnvirTemperature1(temp_2)
  167. deviceStore.updateEnvirHumidity1(humid_2)
  168. deviceStore.updateEnvirHP1(h2o2_2)
  169. deviceStore.updateEnvirTemperature2(temp_3)
  170. deviceStore.updateEnvirHumidity2(humid_3)
  171. deviceStore.updateEnvirHP2(h2o2_3)
  172. break
  173. default:
  174. break
  175. }
  176. }
  177. this.socketEventInstance = init
  178. },
  179. sendEventMsg(message) {
  180. this.socketEventInstance?.msg(message)
  181. },
  182. },
  183. })