From 2ab579b4fd424e76aff23545ea2ee0193059d7c2 Mon Sep 17 00:00:00 2001
From: 张含笑 <zhx18749296735@163.com>
Date: Mon, 26 Jan 2026 13:48:12 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 applications/task-work-order/src/styles/common.scss                                     |    1 +
 applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue      |    2 +-
 applications/task-work-order/src/components/map-container/common-cesium-map.vue         |   18 ++++++++++++++++++
 applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue |   36 +++++++++++++++++++++---------------
 4 files changed, 41 insertions(+), 16 deletions(-)

diff --git a/applications/task-work-order/src/components/map-container/common-cesium-map.vue b/applications/task-work-order/src/components/map-container/common-cesium-map.vue
index f7773f7..47d6ad1 100644
--- a/applications/task-work-order/src/components/map-container/common-cesium-map.vue
+++ b/applications/task-work-order/src/components/map-container/common-cesium-map.vue
@@ -66,6 +66,22 @@
 let initialized = false
 let removeCameraListener = null
 
+
+const preventDefault = event => {
+	event.preventDefault()
+	return
+}
+
+const cesiumContextMenu = (isAdd = true) => {
+	let cesium = document.getElementById(mapId)
+	if (!cesium) return
+	if (isAdd) {
+		cesium.addEventListener('contextmenu', preventDefault)
+	} else {
+		cesium.removeEventListener('contextmenu', preventDefault)
+	}
+}
+
 const initMap = async () => {
 	if (initialized) return
 	initialized = true
@@ -77,6 +93,7 @@
 		boundary: props.boundary,
 		contour: props.contour,
 	})
+	cesiumContextMenu(true)
 	viewer.value = viewInstance.value.getViewer()
 	if (props.showAdminBoundary) {
 		adminBoundarySources = await loadJaAdminBoundary(viewer.value, {
@@ -118,6 +135,7 @@
 	if (removeCameraListener) removeCameraListener()
 	removeJaAdminBoundary(viewer.value, adminBoundarySources)
 	viewInstance.value?.viewerDestroy?.()
+	cesiumContextMenu(false)
 })
 
 const getMap = () => ({ viewer: viewer.value, publicCesium: viewInstance.value })
diff --git a/applications/task-work-order/src/styles/common.scss b/applications/task-work-order/src/styles/common.scss
index d256339..ea6e5ff 100644
--- a/applications/task-work-order/src/styles/common.scss
+++ b/applications/task-work-order/src/styles/common.scss
@@ -270,6 +270,7 @@
 }
 
 .gd-cesium {
+  position: relative;
   .cesium-viewer {
     height: 100%;
     overflow: hidden;
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
index 6c06281..e64cb3c 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue
@@ -203,13 +203,15 @@
 				>
 					{{ gdStatus === '11' || !gdStatus ? '发布' : '提交修改' }}
 				</el-button>
-				<el-button v-if="['11', '21', '23', '24', '25', '31', '60'].includes(gdStatus)" @click="viewDescription">
-					{{ gdStatusObj[gdStatus].reason }}
-				</el-button>
-				<el-button @click="addDescription" v-if="['20', '24', '25', '50'].includes(gdStatus)">
-					{{ gdStatus === '50' ? '结算' : '申请取消' }}
-				</el-button>
-				<el-button @click="requestModification" v-if="['20', '25'].includes(gdStatus)">申请修改</el-button>
+				<template v-if="!suddenlyEdit">
+					<el-button v-if="['11', '21', '23', '24', '25', '31', '60'].includes(gdStatus)" @click="viewDescription">
+						{{ gdStatusObj[gdStatus].reason }}
+					</el-button>
+					<el-button @click="addDescription" v-if="['20', '24', '25', '50'].includes(gdStatus)">
+						{{ gdStatus === '50' ? '结算' : '申请取消' }}
+					</el-button>
+					<el-button @click="requestModification" v-if="['20', '25'].includes(gdStatus)">申请修改</el-button>
+				</template>
 			</template>
 			<template v-else>
 				<el-button v-if="['21', '23'].includes(gdStatus)" @click="viewDescription">
@@ -217,7 +219,7 @@
 				</el-button>
 				<el-button v-if="gdStatus === '10'" @click="addDescription">拒绝接单</el-button>
 				<el-button v-if="gdStatus === '10'" @click="statusChange(1)">接单</el-button>
-				<el-button v-if="gdStatus === '22'" @click="statusChange(8)">不同意修改</el-button>
+				<el-button v-if="gdStatus === '22'" @click="addDescription">不同意修改</el-button>
 				<el-button v-if="gdStatus === '22'" @click="statusChange(7)">同意修改</el-button>
 				<el-button v-if="gdStatus === '21'" @click="addDescription">不同意取消</el-button>
 				<el-button v-if="gdStatus === '21'" @click="statusChange(5)">同意取消</el-button>
@@ -292,13 +294,14 @@
 const processList = ref([])
 let viewPlane
 const hasPatrolTaskList = computed(() => ['30', '40', '50', '60'].includes(String(formData.value.workOrderStatus)))
+import droneIcon from '@/assets/images/orderView/orderManage/drone.png'
 
 const gdStatusObj = {
 	'10': { reason: '拒绝原因', operationType: '2' },
 	'11': { reason: '拒绝原因' },
 	'20': { reason: '取消原因', operationType: '3' },
 	'21': { reason: '原因', operationType: '6' },
-	'22': { reason: '驳回原因' },
+	'22': { reason: '驳回原因', operationType: '8' },
 	'23': { reason: '取消原因' },
 	'24': { reason: '驳回原因', operationType: '3' },
 	'25': { reason: '驳回原因', operationType: '3' },
@@ -332,9 +335,11 @@
 	})
 }
 
