6 files modified
1 files added
| | |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="巡查任务类型" prop="patrolTaskType"> |
| | | <el-select |
| | | <el-cascader |
| | | class="gd-select gray" |
| | | popper-class="gd-select-popper" |
| | | v-model="searchParams.patrolTaskType" |
| | | :options="workOrderTypeXT" |
| | | :props="taskTypeFilterCascaderProps" |
| | | placeholder="请选择" |
| | | clearable |
| | | @change="handleSearch" |
| | | > |
| | | <el-option |
| | | v-for="item in workOrderTypeXT" |
| | | :key="item.dictValue" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | /> |
| | | </el-select> |
| | | /> |
| | | </el-form-item> |
| | | |
| | | <!-- <el-form-item label="任务状态" prop="taskStatus"> |
| | |
| | | <el-table-column prop="taskNo" show-overflow-tooltip label="巡查任务编号" /> |
| | | <el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型"> |
| | | <template v-slot="{ row }"> |
| | | {{ getDictLabelXT(row.patrolTaskType, workOrderTypeXT) }} |
| | | {{ getTaskTypeLabel(row.patrolTaskType, workOrderTypeXT) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="taskStatus" show-overflow-tooltip label="巡查任务状态"> |
| | |
| | | import { Search, RefreshRight } from '@element-plus/icons-vue' |
| | | import { computed, onMounted, ref } from 'vue' |
| | | import { getDictionaryByCode } from '@/api/system/dictbiz' |
| | | import { dateRangeFormat, getDictLabel, getDictLabelXT } from '@ztzf/utils' |
| | | import { dateRangeFormat, getDictLabel } from '@ztzf/utils' |
| | | import { getDictListApi } from '@/api/zkxt' |
| | | import { gdPatrolTaskPageApi } from '../inspectionRequest/inspectionRequestApi' |
| | | import { getDeptTree } from '@/api/system/dept' |
| | | import ViewDiaLog from './ViewDiaLog.vue' |
| | | import { useStore } from 'vuex' |
| | | import { getTaskTypeLabel, normalizeTaskTypeOptions, taskTypeFilterCascaderProps } from '../taskTypeOptions' |
| | | |
| | | // 初始化查询参数 |
| | | const initSearchParams = () => ({ |
| | |
| | | dictObj.value = res.data.data |
| | | }) |
| | | getDictListApi('task_inspection_type').then(res => { |
| | | workOrderTypeXT.value = res.data.data || [] |
| | | workOrderTypeXT.value = normalizeTaskTypeOptions(res.data.data || []) |
| | | }) |
| | | } |
| | | |
| | |
| | | <div class="info-item"> |
| | | <span class="label">工单类型</span> |
| | | <span class="val" v-if="selectedWorkOrder"> |
| | | {{ getDictLabelXT(selectedWorkOrder.workOrderType, workOrderTypeXT) }} |
| | | {{ getTaskTypeLabel(selectedWorkOrder.workOrderType, workOrderTypeXT) }} |
| | | </span> |
| | | <span class="val grayText" v-else>选择工单后自动带出</span> |
| | | </div> |
| | |
| | | 巡查任务类型 |
| | | </template> |
| | | <template v-slot="{ row, $index }"> |
| | | <el-select |
| | | <el-cascader |
| | | class="gd-select" |
| | | popper-class="gd-select-popper" |
| | | v-model="row.patrolTaskType" |
| | | :options="workOrderTypeXT" |
| | | :props="taskTypeCascaderProps" |
| | | placeholder="请选择" |
| | | @change="handlePatrolTaskTypeChange($index, $event)" |
| | | > |
| | | <el-option |
| | | v-for="item in workOrderTypeXT" |
| | | :key="item.dictValue" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | /> |
| | | </el-select> |
| | | /> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="executeTime" width="200"> |
| | |
| | | v-model="row.deviceFlyerId" |
| | | placeholder="请选择" |
| | | filterable |
| | | :disabled="dialogReadonly || !taskList[$index].patrolTaskType" |
| | | :disabled="dialogReadonly || !hasTaskTypeValue(taskList[$index].patrolTaskType)" |
| | | |
| | | > |
| | | <el-option |
| | |
| | | import { computed, ref, onMounted, inject } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import { Plus, Delete } from '@element-plus/icons-vue' |
| | | import { geomAnalysis, getDictLabel, getDictLabelXT } from '@ztzf/utils' |
| | | import { geomAnalysis, getDictLabel } from '@ztzf/utils' |
| | | |
| | | import { gdPatrolTaskSaveApi, gdFlyerPageApi, gdPatrolTaskAuditApi } from './inspectionRequestApi' |
| | | import { gdWorkOrderPageApi } from '../orderManage/orderManageApi' |
| | | import { gdManageDeviceListApi } from '../orderManage/gdManageDeviceApi' |
| | | import { pxToRem } from '@/utils/rem' |
| | | import { airlineListApi, algorithmGroupedApi } from '@/api/zkxt' |
| | | import { |
| | | getTaskTypeLabel, |
| | | getTaskTypeLeafValues, |
| | | taskTypeCascaderProps, |
| | | toTaskTypeCascaderValue, |
| | | toTaskTypeRequestValue, |
| | | } from '../taskTypeOptions' |
| | | |
| | | // 初始化任务行 |
| | | const initTaskRow = () => ({ |
| | | patrolTaskName: '', |
| | | patrolTaskType: '', |
| | | patrolTaskType: [], |
| | | executeTime: '', |
| | | patrolRouteUrl: '', |
| | | deviceFlyerId: '', |
| | |
| | | // 将工单类型赋值给所有子任务行 |
| | | const workOrderType = selectedWorkOrder.value?.workOrderType |
| | | if (workOrderType) { |
| | | const patrolTaskType = toTaskTypeCascaderValue(workOrderType) |
| | | taskList.value.forEach((task, index) => { |
| | | taskList.value[index] = { |
| | | ...initTaskRow(), |
| | | patrolTaskType: workOrderType, |
| | | patrolTaskType, |
| | | } |
| | | // 获取对应的飞手列表 |
| | | getFlyerList(index, workOrderType) |
| | | getFlyerList(index, patrolTaskType) |
| | | }) |
| | | } |
| | | } else { |
| | |
| | | const newTask = initTaskRow() |
| | | // 如果已选择工单,自动填充工单类型 |
| | | if (selectedWorkOrder.value?.workOrderType) { |
| | | newTask.patrolTaskType = selectedWorkOrder.value.workOrderType |
| | | newTask.patrolTaskType = toTaskTypeCascaderValue(selectedWorkOrder.value.workOrderType) |
| | | } |
| | | const newIndex = taskList.value.length |
| | | taskList.value.push(newTask) |
| | |
| | | |
| | | // 获取飞手列表 |
| | | async function getFlyerList(index, skilledTaskType) { |
| | | const leafValues = getTaskTypeLeafValues(skilledTaskType) |
| | | if (!leafValues.length) { |
| | | flyerListMap.value[index] = [] |
| | | return |
| | | } |
| | | const obj = getPolygonCenter(geomAnalysis(selectedWorkOrder.value.geom)) |
| | | const res = await gdFlyerPageApi({ |
| | | size: 999, |
| | | current: 1, |
| | | skilledTaskType, |
| | | skilledTaskType: leafValues.join(','), |
| | | // longitude: obj.longitude || '', |
| | | // latitude: obj.latitude || '', |
| | | }) |
| | |
| | | |
| | | // 判断一行是否已填写(至少填写了任务名称) |
| | | function isTaskRowFilled(task) { |
| | | return !!(task.patrolTaskName || task.executeTime || task.patrolRouteUrl || task.deviceFlyerId || task.deviceId) |
| | | return !!( |
| | | task.patrolTaskName || |
| | | hasTaskTypeValue(task.patrolTaskType) || |
| | | task.executeTime || |
| | | task.patrolRouteUrl || |
| | | task.deviceFlyerId || |
| | | task.deviceId |
| | | ) |
| | | } |
| | | |
| | | function hasTaskTypeValue(value) { |
| | | return !!toTaskTypeRequestValue(value).length |
| | | } |
| | | |
| | | // 提交新增 |
| | |
| | | ElMessage.warning(`第${i + 1}行: 请输入巡查任务名称`) |
| | | return |
| | | } |
| | | if (!task.patrolTaskType) { |
| | | if (!hasTaskTypeValue(task.patrolTaskType)) { |
| | | ElMessage.warning(`第${i + 1}行: 请选择巡查任务类型`) |
| | | return |
| | | } |
| | |
| | | // 只提交已填写的任务行 |
| | | 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 }] |
| | | taskList.value = [{ ...row, patrolTaskType: toTaskTypeCascaderValue(row?.patrolTaskType) }] |
| | | flyerListMap.value = {} |
| | | // 如果有巡查类型,加载对应的飞手列表 |
| | | if (row?.patrolTaskType) { |
| | | getFlyerList(0, row.patrolTaskType) |
| | | getFlyerList(0, taskList.value[0].patrolTaskType) |
| | | } |
| | | } |
| | | } |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="label">巡查任务类型</div> |
| | | <div class="val">{{ getDictLabelXT(formData.patrolTaskType, workOrderTypeXT) }}</div> |
| | | <div class="val">{{ getTaskTypeLabel(formData.patrolTaskType, workOrderTypeXT) }}</div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="label">任务执行时间</div> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="巡查任务类型" prop="patrolTaskType"> |
| | | <el-select |
| | | <el-cascader |
| | | class="gd-select" |
| | | popper-class="gd-select-popper" |
| | | v-model="formData.patrolTaskType" |
| | | :options="workOrderTypeXT" |
| | | :props="taskTypeCascaderProps" |
| | | placeholder="请选择" |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in workOrderTypeXT" |
| | | :key="item.dictValue" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | /> |
| | | </el-select> |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | <script setup> |
| | | import { computed, ref, onMounted, inject } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import { fieldRules, flyVisual, getDictLabel, getDictLabelXT, geomAnalysis } from '@ztzf/utils' |
| | | import { fieldRules, flyVisual, getDictLabel, geomAnalysis } from '@ztzf/utils' |
| | | import { |
| | | gdPatrolTaskRepublish, |
| | | gdFlyerPageApi, |
| | |
| | | import { queryAirById, airlineListApi, algorithmGroupedApi } from '@/api/zkxt' |
| | | import * as Cesium from 'cesium' |
| | | import { useStore } from 'vuex' |
| | | import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue, toTaskTypeRequestValue } from '../taskTypeOptions' |
| | | |
| | | // 初始化表单数据 |
| | | const initForm = () => ({ |
| | | id: null, |
| | | patrolTaskName: '', |
| | | patrolTaskType: '', |
| | | patrolTaskType: [], |
| | | executeTime: '', |
| | | patrolRouteUrl: '', |
| | | deviceFlyerId: null, |
| | |
| | | if (!isValid) return |
| | | submitting.value = true |
| | | try { |
| | | await gdPatrolTaskRepublish(formData.value) |
| | | const payload = { |
| | | ...formData.value, |
| | | patrolTaskType: toTaskTypeRequestValue(formData.value.patrolTaskType), |
| | | } |
| | | await gdPatrolTaskRepublish(payload) |
| | | ElMessage.success('更新成功') |
| | | visible.value = false |
| | | emit('success') |
| | |
| | | |
| | | const res = await gdPatrolTaskDetailApi({ id: row.id }) |
| | | formData.value = { ...initForm(), ...res.data.data } |
| | | formData.value.patrolTaskType = toTaskTypeCascaderValue(formData.value.patrolTaskType) |
| | | // 确保 algorithmIds 是数组 |
| | | if (formData.value.algorithmIds && typeof formData.value.algorithmIds === 'string') { |
| | | formData.value.algorithmIds = formData.value.algorithmIds.split(',').filter(Boolean) |
| | |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="任务类型" prop="patrolTaskType"> |
| | | <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.patrolTaskType" |
| | | placeholder="请选择" clearable @change="handleSearch"> |
| | | <el-option v-for="item in workOrderTypeXT" :key="item.dictValue" :label="item.dictLabel" |
| | | :value="item.dictValue" /> |
| | | </el-select> |
| | | <el-cascader class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.patrolTaskType" |
| | | :options="workOrderTypeXT" :props="taskTypeFilterCascaderProps" placeholder="请选择" clearable |
| | | @change="handleSearch" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="任务状态" prop="taskStatus"> |
| | |
| | | <el-table-column prop="taskNo" show-overflow-tooltip label="巡查任务编号" /> |
| | | <el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型"> |
| | | <template v-slot="{ row }"> |
| | | {{ getDictLabelXT(row.patrolTaskType, workOrderTypeXT) }} |
| | | {{ getTaskTypeLabel(row.patrolTaskType, workOrderTypeXT) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="taskStatus" show-overflow-tooltip label="巡查任务状态"> |
| | |
| | | import { onMounted, ref } from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { getDictionaryByCode } from '@/api/system/dictbiz' |
| | | import { dateRangeFormat, getDictLabel, getDictLabelXT } from '@ztzf/utils' |
| | | import { dateRangeFormat, getDictLabel } from '@ztzf/utils' |
| | | import { getDictListApi } from '@/api/zkxt' |
| | | import FormDiaLog from './FormDiaLog.vue' |
| | | import { gdPatrolTaskPageApi, gdPatrolTaskRemoveApi } from './inspectionRequestApi' |
| | | import ViewDiaLog from '@/views/orderView/orderManage/inspectionRequest/ViewDiaLog.vue' |
| | | import { useStore } from 'vuex' |
| | | import { getTaskTypeLabel, normalizeTaskTypeOptions, taskTypeFilterCascaderProps } from '../taskTypeOptions' |
| | | |
| | | const store = useStore() |
| | | const permission = computed(() => store.state.user.permission) |
| | |
| | | dictObj.value = res.data.data |
| | | }) |
| | | getDictListApi('task_inspection_type').then(res => { |
| | | workOrderTypeXT.value = res.data.data || [] |
| | | workOrderTypeXT.value = normalizeTaskTypeOptions(res.data.data || []) |
| | | }) |
| | | } |
| | | |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="label">工单类型</div> |
| | | <div class="val">{{ getDictLabelXT(formData.workOrderType, workOrderTypeXT) }}</div> |
| | | <div class="val">{{ getTaskTypeLabel(formData.workOrderType, workOrderTypeXT) }}</div> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <div class="label">执行时间范围</div> |
| | |
| | | <el-table-column prop="patrolTaskName" show-overflow-tooltip label="巡查任务名称" /> |
| | | <el-table-column prop="patrolTaskType" show-overflow-tooltip label="巡查任务类型"> |
| | | <template v-slot="{ row }"> |
| | | {{ getDictLabelXT(row.patrolTaskType, workOrderTypeXT) }} |
| | | {{ getTaskTypeLabel(row.patrolTaskType, workOrderTypeXT) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="taskStatus" show-overflow-tooltip label="任务状态"> |
| | |
| | | </el-col> |
| | | <el-col :span="12"> |
| | | <el-form-item label="工单类型" prop="workOrderType"> |
| | | <el-select |
| | | <el-cascader |
| | | class="gd-select" |
| | | popper-class="gd-select-popper" |
| | | v-model="formData.workOrderType" |
| | | :options="workOrderTypeXT" |
| | | :props="taskTypeCascaderProps" |
| | | placeholder="请选择" |
| | | clearable |
| | | > |
| | | <el-option |
| | | v-for="item in workOrderTypeXT" |
| | | :key="item.dictValue" |
| | | :label="item.dictLabel" |
| | | :value="item.dictValue" |
| | | /> |
| | | </el-select> |
| | | /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="12"> |
| | |
| | | <script setup> |
| | | import { computed, ref, nextTick, inject } from 'vue' |
| | | import { ElMessage } from 'element-plus' |
| | | import { dateRangeFormat, fieldRules, flyVisual, geomAnalysis, getDictLabel, getDictLabelXT } from '@ztzf/utils' |
| | | import { dateRangeFormat, fieldRules, flyVisual, geomAnalysis, getDictLabel } from '@ztzf/utils' |
| | | import { |
| | | gdWorkOrderDetailApi, |
| | | gdWorkOrderFlowListApi, |
| | |
| | | import OrderStepBar from '@/views/orderView/orderManage/orderManage/OrderStepBar.vue' |
| | | import OutcomeData from './outcomeData.vue' |
| | | import { getDictListApi } from '@/api/zkxt' |
| | | import { getTaskTypeLabel, taskTypeCascaderProps, toTaskTypeCascaderValue, toTaskTypeRequestValue } from '../taskTypeOptions' |
| | | const store = useStore() |
| | | const permission = computed(() => store.state.user.permission) |
| | | const activeName = ref('basic') |
| | |
| | | // 初始化表单数据 |
| | | const initForm = () => ({ |
| | | workOrderName: '', |
| | | workOrderType: '', |
| | | workOrderType: [], |
| | | executeStartTime: '', |
| | | executeEndTime: '', |
| | | deviceLoadDemand: '', |
| | |
| | | if (!formData.value.id) { |
| | | formData.value.workOrderStatus = '10' |
| | | } |
| | | await gdWorkOrderSaveApi(formData.value) |
| | | const payload = { |
| | | ...formData.value, |
| | | workOrderType: toTaskTypeRequestValue(formData.value.workOrderType), |
| | | } |
| | | await gdWorkOrderSaveApi(payload) |
| | | ElMessage.success(dialogMode.value === 'add' ? '新增成功' : '更新成功') |
| | | visible.value = false |
| | | emit('success') |
| | |
| | | loadList() |
| | | const res = await gdWorkOrderDetailApi({ id: formData.value.id }) |
| | | formData.value = res?.data?.data ?? {} |
| | | formData.value.workOrderType = toTaskTypeCascaderValue(formData.value.workOrderType) |
| | | dateRange.value = [formData.value.executeStartTime, formData.value.executeEndTime] |
| | | } |
| | | |
| | |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="工单类型" prop="workOrderType"> |
| | | <el-select class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.workOrderType" |
| | | placeholder="请选择" clearable @change="handleSearch"> |
| | | <el-option v-for="item in workOrderTypeXT" :key="item.dictValue" :label="item.dictLabel" |
| | | :value="item.dictValue" /> |
| | | </el-select> |
| | | <el-cascader class="gd-select gray" popper-class="gd-select-popper" v-model="searchParams.workOrderType" |
| | | :options="workOrderTypeXT" :props="taskTypeFilterCascaderProps" placeholder="请选择" clearable |
| | | @change="handleSearch" /> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="工单状态" prop="workOrderStatus"> |
| | |
| | | <el-table-column prop="workOrderCode" show-overflow-tooltip label="工单编号" /> |
| | | <el-table-column prop="workOrderType" show-overflow-tooltip label="工单类型"> |
| | | <template v-slot="{ row }"> |
| | | {{ getDictLabelXT(row.workOrderType, workOrderTypeXT) }} |
| | | {{ getTaskTypeLabel(row.workOrderType, workOrderTypeXT) }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="status" show-overflow-tooltip label="阶段状态"> |
| | |
| | | import { onMounted, ref } from 'vue' |
| | | import { ElMessage, ElMessageBox } from 'element-plus' |
| | | import { getDictionaryByCode } from '@/api/system/dictbiz' |
| | | import { dateRangeFormat, getDictLabel, getDictLabelXT } from '@ztzf/utils' |
| | | import { dateRangeFormat, getDictLabel } from '@ztzf/utils' |
| | | import { getDictListApi } from '@/api/zkxt' |
| | | import FormDiaLog from './FormDiaLog.vue' |
| | | import { gdWorkOrderPageApi, gdWorkOrderRemoveApi } from './orderManageApi' |
| | |
| | | import testDock from '@/assets/docx/testDocx.docx' |
| | | import testPdf from '@/assets/pdf/testPdf.pdf' |
| | | import { useStore } from 'vuex' |
| | | import { getTaskTypeLabel, normalizeTaskTypeOptions, taskTypeFilterCascaderProps } from '../taskTypeOptions' |
| | | |
| | | const store = useStore() |
| | | const activeName = ref('all') |
| | |
| | | dictObj.value = res.data.data |
| | | }) |
| | | getDictListApi('task_inspection_type').then(res => { |
| | | workOrderTypeXT.value = res.data.data || [] |
| | | workOrderTypeXT.value = normalizeTaskTypeOptions(res.data.data || []) |
| | | }) |
| | | } |
| | | |
| New file |
| | |
| | | function parseRemarkOptions(remark) { |
| | | if (Array.isArray(remark)) return remark |
| | | if (!remark || typeof remark !== 'string') return [] |
| | | try { |
| | | const options = JSON.parse(remark) |
| | | return Array.isArray(options) ? options : [] |
| | | } catch (error) { |
| | | return [] |
| | | } |
| | | } |
| | | |
| | | export function normalizeTaskTypeOptions(list = []) { |
| | | return list.map(item => { |
| | | const remarkOptions = parseRemarkOptions(item.remark) |
| | | .map(option => ({ |
| | | ...option, |
| | | dictLabel: option.label, |
| | | dictValue: option.value, |
| | | })) |
| | | .sort((a, b) => (a.sort ?? 0) - (b.sort ?? 0)) |
| | | |
| | | return { |
| | | ...item, |
| | | remarkOptions, |
| | | children: remarkOptions, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | function isValidPath(value) { |
| | | return ( |
| | | Array.isArray(value) && |
| | | value.length === 2 && |
| | | value.every(item => item !== undefined && item !== null && item !== '' && !Array.isArray(item) && typeof item !== 'object') |
| | | ) |
| | | } |
| | | |
| | | function parseTaskTypeValue(value) { |
| | | if (typeof value !== 'string') return value |
| | | try { |
| | | const result = JSON.parse(value) |
| | | return Array.isArray(result) ? result : value |
| | | } catch (error) { |
| | | return value |
| | | } |
| | | } |
| | | |
| | | export function toTaskTypeCascaderValue(value) { |
| | | value = parseTaskTypeValue(value) |
| | | if (!value) return [] |
| | | if (typeof value === 'string') return [] |
| | | if (!Array.isArray(value)) return [] |
| | | if (isValidPath(value)) return [value] |
| | | if (value.length === 1 && Array.isArray(value[0]) && !isValidPath(value[0])) { |
| | | value = value[0] |
| | | } |
| | | return value.filter(isValidPath) |
| | | } |
| | | |
| | | export function toTaskTypeRequestValue(value) { |
| | | return toTaskTypeCascaderValue(value).map(item => [item[0], item[1]]) |
| | | } |
| | | |
| | | export function getTaskTypeLeafValues(value) { |
| | | return toTaskTypeRequestValue(value).map(item => item[1]) |
| | | } |
| | | |
| | | export function getTaskTypeLabel(value, options = []) { |
| | | const paths = toTaskTypeCascaderValue(value) |
| | | if (paths.length) { |
| | | return paths |
| | | .map(path => { |
| | | const parent = options.find(item => item.dictValue === path[0]) |
| | | const child = (parent?.children || []).find(item => item.dictValue === path[1]) |
| | | return child?.dictLabel || path[1] |
| | | }) |
| | | .join('、') |
| | | } |
| | | |
| | | if (!value) return '' |
| | | for (const item of options) { |
| | | if (item.dictValue === value) return item.dictLabel |
| | | const child = (item.children || []).find(option => option.dictValue === value) |
| | | if (child) return child.dictLabel |
| | | } |
| | | |
| | | return value |
| | | } |
| | | |
| | | export const taskTypeCascaderProps = { |
| | | label: 'dictLabel', |
| | | value: 'dictValue', |
| | | children: 'children', |
| | | multiple: true, |
| | | emitPath: true, |
| | | checkStrictly: false, |
| | | } |
| | | |
| | | export const taskTypeFilterCascaderProps = { |
| | | label: 'dictLabel', |
| | | value: 'dictValue', |
| | | children: 'children', |
| | | emitPath: false, |
| | | checkStrictly: false, |
| | | } |