From ec3c634630d4fc44c01bf4e5902c7f9fee67adab Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Wed, 02 Apr 2025 18:11:13 +0800
Subject: [PATCH] feat:对接机巢状态和直播功能以及ws

---
 src/views/SignMachineNest/SignMachineNest.vue |   98 +++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)

diff --git a/src/views/SignMachineNest/SignMachineNest.vue b/src/views/SignMachineNest/SignMachineNest.vue
index 2ff56b8..5418d68 100644
--- a/src/views/SignMachineNest/SignMachineNest.vue
+++ b/src/views/SignMachineNest/SignMachineNest.vue
@@ -6,4 +6,102 @@
 <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>
\ No newline at end of file

--
Gitblit v1.9.3