From 0d2edb0421b6aaf586a9df317e6076231f00d919 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Tue, 25 Feb 2025 09:57:08 +0800
Subject: [PATCH] 修改航线和提交安装组件

---
 package-lock.json               |   27 +++++++++
 package.json                    |    1 
 src/views/DronePilotDetails.vue |    7 ++
 src/views/hooks/droneFly.ts     |  112 ++++++++++++++++++-------------------
 4 files changed, 90 insertions(+), 57 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 1f2f40a..fe6f1ae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -27,6 +27,7 @@
         "query-string": "^7.0.1",
         "reconnecting-websocket": "^4.4.0",
         "v-viewer": "^3.0.11",
+        "vant": "^4.9.17",
         "vconsole": "^3.15.1",
         "video.js": "^8.5.2",
         "viewerjs": "^1.11.6",
@@ -3198,6 +3199,19 @@
       "version": "0.0.16",
       "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
       "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
+    },
+    "node_modules/@vant/popperjs": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
+      "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw=="
+    },
+    "node_modules/@vant/use": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
+      "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
     },
     "node_modules/@videojs/http-streaming": {
       "version": "3.16.2",
@@ -6956,6 +6970,19 @@
         "vue": "^3.0.0"
       }
     },
+    "node_modules/vant": {
+      "version": "4.9.17",
+      "resolved": "https://registry.npmmirror.com/vant/-/vant-4.9.17.tgz",
+      "integrity": "sha512-so/plH9G4au9rUrqy7yLB1slmZqY2Ub3Gq8ckMSQXbUEwTzmViVjEDqh/hNck/XELxwL+gIy2hLXiSgVcf2EBQ==",
+      "dependencies": {
+        "@vant/popperjs": "^1.3.0",
+        "@vant/use": "^1.6.0",
+        "@vue/shared": "^3.5.13"
+      },
+      "peerDependencies": {
+        "vue": "^3.0.0"
+      }
+    },
     "node_modules/vconsole": {
       "version": "3.15.1",
       "resolved": "https://registry.npmmirror.com/vconsole/-/vconsole-3.15.1.tgz",
diff --git a/package.json b/package.json
index b512b80..ea58a6f 100644
--- a/package.json
+++ b/package.json
@@ -29,6 +29,7 @@
     "query-string": "^7.0.1",
     "reconnecting-websocket": "^4.4.0",
     "v-viewer": "^3.0.11",
+    "vant": "^4.9.17",
     "vconsole": "^3.15.1",
     "video.js": "^8.5.2",
     "viewerjs": "^1.11.6",
diff --git a/src/views/DronePilotDetails.vue b/src/views/DronePilotDetails.vue
index b3ce7be..59bd095 100644
--- a/src/views/DronePilotDetails.vue
+++ b/src/views/DronePilotDetails.vue
@@ -573,6 +573,13 @@
 onBeforeUnmount(() => {
   window.removeEventListener('orientationchange', checkOrientation);
   window.removeEventListener('resize', checkOrientation);
+  // 销毁地图实例
+  if (window.cesiumViewer && !window.cesiumViewer.isDestroyed()) {
+    window.cesiumViewer.destroy();
+  }
+  if (globalViewer && !globalViewer.isDestroyed()) {
+    globalViewer.destroy();
+  }
   if (player) {
     player.dispose();
   }
diff --git a/src/views/hooks/droneFly.ts b/src/views/hooks/droneFly.ts
index a42f788..f75d3b7 100644
--- a/src/views/hooks/droneFly.ts
+++ b/src/views/hooks/droneFly.ts
@@ -127,65 +127,63 @@
         }
       }
       const imgRightBlue = new URL('@/assets/images/arrow-right-pink.png', import.meta.url).href
-      // 暂时把航线屏蔽
       // 无人机路线轨迹,判断是否存在drone_route_remove
-      // if (getEntityById('drone_route_remove')) {
-      //   window.cesiumViewer.entities.add({
-      //     name: 'drone_route_remove',
-      //     id: 'drone_route_remove',
-      //     polyline: {
-      //       width: 7,
-      //       positions: previousPositions,
-      //       material: new ImageTrailMaterial({
-      //         color: globalCesium.Color.ORANGE,
-      //         speed: 10,
-      //         image: imgRightBlue,
-      //         repeat: { x: 1, y: 0 },
-      //       }),
-      //       clampToGround: false,
-      //     },
-      //   })
-      // }
+      if (getEntityById('drone_route_remove')) {
+        window.cesiumViewer.entities.add({
+          name: 'drone_route_remove',
+          id: 'drone_route_remove',
+          polyline: {
+            width: 7,
+            positions: previousPositions,
+            material: new ImageTrailMaterial({
+              color: globalCesium.Color.ORANGE,
+              speed: 10,
+              image: imgRightBlue,
+              repeat: { x: 1, y: 0 },
+            }),
+            clampToGround: false,
+          },
+        })
+      }
       
-      // if (data.deviceInfo[data.currentSn].mode_code && [3, 4, 5, 9, 10].includes(deviceInfo.mode_code)) {
-      //   if (switchSaving) return (switchSaving = false)
-      //     // console.log('5555', data.deviceInfo[data.currentSn].longitude)
-      //   const newPositions = globalCesium.Cartesian3.fromDegrees(
-      //     data.deviceInfo[data.currentSn].longitude,
-      //     data.deviceInfo[data.currentSn].latitude,
-      //     Math.floor(viewDroneInfo.elevation),
-      //   )
-      //   //若刷新,恢复无人机之前的路线轨迹
-      //   const dataIndexedDB = await IndexedDBService.getDataById(wId)
-      //   if (previousPositions.length == 0 && dataIndexedDB) {
-      //     previousPositions = previousPositions.concat(dataIndexedDB?.temporaryflightData)
-      //   } else {
-      //     previousPositions = previousPositions.concat(newPositions)
-      //   }
-      //   // 保存无人机当前执行的路线,防止刷新数据丢失
-      //   if (!dataIndexedDB) {
-      //     await IndexedDBService.addData({
-      //       id: wId,
-      //       temporaryflightData: previousPositions,
-      //     })
-      //   } else {
-      //     await IndexedDBService.updateData(wId, {temporaryflightData: previousPositions})
-      //   }
-      //   //  更新线段的位置
-      //   const drone_route_remove = getEntityById('drone_route_remove')
-      //   if (!drone_route_remove) return
-      //   drone_route_remove.polyline.positions = previousPositions
-      //   drone_route_remove.polyline._material._repeat._value.x = Math.floor(previousPositions.length / 7)
-      // } else if ([0, 14].includes(deviceInfo.mode_code)) {
-      //   previousPositions = []
-      //   await IndexedDBService.deleteData(wId)
-      //   const drone_route_remove = getEntityById('drone_route_remove')
-      //   if (!drone_route_remove) return
-      //   drone_route_remove.polyline.positions = previousPositions
-      //   removeById('drone_route_remove')
-      //   viewInfoFrustum?.clear()
-      //   viewInfoFrustum = null
-      // }
+      if (data.deviceInfo[data.currentSn].mode_code && [3, 4, 5, 9, 10].includes(deviceInfo.mode_code)) {
+        if (switchSaving) return (switchSaving = false)
+        const newPositions = globalCesium.Cartesian3.fromDegrees(
+          data.deviceInfo[data.currentSn].longitude,
+          data.deviceInfo[data.currentSn].latitude,
+          Math.floor(viewDroneInfo.elevation),
+        )
+        //若刷新,恢复无人机之前的路线轨迹
+        const dataIndexedDB = await IndexedDBService.getDataById(wId)
+        if (previousPositions.length == 0 && dataIndexedDB) {
+          previousPositions = previousPositions.concat(dataIndexedDB?.temporaryflightData)
+        } else {
+          previousPositions = previousPositions.concat(newPositions)
+        }
+        // 保存无人机当前执行的路线,防止刷新数据丢失
+        if (!dataIndexedDB) {
+          await IndexedDBService.addData({
+            id: wId,
+            temporaryflightData: previousPositions,
+          })
+        } else {
+          await IndexedDBService.updateData(wId, {temporaryflightData: previousPositions})
+        }
+        //  更新线段的位置
+        const drone_route_remove = getEntityById('drone_route_remove')
+        if (!drone_route_remove) return
+        drone_route_remove.polyline.positions = previousPositions
+        drone_route_remove.polyline._material._repeat._value.x = Math.floor(previousPositions.length / 7)
+      } else if ([0, 14].includes(deviceInfo.mode_code)) {
+        previousPositions = []
+        await IndexedDBService.deleteData(wId)
+        const drone_route_remove = getEntityById('drone_route_remove')
+        if (!drone_route_remove) return
+        drone_route_remove.polyline.positions = previousPositions
+        removeById('drone_route_remove')
+        viewInfoFrustum?.clear()
+        viewInfoFrustum = null
+      }
     }
     if (data.currentType === EDeviceTypeName.Dock && data.dockInfo[data.currentSn]) {
       if (!deviceInfo?.basic_osd?.longitude || !deviceInfo?.basic_osd?.latitude) return

--
Gitblit v1.9.3