From b03d7720b3207e71d4d22ec3037b2b07a34e1a3d Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sat, 19 Apr 2025 18:38:59 +0800
Subject: [PATCH] feat: 红外

---
 src/hooks/useTaskViewInfo/useTaskViewInfo.js |   43 ++++++++++++++++++++++++++-----------------
 1 files changed, 26 insertions(+), 17 deletions(-)

diff --git a/src/hooks/useTaskViewInfo/useTaskViewInfo.js b/src/hooks/useTaskViewInfo/useTaskViewInfo.js
index 54d4e18..0b18f1f 100644
--- a/src/hooks/useTaskViewInfo/useTaskViewInfo.js
+++ b/src/hooks/useTaskViewInfo/useTaskViewInfo.js
@@ -2,8 +2,8 @@
 import aircraftGltf from '@/assets/gltf/aircraft.gltf'
 import CreateFrustum from '@/utils/cesium/frustum/CreateFrustum'
 
-export function useTaskViewInfo (viewer, wsInfo, removeEntitys) {
-  const newViewer = unref(viewer)
+export function useTaskViewInfo (viewer, wsInfo) {
+  const newViewer = isRef(viewer) ? viewer : ref(viewer)
 
   let viewInfoFrustum
   // 设置视椎
@@ -14,7 +14,7 @@
     const attitude_head = 180 + host.attitude_head
     const gimbal_pitch = 90 - Number(host?.payloads[0]?.gimbal_pitch) || 0
 
-    viewInfoFrustum = new CreateFrustum(newViewer, {
+    viewInfoFrustum = new CreateFrustum(newViewer.value, {
       position: {
         longitude: host.longitude,
         latitude: host.latitude,
@@ -33,14 +33,14 @@
 
   function setAircraftGltf () {
     const host = deviceOsdInfo.value?.data?.host
-    const aircraftEntity = newViewer.entities.getById('aircraftGltf')
+    const aircraftEntity = newViewer.value?.entities.getById('aircraftGltf')
     const position = Cesium.Cartesian3.fromDegrees(host.longitude, host.latitude, host.height)
     if (aircraftEntity) {
       aircraftEntity.position = new Cesium.ConstantPositionProperty(position)
       return
     }
 
-    newViewer.entities.add({
+    newViewer.value?.entities.add({
       id: 'aircraftGltf',
       position,
       model: {
@@ -55,24 +55,33 @@
   // 视椎加载处理
   const deviceOsdInfo = computed(() => wsInfo.value?.device_osd)
 
-  watch(deviceOsdInfo, () => {
-    const host = deviceOsdInfo.value?.data?.host
 
-    if ([14, 0].includes(host.mode_code)) {
-      mapEntityRemove()
-      return
+  watch(
+    [
+      () => deviceOsdInfo.value,
+      () => newViewer.value
+    ],
+    (
+      [curDeviceOsdInfo, curViewer],
+    ) => {
+      const host = deviceOsdInfo.value?.data?.host
+
+      if (!curViewer) return
+
+      if ([14, 0].includes(host.mode_code)) {
+        mapEntityRemove()
+        return
+      }
+
+      setCreateFrustum(host)
+      setAircraftGltf()
     }
-
-    setCreateFrustum(host)
-    setAircraftGltf()
-  })
+  )
 
   const mapEntityRemove = () => {
     viewInfoFrustum?.clear()
 
-    newViewer.entities.removeById('aircraftGltf')
-
-    removeEntitys && removeEntitys()
+    newViewer.value?.entities.removeById('aircraftGltf')
   }
 
   onUnmounted(() => {

--
Gitblit v1.9.3