Browse Source

调整地图设计器数据结构

master
wangxiang 3 years ago
parent
commit
006761874e
  1. 66
      src/components/AMap/src/components/MapTaskPresetModal.vue

66
src/components/AMap/src/components/MapTaskPresetModal.vue

@ -5,6 +5,19 @@ @@ -5,6 +5,19 @@
@register="registerModal"
@ok="handleSubmit"
>
<AForm ref="formElRef"
:labelCol="{ style: { width: '80px' } }"
:wrapperCol="{ style: { width: '100%', 'margin-right': '10px' } }"
:model="state.modelRef"
>
<AFormItem label="医检" name="destinationPresetId" :rules="{ required: true, whitespace: true, message: '医检不能为空', validateTrigger: 'blur' }">
<ASelect v-model:value="state.modelRef.destinationPresetId"
:options="state.orgList"
:style="{ width:'30%' }"
allowClear
/>
</AFormItem>
</AForm>
<BasicTable @register="registerTable">
<template #toolbar>
<a-button type="primary"
@ -26,7 +39,8 @@ @@ -26,7 +39,8 @@
</BasicModal>
</template>
<script lang="ts" setup>
import { reactive, toRaw } from 'vue';
import { reactive, ref, toRaw } from 'vue';
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';
@ -34,24 +48,40 @@ @@ -34,24 +48,40 @@
import { buildUUID } from '/@/utils/uuid';
import { useMessage } from '/@/hooks/web/useMessage';
import { cloneDeep } from 'lodash-es';
import { ApiSelect } from '/@/components/Form';
import { listOrg } from '/@/api/platform/common/controller/org';
/** 类型规范统一声明定义区域 */
interface WindowState {
currentEditKeyRef: string;
taskPresetRow: Recordable;
courierUserId: string;
modelRef: Recordable;
orgList: Recordable[];
}
/** 通用变量统一声明区域 */
const state = reactive<WindowState>({
currentEditKeyRef: '',
taskPresetRow: {},
courierUserId: ''
courierUserId: '',
orgList: [],
modelRef: {
destinationPresetId: ''
}
});
const AForm = Form;
const AFormItem = Form.Item;
const ASelect = Select;
const formElRef = ref();
const emit = defineEmits(['success', 'register']);
const { createMessage } = useMessage();
const [registerModal, { setModalProps, closeModal }] = useModalInner(async data => {
//
formElRef.value.resetFields();
formElRef.value.clearValidate();
//
state.taskPresetRow = data.row;
state.courierUserId = data.courierUserId;
const props: Partial<ModalProps> = { confirmLoading: false };
@ -61,7 +91,11 @@ @@ -61,7 +91,11 @@
title: '收样员',
dataIndex: 'courierUserId',
editRow: true,
editRule: true,
editRule: (text: string, record: Recordable) => {
if (!text) return Promise.resolve('收样员必填!');
if (getDataSource().some(item => item.courierUserId == text)) return Promise.resolve('收样员不能重复!');
return Promise.resolve('');
},
editComponent: 'Select',
editComponentProps: {
style: { width:'100%' },
@ -69,6 +103,15 @@ @@ -69,6 +103,15 @@
}
}
];
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 => {
columns[0].editComponentProps!.options = res.data?.map(item => ({
value: item.id,
@ -79,6 +122,10 @@ @@ -79,6 +122,10 @@
const column = columns.find(e => e.dataIndex == item.dataIndex);
return column ? column : item;
}));
const mapTaskPresetData = cloneDeep(state.taskPresetRow?.mapTaskPreset || []);
//
const lastElement = mapTaskPresetData[mapTaskPresetData.length - 1];
lastElement && (state.modelRef.destinationPresetId = lastElement.destinationPresetId);
setTableData(cloneDeep(state.taskPresetRow?.mapTaskPreset || []));
// :
setModalProps(props);
@ -175,8 +222,19 @@ @@ -175,8 +222,19 @@
async function handleSubmit() {
try {
//
const formData = await formElRef.value.validate();
setModalProps({ confirmLoading: true });
state.taskPresetRow.mapTaskPreset = toRaw(getDataSource());
const mapTaskPresetData = toRaw(getDataSource());
//
const lastElement = mapTaskPresetData[mapTaskPresetData.length - 1];
const option = state.orgList.find(item => item.value == formData.destinationPresetId);
if (option) {
lastElement.destinationPresetId = option.value;
lastElement.destinationPresetName = option.label;
lastElement.destinationPresetlng = option.mapLng;
lastElement.destinationPresetlLat = option.mapLat;
}
state.taskPresetRow.mapTaskPreset = mapTaskPresetData;
//
closeModal();
emit('success');

Loading…
Cancel
Save