From 6eeeb44d39e7afff85ae6ec6f22bf3c48222a84d Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Thu, 22 Jan 2026 15:06:45 +0800
Subject: [PATCH] feat: app-gd

---
 uniapps/work-app/build/config/proxy.js                                                         |    5 ++
 uniapps/work-app/src/api/user/index.js                                                         |   22 -----------
 applications/task-work-order/src/views/orderView/orderManage/orderManage/index.vue             |    8 ++--
 applications/task-work-order/src/assets/images/orderView/orderManage/drone.png                 |    0 
 applications/task-work-order/src/views/orderView/orderManage/orderManage/FormDiaLog.vue        |   30 +++++++++++++--
 uniapps/work-app/env/.env                                                                      |    1 
 applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue |   22 ++++++----
 uniapps/work-app/src/api/work/index1.js                                                        |   24 ++++++++++++
 8 files changed, 73 insertions(+), 39 deletions(-)

diff --git a/applications/task-work-order/src/assets/images/orderView/orderManage/drone.png b/applications/task-work-order/src/assets/images/orderView/orderManage/drone.png
new file mode 100644
index 0000000..bbc513c
--- /dev/null
+++ b/applications/task-work-order/src/assets/images/orderView/orderManage/drone.png
Binary files differ
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 916d839..467f20a 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
@@ -340,7 +340,7 @@
 	nextTick(() => {
 		refuseOrderDialogRef.value.open({
 			mode,
-			row: { workOrderId: formData.value.id },
+			row: formData.value,
 			type,
 			formLabel,
 		})
@@ -353,8 +353,6 @@
 		const str = [...pointList.value, pointList.value[0]].map(item => `${item.longitude} ${item.latitude}`).join(',')
 		let geom = `POLYGON((${str}))`
 		const res = await gdManageDeviceListApi({
-			current: 1,
-			size: 1000,
 			ids: formData.value.recommendDeviceIds,
 			devicePayload: dialogMode.value === 'add' ? formData.value.deviceLoadDemand : '',
 			geom: dialogMode.value === 'add' ? geom : '',
@@ -490,10 +488,33 @@
 	})
 }
 
-
+// 获取巡检任务
 function gdPatrolTaskPage() {
 	gdPatrolTaskPageApi({ current: 1, size: 1000, workOrderId: formData.value.id }).then(res => {
 		patrolTaskList.value = res.data.data.records || []
+	})
+}
+
+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.00, item.latitude || 27.11)
+		viewer.entities.add({
+			position: position,
+			billboard: {
+				image: droneIcon,
+				width: 40,
+				height: 40,
+				verticalOrigin: Cesium.VerticalOrigin.CENTER,
+			},
+		})
 	})
 }
 
@@ -510,6 +531,7 @@
 		dialogMode.value === 'edit' ? editPolygon() : viewPolygon()
 	}
 	await getDeviceList()
+	// setMapDevice()
 	await nextTick()
 	syncSelection()
 }
diff --git a/applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue b/applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue
index 9aab81e..07f477c 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/orderManage/RefuseOrderDialog.vue
@@ -7,7 +7,16 @@
 		destroy-on-close
 		:close-on-click-modal="false"
 	>
+		<div v-if="dialogReadonly">
+			<el-row class="detail-row-view">
+				<el-col :span="24">
+					<div class="label">{{formLabelStr}}:</div>
+					<div class="val">{{ formData.rejectReason || '' }}</div>
+				</el-col>
+			</el-row>
+		</div>
 		<el-form
+			v-else
 			class="gd-dialog-form"
 			ref="formRef"
 			:model="formData"
@@ -49,8 +58,10 @@
 <script setup>
 import { computed, ref } from 'vue'
 import { ElMessage } from 'element-plus'
-import { fieldRules } from '@ztzf/utils'
+import { fieldRules, getDictLabel } from '@ztzf/utils'
 import { gdWorkOrderHandleStatusApi } from '@/views/orderView/orderManage/orderManage/orderManageApi'
+import { pxToRem } from '@/utils/rem'
+import dayjs from 'dayjs'
 
 // 初始化表单数据
 const initForm = () => ({
@@ -88,19 +99,12 @@
 		})
 }
 
-function loadDetail() {
-
-}
-
 let formLabelStr = ref('原因')
 // 打开弹框
 async function open({ mode = 'add', row, formLabel, type } = {}) {
 	dialogMode.value = mode
 	formLabelStr.value = formLabel
-	formData.value = { ...initForm(), ...row, operationType: type }
-	if (mode === 'view'){
-		await loadDetail()
-	}
+	formData.value = { workOrderId: row.id, operationType: type, rejectReason: row.rejectReason }
 }
 
 defineExpose({ open })
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 b741d35..50f0e85 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
@@ -73,10 +73,10 @@
 
 		<div class="gd-table-toolbar">
 <!--			<el-button color="#F2F3F5" @click="requester = !requester">我是{{ requester ? '需求方' : '服务方' }}</el-button>-->
