From 0b724713be5d2f9cdd2d41adca9aaec413a47189 Mon Sep 17 00:00:00 2001
From: chenyao <1219716595@qq.com>
Date: Tue, 27 Jan 2026 10:47:02 +0800
Subject: [PATCH] feat:更新飞手信息

---
 applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue        |   67 ++++++++++++++++------
 applications/task-work-order/src/views/orderView/flyingHand/index.vue                   |   47 ++++++++-------
 applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue |    6 +-
 applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue  |   23 ++++---
 applications/task-work-order/src/views/orderView/flyingHand/flyingHandApi.js            |    3 
 5 files changed, 90 insertions(+), 56 deletions(-)

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 000608e..4566740 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
+++ b/applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue
@@ -16,12 +16,14 @@
 		>
 			<el-row>
 				<el-col :span="12">
-					<el-form-item label="飞手姓名" prop="flyerName">
+					<el-form-item label="飞手姓名" prop="flyerId">
 						<el-select
 							class="gd-select"
 							popper-class="gd-select-popper"
-							v-model="formData.flyerName"
-							placeholder="请选择飞手姓名"
+							v-model="formData.flyerId"
+							placeholder="请选择"
+							clearable
+							@change="handleChange"
 							:disabled="dialogType === 'view'"
 						>
 							<el-option
@@ -38,7 +40,7 @@
 						<el-input
 						class="gd-input"
 							v-model="formData.flyerPhone"
-							placeholder="请输入飞手电话"
+							placeholder="请输入"
 							:disabled="dialogType === 'view'"
 						/>
 					</el-form-item>
@@ -48,7 +50,7 @@
 						<el-input
 							class="gd-input"
 							v-model.number="formData.flightHours"
-							placeholder="请输入飞行时长"
+							placeholder="请输入"
 							type="number"
 							:disabled="dialogType === 'view'"
 						/>
@@ -60,7 +62,7 @@
 							class="gd-select"
 							popper-class="gd-select-popper"
 							v-model="formData.technicalStrength"
-							placeholder="请选择技术特长"
+							placeholder="请选择"
 							:disabled="dialogType === 'view'"
 						>
 							<el-option
@@ -78,7 +80,8 @@
 							class="gd-select"
 							popper-class="gd-select-popper"
 							v-model="formData.skilledUavType"
-							placeholder="请选择擅长机型"
+							placeholder="请选择"
+							:disabled="dialogType === 'view'"
 							clearable
 							@change="handleSearch"
 						>
@@ -97,7 +100,7 @@
 							class="gd-select"
 							popper-class="gd-select-popper"
 							v-model="formData.skilledTaskType"
-							placeholder="请选择擅长任务类型"
+							placeholder="请选择"
 							:disabled="dialogType === 'view'"
 						>
 							<el-option
@@ -114,10 +117,22 @@
 						<el-input
 							class="gd-input"
 							v-model="formData.projectExperience"
-							placeholder="请输入项目经验"
+							placeholder="请输入"
 							type="textarea"
 							rows="3"
 							:disabled="dialogType === 'view'"
+						/>
+					</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>
@@ -140,6 +155,8 @@
 import { ref, reactive, computed, watch, inject } from 'vue'
 import { submitFlyingHand } from './flyingHandApi'
 import { ElMessage } from 'element-plus'
