From 7c17ba534daa62fa35e14491aefde56901a88fd8 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Tue, 03 Feb 2026 14:15:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue | 2
applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue | 48 ++++++++++++++++++++++-
applications/drone-command/src/views/areaManage/sceneConfig/index.vue | 2
applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue | 9 ++++
applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue | 3 -
applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue | 1
applications/task-work-order/src/views/orderView/appConfiguration/process/FlowConfigDialog.vue | 4 +-
7 files changed, 59 insertions(+), 10 deletions(-)
diff --git a/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
index 3c51a03..342b43c 100644
--- a/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/partition/FormDiaLog.vue
@@ -260,6 +260,7 @@
import ellipseIcon from '@/assets/images/areaMap/ellipse.png'
import bufferIcon from '@/assets/images/areaMap/buffer.png'
import trashIcon from '@/assets/images/areaMap/trash.png'
+import equipmentIcon from '@/assets/images/dataCockpit/map/equipment.png'
const initForm = () => ({
areaName: '', // 区域名称
@@ -314,6 +315,7 @@
let viewEntity
let shapeDisplaySource
const deviceRangePrimitiveMap = new Map()
+const deviceIconEntityMap = new Map()
const activeToolMode = ref('')
const suppressDeviceFly = ref(false)
const isDialogInitializing = ref(false)
@@ -437,6 +439,7 @@
hideTypePanel()
clearShapeDisplay()
clearDeviceRangePrimitives()
+ clearDeviceIconEntities()
}
}
)
@@ -504,10 +507,20 @@
deviceRangePrimitiveMap.clear()
}
+function clearDeviceIconEntities () {
+ if (!viewer || !deviceIconEntityMap.size) return
+ for (const entity of deviceIconEntityMap.values()) {
+ viewer.entities.remove(entity)
+ }
+ deviceIconEntityMap.clear()
+}
+
function clearDeviceListState () {
deviceOptions.value = []
selectedDeviceRows.value = []
formData.value.deviceIds = ''
+ clearDeviceRangePrimitives()
+ clearDeviceIconEntities()
if (deviceTableRef.value) {
deviceTableRef.value.clearSelection()
}
@@ -599,8 +612,10 @@
async function renderDeviceRangeSingle (device) {
if (!viewer) return
clearDeviceRangePrimitives()
+ clearDeviceIconEntities()
const position = getDeviceLngLat(device)
if (!position) return
+ addDeviceIconEntity(device, position)
const rangeMeters = normalizeDeviceRange(device.effectiveRangeKm)
const primitive = await createDeviceRangePrimitive(viewer, position, rangeMeters)
if (!primitive) return
@@ -620,6 +635,12 @@
deviceRangePrimitiveMap.delete(id)
}
}
+ for (const [id, entity] of deviceIconEntityMap.entries()) {
+ if (!nextIds.has(id)) {
+ viewer.entities.remove(entity)
+ deviceIconEntityMap.delete(id)
+ }
+ }
const pendingRows = selectedRows.filter(row => {
const id = String(row?.id)
return id && !deviceRangePrimitiveMap.has(id)
@@ -628,14 +649,17 @@
const primitives = await Promise.all(
pendingRows.map(async row => {
const position = getDeviceLngLat(row)
- if (!position) return { row, primitive: null }
+ if (!position) return { row, primitive: null, position: null }
const rangeMeters = normalizeDeviceRange(row.effectiveRangeKm)
const primitive = await createDeviceRangePrimitive(viewer, position, rangeMeters)
- return { row, primitive }
+ return { row, primitive, position }
})
)
if (renderToken !== deviceRangeRenderToken) return
- primitives.forEach(({ row, primitive }) => {
+ primitives.forEach(({ row, primitive, position }) => {
+ if (position) {
+ addDeviceIconEntity(row, position)
+ }
if (!primitive) return
const id = String(row?.id)
if (!nextIds.has(id)) return
@@ -665,6 +689,23 @@
function clearShapeDisplay () {
if (!shapeDisplaySource) return
shapeDisplaySource.entities.removeAll()
+}
+
+function addDeviceIconEntity (device, position) {
+ if (!viewer || !position) return
+ const id = String(device?.id ?? '')
+ if (!id || deviceIconEntityMap.has(id)) return
+ const entity = viewer.entities.add({
+ position: Cesium.Cartesian3.fromDegrees(position.lng, position.lat, position.height || 0),
+ billboard: {
+ image: equipmentIcon,
+ width: 28,
+ height: 38,
+ verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
+ heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+ },
+ })
+ deviceIconEntityMap.set(id, entity)
}
function normalizeShapePoint (point) {
@@ -1357,6 +1398,7 @@
initMap()
clearShapeDisplay()
clearDeviceRangePrimitives()
+ clearDeviceIconEntities()
viewEntity && viewer?.entities?.remove(viewEntity)
viewEntity = null
clearActiveTool()
diff --git a/applications/drone-command/src/views/areaManage/sceneConfig/index.vue b/applications/drone-command/src/views/areaManage/sceneConfig/index.vue
index 7ef87d3..e0bca9e 100644
--- a/applications/drone-command/src/views/areaManage/sceneConfig/index.vue
+++ b/applications/drone-command/src/views/areaManage/sceneConfig/index.vue
@@ -54,7 +54,7 @@
</el-table-column>
<el-table-column prop="areaCount" show-overflow-tooltip label="区域数量" />
<el-table-column prop="counterDeviceCount" show-overflow-tooltip label="反制设备数量" />
- <el-table-column prop="detectDeviceCount" show-overflow-tooltip label="探测设备数量" />
+ <el-table-column prop="detectDeviceCount" show-overflow-tooltip label="侦测设备数量" />
<el-table-column label="操作" class-name="operation-btns">
<template v-slot="{ row }">
<el-link @click="openForm('view', row)">查看</el-link>
diff --git a/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
index 1ee59fc..1afc927 100644
--- a/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
@@ -107,6 +107,7 @@
start-placeholder="开始时间"
end-placeholder="结束时间"
value-format="YYYY-MM-DD HH:mm:ss"
+ :disabled-date="disablePastDate"
clearable
/>
</el-form-item>
@@ -201,6 +202,12 @@
let mapTooltip
let publicCesium
const tooltipEventKey = 'scene-manage-point-tip'
+const disablePastDate = date => {
+ if (!date) return false
+ const todayStart = new Date()
+ todayStart.setHours(0, 0, 0, 0)
+ return date.getTime() < todayStart.getTime()
+}
// 表单验证规则
const rules = {
@@ -526,6 +533,8 @@
const list = res?.data?.data ?? []
areaList.value = await ensureAreaExtList(list)
renderSceneAreas()
+ await nextTick()
+ fitViewToSceneAreas()
}
async function getSceneConfigList() {
diff --git a/applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue b/applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue
index 13edcb7..423e502 100644
--- a/applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue
+++ b/applications/drone-command/src/views/basicManage/deviceStock/DeviceTrackDiaLog.vue
@@ -140,6 +140,7 @@
const payload = {
...formData.value,
outTarget: selected?.label ?? formData.value.outTarget,
+ outTargetCode: formData.value.outTarget
}
await fwDeviceTrackSubmitApi(payload)
saveOperationLog({
diff --git a/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue b/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
index 9243617..4deb756 100644
--- a/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
+++ b/applications/drone-command/src/views/detectionCountermeasure/detectionRange/DetectionRangeDialog.vue
@@ -343,9 +343,6 @@
const radius = Math.max(rangeMeters, 1000)
const sphere = new Cesium.BoundingSphere(center, radius)
- console.log(viewer, longitude, latitude, radius)
-
-
viewer.camera.flyToBoundingSphere(sphere, {
duration: 0,
offset: new Cesium.HeadingPitchRange(viewer.camera.heading, Cesium.Math.toRadians(-90), radius * 1.8),
diff --git a/applications/task-work-order/src/views/orderView/appConfiguration/process/FlowConfigDialog.vue b/applications/task-work-order/src/views/orderView/appConfiguration/process/FlowConfigDialog.vue
index 911d3b7..e81d14a 100644
--- a/applications/task-work-order/src/views/orderView/appConfiguration/process/FlowConfigDialog.vue
+++ b/applications/task-work-order/src/views/orderView/appConfiguration/process/FlowConfigDialog.vue
@@ -27,8 +27,8 @@
<template #footer>
<span class="avue-dialog__footer">
<el-button @click="handleNutflowClose(() => {}, true)">取 消</el-button>
- <el-button v-if="nutflowOption.step === 1" type="success" @click="handleStep(1)">下 一 步</el-button>
- <el-button v-if="nutflowOption.step === 2" type="success" @click="handleStep(-1)">上 一 步</el-button>
+ <el-button color="#4C34FF" v-if="nutflowOption.step === 1" type="success" @click="handleStep(1)">下 一 步</el-button>
+ <el-button color="#4C34FF" v-if="nutflowOption.step === 2" type="success" @click="handleStep(-1)">上 一 步</el-button>
<el-button v-if="nutflowOption.step === 2" type="primary" @click="handleSubmitModel">确 定</el-button>
</span>
</template>
diff --git a/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue b/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
index a5b9bdb..1f1580c 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
+++ b/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
@@ -59,7 +59,7 @@
ref="formRef"
:model="formData"
:rules="rules"
- class="gd-form"
+ class="gd-dialog-form"
label-width="160px"
v-else
>
--
Gitblit v1.9.3