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