From aec00ecc093be803860c8675cbe1c4c776a7cb4e Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Tue, 19 Mar 2024 17:49:21 +0800
Subject: [PATCH] update: 新建航线、事件编辑、kmz文件问题修改

---
 src/pages/page-web/projects/tsa.vue |   43 +++++++++++++++++++++++++++++++------------
 1 files changed, 31 insertions(+), 12 deletions(-)

diff --git a/src/pages/page-web/projects/tsa.vue b/src/pages/page-web/projects/tsa.vue
index 8417112..346dd25 100644
--- a/src/pages/page-web/projects/tsa.vue
+++ b/src/pages/page-web/projects/tsa.vue
@@ -16,10 +16,10 @@
             <a-empty style="color: #fff;" :image="simpleImage" description="暂无数据" :image-style="{ height: '60px' }" />
           </div>
           <div v-else class="fz12" style="color: white;">
-            <div v-for="dock in onlineDocks.data" :key="dock.sn"
-              style="background: #3c3c3c; margin-bottom: 10px;">
+            <div v-for="dock in onlineDocks.data" :key="dock.sn" style="background: #3c3c3c; margin-bottom: 10px;">
               <div class="task_wrapper" v-if="dock.latest_wayline_job">
-                <div class="task_content task_content_way" v-if="deviceInfo[dock.sn] && deviceInfo[dock.sn].mode_code === 5">
+                <div class="task_content task_content_way"
+                  v-if="deviceInfo[dock.sn] && deviceInfo[dock.sn].mode_code === 5">
                   <div class="task_status">
                     <ContainerOutlined />
                     <span>执行任务中</span>
@@ -30,9 +30,10 @@
                     <ContainerOutlined />
                     <span>待执行</span>
                   </div>
-                  <div class="task_info">{{dock.latest_wayline_job.is_later ? '今天': '明天'}}{{convertTimestampToDate(dock.latest_wayline_job.begin_time, 'hh:mm')}}</div>
+                  <div class="task_info">{{ dock.latest_wayline_job.is_later ? '今天' :
+                    '明天' }}{{ convertTimestampToDate(dock.latest_wayline_job.begin_time, 'hh:mm') }}</div>
                 </div>
-                <div class="task_title">{{dock.latest_wayline_job.name}}</div>
+                <div class="task_title">{{ dock.latest_wayline_job.name }}</div>
               </div>
               <div style="border-radius: 2px; height: 90px; width: 100%;"
                 class="flex-row flex-justify-between flex-align-center">
@@ -122,7 +123,7 @@
                         :style="deviceInfo[dock.sn] && deviceInfo[dock.sn].mode_code !== EModeCode.Disconnected || dockInfo[dock.gateway.sn].basic_osd?.drone_in_dock === 1 ? 'color: #00ee8b' : 'color: red;'">
                         {{
                           deviceInfo[dock.sn] ? EModeText[deviceInfo[dock.sn].mode_code] :
-                          dockInfo[dock.gateway.sn].basic_osd?.drone_in_dock === 1 ? '舱内关机' :
+                          dockInfo[dock.gateway.sn]?.basic_osd?.drone_in_dock === 1 ? '舱内关机' :
                             EModeText[EModeCode.Disconnected]
                         }}
                       </div>
@@ -275,7 +276,7 @@
 
 <script lang="ts" setup>
 import * as Cesium from 'cesium'
-import { computed, onMounted, reactive, ref, watch, WritableComputedRef } from 'vue'
+import { computed, onMounted, reactive, ref, watch, onUnmounted } from 'vue'
 import { EDeviceTypeName, ELocalStorageKey } from '/@/types'
 import rc from '/@/assets/icons/rc.png'
 import { OnlineDevice, EModeCode, OSDVisible, EDockModeCode, DeviceOsd, EDockModeText, EModeText } from '/@/types/device'
