Browse Source

🚨 优化请求次数

master
wangxiang 3 years ago
parent
commit
e4ee547a66
  1. 6
      src/components/AMap/src/AMapDesigner/index.vue
  2. 20
      src/components/AMap/src/amap.data.tsx
  3. 66
      src/components/AMap/src/components/MapTaskModal.vue
  4. 42
      src/components/AMap/src/components/MapTaskPresetModal.vue

6
src/components/AMap/src/AMapDesigner/index.vue

@ -601,7 +601,11 @@ @@ -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
}});
}
/** 处理打开地图标记点配置 */

20
src/components/AMap/src/amap.data.tsx

@ -61,21 +61,13 @@ export const taskOrdinaryColumns: BasicColumn[] = [ @@ -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[] = [ @@ -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[] = [ @@ -167,11 +159,7 @@ export const taskPresetChildColumns: BasicColumn[] = [
dataIndex: 'courierUserId',
editRow: true,
editRule: true,
editComponent: 'Select',
editComponentProps: {
style: { width:'100%' },
options: [],
}
editComponent: 'Select'
},
{
title: '起始预设点',

66
src/components/AMap/src/components/MapTaskModal.vue

@ -61,32 +61,44 @@ @@ -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<MapPointType[]>;
hospitalList:Nullable<MapPointType[]>;
orgList: Nullable<MapPointType[]>;
};
interface WindowState {
taskOrdinaryCurrentEditRowRef: Nullable<Recordable>;
taskPresetCurrentEditRowRef: Nullable<Recordable>;
mapData: MapLogistic;
options: OptionsType;
}
/** 通用变量统一声明区域 */
const state = reactive<WindowState>({
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<ModalProps> = { confirmLoading: false };
props.title = '任务配置';
const taskOrdinaryUpdateColumns: BasicColumn[] = [
@ -95,16 +107,25 @@ @@ -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 @@ @@ -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 @@ @@ -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
}});
}
/** 处理模态框状态修改 */

42
src/components/AMap/src/components/MapTaskPresetModal.vue

@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
>
<AFormItem label="医检" name="destinationPresetId" :rules="{ required: true, whitespace: true, message: '医检不能为空', validateTrigger: 'blur' }">
<ASelect v-model:value="state.modelRef.destinationPresetId"
:options="state.orgList"
:options="state.options.orgList"
:style="{ width:'30%' }"
allowClear
/>
@ -46,7 +46,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 @@ @@ -54,25 +54,31 @@
import { listOrg } from '/@/api/platform/common/controller/org';
/** 类型规范统一声明定义区域 */
type OptionsType = {
courierUserId: string;
courierUserList: Nullable<MapPointType[]>;
orgList: Nullable<MapPointType[]>;
};
interface WindowState {
currentEditRowRef: Nullable<Recordable>;
taskPresetRow: Recordable;
courierUserId: string;
modelRef: Recordable;
orgList: Recordable[];
options: OptionsType;
}
/** 通用变量统一声明区域 */
const state = reactive<WindowState>({
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 @@ @@ -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<ModalProps> = { confirmLoading: false };
props.title = '转办任务配置';
const columns: BasicColumn[] = [
@ -105,21 +112,12 @@ @@ -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 @@ @@ -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 @@ @@ -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;

Loading…
Cancel
Save