forked from drone/command-center-dashboard

罗广辉
2025-04-21 1f52603ba0dcd62d3ff30e17b2c55101298da5e5
src/views/SignMachineNest/SignMachineNest.vue
@@ -6,14 +6,11 @@
<script setup>
import MachineLeft from '@/views/SignMachineNest/MachineLeft/MachineLeft.vue'
import MachineRight from '@/views/SignMachineNest/MachineRight/MachineRight.vue'
import { useConnectWebSocket } from '@/utils/websocket/connect-websocket'
import { getWebsocketUrl } from '@/websocket/util/config'
import { EBizCode } from '@/utils/staticData/enums.js'
import { EModeCode } from '@/utils/staticData/device.js'
import { useStore } from 'vuex'
import { getDeviceDetail, getFlightStatistics, getEventList } from '@/api/home/machineNest'
import { useSingleDroneMap } from '@/hooks/useSingleDroneMap/useSingleDroneMap'
import { useDroneWS } from '@/hooks/useDroneWS'
const store = useStore()
let connectWs = ref(null)
@@ -23,34 +20,6 @@
let osdVisible = ref({})
let workspaceId = ref('')
// 进入单个机巢开始连接ws
const createWsConntect = () => {
   let webSorketUrl = getWebsocketUrl() + '&workspace-id=' + workspaceId.value
   // 监听ws 消息
   connectWs.value = useConnectWebSocket(messageHandler, webSorketUrl)
}
const messageHandler = result => {
   let payload = JSON.parse(result) // 为了兼容聊天消息
   if (!payload) return
   switch (payload.biz_code) {
      case EBizCode.GatewayOsd: {
         store.commit('setGatewayInfo', payload.data)
         break
      }
      case EBizCode.DeviceOsd: {
         store.commit('setDeviceInfo', payload)
         store.commit('setWsMessage', payload)
         break
      }
      case EBizCode.DockOsd: {
         store.commit('setDockOnfo', payload.data)
         break
      }
      default:
         break
   }
}
// 单机巢初始化及事件撒点
const { init, initEventLayer, initDroneEntity } = useSingleDroneMap({
@@ -60,46 +29,38 @@
   },
})
let workspace_id = ref('')
let { wsInfo } = useDroneWS(workspace_id) //ws信息,是一个ref对象
const dockSn = computed(() => singleUavHome.value.device_sn) //机巢sn
const droneSn = computed(() => wsInfo.value?.device_osd?.data?.sn) //无人机sn
provide('dockSn', dockSn)
provide('droneSn', droneSn)
provide('wsInfo',wsInfo)
// 获取单个机巢信息
const dockDetails= ref('')
provide('dockDetails', dockDetails)
const getSingleDetails = () => {
   getDeviceDetail(singleUavHome.value.device_sn).then(res => {
      if (res.data.code !== 0) return
      const result = res.data.data
      dockDetails.value = result
      workspace_id.value = result.workspace_id
      initDroneEntity({
         lng: result.longitude,
         lat: result.latitude,
         status: result.status,
      })
      const child = result.children
      // 对应store 里面数据结构
      osdVisible.value.nickname = result.nickname || '--'
      osdVisible.value.sn = child?.device_sn || ''
      osdVisible.value.callsign = child?.nickname || '--'
      osdVisible.value.model = EModeCode.Disconnected || ''
      osdVisible.value.visible = true
      osdVisible.value.gateway_sn = result?.device_sn || ''
      osdVisible.value.is_dock = true
      osdVisible.value.gateway_callsign = result?.callsign || '--'
      osdVisible.value.payloads = child?.payloads_list || []
      osdVisible.value.device_domain = child.domain || 0
      osdVisible.value.device_sub_type = child.sub_type || 1
      osdVisible.value.device_type = child.type || 0
      // osdVisible.value.latest_wayline_job = result?.latest_wayline_job || {}
      store.commit('setOsdVisibleInfo', osdVisible.value)
      store.commit('setSelectedWorkSpaceId', result.workspace_id)
      workspaceId.value = result.workspace_id
      createWsConntect()
   })
}
const singleTotal = ref({})
provide('singleTotal', singleTotal)
// 获取机巢统计数据 提供给左右侧组件使用
const getMachineData = () => {
   getFlightStatistics(singleUavHome.value.device_sn).then(res => {
      if (res.data.code !== 0) return
      const result = res.data.data
      store.commit('setSingleTotal', result)
      singleTotal.value = result
   })
}