吉安感知网项目-前端
chenyao
2026-01-27 0b724713be5d2f9cdd2d41adca9aaec413a47189
feat:更新飞手信息
5 files modified
146 ■■■■■ changed files
applications/task-work-order/src/views/orderView/flyingHand/FlyingHandDialog.vue 67 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/flyingHand/flyingHandApi.js 3 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/flyingHand/index.vue 47 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/inspectionReport/index.vue 6 ●●●● patch | view | raw | blame | history
applications/task-work-order/src/views/orderView/orderManage/operatingIncome/index.vue 23 ●●●●● patch | view | raw | blame | history
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()
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
    })
}
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()
}
// 处理弹窗确认
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'] }],
})
// 获取字典
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' },
  ],
})