From c8a416829d700542718fe5f1e5fa3c4036205828 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Sat, 31 Jan 2026 14:32:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue                |   16 +----
 applications/drone-command/src/page/index/top/index.vue                                         |    4 
 applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue   |    3 
 applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig/index.vue          |    4 
 applications/drone-command/src/views/areaManage/areaStatistics/index.vue                        |   10 +-
 applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue                      |   40 ++++++++++++-
 applications/drone-command/src/views/basicManage/deviceStock/index.vue                          |    6 +-
 applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/index.vue |    8 +-
 applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue  |    1 
 applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue                     |   43 ++++++++++++++
 applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue          |    4 
 11 files changed, 103 insertions(+), 36 deletions(-)

diff --git a/applications/drone-command/src/page/index/top/index.vue b/applications/drone-command/src/page/index/top/index.vue
index 4cdb79d..1423d34 100644
--- a/applications/drone-command/src/page/index/top/index.vue
+++ b/applications/drone-command/src/page/index/top/index.vue
@@ -101,8 +101,8 @@
       })
     },
     jumpMH () {
-      const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL
-      window.location.href = `${adminUrl}#/gatewayPage`
+      // const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL
+      // window.location.href = `${adminUrl}#/gatewayPage`
     },
   },
 }
diff --git a/applications/drone-command/src/views/areaManage/areaStatistics/index.vue b/applications/drone-command/src/views/areaManage/areaStatistics/index.vue
index 79bfc7d..e493c7b 100644
--- a/applications/drone-command/src/views/areaManage/areaStatistics/index.vue
+++ b/applications/drone-command/src/views/areaManage/areaStatistics/index.vue
@@ -6,9 +6,9 @@
 					clearable @clear="handleSearch" />
 			</el-form-item>
 
-			<el-form-item label="区域类型" prop="areaType">
+			<el-form-item label="区域类型" prop="areaTypeKeys">
 				<el-select class="command-select" popper-class="command-select-popper"
-					v-model="searchParams.areaType" placeholder="请选择" clearable @change="handleSearch">
+					v-model="searchParams.areaTypeKeys" placeholder="请选择" clearable @change="handleSearch">
 					<el-option v-for="item in dictObj.areaType" :key="item.dictKey" :label="item.dictValue"
 						:value="item.dictKey" />
 				</el-select>
@@ -33,9 +33,9 @@
 				<el-table class="command-table" :data="list">
 					<el-table-column type="index" show-overflow-tooltip width="64" label="序号" />
 					<el-table-column prop="areaName" show-overflow-tooltip label="区域名称" />
-					<el-table-column prop="areaType" show-overflow-tooltip label="区域类型">
+					<el-table-column prop="areaTypeKeys" show-overflow-tooltip label="区域类型">
 						<template v-slot="{ row }">
-							{{ getDictLabel(row.areaType, dictObj.areaType) }}
+							{{ getDictLabel(row.areaTypeKeys, dictObj.areaType) }}
 						</template>
 					</el-table-column>
 					<el-table-column prop="sceneName" show-overflow-tooltip label="关联场景" />
