diff --git a/src/components/AMap/src/AMapDesigner/index.vue b/src/components/AMap/src/AMapDesigner/index.vue index b984874..a40e5c7 100644 --- a/src/components/AMap/src/AMapDesigner/index.vue +++ b/src/components/AMap/src/AMapDesigner/index.vue @@ -601,7 +601,11 @@ description: `检测到任务列表中首个${~~mapState.mapData.sendOrderTaskType ? '普通' : '交接'}任务对应发单数据错误,请联系开发人员!`, duration: 2 }); - } else mapTaskOpenModal(true, { mapData: mapState.mapData }); + } else mapTaskOpenModal(true, { mapData: mapState.mapData, options: { + courierUserList: mapState.courierUserList, + hospitalList: mapState.hospitalList, + orgList: mapState.orgList + }}); } /** 处理打开地图标记点配置 */ diff --git a/src/components/AMap/src/amap.data.tsx b/src/components/AMap/src/amap.data.tsx index 5591d1b..9056d5e 100644 --- a/src/components/AMap/src/amap.data.tsx +++ b/src/components/AMap/src/amap.data.tsx @@ -61,21 +61,13 @@ export const taskOrdinaryColumns: BasicColumn[] = [ dataIndex: 'hospitalId', editRow: true, editRule: true, - editComponent: 'ApiSelect', + editComponent: 'Select', }, { title: '医检', dataIndex: 'orgId', editRow: true, - editComponent: 'ApiSelect', - editComponentProps: { - style: { width:'100%' }, - api: listOrg, - params: { size: 40 }, - labelField: 'name', - valueField: 'id', - resultField: 'data' - } + editComponent: 'Select', }, { title: '上传文件', @@ -119,7 +111,7 @@ export const taskPresetColumns: BasicColumn[] = [ dataIndex: 'hospitalId', editRow: true, editRule: true, - editComponent: 'ApiSelect', + editComponent: 'Select', }, { title: '目的地预设点', @@ -167,11 +159,7 @@ export const taskPresetChildColumns: BasicColumn[] = [ dataIndex: 'courierUserId', editRow: true, editRule: true, - editComponent: 'Select', - editComponentProps: { - style: { width:'100%' }, - options: [], - } + editComponent: 'Select' }, { title: '起始预设点', diff --git a/src/components/AMap/src/components/MapTaskModal.vue b/src/components/AMap/src/components/MapTaskModal.vue index dba8a42..360339e 100644 --- a/src/components/AMap/src/components/MapTaskModal.vue +++ b/src/components/AMap/src/components/MapTaskModal.vue @@ -61,32 +61,44 @@ import { reactive, toRaw } from 'vue'; import {BasicModal, ModalProps, useModal, useModalInner} from '/@/components/Modal'; import { BasicTable, useTable, EditRecordRow, BasicColumn, ActionItem, TableAction } from '/@/components/Table'; - import { taskOrdinaryColumns, taskPresetColumns } from '../amap.data'; + import { MapPointType, taskOrdinaryColumns, taskPresetColumns } from '../amap.data'; import TaskPresetModal from './MapTaskPresetModal.vue'; import { buildUUID } from '/@/utils/uuid'; import { useMessage } from '/@/hooks/web/useMessage'; import {add, cloneDeep} from 'lodash-es'; import { defaultMapData } from '/@/enums/amapEnum'; import { MapLogistic } from '/@/api/platform/common/entity/mapLogistic'; - import { listHospital } from '/@/api/platform/common/controller/hospital'; /** 类型规范统一声明定义区域 */ + type OptionsType = { + courierUserList: Nullable; + hospitalList:Nullable; + orgList: Nullable; + }; interface WindowState { taskOrdinaryCurrentEditRowRef: Nullable; taskPresetCurrentEditRowRef: Nullable; mapData: MapLogistic; + options: OptionsType; } /** 通用变量统一声明区域 */ const state = reactive({ taskOrdinaryCurrentEditRowRef: null, taskPresetCurrentEditRowRef: null, - mapData: defaultMapData() + mapData: defaultMapData(), + options: { + courierUserList: null, + hospitalList: null, + orgList: null + } }); const emit = defineEmits(['success', 'register']); const [registerModal, { setModalProps, closeModal }] = useModalInner(async data => { // 处理设置数据 - state.mapData = data.mapData; + const { mapData, options } = data; + state.mapData = mapData; + state.options = options as OptionsType; const props: Partial = { confirmLoading: false }; props.title = '任务配置'; const taskOrdinaryUpdateColumns: BasicColumn[] = [ @@ -95,16 +107,25 @@ dataIndex: 'hospitalId', editRow: true, editRule: true, - editComponent: 'ApiSelect', + editComponent: 'Select', + editComponentProps: ({ text, record, column, index }) => ({ + style: { width:'100%' }, + options: state.options.hospitalList, + disabled: record.hospitalId == state.mapData.sendOrderId, + }), + editValueMap: value => state.options.hospitalList?.find(item => item.value == value)?.label || value + }, + { + title: '医检', + dataIndex: 'orgId', + editRow: true, + editComponent: 'Select', editComponentProps: ({ text, record, column, index }) => ({ style: { width:'100%' }, - api: listHospital, - params: { size: 40, mapNotify: '1' }, + options: state.options.orgList, disabled: record.hospitalId == state.mapData.sendOrderId, - labelField: 'name', - valueField: 'id', - resultField: 'data' - }) + }), + editValueMap: value => state.options.orgList?.find(item => item.value == value)?.label || value }, ], taskPresetUpdateColumns: BasicColumn[] = [ @@ -113,28 +134,19 @@ dataIndex: 'hospitalId', editRow: true, editRule: true, - editComponent: 'ApiSelect', + editComponent: 'Select', editComponentProps: ({ text, record, column, index }) => ({ style: { width:'100%' }, - api: listHospital, - params: { size: 40, mapNotify: '1' }, + options: state.options.hospitalList, disabled: record.hospitalId == state.mapData.sendOrderId, - labelField: 'name', - valueField: 'id', - resultField: 'data' - }) + }), + editValueMap: value => state.options.hospitalList?.find(item => item.value == value)?.label || value }, ]; const mapTask = cloneDeep(state.mapData?.mapTask || []); setTaskOrdinaryTableData(mapTask.filter(item => ~~item.taskType == 0)); setTaskPresetTableData(mapTask.filter(item => ~~item.taskType == 1)); // 尾部:设置处理后的最终配置数据 - console.log(taskOrdinaryColumns.map(item => - taskOrdinaryUpdateColumns.find(e => e.dataIndex == item.dataIndex) || item - ), taskPresetColumns.map(item => - taskPresetUpdateColumns.find(e => e.dataIndex == item.dataIndex) || item - ), mapTask - ); setTaskOrdinaryColumns(taskOrdinaryColumns.map(item => taskOrdinaryUpdateColumns.find(e => e.dataIndex == item.dataIndex) || item )); @@ -334,7 +346,11 @@ /** 处理打开交接任务 */ function handleOpenTaskPreset(record) { - openModal(true, { row: record, courierUserId: state.mapData.courierUserId }); + openModal(true, { row: record, options: { + courierUserList: state.options.courierUserList, + orgList: state.options.orgList, + courierUserId: state.mapData.courierUserId + }}); } /** 处理模态框状态修改 */ diff --git a/src/components/AMap/src/components/MapTaskPresetModal.vue b/src/components/AMap/src/components/MapTaskPresetModal.vue index 2d62771..bcb7901 100644 --- a/src/components/AMap/src/components/MapTaskPresetModal.vue +++ b/src/components/AMap/src/components/MapTaskPresetModal.vue @@ -13,7 +13,7 @@ > @@ -46,7 +46,7 @@ import { Form, Select } from 'ant-design-vue'; import { BasicModal, ModalProps, useModalInner } from '/@/components/Modal'; import { BasicTable, useTable, EditRecordRow, BasicColumn, ActionItem, TableAction } from '/@/components/Table'; - import { taskPresetChildColumns } from '../amap.data'; + import {MapPointType, taskPresetChildColumns} from '../amap.data'; import { listUser } from '/@/api/platform/system/controller/user'; import { buildUUID } from '/@/utils/uuid'; import { useMessage } from '/@/hooks/web/useMessage'; @@ -54,25 +54,31 @@ import { listOrg } from '/@/api/platform/common/controller/org'; /** 类型规范统一声明定义区域 */ + type OptionsType = { + courierUserId: string; + courierUserList: Nullable; + orgList: Nullable; + }; interface WindowState { currentEditRowRef: Nullable; taskPresetRow: Recordable; - courierUserId: string; modelRef: Recordable; - orgList: Recordable[]; + options: OptionsType; } /** 通用变量统一声明区域 */ const state = reactive({ currentEditRowRef: null, taskPresetRow: {}, - courierUserId: '', - orgList: [], modelRef: { destinationPresetId: '' + }, + options: { + courierUserId: '', + courierUserList: null, + orgList: null } }); - const AForm = Form; const AFormItem = Form.Item; const ASelect = Select; @@ -84,8 +90,9 @@ formElRef.value.resetFields(); formElRef.value.clearValidate(); // 处理设置数据 - state.taskPresetRow = data.row; - state.courierUserId = data.courierUserId; + const { row, options } = data; + state.taskPresetRow = row; + state.options = options as OptionsType; const props: Partial = { confirmLoading: false }; props.title = '转办任务配置'; const columns: BasicColumn[] = [ @@ -105,21 +112,12 @@ } } ]; - await listOrg({ size: 40 }).then(res => { - state.orgList = res.data?.map(item => ({ - value: item.id, - label: item.name, - mapOrientation: item.mapOrientation, - mapLat: item.mapLat, - mapLng: item.mapLng - })); - }); await listUser({ size: 40, userType: '1' }).then(res => { - Object.assign(columns[0].editComponentProps, { + Object.assign(columns.find(item => item.dataIndex == 'courierUserId')?.editComponentProps || {}, { options: res.data?.map(item => ({ value: item.id, label: item.nickName, - })).filter(item => item.value != state.courierUserId) + })).filter(item => item.value != state.options.courierUserId) }); }); setColumns(taskPresetChildColumns.map(item => @@ -249,7 +247,7 @@ // 清除旧的上级医检医院 mapTaskPresetData.forEach(item => { validateData.push(item.onValid?.() || Promise.resolve(true)); - if(state.orgList.findIndex(e => e.value == item.destinationPresetId) != -1) { + if(state.options.orgList?.findIndex(e => e.value == item.destinationPresetId) != -1) { item.destinationPresetId = ''; item.destinationPresetName = '等待收样员设置!'; item.destinationPresetLng = ''; @@ -263,7 +261,7 @@ }); // 自动设置交接最终到达上级医检医院 const lastElement = mapTaskPresetData[mapTaskPresetData.length - 1]; - const option = state.orgList.find(item => item.value == formData.destinationPresetId); + const option = state.options.orgList?.find(item => item.value == formData.destinationPresetId); if (option && lastElement) { lastElement.destinationPresetId = option.value; lastElement.destinationPresetName = option.label;