吉安感知网项目-前端
罗广辉
2026-02-04 0c92fd00fae033a2aa04bb65b2d32bd2c8f9fd4a
applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
@@ -9,15 +9,23 @@
   >
      <div class="dialog-container">
         <div class="left-container">
            <div class="leftMap command-cesium" id="leftMapContainer"></div>
            <CommonCesiumMap
               ref="mapRef"
               class="leftMap command-cesium"
               :active="visible"
               :flat-mode="false"
               :terrain="true"
               :layer-mode="4"
               :boundary="false"
            />
         </div>
         <div class="right-container">
            <div class="header">
               <span>{{ dialogTitle }}</span>
               <el-icon class="close-btn" @click.stop="visible = false"><Close /></el-icon>
            </div>
            <div class="content">
               <div class="detail-title">轨迹信息</div>
               <el-row>
@@ -56,7 +64,7 @@
               </div>
            </div>
            <div class="footer">
               <el-button color="#2B2B4C" @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
               <el-button v-if="dialogMode != 'view'" color="#2B2B4C" @click="handleCancel">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
            </div>
         </div>
      </div>
@@ -67,11 +75,10 @@
import { Close } from '@element-plus/icons-vue'
import { computed, nextTick, ref } from 'vue'
import CommonCesiumMap from '@/components/map-container/common-cesium-map.vue'
import { fwDroneFlightRecordDetailApi } from '@/views/recordManage/historyTracks/fwDroneFlightRecord'
import { fwDroneFlightRecordDetailPageApi } from '@/views/recordManage/historyTracks/flyTrajectory'
import { PublicCesium } from '@/utils/cesium/publicCesium'
import * as Cesium from 'cesium'
import { flyVisual } from '@/utils/cesium/mapUtil'
import { ArrowLineMaterialProperty } from '@/utils/cesium/Material'
import droneIcon from '@/assets/images/dataCockpit/map/drone.png'
@@ -83,11 +90,11 @@
   stayDuration: '',
})
let list = ref([])
const emit = defineEmits(['success'])
const formData = ref(initForm()) // 表单数据
const visible = ref(false) // 弹框显隐
const dialogMode = ref('add') // 弹框模式
const dialogReadonly = computed(() => dialogMode.value === 'view')
const mapRef = ref(null)
const dialogTitle = computed(() => {
   if (dialogMode.value === 'edit') {
      return '编辑'
@@ -170,14 +177,9 @@
let viewer, geometricSource, droneLineEntity, startDroneEntity
function initMap() {
   if (viewer) return
   const publicCesiumInstance = new PublicCesium({
      dom: 'leftMapContainer',
      flatMode: false,
      terrain: true,
      layerMode: 4,
      boundary: false,
   })
   viewer = publicCesiumInstance.getViewer()
   const map = mapRef.value?.getMap?.()
   if (!map?.viewer) return
   viewer = map.viewer
   geometricSource = new Cesium.CustomDataSource('geometricSource')
   viewer.dataSources.add(geometricSource)
}