@@ -292,6 +293,7 @@
 import { EHmsLevel } from '/@/types/enums'
 import { cesiumOperation } from '/@/hooks/use-cesium-tsa'
 import { convertTimestampToDate, getDateFromTimestamp, isToday, setTodayTime } from '/@/utils/time'
+import { parseJsonFile } from '/@/utils/geo-utils'
 let droneEntity: any
 
 const { appContext } = getCurrentInstance()
@@ -372,6 +374,10 @@
       }
       cesium.addPoint(setting)
       // 无人机路线轨迹
+      // 判断是否存在done_route
+      if (cesium.getEntityById('drone_route')) {
+        cesium.removeById('drone_route')
+      }
       const routeTrajectory = {
         longitude: 115.85666327144976,
         latitude: 28.62452712442823,
@@ -394,7 +400,7 @@
       //  更新线段的位置
       const drone_route = cesium.getEntityById('drone_route')
       drone_route.polyline.positions = previousPositions.value
-    // eslint-disable-next-line eqeqeq
+      // eslint-disable-next-line eqeqeq
     } else if (data.deviceInfo[data.currentSn].mode_code == 0 || data.deviceInfo[data.currentSn].mode_code == 14) {
       const drone_route = cesium.getEntityById('drone_route')
       previousPositions.value = []
@@ -408,13 +414,14 @@
     const setting = {
       longitude: data.dockInfo[data.currentSn].basic_osd?.longitude,
       latitude: data.dockInfo[data.currentSn].basic_osd?.latitude,
+      id: `drone_dock_${new Date().getTime()}`,
       billboard: {
         image: getResource('dock.png'),
         outlineWidth: 0,
         width: 36,
         height: 36,
         scale: 1.0,
-      }
+      },
     }
     cesium.addPoint(setting)
     // cesium.flyTo(setting)
@@ -431,7 +438,7 @@
   }
 }
 // 判断给定日期是否晚于当前时间
-const isDateLaterThanNow = (dateObj:any) => {
+const isDateLaterThanNow = (dateObj: any) => {
   const todayTimestamp = setTodayTime(dateObj)
   return todayTimestamp > Date.now()
 }
@@ -458,6 +465,10 @@
   previousPositions.value = []
 })
 
+onUnmounted(() => {
+  cesium.removeAllPoint()
+})
+
 function getOnlineTopo () {
   getDeviceTopo(workSpaceId.value).then((res) => {
     if (res.code !== 0) {
@@ -467,7 +478,7 @@
     onlineDevices.data = []
     onlineDocks.data = []
     res.data.forEach((gateway: any) => {
-      const child = gateway.children
+      const child = gateway?.children || []
       if (gateway.latest_wayline_job) {
         const isLater = isToday(gateway.latest_wayline_job.begin_time)
         // false 代表任务开始时间大于今天  true为任务开始时间为今天
@@ -491,7 +502,8 @@
         },
         payload: []
       }
-      child?.payloads_list.forEach((payload: any) => {
+      const payloads_list = child?.payloads_list || []
+      payloads_list.forEach((payload: any) => {
         device.payload.push({
           index: payload.index,
           model: payload.model,
@@ -524,8 +536,12 @@
     e.target.style.cursor = 'not-allowed'
     return
   }
+
   if (device.sn === osdVisible.value.sn) {
     osdVisible.value.visible = !osdVisible.value.visible
+    // 临时--可能会改
+    osdVisible.value.is_dock = true
+    osdVisible.value.gateway_sn = device.gateway.sn
   } else {
     osdVisible.value.sn = device.sn
     osdVisible.value.callsign = device.callsign
@@ -723,13 +739,16 @@
 .task_wrapper {
   display: flex;
   align-items: center;
+
   .task_content {
     background-color: #41bbfa;
     padding: 2px 4px;
   }
+
   .task_content_way {
     background-color: #19be6b;
   }
+
   .task_title {
     margin-left: 5px;
     font-size: 14px;

--
Gitblit v1.9.3