From 0f85a9c9f964e433aa0f2078819cdbda062ebbbf Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 19 Apr 2025 17:34:42 +0800
Subject: [PATCH] Merge branch 'master' of http://139.196.74.78:10010/r/drone/command-center-dashboard

---
 src/hooks/useTaskWayline/useTaskWayline.js |   57 ++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/src/hooks/useTaskWayline/useTaskWayline.js b/src/hooks/useTaskWayline/useTaskWayline.js
index 18165dd..45cf87b 100644
--- a/src/hooks/useTaskWayline/useTaskWayline.js
+++ b/src/hooks/useTaskWayline/useTaskWayline.js
@@ -1,3 +1,13 @@
+/*
+ * @Author: shuishen 1109946754@qq.com
+ * @Date: 2025-04-19 14:24:34
+ * @LastEditors: shuishen 1109946754@qq.com
+ * @LastEditTime: 2025-04-19 17:21:58
+ * @FilePath: \command-center-dashboard\src\hooks\useTaskWayline\useTaskWayline.js
+ * @Description: 
+ * 
+ * Copyright (c) 2025 by shuishen, All Rights Reserved. 
+ */
 import lineImg from '@/assets/images/arrow-right-blue.png'
 import rwqfdImg from '@/assets/images/signMachineNest/rwqfd.png'
 import endPointImg from '@/assets/images/EndPointicon.png'
@@ -10,7 +20,7 @@
 import { Cartesian3 } from 'cesium'
 
 export function useTaskWayline (viewer, taskDetails) {
-  const newViewer = unref(viewer)
+  const newViewer = isRef(viewer) ? viewer : ref(viewer)
 
   // 解析kmz文件
   const parsingFiles = async url => {
@@ -20,7 +30,7 @@
     const waylinesXMLObj = removeTextKey(waylinesXMLJSON.Folder)
     if (!waylinesXMLObj.Placemark.length) return
     const allPoint = waylinesXMLObj.Placemark.map(item => item.Point.coordinates.split(','))
-    flyVisual(allPoint, newViewer)
+    flyVisual(allPoint, newViewer.value)
     drawWayline(waylinesXMLObj)
   }
 
@@ -30,7 +40,7 @@
       return Cartesian3.fromDegrees(Number(lon), Number(lat))
     })
     // 起点
-    newViewer.entities.add({
+    newViewer.value.entities.add({
       id: 'drone-job-wayline-start',
       position: positions[0],
       billboard: {
@@ -41,7 +51,7 @@
     })
 
     // 终点
-    newViewer.entities.add({
+    newViewer.value.entities.add({
       id: 'drone-job-wayline-end',
       position: positions[positions.length - 1],
       billboard: {
@@ -53,7 +63,7 @@
     })
 
     // 路径线
-    newViewer.entities.add({
+    newViewer.value.entities.add({
       id: 'drone-job-wayline-polyline',
       polyline: {
         width: 4,
@@ -69,17 +79,34 @@
     })
   }
 
-  watch(taskDetails, () => {
-    if (taskDetails.value?.way_lines?.length) {
-      parsingFiles(taskDetails.value.way_lines[0].url)
-    }
-  }, { immediate: true })
+  watch(
+    [
+      () => taskDetails.value?.way_lines?.length,
+      () => newViewer.value
+    ],
+    (
+      [wayLinesLength, curViewer],
+    ) => {
+      if (wayLinesLength && wayLinesLength > 0 && curViewer) {
+        parsingFiles(taskDetails.value.way_lines[0].url)
+      }
+    },
+    { immediate: true }
+  )
+
+  const removeEntitys = () => {
+    const entitiesIDs = newViewer.value?.entities.values.map(i => i.id)
+
+    Array.isArray(entitiesIDs) && entitiesIDs.forEach(item => {
+      item.includes('drone-job-wayline-') && newViewer.value?.entities.removeById(item)
+    })
+  }
 
   onBeforeUnmount(() => {
-    const entitiesIDs = newViewer?.entities.values.map(i => i.id)
-
-    entitiesIDs.forEach(item => {
-      item.includes('drone-job-wayline-') && newViewer?.entities.removeById(item)
-    })
+    removeEntitys()
   })
+
+  return {
+    removeEntitys
+  }
 }
\ No newline at end of file

--
Gitblit v1.9.3