@@ -79,7 +79,7 @@
 // 初始化查询参数
 const initSearchParams = () => ({
 	areaName: '', // 区域名称
-	areaType: '', // 区域类型
+	areaTypeKeys: '', // 区域类型
 	sceneType: '', // 场景类型
 	current: 1, // 当前页
 	size: 10, // 每页大小
diff --git a/applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue
index 50e15ee..f698ff7 100644
--- a/applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/precinctInfo/FormDiaLog.vue
@@ -111,7 +111,7 @@
 </template>
 
 <script setup>
-import { computed, nextTick, ref } from 'vue'
+import { computed, nextTick, ref, watch } from 'vue'
 import { ElMessage } from 'element-plus'
 import { fwPoliceStationDetailApi, fwPoliceStationSubmitApi } from './precinctInfoApi'
 import { fieldRules } from '@ztzf/utils'
@@ -121,6 +121,7 @@
 import { saveOperationLog } from '@ztzf/apis'
 import { useRoute } from 'vue-router'
 import positionIcon from '@/assets/images/areaManage/positionIcon.png'
+import { MapTooltip } from '@/utils/cesium/shapeTools/Tooltip'
 
 const initForm = () => ({
 	address: '', // 位置
@@ -185,6 +186,10 @@
 let viewer
 let redPointEntity
 let leftClickBound = false
+let mouseMoveBound = false
+let mapTooltip
+let publicCesium
+const tooltipEventKey = 'precinct-info-point-tip'
 const labelParams = {
 	font: '18px',
 	fillColor: Cesium.Color.WHITE, // 文字颜色:白色
@@ -271,12 +276,38 @@
 	await nextTick()
 	const map = inlineMapRef.value?.getMap()
 	viewer = map?.viewer || null
+	publicCesium = map?.publicCesium || null
 	if (viewer && !leftClickBound) {
 		map.publicCesium?.addLeftClickEvent?.(null, LeftClickEvent)
 		leftClickBound = true
 	}
+	if (viewer && !readonly.value) {
+		ensurePointTooltip()
+	}
 	if (formData.value.longitude != null && formData.value.latitude != null) {
 		setMapPoint(formData.value.longitude, formData.value.latitude)
+	}
+}
+
+function ensurePointTooltip() {
+	if (!viewer || !publicCesium || mouseMoveBound) return
+	mapTooltip ||= new MapTooltip(viewer, { offset: { x: 16, y: 24 } })
+	publicCesium.addMouseHandler?.(
+		null,
+		movement => {
+			if (!visible.value || readonly.value) return
+			mapTooltip?.show('点击地图选择派出所位置', movement.endPosition)
+		},
+		tooltipEventKey
+	)
+	mouseMoveBound = true
+}
+
+function clearPointTooltip() {
+	mapTooltip?.hide()
+	if (publicCesium && mouseMoveBound) {
+		publicCesium.removeMouseHandler?.(tooltipEventKey)
+		mouseMoveBound = false
 	}
 }
 
@@ -296,6 +327,7 @@
 	formData.value = dialogMode.value === 'add' ? initForm() : row
 	redPointEntity = null
 	leftClickBound = false
+	clearPointTooltip()
 	if (dialogMode.value !== 'add') {
 		await loadDetail()
 	}
@@ -305,6 +337,15 @@
 	}, 500)
 }
 
+watch(
+	() => visible.value,
+	val => {
+		if (!val) {
+			clearPointTooltip()
+		}
+	}
+)
+
 defineExpose({ open })
 </script>
 <style scoped lang="scss">
diff --git a/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue b/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
index 7e096b0..da80178 100644
--- a/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
+++ b/applications/drone-command/src/views/areaManage/sceneManage/FormDiaLog.vue
@@ -160,6 +160,7 @@
 import { buildEllipsePositions } from '@/utils/cesium/shapeTools'
 import { cartesian3Convert } from '@/utils/cesium/mapUtil'
 import { AREA_TYPE_STYLE_MAP, BUFFER_LEVEL_STYLES, DEFAULT_AREA_STYLE } from '@ztzf/constants'
+import { MapTooltip } from '@/utils/cesium/shapeTools/Tooltip'
 
 // 初始化表单数据
 const initForm = () => ({
@@ -198,6 +199,10 @@
 let redPointEntity
 let areaDisplaySource
 let leftClickBound = false
+let mouseMoveBound = false
+let mapTooltip
+let publicCesium
+const tooltipEventKey = 'scene-manage-point-tip'
 
 // 表单验证规则
 const rules = {
@@ -555,13 +560,36 @@
 
 // 初始化地图实例
 function initMap() {
-	if (viewer) return
 	const map = mapRef.value?.getMap()
 	if (!map?.viewer) return
-	viewer = map.viewer
+	viewer ||= map.viewer
+	publicCesium ||= map.publicCesium
 	if (!readonly.value && !leftClickBound) {
 		map.publicCesium?.addLeftClickEvent?.(null, LeftClickEvent)
 		leftClickBound = true
+	}
+	if (!readonly.value) ensurePointTooltip()
+}
+
+function ensurePointTooltip() {
+	if (!viewer || !publicCesium || mouseMoveBound) return
+	mapTooltip ||= new MapTooltip(viewer, { offset: { x: 28, y: 24 } })
+	publicCesium.addMouseHandler?.(
+		null,
+		movement => {
+			if (!visible.value || readonly.value) return
+			mapTooltip?.show('点击地图选择指挥点位置', movement.endPosition)
+		},
+		tooltipEventKey
+	)
+	mouseMoveBound = true
+}
+
+function clearPointTooltip() {
+	mapTooltip?.hide()
+	if (publicCesium && mouseMoveBound) {
+		publicCesium.removeMouseHandler?.(tooltipEventKey)
+		mouseMoveBound = false
 	}
 }
 
@@ -626,6 +654,9 @@
 	redPointEntity = null
 	await nextTick()
 	initMap()
+	if (dialogMode.value === 'view') {
+		clearPointTooltip()
+	}
 	await getSceneConfigList()
 	if (dialogMode.value === 'add') {
 		mapRef.value?.zoomToAdminBoundary?.()
@@ -652,7 +683,10 @@
 watch(
 	() => visible.value,
 	val => {
-		if (!val) clearAreaDisplay()
+		if (!val) {
+			clearAreaDisplay()
+			clearPointTooltip()
+		}
 	}
 )
 
diff --git a/applications/drone-command/src/views/basicManage/deviceStock/index.vue b/applications/drone-command/src/views/basicManage/deviceStock/index.vue
index 561ce69..38cb3d6 100644
--- a/applications/drone-command/src/views/basicManage/deviceStock/index.vue
+++ b/applications/drone-command/src/views/basicManage/deviceStock/index.vue
@@ -81,17 +81,17 @@
 					<el-table-column prop="purpose" show-overflow-tooltip width="130" label="用途" />
 					<el-table-column prop="belongDeptName" show-overflow-tooltip width="160" label="所属部门" />
 					<el-table-column prop="charger" show-overflow-tooltip width="100" label="负责人" />
-					<el-table-column prop="yxzt" show-overflow-tooltip width="116" label="运行状态">
+					<el-table-column prop="yxzt" show-overflow-tooltip width="96" label="运行状态">
 						<template v-slot="{ row }">
 							{{ getDictLabel(row.status, dictObj.deviceStatus) }}
 						</template>
 					</el-table-column>
-					<el-table-column prop="yxzt" show-overflow-tooltip width="116" label="出库状态">
+					<el-table-column prop="yxzt" show-overflow-tooltip width="96" label="出库状态">
 						<template v-slot="{ row }">
 							{{ getDictLabel(row.trackStatus, trackStatusOptions) }}
 						</template>
 					</el-table-column>
-					<el-table-column label="操作" class-name="operation-btns" width="140">
+					<el-table-column label="操作" class-name="operation-btns">
 						<template v-slot="{ row }">
 							<el-link @click="handleView(row)">查看</el-link>
 							<el-link @click="handleEdit(row)">编辑</el-link>
diff --git a/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/index.vue b/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/index.vue
index 110effc..bb0c82a 100644
--- a/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/index.vue
+++ b/applications/drone-command/src/views/detectionCountermeasure/countermeasureEvaluation/index.vue
@@ -60,7 +60,7 @@
 					<el-table-column prop="droneName" show-overflow-tooltip width="130" label="无人机名称" />
 					<el-table-column prop="droneType" show-overflow-tooltip width="130" label="无人机类型" />
 					<el-table-column prop="droneDeviceCode" show-overflow-tooltip width="140" label="设备编码" />
-					<el-table-column prop="findTime" show-overflow-tooltip width="140" label="发现时间" />
+					<el-table-column prop="findTime" show-overflow-tooltip width="156" label="发现时间" />
 					<el-table-column prop="counterEffect" show-overflow-tooltip width="120" label="反制效果">
 						<template v-slot="{ row }">
 							{{ getDictLabel(row.counterEffect, dictObj.counterEffect) }}
@@ -76,14 +76,14 @@
 					<el-table-column prop="deviceSn" show-overflow-tooltip width="140" label="反制设备编码" />
 					<el-table-column prop="areaCode" show-overflow-tooltip width="120" label="场景" />
 					<el-table-column prop="areaCode" show-overflow-tooltip width="120" label="区域" />
-					<el-table-column show-overflow-tooltip width="160" label="部署位置">
+					<el-table-column show-overflow-tooltip width="172" label="部署位置">
 						<template v-slot="{ row }">
 							{{ row.deployLongitude && row.deployLatitude ? `${row.deployLongitude}, ${row.deployLatitude}` : '' }}
 						</template>
 					</el-table-column>
-					<el-table-column prop="coverRadiusM" show-overflow-tooltip width="120" label="覆盖范围">
+					<el-table-column prop="coverRadiusM" show-overflow-tooltip width="120" label="覆盖范围(m)">
 						<template v-slot="{ row }">
-							{{ row.coverRadiusM ? `${row.coverRadiusM}米` : '' }}
+							{{ row.coverRadiusM ? `${row.coverRadiusM}` : '' }}
 						</template>
 					</el-table-column>
 					<el-table-column prop="workMode" show-overflow-tooltip width="120" label="工作模式">
diff --git a/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig/index.vue b/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig/index.vue
index d56f1f3..c5635fb 100644
--- a/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig/index.vue
+++ b/applications/drone-command/src/views/detectionCountermeasure/deviceAppConfig/index.vue
@@ -65,7 +65,7 @@
 					<el-table-column prop="deviceModel" show-overflow-tooltip label="设备型号" />
 					<el-table-column prop="deviceName" show-overflow-tooltip label="设备名称" />
 					<el-table-column prop="deviceSn" show-overflow-tooltip label="设备编码" />
-					<el-table-column prop="deviceStatus" show-overflow-tooltip label="设备状态">
+					<el-table-column prop="deviceStatus" show-overflow-tooltip width="96" label="设备状态">
 						<template v-slot="{ row }">
 							{{ getDictLabel(row.status, dictObj.deviceStatus) }}
 						</template>
@@ -76,7 +76,7 @@
 						</template>
 					</el-table-column>
 					<el-table-column prop="manufacturer" show-overflow-tooltip label="厂商" />
-					<el-table-column prop="contactPhone" show-overflow-tooltip label="联系方式" />
+					<el-table-column prop="contactPhone" show-overflow-tooltip width="112" label="联系方式" />
 					<el-table-column prop="sceneName" show-overflow-tooltip label="所属场景" />
 					<el-table-column label="操作" class-name="operation-btns">
 						<template v-slot="{ row }">
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 712e13a..a5b9bdb 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
+++ b/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
@@ -37,6 +37,10 @@
         <div class="val">{{ formData.projectExperience }}</div>
       </el-col>
 	  <el-col :span="12">
+        <div class="label">飞手地址</div>
+        <div class="val">{{ formData.flyerAddress }}</div>
+      </el-col>
+	  <el-col :span="24">
         <div class="label">飞手证书</div>
         <div class="val">
 			<el-image
@@ -169,18 +173,6 @@
 						/>
 					</el-form-item>
 				</el-col>
-				<!-- <el-col :span="24" v-if="dialogType === 'view'">
-					<el-form-item label="飞手证书" prop="certification">
-						<el-image
-							v-for="(item, index) in formData.certification"
-							:key="index"
-							:src="item"
-							:preview-src-list="formData.certification"
-							class="gd-image"
-							style="width: 100px; height: 100px; margin-right: 10px;"
-						/>
-					</el-form-item>
-				</el-col> -->
 			</el-row>
 		</el-form>
 		<template #footer>
diff --git a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
index 6f482ac..5614ef4 100644
--- a/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
+++ b/applications/task-work-order/src/views/orderView/orderDataManage/supplyAdd/ApplyViewDialog.vue
@@ -73,7 +73,6 @@
 					<div class="upload-container">
 						<el-upload
 						:http-request="handleHttpRequest"
-						:limit="3"
 						:on-success="handleUploadSuccess"
 						:on-error="handleUploadError"
 						:on-remove="handleFileRemove"
diff --git a/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
index 11c31a3..a06920f 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/clueEvents/ViewDiaLog.vue
@@ -32,7 +32,7 @@
 				<el-table-column label="操作" class-name="operation-btns" width="140">
 					<template v-slot="{ row }">
 						<el-link type="primary" @click="openDistributeDialog(row)" v-if="permission.clueEvents_distribute && (row.distributeStatus === 0 || row.distributeStatus === 2)">
-							转为事件并分发
+							{{ row.distributeStatus === 2 ? '再次分发':'转为事件并分发' }}
 						</el-link>
 						<el-button disabled type="text" v-else>转为事件并分发</el-button>
 					</template>
@@ -76,7 +76,7 @@
 const distributeStatusOptions = [
 	{ label: '未分发', value: 0 },
 	{ label: '已分发', value: 1 },
-	{ label: '已退回', value: 2 },
+	{ label: '被退回', value: 2 },
 	{ label: '已确认', value: 3 },
 ]
 
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
index bf04ec8..16cb40e 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionRequest/FormDiaLog.vue
@@ -117,9 +117,10 @@
 								任务执行时间
 							</template>
 							<template v-slot="{ row }">
+<!--								gd-date-picker-popper-->
 								<el-date-picker
 									class="gd-date-picker"
-									popper-class="gd-date-picker-popper"
+									popper-class=""
 									v-model="row.executeTime"
 									type="datetime"
 									placeholder="请选择"

--
Gitblit v1.9.3