| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="patrolTaskType" label="巡查任务类型" min-width="140"> |
| | | <template v-slot="{ row }"> |
| | | <template v-slot="{ row, $index }"> |
| | | <el-select |
| | | class="gd-select" |
| | | popper-class="gd-select-popper" |
| | | v-model="row.patrolTaskType" |
| | | placeholder="请选择" |
| | | :disabled="dialogReadonly" |
| | | @change="handlePatrolTaskTypeChange($index, $event)" |
| | | > |
| | | <el-option |
| | | v-for="item in dictObj.patrolTaskType" |
| | |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="recommendFlyerName" label="推荐飞手" min-width="120"> |
| | | <template v-slot="{ row }"> |
| | | <template v-slot="{ row, $index }"> |
| | | <el-select |
| | | class="gd-select" |
| | | popper-class="gd-select-popper" |
| | | v-model="row.recommendFlyerName" |
| | | placeholder="请选择" |
| | | filterable |
| | | :disabled="dialogReadonly" |
| | | :disabled="dialogReadonly || !taskList[$index].patrolTaskType" |
| | | > |
| | | <el-option v-for="item in flyerList" :key="item.id" :label="item.flyerName" :value="item.flyerName" /> |
| | | <el-option |
| | | v-for="item in flyerListMap[$index] || []" |
| | | :key="item.id" |
| | | :label="item.flyerName" |
| | | :value="item.flyerName" |
| | | /> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | const selectedWorkOrder = ref(null) // 选中的工单信息 |
| | | |
| | | // 下拉选项 |
| | | const flyerList = ref([]) // 飞手列表 |
| | | const flyerListMap = ref({}) // 飞手列表,按行索引存储 |
| | | const deviceList = ref([]) // 设备列表 |
| | | const routeOptions = ref([ |
| | | { name: '航线1', id: '1' }, |
| | |
| | | function removeTaskRow(index) { |
| | | if (taskList.value.length > 1) { |
| | | taskList.value.splice(index, 1) |
| | | // 重新整理 flyerListMap 的索引 |
| | | const newFlyerListMap = {} |
| | | Object.keys(flyerListMap.value).forEach(key => { |
| | | const keyIndex = parseInt(key) |
| | | if (keyIndex < index) { |
| | | newFlyerListMap[keyIndex] = flyerListMap.value[keyIndex] |
| | | } else if (keyIndex > index) { |
| | | newFlyerListMap[keyIndex - 1] = flyerListMap.value[keyIndex] |
| | | } |
| | | }) |
| | | flyerListMap.value = newFlyerListMap |
| | | } |
| | | } |
| | | |
| | |
| | | workOrderList.value = res?.data?.data?.records ?? [] |
| | | } |
| | | |
| | | // 处理巡查任务类型变化 |
| | | async function handlePatrolTaskTypeChange(index, skilledTaskType) { |
| | | // 清空该行已选择的飞手 |
| | | taskList.value[index].recommendFlyerName = '' |
| | | // 获取对应的飞手列表 |
| | | await getFlyerList(index, skilledTaskType) |
| | | } |
| | | |
| | | // 获取飞手列表 |
| | | async function getFlyerList() { |
| | | async function getFlyerList(index, skilledTaskType) { |
| | | const res = await gdFlyerPageApi({ |
| | | size: 999, |
| | | // todo 需要传入前面的巡查类型 |
| | | // patrolTaskType: '1', |
| | | skilledTaskType, |
| | | }) |
| | | flyerList.value = res?.data?.data?.records ?? [] |
| | | flyerListMap.value[index] = res?.data?.data?.records ?? [] |
| | | } |
| | | |
| | | // 获取设备列表 |
| | | async function getDeviceList() { |
| | | const res = await gdManageDeviceListApi({ |
| | | deviceIds: selectedWorkOrder.value.recommendDeviceIds |
| | | deviceIds: selectedWorkOrder.value.recommendDeviceIds, |
| | | }) |
| | | deviceList.value = res?.data?.data ?? [] |
| | | } |
| | | |
| | | watch(()=>selectedWorkOrderId.value,()=>{ |
| | | watch( |
| | | () => selectedWorkOrderId.value, |
| | | () => { |
| | | getDeviceList() |
| | | }) |
| | | } |
| | | ) |
| | | |
| | | // 提交新增 |
| | | async function handleSubmit() { |
| | |
| | | })) |
| | | await gdPatrolTaskSaveApi(dataList) |
| | | dialogMode.value === 'add' ? ElMessage.success('新增成功') : ElMessage.success('修改成功') |
| | | dialogMode.value === 'edit' && await gdPatrolTaskAuditApi({ auditStatus: 7, id: preID }) |
| | | dialogMode.value === 'edit' && (await gdPatrolTaskAuditApi({ auditStatus: 7, id: preID })) |
| | | visible.value = false |
| | | emit('success') |
| | | } finally { |
| | |
| | | selectedWorkOrderId.value = null |
| | | selectedWorkOrder.value = null |
| | | taskList.value = [initTaskRow()] |
| | | flyerListMap.value = {} |
| | | } else { |
| | | // 编辑/查看模式 - 加载已有数据 |
| | | selectedWorkOrderId.value = row?.workOrderId |
| | | handleWorkOrderChange(row?.workOrderId) |
| | | taskList.value = [{ ...row }] |
| | | flyerListMap.value = {} |
| | | // 如果有巡查类型,加载对应的飞手列表 |
| | | if (row?.patrolTaskType) { |
| | | getFlyerList(0, row.patrolTaskType) |
| | | } |
| | | } |
| | | } |
| | | |
| | | onMounted(() => { |
| | | getWorkOrderList() |
| | | getFlyerList() |
| | | }) |
| | | |
| | | defineExpose({ open }) |