-			<el-button color="#F2F3F5" @click="previewVisible = true">预览</el-button>
+<!--			<el-button color="#F2F3F5" @click="previewVisible = true">预览</el-button>-->
 
-			<el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')">新增</el-button>
-			<el-button :icon="Delete" color="#4C34FF" :disabled="!selectedIds.length" @click="handleDelete()">删除</el-button>
+			<el-button :icon="Plus" color="#4C34FF" type="primary" @click="openForm('add')" v-if="requester">新增</el-button>
+			<el-button :icon="Delete" color="#4C34FF" :disabled="!selectedIds.length" @click="handleDelete()" v-if="requester">删除</el-button>
 		</div>
 
 		<div class="gd-table-container" v-loading="loading">
@@ -114,7 +114,7 @@
 						<template v-slot="{ row }">
 							<el-link @click="openFormChange(row)">查看</el-link>
 							<!--<el-link @click="openForm('edit', row)">编辑</el-link>-->
-							<el-link @click="handleDelete(row)">删除</el-link>
+							<el-link @click="handleDelete(row)" v-if="requester">删除</el-link>
 						</template>
 					</el-table-column>
 				</el-table>
diff --git a/uniapps/work-app/build/config/proxy.js b/uniapps/work-app/build/config/proxy.js
index 68c2c42..8633721 100644
--- a/uniapps/work-app/build/config/proxy.js
+++ b/uniapps/work-app/build/config/proxy.js
@@ -20,6 +20,11 @@
       changeOrigin: true,
       rewrite: path => path.replace(new RegExp(`^${VITE_API_PREFIX}`), ''),
     },
+    [VITE_API_PREFIX_GD]: {
+      target: configEnv?.[envName || VITE_APP_ENV]?.VITE_API_BASE_URL_GD,
+      changeOrigin: true,
+      rewrite: path => path.replace(new RegExp(`^${VITE_API_PREFIX_GD}`), ''),
+    },
   }
   return proxy
 }
diff --git a/uniapps/work-app/env/.env b/uniapps/work-app/env/.env
index 695ff20..a5c5058 100644
--- a/uniapps/work-app/env/.env
+++ b/uniapps/work-app/env/.env
@@ -12,6 +12,7 @@
 
 # API代理前缀
 VITE_API_PREFIX=/api
+VITE_API_PREFIX_GD=/api-gd
 
 # 删除console
 VITE_DROP_CONSOLE=false
diff --git a/uniapps/work-app/src/api/user/index.js b/uniapps/work-app/src/api/user/index.js
index 12e344d..5a3fc98 100644
--- a/uniapps/work-app/src/api/user/index.js
+++ b/uniapps/work-app/src/api/user/index.js
@@ -22,28 +22,6 @@
 
 /** 退出登录 */
 export const logout = () => post("/user/logout")
-// 工单用户登录接口
-export const ticketLoginInterfaceApi = (tenantId, deptId, roleId, username, password, type, key, code) => {
-  return request({
-    url: '/blade-auth/oauth/token',
-    method: 'post',
-    header: {
-      'Tenant-Id': tenantId,
-      'Dept-Id': website.switchMode ? deptId : '',
-      'Role-Id': website.switchMode ? roleId : '',
-      'Captcha-Key': key,
-      'Captcha-Code': code,
-    },
-    params: {
-      tenantId,
-      username,
-      password,
-      grant_type: 'password',
-      scope: 'all',
-      type,
-    },
-  })
-}
 
 // 用户登录接口
 export const loginByUsername = (tenantId, deptId, roleId, username, password, type, key, code) => {
diff --git a/uniapps/work-app/src/api/work/index1.js b/uniapps/work-app/src/api/work/index1.js
index 304174d..1109a77 100644
--- a/uniapps/work-app/src/api/work/index1.js
+++ b/uniapps/work-app/src/api/work/index1.js
@@ -1,4 +1,6 @@
 import { request } from "@/utils/requestGd/index.js"
+import website from '@/config/website'
+
 // 获取工单列表
 export const getGdList = data => {
 	return request({
@@ -7,3 +9,25 @@
 		data,
 	});
 };
+// 工单用户登录接口
+export const ticketLoginInterfaceApi = (tenantId, deptId, roleId, username, password, type, key, code) => {
+	return request({
+		url: '/blade-auth/oauth/token',
+		method: 'post',
+		header: {
+			'Tenant-Id': tenantId,
+			'Dept-Id': website.switchMode ? deptId : '',
+			'Role-Id': website.switchMode ? roleId : '',
+			'Captcha-Key': key,
+			'Captcha-Code': code,
+		},
+		params: {
+			tenantId,
+			username,
+			password,
+			grant_type: 'password',
+			scope: 'all',
+			type,
+		},
+	})
+}

--
Gitblit v1.9.3