| | |
| | | <script setup> |
| | | import MachineLeft from './components/MachineLeft/MachineLeft.vue' |
| | | import MachineRight from './components/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 } from '@/api/home/machineNest'; |
| | | |
| | | |
| | | const store = useStore(); |
| | | let connectWs = ref(null); |
| | | // 单个机巢信息 |
| | | const singleUavHome = computed(() => store.state.home.singleUavHome); |
| | | |
| | | 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) // 为了兼容聊天消息 |
| | | // console.log('payload', payload) |
| | | 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 getSingleDetails = () => { |
| | | getDeviceDetail(singleUavHome.value.device_sn).then((res) => { |
| | | if (res.data.code !== 0) return; |
| | | const result = res.data.data; |
| | | const child = result.children; |
| | | // 对应store 里面数据结构 |
| | | // const device = { |
| | | // visible: true, |
| | | // is_dock: true, |
| | | // model: child?.device_name, |
| | | // callsign: child?.nickname, |
| | | // sn: child?.device_sn, |
| | | // mode: EModeCode.Disconnected, |
| | | // latest_wayline_job: result.latest_wayline_job, |
| | | // gateway: { |
| | | // model: result?.device_name, |
| | | // callsign: result?.nickname, |
| | | // sn: result?.device_sn, |
| | | // domain: result?.domain, |
| | | // device_domain: child.domain, |
| | | // device_type: child.type, |
| | | // device_sub_type: child.sub_type, |
| | | // }, |
| | | // payload: child.payloads_list || [], |
| | | // }; |
| | | 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(); |
| | | }); |
| | | }; |
| | | |
| | | onMounted(() => { |
| | | getSingleDetails(); |
| | | }); |
| | | |
| | | onUnmounted(() => { |
| | | connectWs?.value?.close(); |
| | | }); |
| | | </script> |