| | |
| | | popper-class="gd-select-popper" |
| | | v-model="row.patrolTaskType" |
| | | :options="workOrderTypeXT" |
| | | :props="taskTypeCascaderProps" |
| | | :props="{...taskTypeCascaderProps,multiple:true}" |
| | | placeholder="请选择" |
| | | collapse-tags |
| | | @change="handlePatrolTaskTypeChange($index, $event)" |
| | |
| | | v-model="row.deviceFlyerId" |
| | | placeholder="请选择" |
| | | filterable |
| | | :disabled="dialogReadonly || !hasTaskTypeValue(taskList[$index].patrolTaskType)" |
| | | |
| | | :disabled="dialogReadonly || !taskList[$index].patrolTaskType" |
| | | > |
| | | <el-option |
| | | v-for="item in flyerListMap[$index] || []" |
| | |
| | | import { airlineListApi, algorithmGroupedApi } from '@/api/zkxt' |
| | | import { |
| | | getTaskTypeLabel, |
| | | getTaskTypeLeafValues, |
| | | taskTypeCascaderProps, |
| | | toTaskTypeCascaderValue, |
| | | toTaskTypeRequestValue, |
| | | } from '../taskTypeOptions' |
| | | |
| | | // 初始化任务行 |
| | |
| | | // 将工单类型赋值给所有子任务行 |
| | | const workOrderType = selectedWorkOrder.value?.workOrderType |
| | | if (workOrderType) { |
| | | const patrolTaskType = toTaskTypeCascaderValue(workOrderType) |
| | | taskList.value.forEach((task, index) => { |
| | | taskList.value[index] = { |
| | | ...initTaskRow(), |
| | | patrolTaskType, |
| | | patrolTaskType: workOrderType, |
| | | } |
| | | // 获取对应的飞手列表 |
| | | getFlyerList(index, patrolTaskType) |
| | | getFlyerList(index, workOrderType) |
| | | }) |
| | | } |
| | | } else { |
| | |
| | | const newTask = initTaskRow() |
| | | // 如果已选择工单,自动填充工单类型 |
| | | if (selectedWorkOrder.value?.workOrderType) { |
| | | newTask.patrolTaskType = toTaskTypeCascaderValue(selectedWorkOrder.value.workOrderType) |
| | | newTask.patrolTaskType = selectedWorkOrder.value.workOrderType |
| | | } |
| | | const newIndex = taskList.value.length |
| | | taskList.value.push(newTask) |
| | |
| | | |
| | | // 获取飞手列表 |
| | | async function getFlyerList(index, skilledTaskType) { |
| | | const leafValues = getTaskTypeLeafValues(skilledTaskType) |
| | | if (!leafValues.length) { |
| | | if (!skilledTaskType.length) { |
| | | flyerListMap.value[index] = [] |
| | | return |
| | | } |
| | |
| | | const res = await gdFlyerPageApi({ |
| | | size: 999, |
| | | current: 1, |
| | | skilledTaskType: leafValues.join(','), |
| | | skilledTaskType: skilledTaskType.map(item => item[1])?.join?.(','), |
| | | // longitude: obj.longitude || '', |
| | | // latitude: obj.latitude || '', |
| | | }) |
| | |
| | | function isTaskRowFilled(task) { |
| | | return !!( |
| | | task.patrolTaskName || |
| | | hasTaskTypeValue(task.patrolTaskType) || |
| | | task.executeTime || |
| | | task.patrolRouteUrl || |
| | | task.deviceFlyerId || |
| | |
| | | ) |
| | | } |
| | | |
| | | function hasTaskTypeValue(value) { |
| | | return !!toTaskTypeRequestValue(value).length |
| | | } |
| | | |
| | | // 提交新增 |
| | | async function handleSubmit() { |
| | |
| | | // 已填写的行需要校验完整性 |
| | | if (!task.patrolTaskName) { |
| | | ElMessage.warning(`第${i + 1}行: 请输入巡查任务名称`) |
| | | return |
| | | } |
| | | if (!hasTaskTypeValue(task.patrolTaskType)) { |
| | | ElMessage.warning(`第${i + 1}行: 请选择巡查任务类型`) |
| | | return |
| | | } |
| | | if (!task.executeTime) { |
| | |
| | | // 只提交已填写的任务行 |
| | | const dataList = filledTasks.map(item => ({ |
| | | ...item, |
| | | patrolTaskType: toTaskTypeRequestValue(item.patrolTaskType), |
| | | workOrderId: selectedWorkOrderId.value, |
| | | id: undefined, |
| | | })) |
| | |
| | | // 编辑/查看模式 - 加载已有数据 |
| | | selectedWorkOrderId.value = row?.workOrderId |
| | | handleWorkOrderChange(row?.workOrderId) |
| | | taskList.value = [{ ...row, patrolTaskType: toTaskTypeCascaderValue(row?.patrolTaskType) }] |
| | | taskList.value = [{ ...row, patrolTaskType: row?.patrolTaskType || [] }] |
| | | flyerListMap.value = {} |
| | | // 如果有巡查类型,加载对应的飞手列表 |
| | | if (row?.patrolTaskType) { |