diff --git a/ruoyi-ui/src/lang/en.js b/ruoyi-ui/src/lang/en.js index 53271e1..bc7fd5b 100644 --- a/ruoyi-ui/src/lang/en.js +++ b/ruoyi-ui/src/lang/en.js @@ -118,9 +118,16 @@ export default { conflictTime: 'Conflict Time', conflictPosition: 'Conflict Position', viewDetails: 'View Details', + locate: 'Locate', resolveConflict: 'Resolve Conflict', noConflict: 'No Conflict', + noMatchFilter: 'No matches for current filter', recheck: 'Recheck', + conflictFilter: 'Type', + conflictTypeAll: 'All', + conflictTypeTime: 'Time', + conflictTypeSpace: 'Space', + conflictTypeSpectrum: 'Spectrum', air: 'Air', sea: 'Sea', ground: 'Ground' diff --git a/ruoyi-ui/src/lang/zh.js b/ruoyi-ui/src/lang/zh.js index eb35dbc..eb5e276 100644 --- a/ruoyi-ui/src/lang/zh.js +++ b/ruoyi-ui/src/lang/zh.js @@ -118,9 +118,16 @@ export default { conflictTime: '冲突时间', conflictPosition: '冲突位置', viewDetails: '查看详情', + locate: '定位', resolveConflict: '解决冲突', noConflict: '暂无冲突', + noMatchFilter: '当前筛选无匹配项', recheck: '重新检测', + conflictFilter: '类型筛选', + conflictTypeAll: '全部', + conflictTypeTime: '时间', + conflictTypeSpace: '空间', + conflictTypeSpectrum: '频谱', air: '空中', sea: '海上', ground: '地面' diff --git a/ruoyi-ui/src/views/cesiumMap/index.vue b/ruoyi-ui/src/views/cesiumMap/index.vue index e7ca358..116bc69 100644 --- a/ruoyi-ui/src/views/cesiumMap/index.vue +++ b/ruoyi-ui/src/views/cesiumMap/index.vue @@ -9975,6 +9975,43 @@ export default { .map(e => this.serializeEntityForSave(e)) return { version: '1.0', date: new Date().toISOString(), entities } }, + /** 供冲突检测用:返回当前地图上所有平台图标位置 [{ id, lng, lat, name }] */ + getPlatformIconPositions() { + if (!this.allEntities) return [] + return this.allEntities + .filter(e => e && e.type === 'platformIcon') + .map(e => { + let lng = e.lng + let lat = e.lat + if (lng == null || lat == null) { + try { + const pos = e.entity && e.entity.position && e.entity.position.getValue + ? e.entity.position.getValue(Cesium.JulianDate.now()) + : null + if (pos) { + const ll = this.cartesianToLatLng(pos) + if (ll) { lng = ll.lng; lat = ll.lat } + } + } catch (_) {} + } + return { id: e.id, lng: Number(lng), lat: Number(lat), name: e.label || e.platformName || e.name || `平台${e.id}` } + }) + .filter(p => Number.isFinite(p.lng) && Number.isFinite(p.lat)) + }, + /** 供冲突定位用:相机飞至指定经纬度与高度 */ + flyToPosition(lng, lat, alt, duration = 1.5) { + if (!this.viewer || !this.viewer.camera) return + const height = alt != null && Number.isFinite(Number(alt)) ? Number(alt) : 50000 + this.viewer.camera.flyTo({ + destination: Cesium.Cartesian3.fromDegrees(Number(lng), Number(lat), Math.max(1000, height)), + orientation: { + heading: 0, + pitch: Cesium.Math.toRadians(-60), + roll: 0 + }, + duration: duration + }) + }, /** 仅清除空域/威力区图形(不删平台图标、航线) */ clearDrawingEntities() { if (!this.allEntities || !this.viewer) return @@ -11017,12 +11054,12 @@ export default { } else { coordinateText = `${lng.toFixed(6)},${lat.toFixed(6)}` } - this.$message.success(`已定位到经度 ${coordinateText}`) + this.$message({ message: `已定位到经度 ${coordinateText}`, type: 'success', duration: 2000 }) } }, handleLocateCancel() { - this.$message.info('已取消定位') + this.$message({ message: '已取消定位', type: 'info', duration: 2000 }) }, updateSelectOptions(refName, dataList, labelField) { const select = document.querySelector(`select[ref="${refName}"]`) diff --git a/ruoyi-ui/src/views/childRoom/RightPanel.vue b/ruoyi-ui/src/views/childRoom/RightPanel.vue index 5f063ca..d1d0694 100644 --- a/ruoyi-ui/src/views/childRoom/RightPanel.vue +++ b/ruoyi-ui/src/views/childRoom/RightPanel.vue @@ -123,58 +123,6 @@ -
{{ $t('rightPanel.noConflict') }}
-