From 54cca8780ee531afafdaf9a288f3a6f722db1b3d Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Sat, 19 Apr 2025 17:44:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/hooks/useTaskViewInfo/useTaskViewInfo.js |   39 +++++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/src/hooks/useTaskViewInfo/useTaskViewInfo.js b/src/hooks/useTaskViewInfo/useTaskViewInfo.js
index 54d4e18..046d46e 100644
--- a/src/hooks/useTaskViewInfo/useTaskViewInfo.js
+++ b/src/hooks/useTaskViewInfo/useTaskViewInfo.js
@@ -3,7 +3,7 @@
 import CreateFrustum from '@/utils/cesium/frustum/CreateFrustum'
 
 export function useTaskViewInfo (viewer, wsInfo, removeEntitys) {
-  const newViewer = unref(viewer)
+  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,22 +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')
+    newViewer.value?.entities.removeById('aircraftGltf')
 
     removeEntitys && removeEntitys()
   }

--
Gitblit v1.9.3