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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
{{ formatTime(item.startTime) }} - {{ formatTime(item.endTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+