From a64543f9746d5d52b42e7f001f7a0d645cf3e596 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Fri, 06 Feb 2026 10:13:16 +0800
Subject: [PATCH] feat:更新任务工单

---
 applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue |   77 +++++++++++++++++++++++++-------------
 1 files changed, 51 insertions(+), 26 deletions(-)

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 bcb77b1..7ab4e00 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
@@ -9,9 +9,11 @@
 		:close-on-click-modal="false"
 	>
 		<div class="content" style="display: flex">
-			<div class="processBox" v-if="dialogMode !== 'add' && processList.length">
-<!--				<div class="detail-title">工单记录</div>-->
-				<OrderStepBar :processList="processList" />
+			<div class="processBox" v-if="dialogMode !== 'add'">
+				<div class="detail-title">工单记录</div>
+				<div class="process">
+					<OrderStepBar :processList="processList" />
+				</div>
 			</div>
 			<div class="leftBox">
 				<div v-if="dialogReadonly">
@@ -34,7 +36,7 @@
 						</el-col>
 						<el-col :span="12">
 							<div class="label">设备需求</div>
-							<div class="val">{{ getDictLabel(formData.deviceLoadDemand, dictObj.deviceLoadDemand) }}</div>
+							<div class="val">{{ formData.deviceLoadDemand }}</div>
 						</el-col>
 						<el-col :span="24">
 							<div class="label">工单备注</div>
@@ -106,7 +108,6 @@
 							<el-form-item label="执行时间" prop="executeStartTime">
 								<el-date-picker
 									class="gd-date-picker"
-									popper-class="gd-date-picker-popper"
 									v-model="dateRange"
 									type="daterange"
 									range-separator="至"
@@ -127,10 +128,10 @@
 									@change="loadDemandChange"
 								>
 									<el-option
-										v-for="item in dictObj.deviceLoadDemand"
-										:key="item.dictKey"
-										:label="item.dictValue"
-										:value="item.dictKey"
+										v-for="item in payloadList"
+										:key="item.name"
+										:label="item.name"
+										:value="item.name"
 									/>
 								</el-select>
 							</el-form-item>
@@ -138,9 +139,9 @@
 						<el-col :span="24">
 							<el-form-item label="工单备注" prop="remark">
 								<el-input
-									class="gd-input"
+									class="gd-input-text"
 									type="textarea"
-									:rows="4"
+									:rows="3"
 									v-model="formData.remark"
 									placeholder="请输入"
 									clearable
@@ -173,10 +174,10 @@
 				<el-table
 					class="separateTable"
 					:empty-text="
-						formData.deviceLoadDemand && pointList.length ? '暂无数据' : '请先选择设备需求并在地图上绘制工单范围'
+						pointList.length ? '暂无数据' : '请先在地图上绘制工单范围'
 					"
 					ref="deviceTableRef"
-					:data="formData.deviceLoadDemand && pointList.length ? deviceList : []"
+					:data="pointList.length ? deviceList : []"
 					row-key="id"
 					@selection-change="handleDeviceSelectionChange"
 				>
@@ -264,10 +265,10 @@
 	gdWorkOrderHandleStatusApi,
 	gdWorkOrderSaveApi,
 } from './orderManageApi'
-import { gdManageDeviceListApi } from './gdManageDeviceApi'
+import { gdDevicePayloadListApi, gdManageDeviceListApi } from './gdManageDeviceApi'
 import { cartesian3Convert } from '@/utils/cesium/mapUtil'
 import * as Cesium from 'cesium'
-import { DrawPolygon } from '@/utils/cesium/DrawPolygon'
+import { DrawPolygon } from '@ztzf/utils'
 import { pxToRem } from '@/utils/rem'
 import dayjs from 'dayjs'
 import RefuseOrderDialog from '@/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue'
@@ -339,7 +340,6 @@
 	workOrderName: fieldRules(true, 50),
 	workOrderType: fieldRules(true),
 	executeStartTime: fieldRules(true),
-	deviceLoadDemand: fieldRules(true),
 }
 
 // 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消
@@ -512,11 +512,17 @@
 	viewPlane = viewer.entities?.add({
 		customType: 'control_group',
 		position: Cesium.Cartesian3.fromDegrees(result[0], result[1]),
+		polygon: {
+			hierarchy: Cesium.Cartesian3.fromDegreesArray(result),
+			material: Cesium.Color.fromBytes(45, 140, 240, 99),
+			outline: false,
+			heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
+		},
 		polyline: {
 			positions: Cesium.Cartesian3.fromDegreesArray(result),
 			clampToGround: true,
-			width: 3,
-			material: Cesium.Color.RED,
+			width: 2,
+			material: Cesium.Color.fromBytes(45, 140, 240, 255),
 		},
 	})
 	flyVisual({
@@ -547,7 +553,8 @@
 //  渲染
 function renderingAllDevice(list) {
 	list.forEach(item => {
-		const position = Cesium.Cartesian3.fromDegrees(item.longitude || 115.0, item.latitude || 27.11)
+		if (!item.longitude || !item.latitude) return
+		const position = Cesium.Cartesian3.fromDegrees(item.longitude, item.latitude)
 		viewer.entities.add({
 			position: position,
 			billboard: {
@@ -555,6 +562,7 @@
 				width: 30,
 				height: 30,
 				verticalOrigin: Cesium.VerticalOrigin.CENTER,
+				heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
 			},
 			label: {
 				text: item.nickname,
@@ -563,6 +571,7 @@
 				outlineWidth: 2,
 				outlineColor: Cesium.Color.WHITE,
 				horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
+				heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
 				verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
 				pixelOffset: new Cesium.Cartesian2(0, -20),
 			},
@@ -570,9 +579,17 @@
 	})
 }
 
+const payloadList = ref([])
+function getPayloadList() {
+	gdDevicePayloadListApi().then(res => {
+		payloadList.value = res.data.data
+	})
+}
+
 // 打开弹框
 async function open({ mode = 'add', row } = {}) {
 	dialogMode.value = mode
+	getPayloadList()
 	initMap()
 	const allDeviceRes = await gdManageDeviceListApi()
 	formData.value = dialogMode.value === 'add' ? initForm() : row
@@ -656,8 +673,10 @@
 		flex-direction: column;
 
 		.gd-cesium {
+			position: relative;
+			overflow: hidden;
 			width: 100%;
-			min-height: 380px;
+			min-height: 360px;
 			flex: 1;
 		}
 	}
@@ -674,12 +693,18 @@
 	}
 
 	.processBox {
-		padding: 12px 16px 24px 16px;
-		width: 312px;
-		border: 1px solid #e4e4e4;
-		border-radius: 8px;
-		overflow: auto;
-		background: #fff;
+		display: flex;
+		flex-direction: column;
+
+		.process {
+			height: 100%;
+			padding: 12px 16px 24px 16px;
+			width: 312px;
+			border: 1px solid #e4e4e4;
+			border-radius: 8px;
+			background: #fff;
+			overflow: auto;
+		}
 	}
 }
 

--
Gitblit v1.9.3