-function requestModification() {
+// 申请修改按钮
+async function requestModification() {
 	suddenlyEdit.value = true
 	dialogMode.value = 'edit'
+	await getDeviceList(true)
 	nextTick(() => {
 		syncSelection()
 		viewPlane && viewer.entities.remove(viewPlane)
@@ -342,6 +347,7 @@
 	})
 }
 
+// 填写说明弹框回调
 function rejectSuccess() {
 	visible.value = false
 	emit('success')
@@ -373,8 +379,8 @@
 }
 
 // 获取推荐设备列表
-async function getDeviceList() {
-	const all = ['11'].includes(gdStatus.value) && requester.value
+async function getDeviceList(allList) {
+	const all = allList || ['11'].includes(gdStatus.value) && requester.value
 	try {
 		const str = [...pointList.value, pointList.value[0]].map(item => `${item.longitude} ${item.latitude}`).join(',')
 		let geom = `POLYGON((${str}))`
@@ -509,7 +515,7 @@
 	})
 }
 
-// 同步关联场景
+// 回显选中设备
 function syncSelection() {
 	if (!deviceTableRef.value) return
 	deviceTableRef.value.clearSelection()
@@ -528,16 +534,16 @@
 	})
 }
 
+// 渲染所有设备
 function setMapDevice() {
 	gdManageDeviceListApi().then(res => {
 		renderingDevice(res?.data?.data || [])
 	})
 }
 
-import droneIcon from '@/assets/images/orderView/orderManage/drone.png'
 
+//  渲染
 function renderingDevice(list) {
-	// 渲染红点
 	list.forEach(item => {
 		const position = Cesium.Cartesian3.fromDegrees(item.longitude || 115.0, item.latitude || 27.11)
 		viewer.entities.add({
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
index 496a025..5545bd7 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue
@@ -236,7 +236,7 @@
 function openFormChange(row) {
 	dialogVisible.value = true
 	nextTick(() => {
-		const mode = ['11','25'].includes(row.workOrderStatus) && requester.value ? 'edit' : 'view'
+		const mode = ['11'].includes(row.workOrderStatus) && requester.value ? 'edit' : 'view'
 		dialogRef.value?.open({ mode, row })
 	})
 }

--
Gitblit v1.9.3