From e878d0367cd1504a5585a3c242e4aae895fe951b Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 19 Jan 2026 17:31:11 +0800
Subject: [PATCH] feat: 完成接单

---
 applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue |   67 ++++++++++++++++++++++++---------
 1 files changed, 49 insertions(+), 18 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 2acd0b0..d3fdd14 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
@@ -7,7 +7,7 @@
 		:style="{ width: pxToRem(1216) }"
 		destroy-on-close
 	>
-		<div style="display: flex">
+		<div class="content" style="display: flex">
 			<div class="leftBox">
 				<div class="detail-container" v-if="dialogReadonly">
 					<el-row>
@@ -35,6 +35,11 @@
 							<div class="val">{{ formData.remark }}</div>
 						</el-col>
 					</el-row>
+					<el-table ref="deviceTableRef" :data="deviceList" row-key="id">
+						<el-table-column prop="nickname" label="设备名称" />
+						<el-table-column prop="deviceName" label="设备型号" />
+						<el-table-column prop="devicePayload" label="设备负载" />
+					</el-table>
 				</div>
 				<el-form
 					class="gd-dialog-form"
@@ -110,15 +115,9 @@
 				</el-form>
 				<div id="mapContainer" class="gd-cesium"></div>
 			</div>
-			<div>
-				<h3>推荐设备</h3>
-				<el-table
-					class="command-data-cockpit-table"
-					ref="deviceTableRef"
-					:data="deviceList"
-					row-key="id"
-					@selection-change="handleDeviceSelectionChange"
-				>
+			<div class="rightBox" v-if="!dialogReadonly">
+				<div class="title">推荐设备</div>
+				<el-table ref="deviceTableRef" :data="deviceList" row-key="id" @selection-change="handleDeviceSelectionChange">
 					<el-table-column type="selection" width="55" :reserve-selection="true" />
 					<el-table-column prop="nickname" label="设备名称" />
 					<el-table-column prop="deviceName" label="设备型号" />
@@ -128,6 +127,9 @@
 		</div>
 
 		<template #footer>
+			<el-button color="#F2F3F5" @click="requester = !requester">
+				当前用户是{{ requester ? '需求方' : '服务方' }}
+			</el-button>
 			<el-button color="#F2F3F5" @click="visible = false">{{ dialogReadonly ? '关闭' : '取消' }}</el-button>
 			<el-button
 				class="save-btn"
@@ -137,8 +139,16 @@
 				:disabled="submitting"
 				@click="handleSubmit"
 			>
-				保存
+				发布
 			</el-button>
+			<template v-if="requester">
+				<el-button color="#F2F3F5">拒单原因</el-button>
+				<el-button color="#F2F3F5">重新发布</el-button>
+			</template>
+			<template v-else>
+				<el-button color="#F2F3F5">拒绝接单</el-button>
+				<el-button class="save-btn" color="#4C34FF" @click="acceptOrders">接单</el-button>
+			</template>
 		</template>
 	</el-dialog>
 </template>
@@ -147,7 +157,7 @@
 import { computed, ref, onMounted, nextTick } from 'vue'
 import { ElMessage } from 'element-plus'
 import { dateRangeFormat, fieldRules, geomAnalysis, getDictLabel } from '@ztzf/utils'
-import { gdWorkOrderDetailApi, gdWorkOrderSaveApi } from './orderManageApi'
+import { gdWorkOrderDetailApi, gdWorkOrderHandleStatusApi, gdWorkOrderSaveApi } from './orderManageApi'
 import { gdManageDeviceListApi, gdManageDevicePageApi } from './gdManageDeviceApi'
 import { cartesian3Convert } from '@/utils/cesium/mapUtil'
 import * as turf from '@turf/turf'
@@ -179,6 +189,7 @@
 const submitting = ref(false) // 提交中
 const dialogReadonly = computed(() => dialogMode.value === 'view')
 const titleEnum = ref({ edit: '编辑', view: '查看', add: '新增' })
+const requester = ref(true)
 
 const deviceList = ref([]) // 设备列表
 const selectedDevices = ref([]) // 选中的设备
@@ -192,6 +203,14 @@
 	workOrderType: fieldRules(true),
 	executeStartTime: fieldRules(true),
 	deviceLoadDemand: fieldRules(true),
+}
+
+function acceptOrders() {
+	gdWorkOrderHandleStatusApi({ operationType: 1, workOrderId: formData.value.id }).then(res => {
+		ElMessage.success('接单成功')
+		visible.value = false
+		emit('success')
+	})
 }
 
 // 获取推荐设备列表
@@ -347,11 +366,23 @@
 </script>
 
 <style lang="scss" scoped>
-.leftBox {
-	width: 681px;
-}
-#mapContainer {
-	width: 681px;
-	height: 423px;
+.content {
+	display: flex;
+	gap: 0 20px;
+	.leftBox {
+		width: 0;
+		flex: 1;
+		#mapContainer {
+			width: 100%;
+			height: 423px;
+		}
+	}
+	.rightBox {
+		.title {
+			font-weight: 500;
+			font-size: 14px;
+			color: #272e37;
+		}
+	}
 }
 </style>

--
Gitblit v1.9.3