From 4b752da779a99914b3d79a360a698d55d2f90a49 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Wed, 22 Jul 2026 17:38:56 +0800
Subject: [PATCH] feat:优化历史轨迹
---
applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue | 27 ++++++++++++++-------------
applications/drone-command/src/components/map-container/common-cesium-map.vue | 18 ++++++++++++++++--
2 files changed, 30 insertions(+), 15 deletions(-)
diff --git a/applications/drone-command/src/components/map-container/common-cesium-map.vue b/applications/drone-command/src/components/map-container/common-cesium-map.vue
index 8db62cb..723a663 100644
--- a/applications/drone-command/src/components/map-container/common-cesium-map.vue
+++ b/applications/drone-command/src/components/map-container/common-cesium-map.vue
@@ -2,6 +2,9 @@
<div :id="mapId" class="common-cesium-map" @contextmenu.prevent>
<template v-if="props.list && props.list.length">
<div class="card">
+ <div class="timeline-prefix">
+ <slot name="timeline-prefix"></slot>
+ </div>
<div class="card-content">
<div class="card-item" v-for="(item, index) in props.list" @click="clickWeekTime(item, index)">
<div class="time-point">
@@ -326,6 +329,17 @@
color: #d5d5d5;
font-size: 14px;
+ .timeline-prefix {
+ position: absolute;
+ left: 7.5%;
+ top: 50%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 2;
+ transform: translate(-50%, -50%);
+ }
+
.card-content {
display: flex;
justify-content: center;
@@ -404,10 +418,10 @@
.time-line {
position: absolute;
// top: 35px;
- width: 100%;
+ width: 70%;
// position: fixed;
+ left: 15%;
bottom: 36px;
- width: 100%;
border: 1px solid rgba(237, 237, 237, 0.6);
z-index: 0;
}
diff --git a/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue b/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
index d682c78..7b169b6 100644
--- a/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
+++ b/applications/drone-command/src/views/recordManage/historyTracks/TrajectoryDiaLog.vue
@@ -19,7 +19,14 @@
:boundary="false"
:list="list"
@point-change="handlePointChange"
- />
+ >
+ <template #timeline-prefix>
+ <el-icon class="track-play-btn" :size="30" @click.stop="handlePlayClick">
+ <VideoPause v-if="isPlaying" />
+ <VideoPlay v-else />
+ </el-icon>
+ </template>
+ </CommonCesiumMap>
</div>
<div class="right-container">
<div class="header">
@@ -52,13 +59,7 @@
<div class="val">{{ formData.stayDuration }}</div>
</el-col>
</el-row>
- <div class="detail-title" style="display: flex; align-items: center">
- 轨迹点
- <el-icon class="track-play-btn" :size="26" @click.stop="handlePlayClick">
- <VideoPause v-if="isPlaying" />
- <VideoPlay v-else />
- </el-icon>
- </div>
+ <div class="detail-title">轨迹点</div>
<div class="command-table-container">
<div class="command-table-content">
<el-table ref="pointTableRef" class="command-table" :data="list" :row-class-name="getRowClassName">
@@ -202,13 +203,13 @@
// 播放下一个轨迹点
function playNextPoint() {
- if (!list.value.length) {
+ if (!list.value.length || playIndex >= list.value.length) {
stopTrackPlay()
return
}
- if (playIndex >= list.value.length) playIndex = 0
mapRef.value?.clickWeekTime?.(list.value[playIndex], playIndex)
playIndex += 1
+ if (playIndex >= list.value.length) stopTrackPlay()
}
// 切换轨迹播放状态
@@ -218,10 +219,10 @@
return
}
if (!list.value.length) return
- playIndex = selectedPointIndex.value || 0
+ playIndex = 0
isPlaying.value = true
playNextPoint()
- playTimer = setInterval(playNextPoint, PLAY_INTERVAL)
+ if (isPlaying.value) playTimer = setInterval(playNextPoint, PLAY_INTERVAL)
}
// 地图上点击轨迹点后,同步高亮表格对应行,并滚动到该行
@@ -298,7 +299,7 @@
}
.track-play-btn {
- margin-left: 6px;
+ color: #ffffff;
cursor: pointer;
}
</style>
--
Gitblit v1.9.3