From 48fb8045a088f16968d8f1adc9e136a7218ffadd Mon Sep 17 00:00:00 2001 From: sd <1504629600@qq.com> Date: Tue, 24 Feb 2026 15:52:27 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=98=E7=89=B9=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/lang/en.js | 7 + ruoyi-ui/src/lang/zh.js | 7 + ruoyi-ui/src/router/index.js | 5 + ruoyi-ui/src/views/cesiumMap/index.vue | 11 +- ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue | 4 + ruoyi-ui/src/views/childRoom/BottomTimeline.vue | 105 +---- ruoyi-ui/src/views/childRoom/TopHeader.vue | 5 + ruoyi-ui/src/views/childRoom/index.vue | 14 +- ruoyi-ui/src/views/ganttChart/index.vue | 540 +++++++++++++++++++++++ 9 files changed, 607 insertions(+), 91 deletions(-) create mode 100644 ruoyi-ui/src/views/ganttChart/index.vue diff --git a/ruoyi-ui/src/lang/en.js b/ruoyi-ui/src/lang/en.js index 57a7351..3d55431 100644 --- a/ruoyi-ui/src/lang/en.js +++ b/ruoyi-ui/src/lang/en.js @@ -71,6 +71,13 @@ export default { systemDescription: 'System Description', language: 'Language' }, + tools: { + routeCalculation: 'Route Calculation', + conflictDisplay: 'Conflict Display', + dataMaterials: 'Data Materials', + coordinateConversion: 'Coordinate Conversion', + generateGanttChart: 'Generate Gantt Chart' + }, favorites: { layerFavorites: 'Layer Favorites', routeFavorites: 'Route Favorites' diff --git a/ruoyi-ui/src/lang/zh.js b/ruoyi-ui/src/lang/zh.js index ece9c1f..11c1864 100644 --- a/ruoyi-ui/src/lang/zh.js +++ b/ruoyi-ui/src/lang/zh.js @@ -71,6 +71,13 @@ export default { systemDescription: '系统说明', language: '语言' }, + tools: { + routeCalculation: '航线计算', + conflictDisplay: '冲突显示', + dataMaterials: '数据资料', + coordinateConversion: '坐标转换', + generateGanttChart: '生成甘特图' + }, favorites: { layerFavorites: '图层收藏', routeFavorites: '航线收藏' diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 1015974..1770a53 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -70,6 +70,11 @@ export const constantRoutes = [ hidden: true }, { + path: '/ganttChart', + component: () => import('@/views/ganttChart'), + hidden: true + }, + { path: '/register', component: () => import('@/views/register'), hidden: true diff --git a/ruoyi-ui/src/views/cesiumMap/index.vue b/ruoyi-ui/src/views/cesiumMap/index.vue index 9985c6c..aba51cc 100644 --- a/ruoyi-ui/src/views/cesiumMap/index.vue +++ b/ruoyi-ui/src/views/cesiumMap/index.vue @@ -62,7 +62,7 @@ /> -
+
{{ scaleBarText }}
@@ -119,6 +119,10 @@ export default { coordinateFormat: { type: String, default: 'dms' // 'decimal' 或 'dms' + }, + bottomPanelVisible: { + type: Boolean, + default: false } }, watch: { @@ -5241,6 +5245,11 @@ this.viewer.scene.postProcessStages.fxaa.enabled = true gap: 6px; z-index: 1000; pointer-events: none; + transition: bottom 0.3s ease; +} + +.map-info-panel.panel-raised { + bottom: 65px; } /* 比例尺:高德风格,浅色底、圆角、刻度线 */ diff --git a/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue b/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue index 5e4db4e..aceab24 100644 --- a/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue +++ b/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue @@ -75,19 +75,23 @@ export default { this.$refs.timeline.isVisible = true this.isExpanded = false this.showPanel = false + this.$emit('bottom-panel-visible', true) } }, onTimelineHidden() { this.showPanel = true + this.$emit('bottom-panel-visible', false) }, showSixSteps() { this.showSixStepsBar = true this.isExpanded = false this.showPanel = false + this.$emit('bottom-panel-visible', true) }, hideSixStepsBar() { this.showSixStepsBar = false this.showPanel = true + this.$emit('bottom-panel-visible', false) }, selectStep(index) { const clickedStep = this.sixStepsData[index] diff --git a/ruoyi-ui/src/views/childRoom/BottomTimeline.vue b/ruoyi-ui/src/views/childRoom/BottomTimeline.vue index 8b8b636..f26ae5c 100644 --- a/ruoyi-ui/src/views/childRoom/BottomTimeline.vue +++ b/ruoyi-ui/src/views/childRoom/BottomTimeline.vue @@ -137,28 +137,6 @@ - - - 弹窗提醒 - 声音提醒 - 消息提醒 - - - - - - - 取消 @@ -189,18 +167,6 @@ {{ currentSegment.description }}
- - {{ getTaskName(currentSegment.assignedTask) }} -
-
- -
- 弹窗 - 声音 - 消息 -
-
-
{{ currentSegment.passed ? '已到达' : (currentSegment.active ? '即将到达' : '未到达') }} @@ -236,23 +202,11 @@ export default { segmentForm: { time: null, name: '', - description: '', - reminderTypes: ['popup', 'message'], - assignedTask: null + description: '' }, timer: null, audio: null, - currentTimeStr: '', - availableTasks: [ - { id: 1, name: '任务准备' }, - { id: 2, name: '资源调配' }, - { id: 3, name: '任务执行' }, - { id: 4, name: '任务监控' }, - { id: 5, name: '任务完成' }, - { id: 6, name: '数据收集' }, - { id: 7, name: '分析评估' }, - { id: 8, name: '报告生成' } - ] + currentTimeStr: '' } }, mounted() { @@ -279,9 +233,7 @@ export default { this.segmentForm = { time: null, name: '', - description: '', - reminderTypes: ['popup', 'message'], - assignedTask: null + description: '' } this.showSegmentDialog = true }, @@ -312,8 +264,6 @@ export default { description: '开始准备任务所需的资源和设备', active: false, passed: false, - reminderTypes: ['popup', 'message'], - assignedTask: 1, position: 0, triggered: false }, @@ -323,8 +273,6 @@ export default { description: '完成资源的调配和分配', active: false, passed: false, - reminderTypes: ['popup', 'message'], - assignedTask: 2, position: 0, triggered: false }, @@ -334,8 +282,6 @@ export default { description: '开始执行主要任务', active: false, passed: false, - reminderTypes: ['popup', 'sound', 'message'], - assignedTask: 3, position: 0, triggered: false }, @@ -345,8 +291,6 @@ export default { description: '监控任务执行进度', active: false, passed: false, - reminderTypes: ['popup', 'message'], - assignedTask: 4, position: 0, triggered: false }, @@ -356,8 +300,6 @@ export default { description: '任务完成,进行总结', active: false, passed: false, - reminderTypes: ['popup', 'sound', 'message'], - assignedTask: 5, position: 0, triggered: false } @@ -426,26 +368,20 @@ export default { }, triggerReminder(segment) { - if (segment.reminderTypes.includes('popup')) { - this.$notify({ - title: '时间提醒', - message: `${segment.time} - ${segment.name}`, - type: 'warning', - duration: 5000 - }) - } + this.$notify({ + title: '时间提醒', + message: `${segment.time} - ${segment.name}`, + type: 'warning', + duration: 5000 + }) - if (segment.reminderTypes.includes('sound')) { - this.playSound() - } + this.playSound() - if (segment.reminderTypes.includes('message')) { - this.$message({ - message: `时间提醒:${segment.time} - ${segment.name}`, - type: 'warning', - duration: 5000 - }) - } + this.$message({ + message: `时间提醒:${segment.time} - ${segment.name}`, + type: 'warning', + duration: 5000 + }) }, playSound() { @@ -492,9 +428,7 @@ export default { this.segmentForm = { time: this.parseTime(segment.time), name: segment.name, - description: segment.description, - reminderTypes: [...segment.reminderTypes], - assignedTask: segment.assignedTask + description: segment.description } this.showSegmentDialog = true }, @@ -509,8 +443,6 @@ export default { time: this.formatTime(this.segmentForm.time), name: this.segmentForm.name, description: this.segmentForm.description, - reminderTypes: [...this.segmentForm.reminderTypes], - assignedTask: this.segmentForm.assignedTask, active: false, passed: false, triggered: false, @@ -544,11 +476,6 @@ export default { }).catch(() => {}) }, - getTaskName(taskId) { - const task = this.availableTasks.find(t => t.id === taskId) - return task ? task.name : '未分配' - }, - formatTime(date) { const hours = date.getHours().toString().padStart(2, '0') const minutes = date.getMinutes().toString().padStart(2, '0') diff --git a/ruoyi-ui/src/views/childRoom/TopHeader.vue b/ruoyi-ui/src/views/childRoom/TopHeader.vue index 456b03a..6348df4 100644 --- a/ruoyi-ui/src/views/childRoom/TopHeader.vue +++ b/ruoyi-ui/src/views/childRoom/TopHeader.vue @@ -156,6 +156,7 @@ {{ $t('topHeader.tools.conflictDisplay') }} {{ $t('topHeader.tools.dataMaterials') }} {{ $t('topHeader.tools.coordinateConversion') }} + {{ $t('topHeader.tools.generateGanttChart') }} @@ -574,6 +575,10 @@ export default { this.$emit('toggle-route', this.isRouteVisible) }, + generateGanttChart() { + this.$emit('generate-gantt-chart') + }, + systemDescription() { this.$emit('system-description') }, diff --git a/ruoyi-ui/src/views/childRoom/index.vue b/ruoyi-ui/src/views/childRoom/index.vue index 418e33e..05d3047 100644 --- a/ruoyi-ui/src/views/childRoom/index.vue +++ b/ruoyi-ui/src/views/childRoom/index.vue @@ -13,6 +13,7 @@ :tool-mode="drawDom ? 'ranging' : (airspaceDrawDom ? 'airspace' : 'airspace')" :scaleConfig="scaleConfig" :coordinateFormat="coordinateFormat" + :bottomPanelVisible="bottomPanelVisible" @draw-complete="handleMapDrawComplete" @drawing-points-update="missionDrawingPointsCount = $event" @open-waypoint-dialog="handleOpenWaypointEdit" @@ -126,6 +127,7 @@ @toggle-airport="toggleAirport" @toggle-landmark="toggleLandmark" @toggle-route="toggleRoute" + @generate-gantt-chart="generateGanttChart" @system-description="systemDescription" @layer-favorites="layerFavorites" @route-favorites="routeFavorites" @@ -190,7 +192,7 @@ @open-import-dialog="showImportDialog = true" /> - +
>> [父组件接收] 航点 ID: ${wpId}, 所属航线 ID: ${routeId}`); @@ -1867,6 +1874,11 @@ export default { this.$message.success(this.showRoute ? '显示航线' : '隐藏航线'); }, + generateGanttChart() { + const url = this.$router.resolve('/ganttChart').href + window.open(url, '_blank') + }, + systemDescription() { this.$message.success('系统说明'); // 这里可以添加系统说明的逻辑 diff --git a/ruoyi-ui/src/views/ganttChart/index.vue b/ruoyi-ui/src/views/ganttChart/index.vue new file mode 100644 index 0000000..0f3b6d5 --- /dev/null +++ b/ruoyi-ui/src/views/ganttChart/index.vue @@ -0,0 +1,540 @@ + + + + +