workspace.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <div class="project-app-wrapper">
  3. <div class="left">
  4. <div class="main-content uranus-scrollbar dark">
  5. <Tsa />
  6. </div>
  7. </div>
  8. <div class="right">
  9. <div class="map-wrapper">
  10. <GMap />
  11. </div>
  12. </div>
  13. </div>
  14. </template>
  15. <script lang="ts" setup>
  16. import Tsa from '/@/pages/page-web/projects/tsa.vue'
  17. import GMap from '/@/components/GMap.vue'
  18. import { EBizCode } from '/@/types'
  19. import { useMyStore } from '/@/store'
  20. import { useConnectWebSocket } from '/@/hooks/use-connect-websocket'
  21. import EventBus from '/@/event-bus'
  22. const store = useMyStore()
  23. const messageHandler = async (payload: any) => {
  24. if (!payload) {
  25. return
  26. }
  27. switch (payload.biz_code) {
  28. case EBizCode.GatewayOsd: {
  29. store.commit('SET_GATEWAY_INFO', payload.data)
  30. break
  31. }
  32. case EBizCode.DeviceOsd: {
  33. store.commit('SET_DEVICE_INFO', payload.data)
  34. break
  35. }
  36. case EBizCode.DockOsd: {
  37. store.commit('SET_DOCK_INFO', payload.data)
  38. break
  39. }
  40. case EBizCode.MapElementCreate: {
  41. store.commit('SET_MAP_ELEMENT_CREATE', payload.data)
  42. break
  43. }
  44. case EBizCode.MapElementUpdate: {
  45. store.commit('SET_MAP_ELEMENT_UPDATE', payload.data)
  46. break
  47. }
  48. case EBizCode.MapElementDelete: {
  49. store.commit('SET_MAP_ELEMENT_DELETE', payload.data)
  50. break
  51. }
  52. case EBizCode.DeviceOnline: {
  53. store.commit('SET_DEVICE_ONLINE', payload.data)
  54. break
  55. }
  56. case EBizCode.DeviceOffline: {
  57. store.commit('SET_DEVICE_OFFLINE', payload.data)
  58. break
  59. }
  60. case EBizCode.FlightTaskProgress:
  61. case EBizCode.FlightTaskMediaProgress:
  62. case EBizCode.FlightTaskMediaHighestPriority: {
  63. EventBus.emit('flightTaskWs', payload)
  64. break
  65. }
  66. case EBizCode.DeviceHms: {
  67. store.commit('SET_DEVICE_HMS_INFO', payload.data)
  68. break
  69. }
  70. case EBizCode.DeviceReboot:
  71. case EBizCode.DroneOpen:
  72. case EBizCode.DroneClose:
  73. case EBizCode.CoverOpen:
  74. case EBizCode.CoverClose:
  75. case EBizCode.PutterOpen:
  76. case EBizCode.PutterClose:
  77. case EBizCode.ChargeOpen:
  78. case EBizCode.ChargeClose:
  79. case EBizCode.DeviceFormat:
  80. case EBizCode.DroneFormat:
  81. {
  82. store.commit('SET_DEVICES_CMD_EXECUTE_INFO', {
  83. biz_code: payload.biz_code,
  84. timestamp: payload.timestamp,
  85. ...payload.data,
  86. })
  87. break
  88. }
  89. case EBizCode.ControlSourceChange:
  90. case EBizCode.FlyToPointProgress:
  91. case EBizCode.TakeoffToPointProgress:
  92. case EBizCode.JoystickInvalidNotify:
  93. case EBizCode.DrcStatusNotify:
  94. {
  95. EventBus.emit('droneControlWs', payload)
  96. break
  97. }
  98. case EBizCode.FlightAreasSyncProgress: {
  99. EventBus.emit('flightAreasSyncProgressWs', payload.data)
  100. break
  101. }
  102. case EBizCode.FlightAreasDroneLocation: {
  103. EventBus.emit('flightAreasDroneLocationWs', payload)
  104. break
  105. }
  106. case EBizCode.FlightAreasUpdate: {
  107. EventBus.emit('flightAreasUpdateWs', payload.data)
  108. break
  109. }
  110. default:
  111. break
  112. }
  113. }
  114. // 监听ws 消息
  115. useConnectWebSocket(messageHandler)
  116. </script>
  117. <style lang="scss" scoped>
  118. @import '/@/styles/index.scss';
  119. ::-webkit-scrollbar {
  120. width: 8px;
  121. height: 8px;
  122. background: transparent;
  123. }
  124. ::-webkit-scrollbar-thumb {
  125. border-radius: 4px;
  126. border: none;
  127. background: rgb(89, 89, 89);
  128. }
  129. .project-app-wrapper {
  130. height: 100%;
  131. width: 100%;
  132. display: flex;
  133. transition: width 0.2s ease;
  134. overflow: hidden;
  135. .left {
  136. display: flex;
  137. width: 300px;
  138. flex: 0 0 300px;
  139. background-color: #232323;
  140. .main-content {
  141. flex: 1;
  142. color: $text-white-basic;
  143. width: 285px;
  144. }
  145. }
  146. .right {
  147. flex-grow: 1;
  148. position: relative;
  149. .map-wrapper {
  150. width: 100%;
  151. height: 100%;
  152. }
  153. .media-wrapper,
  154. .task-wrapper {
  155. position: absolute;
  156. top: 0;
  157. bottom: 0;
  158. left: 0;
  159. right: 0;
  160. z-index: 100;
  161. background: #f6f8fa;
  162. }
  163. }
  164. }
  165. </style>