From af8d4c8fb7b9a81bbcd18b078ebaab40885c94a3 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Sat, 31 Jan 2026 16:07:58 +0800
Subject: [PATCH] feat:数据驾驶舱,离线设备增加图例
---
applications/drone-command/src/components/map-container/device-map-container.vue | 22 +++++++++++++++-------
1 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/applications/drone-command/src/components/map-container/device-map-container.vue b/applications/drone-command/src/components/map-container/device-map-container.vue
index b29a9f4..829f2e9 100644
--- a/applications/drone-command/src/components/map-container/device-map-container.vue
+++ b/applications/drone-command/src/components/map-container/device-map-container.vue
@@ -50,10 +50,13 @@
import { buildEllipsePositions } from '@/utils/cesium/shapeTools'
import { AREA_TYPE_STYLE_MAP, BUFFER_LEVEL_STYLES, DEFAULT_AREA_STYLE } from '@ztzf/constants'
import { fwAreaDivideListApi } from '@/views/areaManage/partition/partitionApi'
-import { fwDefenseSceneListApi } from '@/views/areaManage/sceneConfig/sceneConfigApi'
+
+import { fwDefenseSceneManageListApi } from '@/views/areaManage/sceneManage/sceneManageApi'
+
import { cockpitAggregationApi } from '@/api/dataCockpit'
import layerControlIcon from '@/assets/images/dataCockpit/layerControl.png'
import equipmentIcon from '@/assets/images/dataCockpit/map/equipment.png'
+import offlineEquipmentIcon from '@/assets/images/dataCockpit/map/offline-equipment.png'
import droneIcon from '@/assets/images/dataCockpit/map/drone.png'
import aggregationIcon from '@/assets/images/dataCockpit/map/aggregation.png'
import commandPostIcon from '@/assets/images/dataCockpit/map/command-post.png'
@@ -76,7 +79,7 @@
const POLYGON_HEIGHT_M = 0.2
const props = defineProps({
- onlineDevices: {
+ allDevices: {
type: Array,
default: () => [],
},
@@ -717,6 +720,8 @@
const deviceEntries = []
const devicePositions = []
devices.forEach((item, index) => {
+ const isOnline = String(item.status) === '0'
+
const position = getDevicePosition(item)
if (!position) return
const entityId = `online-device-${item.id ?? index}-${index}`
@@ -724,14 +729,14 @@
devicePositions.push({ lng: position.longitude, lat: position.latitude })
const billboard = deviceBillboardCollection.add({
position: Cesium.Cartesian3.fromDegrees(position.longitude, position.latitude, 0),
- image: equipmentIcon,
+ image: isOnline ? equipmentIcon : offlineEquipmentIcon,
width: 40,
height: 56,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
})
billboard.id = entityId
devicePickMap.set(entityId, { data: item, billboard })
- deviceEntries.push({ position, rangeMeters, billboard })
+ deviceEntries.push({ position, rangeMeters, billboard, isOnline })
})
if (selectedTargetType.value === 'device' && selectedDeviceBillboard && !devicePickMap.has(selectedDeviceBillboard.id)) {
closePopup()
@@ -748,6 +753,7 @@
centerHeight
)
}
+ if (!entry.isOnline) return
if (!Number.isFinite(entry.rangeMeters) || entry.rangeMeters <= 0) return
const primitive = createDeviceRangePrimitiveWithHeight(entry.position, entry.rangeMeters, centerHeight)
if (!primitive) return
@@ -1134,7 +1140,9 @@
const loadCommandPosts = async () => {
try {
- const res = await fwDefenseSceneListApi()
+ const res = await fwDefenseSceneManageListApi({
+ time: dayjs().format('YYYY-MM-DD HH:mm:ss')
+ })
renderCommandPosts(res?.data?.data ?? [])
} catch (error) {
renderCommandPosts([])
@@ -1143,7 +1151,7 @@
watch(
- () => props.onlineDevices,
+ () => props.allDevices,
devices => {
renderDeviceEntities(devices || [])
},
@@ -1215,7 +1223,7 @@
const height = viewer?.camera?.positionCartographic?.height
const stage = getStageByHeight(height)
updateStageDisplay(stage)
- renderDeviceEntities(props.onlineDevices)
+ renderDeviceEntities(props.allDevices)
loadPartitions()
loadAggregation()
loadCommandPosts()
--
Gitblit v1.9.3