+
+import { fieldRules } from '@ztzf/utils'
 
 const props = defineProps({
 	modelValue: {
@@ -184,39 +201,41 @@
 const formRef = ref(null)
 const formData = reactive({
 	flyerName: '',
+	flyerId: '',
 	flyerPhone: '',
 	flightHours: 0,
 	projectExperience: '',
 	technicalStrength: '',
-	skilledUavType: ''
+	skilledUavType: '',
+	certification: [], // 证书
 })
 
 const rules = {
-	flyerName: [
-		{ required: true, message: '请输入飞手姓名', trigger: 'blur' }
+	flyerId: [
+		{ required: true, message: '请输入', trigger: 'blur' }
 	],
 	flyerPhone: [
-		{ required: false, message: '请输入飞手电话', trigger: 'blur' },
+		{ required: false, message: '请输入', trigger: 'blur' },
 		{ pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
 	],
 	flightHours: [
-		{ required: true, message: '请输入飞行时长', trigger: 'blur' },
+		{ required: true, message: '请输入', trigger: 'blur' },
 		{ type: 'number', min: 0, message: '飞行时长必须大于等于0', trigger: 'blur' }
 	],
 	technicalSkills: [
-		{ required: true, message: '请选择技术特长', trigger: 'change' }
+		{ required: true, message: '请选择', trigger: 'change' }
 	],
 	skilledTaskType: [
-		{ required: true, message: '请选择擅长任务类型', trigger: 'change' }
+		{ required: true, message: '请选择', trigger: 'change' }
 	],
 	projectExperience: [
-		{ required: true, message: '请输入项目经验', trigger: 'blur' }
+		{ required: true, message: '请输入', trigger: 'blur' }
 	],
 	technicalStrength: [
-		{ required: true, message: '请选择技术特长', trigger: 'change' }
+		{ required: true, message: '请选择', trigger: 'change' }
 	],
 	skilledUavType: [
-		{ required: true, message: '请选择擅长机型', trigger: 'change' }
+		{ required: true, message: '请选择', trigger: 'change' }
 	]
 }
 
@@ -226,6 +245,7 @@
 	(newData) => {
 		if (newData) {
 			Object.assign(formData, newData)
+			formData.flightHours = Number(newData.flightHours)
 		}
 	},
 	{ deep: true, immediate: true }
@@ -237,6 +257,15 @@
 	resetForm()
 }
 
+// 处理选择飞手姓名
+function handleChange(val) {
+	const result = flyingHandList.value.find(item => item.id === val) || []
+	formData.flyerName = result.name
+	formData.certification = formData.certification.concat(result.licenseFrontFileUrl || [], result.licenseBackFileUrl || [])
+}
+
+
+
 // 重置表单
 function resetForm() {
 	formRef.value?.resetFields()
diff --git a/applications/task-work-order/src/views/orderView/flyingHand/flyingHandApi.js b/applications/task-work-order/src/views/orderView/flyingHand/flyingHandApi.js
index 9aab791..f0b87d7 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/flyingHandApi.js
+++ b/applications/task-work-order/src/views/orderView/flyingHand/flyingHandApi.js
@@ -30,8 +30,7 @@
 // 飞手删除
 export function removeFlyingHand(data) {
     return request({
-        url: '/drone-gd/flyer/gdFlyer/remove',
+        url: `/drone-gd/flyer/gdFlyer/remove?ids=${data.ids}`,
         method: 'post',
-        data
     })
 }
diff --git a/applications/task-work-order/src/views/orderView/flyingHand/index.vue b/applications/task-work-order/src/views/orderView/flyingHand/index.vue
index b2764ed..46f1a72 100644
--- a/applications/task-work-order/src/views/orderView/flyingHand/index.vue
+++ b/applications/task-work-order/src/views/orderView/flyingHand/index.vue
@@ -3,13 +3,19 @@
 	<basic-container>
 		<el-form ref="queryParamsRef" :model="searchParams" class="gd-search-form">
 			<el-form-item label="飞手姓名" prop="flyerName">
-				<el-input
-					class="gd-input gray"
-					v-model="searchParams.flyerName"
-					placeholder="请输入飞手姓名"
-					clearable
-					@clear="handleSearch"
-				/>
+				<el-select
+							class="gd-select gray"
+							popper-class="gd-select-popper"
+							v-model="searchParams.flyerName"
+							placeholder="请选择飞手姓名"
+						>
+							<el-option
+								v-for="item in flyingHandList"
+								:key="item.id"
+								:label="item.name"
+								:value="item.id"
+							/>
+						</el-select>
 			</el-form-item>
 
 			<el-form-item label="擅长机型" prop="skilledUavType">
@@ -67,7 +73,7 @@
 						<template v-slot="{ row }">
 							<el-link @click="viewFlyingHand(row)">查看</el-link>
 							<el-link type="primary" @click="editFlyingHand(row)">编辑</el-link>
-							<el-link type="danger" @click="deleteFlyingHand(row.id)">删除</el-link>
+							<el-link type="danger" @click="deleteFlyingHand(row)">删除</el-link>
 						</template>
 					</el-table-column>
 				</el-table>
@@ -103,6 +109,7 @@
 import { getFlyingHandPage, removeFlyingHand } from './flyingHandApi'
 import { deviceFlyerApi } from '@/api/zkxt'
 import FlyingHandDialog from './FlyingHandDialog.vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
 import { prod } from 'mathjs'
 
 // 初始化查询参数
@@ -177,22 +184,18 @@
 }
 
 // 删除飞手
-function deleteFlyingHand(id) {
-	ElMessageBox.confirm('确定要删除该飞手信息吗?', '提示', {
-		confirmButtonText: '确定',
-		cancelButtonText: '取消',
+async function deleteFlyingHand(row) {
+	const tips = row ? '该条' : '选中的项'
+	await ElMessageBox.confirm(`确认删除${tips}吗?`, '提示', {
 		type: 'warning',
-	}).then(async () => {
-		try {
-			await removeFlyingHand(id)
-			ElMessage.success('删除成功')
-			getList()
-		} catch (error) {
-			ElMessage.error('删除失败')
-		}
-	}).catch(() => {
-		// 取消删除
+		customClass: 'gd-confirm-custom',
+		confirmButtonClass: 'gd-confirm-button',
+		cancelButtonClass: 'gd-confirm-cancel-button',
 	})
+	const ids = row ? row.id : selectedIds.value.join(',')
+	await removeFlyingHand({ ids: ids })
+	ElMessage.success('删除成功')
+	getList()
 }
 
 // 处理弹窗确认
diff --git a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
index 9902395..82af5be 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue
@@ -190,9 +190,9 @@
 const ruleFormRef = ref()
 const submitting = ref(false)
 const rules = ref({
-	nickName: [{ required: true, message: '请输入文档名称', trigger: ['blur'] }],
-	resultType: [{ required: true, message: '请选择文档类型', trigger: ['change'] }],
-	link: [{ required: true, message: '请上传文件', trigger: ['change'] }],
+	nickName: [{ required: true, message: '请输入', trigger: ['blur'] }],
+	resultType: [{ required: true, message: '请选择', trigger: ['change'] }],
+	link: [{ required: true, message: '请上传', trigger: ['change'] }],
 })
 
 // 获取字典
diff --git a/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue b/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
index 6f42727..34a0513 100644
--- a/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
+++ b/applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue
@@ -35,12 +35,12 @@
       :close-on-click-modal="false" :destroy-on-close="true" @close="handleClose">
       <el-form class="gd-dialog-form" ref="ruleFormRef" :model="editParams" :rules="rules" label-width="140px">
         <el-row>
-          <el-col span="12">
+				<el-col :span="12">
             <el-form-item label="营业收入" prop="operatingIncome">
               <el-input class="gd-input" v-model="editParams.operatingIncome" />
             </el-form-item>
           </el-col>
-          <el-col span="12">
+          <el-col :span="12">
             <el-form-item label="综合总成本费用" prop="totalCost">
               <el-input class="gd-input" v-model="editParams.totalCost" />
             </el-form-item>
@@ -48,12 +48,12 @@
         </el-row>
 
         <el-row>
-          <el-col span="12">
+          <el-col :span="12">
             <el-form-item label="净利润" prop="netProfit">
               <el-input class="gd-input" v-model="editParams.netProfit" />
             </el-form-item>
           </el-col>
-          <el-col span="12">
+         <el-col :span="12">
             <el-form-item label="财务内部收益率" prop="financialIrr">
               <el-input class="gd-input" v-model="editParams.financialIrr" />
             </el-form-item>
@@ -61,7 +61,7 @@
         </el-row>
 
         <el-row>
-          <el-col span="12">
+          <el-col :span="12">
             <el-form-item label="市场空间" prop="marketSpace">
               <el-input class="gd-input" v-model="editParams.marketSpace" />
             </el-form-item>
@@ -81,6 +81,8 @@
 <script setup>
 import { ElMessage, ElMessageBox, ElLoading } from 'element-plus'
 import { operatingIncomePage, operatingIncomeUpdate, operatingIncomeAdd, operatingIncomeBatchDelete } from './operatingIncomeApi'
+
+import { fieldRules } from '@ztzf/utils'
 
 let titleTxt = ref('新增')
 const total = ref(0)
@@ -104,9 +106,10 @@
   financialIrr: '',
   marketSpace: '',
 })
+
 const rules = reactive({
   operatingIncome: [
-    { required: true, message: '请输入营业收入', trigger: 'blur' },
+    { required: true, message: '请输入', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
         if (!/^\d+(\.\d+)?$/.test(value)) {
@@ -119,7 +122,7 @@
     }
   ],
   totalCost: [
-    { required: true, message: '请输入综合总成本费用', trigger: 'blur' },
+    { required: true, message: '请输入', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
         if (!/^\d+(\.\d+)?$/.test(value)) {
@@ -132,7 +135,7 @@
     }
   ],
   netProfit: [
-    { required: true, message: '请输入净利润', trigger: 'blur' },
+    { required: true, message: '请输入', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
         if (!/^\d+(\.\d+)?$/.test(value)) {
@@ -145,7 +148,7 @@
     }
   ],
   financialIrr: [
-    { required: true, message: '请输入财务内部收益率', trigger: 'blur' },
+    { required: true, message: '请输入', trigger: 'blur' },
     {
       validator: (rule, value, callback) => {
         if (!/^\d+(\.\d+)?$/.test(value)) {
@@ -158,7 +161,7 @@
     }
   ],
   marketSpace: [
-    { required: true, message: '请输入市场空间', trigger: 'blur' },
+    { required: true, message: '请输入', trigger: 'blur' },
   ],
 })
 

--
Gitblit v1.9.3