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 1/9] =?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 @@ + + + + + From 1dd39bbda2116371855cd94c52bf63d4f709ed0c Mon Sep 17 00:00:00 2001 From: sd <1504629600@qq.com> Date: Wed, 25 Feb 2026 15:09:41 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=97=B6=E9=97=B4=E8=BD=B4=E5=8A=A0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/SysTimelineSegmentController.java | 81 ++++ .../core/domain/entity/SysTimelineSegment.java | 89 ++++ .../system/mapper/SysTimelineSegmentMapper.java | 22 + .../system/service/ISysTimelineSegmentService.java | 21 + .../impl/SysTimelineSegmentServiceImpl.java | 57 +++ .../mapper/system/SysTimelineSegmentMapper.xml | 77 ++++ ruoyi-ui/src/api/system/timeline.js | 53 +++ ruoyi-ui/src/views/cesiumMap/index.vue | 2 +- ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue | 12 +- ruoyi-ui/src/views/childRoom/BottomTimeline.vue | 449 ++++++++++++++------- ruoyi-ui/src/views/childRoom/index.vue | 2 +- sql/sys_timeline_segment.sql | 22 + 12 files changed, 747 insertions(+), 140 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTimelineSegmentController.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysTimelineSegment.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTimelineSegmentMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTimelineSegmentService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTimelineSegmentServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysTimelineSegmentMapper.xml create mode 100644 ruoyi-ui/src/api/system/timeline.js create mode 100644 sql/sys_timeline_segment.sql diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTimelineSegmentController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTimelineSegmentController.java new file mode 100644 index 0000000..25a06a1 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysTimelineSegmentController.java @@ -0,0 +1,81 @@ +package com.ruoyi.web.controller.system; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysTimelineSegment; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.system.service.ISysTimelineSegmentService; + +@RestController +@RequestMapping("/system/timeline") +public class SysTimelineSegmentController extends BaseController +{ + @Autowired + private ISysTimelineSegmentService segmentService; + + @PreAuthorize("@ss.hasPermi('system:timeline:list')") + @GetMapping("/list") + public AjaxResult list(SysTimelineSegment segment) + { + List list = segmentService.selectSegmentList(segment); + return success(list); + } + + @GetMapping("/listByRoomId/{roomId}") + public AjaxResult listByRoomId(@PathVariable Long roomId) + { + List list = segmentService.selectSegmentListByRoomId(roomId); + return success(list); + } + + @PreAuthorize("@ss.hasPermi('system:timeline:query')") + @GetMapping(value = "/{segmentId}") + public AjaxResult getInfo(@PathVariable Long segmentId) + { + return success(segmentService.selectSegmentById(segmentId)); + } + + @PreAuthorize("@ss.hasPermi('system:timeline:add')") + @Log(title = "时间轴管理", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody SysTimelineSegment segment) + { + return toAjax(segmentService.insertSegment(segment)); + } + + @PreAuthorize("@ss.hasPermi('system:timeline:edit')") + @Log(title = "时间轴管理", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody SysTimelineSegment segment) + { + return toAjax(segmentService.updateSegment(segment)); + } + + @PreAuthorize("@ss.hasPermi('system:timeline:remove')") + @Log(title = "时间轴管理", businessType = BusinessType.DELETE) + @DeleteMapping("/{segmentId}") + public AjaxResult remove(@PathVariable Long segmentId) + { + return toAjax(segmentService.deleteSegmentById(segmentId)); + } + + @PreAuthorize("@ss.hasPermi('system:timeline:remove')") + @Log(title = "时间轴管理", businessType = BusinessType.DELETE) + @DeleteMapping("/room/{roomId}") + public AjaxResult removeByRoomId(@PathVariable Long roomId) + { + return toAjax(segmentService.deleteSegmentByRoomId(roomId)); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysTimelineSegment.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysTimelineSegment.java new file mode 100644 index 0000000..03476e4 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysTimelineSegment.java @@ -0,0 +1,89 @@ +package com.ruoyi.common.core.domain.entity; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +public class SysTimelineSegment +{ + private static final long serialVersionUID = 1L; + + private Long segmentId; + + private Long roomId; + + @NotBlank(message = "时间点不能为空") + @Size(min = 0, max = 8, message = "时间点长度不能超过8个字符") + private String segmentTime; + + @NotBlank(message = "时间段名称不能为空") + @Size(min = 0, max = 50, message = "时间段名称长度不能超过50个字符") + private String segmentName; + + @Size(max = 500, message = "时间段描述长度不能超过500个字符") + private String segmentDesc; + + public Long getSegmentId() + { + return segmentId; + } + + public void setSegmentId(Long segmentId) + { + this.segmentId = segmentId; + } + + @NotNull(message = "房间ID不能为空") + public Long getRoomId() + { + return roomId; + } + + public void setRoomId(Long roomId) + { + this.roomId = roomId; + } + + public String getSegmentTime() + { + return segmentTime; + } + + public void setSegmentTime(String segmentTime) + { + this.segmentTime = segmentTime; + } + + public String getSegmentName() + { + return segmentName; + } + + public void setSegmentName(String segmentName) + { + this.segmentName = segmentName; + } + + public String getSegmentDesc() + { + return segmentDesc; + } + + public void setSegmentDesc(String segmentDesc) + { + this.segmentDesc = segmentDesc; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("segmentId", getSegmentId()) + .append("roomId", getRoomId()) + .append("segmentTime", getSegmentTime()) + .append("segmentName", getSegmentName()) + .append("segmentDesc", getSegmentDesc()) + .toString(); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTimelineSegmentMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTimelineSegmentMapper.java new file mode 100644 index 0000000..9325299 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysTimelineSegmentMapper.java @@ -0,0 +1,22 @@ +package com.ruoyi.system.mapper; + +import java.util.List; +import org.apache.ibatis.annotations.Param; +import com.ruoyi.common.core.domain.entity.SysTimelineSegment; + +public interface SysTimelineSegmentMapper +{ + public List selectSegmentList(SysTimelineSegment segment); + + public List selectSegmentListByRoomId(@Param("roomId") Long roomId); + + public SysTimelineSegment selectSegmentById(Long segmentId); + + public int insertSegment(SysTimelineSegment segment); + + public int updateSegment(SysTimelineSegment segment); + + public int deleteSegmentById(Long segmentId); + + public int deleteSegmentByRoomId(@Param("roomId") Long roomId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTimelineSegmentService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTimelineSegmentService.java new file mode 100644 index 0000000..7889654 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysTimelineSegmentService.java @@ -0,0 +1,21 @@ +package com.ruoyi.system.service; + +import java.util.List; +import com.ruoyi.common.core.domain.entity.SysTimelineSegment; + +public interface ISysTimelineSegmentService +{ + public List selectSegmentList(SysTimelineSegment segment); + + public List selectSegmentListByRoomId(Long roomId); + + public SysTimelineSegment selectSegmentById(Long segmentId); + + public int insertSegment(SysTimelineSegment segment); + + public int updateSegment(SysTimelineSegment segment); + + public int deleteSegmentById(Long segmentId); + + public int deleteSegmentByRoomId(Long roomId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTimelineSegmentServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTimelineSegmentServiceImpl.java new file mode 100644 index 0000000..4623bc5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysTimelineSegmentServiceImpl.java @@ -0,0 +1,57 @@ +package com.ruoyi.system.service.impl; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.ruoyi.common.core.domain.entity.SysTimelineSegment; +import com.ruoyi.system.mapper.SysTimelineSegmentMapper; +import com.ruoyi.system.service.ISysTimelineSegmentService; + +@Service +public class SysTimelineSegmentServiceImpl implements ISysTimelineSegmentService +{ + @Autowired + private SysTimelineSegmentMapper segmentMapper; + + @Override + public List selectSegmentList(SysTimelineSegment segment) + { + return segmentMapper.selectSegmentList(segment); + } + + @Override + public List selectSegmentListByRoomId(Long roomId) + { + return segmentMapper.selectSegmentListByRoomId(roomId); + } + + @Override + public SysTimelineSegment selectSegmentById(Long segmentId) + { + return segmentMapper.selectSegmentById(segmentId); + } + + @Override + public int insertSegment(SysTimelineSegment segment) + { + return segmentMapper.insertSegment(segment); + } + + @Override + public int updateSegment(SysTimelineSegment segment) + { + return segmentMapper.updateSegment(segment); + } + + @Override + public int deleteSegmentById(Long segmentId) + { + return segmentMapper.deleteSegmentById(segmentId); + } + + @Override + public int deleteSegmentByRoomId(Long roomId) + { + return segmentMapper.deleteSegmentByRoomId(roomId); + } +} diff --git a/ruoyi-system/src/main/resources/mapper/system/SysTimelineSegmentMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysTimelineSegmentMapper.xml new file mode 100644 index 0000000..4543628 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/SysTimelineSegmentMapper.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + select s.segment_id, s.room_id, s.segment_time, s.segment_name, s.segment_desc + from sys_timeline_segment s + + + + + + + + + + insert into sys_timeline_segment( + room_id, + segment_time, + segment_name, + segment_desc, + segment_id + )values( + #{roomId}, + #{segmentTime}, + #{segmentName}, + #{segmentDesc}, + #{segmentId} + ) + + + + update sys_timeline_segment + + segment_time = #{segmentTime}, + segment_name = #{segmentName}, + segment_desc = #{segmentDesc}, + + where segment_id = #{segmentId} + + + + delete from sys_timeline_segment where segment_id = #{segmentId} + + + + delete from sys_timeline_segment where room_id = #{roomId} + + + diff --git a/ruoyi-ui/src/api/system/timeline.js b/ruoyi-ui/src/api/system/timeline.js new file mode 100644 index 0000000..11c9873 --- /dev/null +++ b/ruoyi-ui/src/api/system/timeline.js @@ -0,0 +1,53 @@ +import request from '@/utils/request' + +export function listTimelineSegments(query) { + return request({ + url: '/system/timeline/list', + method: 'get', + params: query + }) +} + +export function getTimelineSegmentsByRoomId(roomId) { + return request({ + url: '/system/timeline/listByRoomId/' + roomId, + method: 'get' + }) +} + +export function getTimelineSegment(id) { + return request({ + url: '/system/timeline/' + id, + method: 'get' + }) +} + +export function addTimelineSegment(data) { + return request({ + url: '/system/timeline', + method: 'post', + data: data + }) +} + +export function updateTimelineSegment(data) { + return request({ + url: '/system/timeline', + method: 'put', + data: data + }) +} + +export function delTimelineSegment(id) { + return request({ + url: '/system/timeline/' + id, + method: 'delete' + }) +} + +export function delTimelineSegmentsByRoomId(roomId) { + return request({ + url: '/system/timeline/room/' + roomId, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/views/cesiumMap/index.vue b/ruoyi-ui/src/views/cesiumMap/index.vue index aba51cc..d401725 100644 --- a/ruoyi-ui/src/views/cesiumMap/index.vue +++ b/ruoyi-ui/src/views/cesiumMap/index.vue @@ -5249,7 +5249,7 @@ this.viewer.scene.postProcessStages.fxaa.enabled = true } .map-info-panel.panel-raised { - bottom: 65px; + bottom: 75px; } /* 比例尺:高德风格,浅色底、圆角、刻度线 */ diff --git a/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue b/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue index aceab24..9eede47 100644 --- a/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue +++ b/ruoyi-ui/src/views/childRoom/BottomLeftPanel.vue @@ -1,6 +1,6 @@