zzq
徐景良 2024-06-14 13:34:50 +08:00
parent 1a5ff25c59
commit b703a94300
5 changed files with 876 additions and 33 deletions

View File

@ -0,0 +1,777 @@
<template>
<div class="map-form">
<div class="map-form-header">
{{ getTitle }}
<span class="map-form-close" @click="handlerCloseForm">
<CloseOutlined />
</span>
</div>
<!-- <BasicModal
v-bind="$attrs"
@register="registerModal"
:canFullscreen="false"
:draggable="false"
:showCancelBtn="!isDetail"
:showOkBtn="!isDetail"
:title="getTitle"
:mask="false"
@ok="ModalSureClick"
width="80%"
:closeFunc="closeFunc"
> -->
<template v-if="tabsColumns.length > 1">
<a-tabs style="width: 100%" @change="tabsChange">
<a-tab-pane v-for="(colItem, index) in tabsColumns" :tab="colItem.label" :key="index">
<BasicForm
ref="myDataBaseFormRef"
@register="registerForm"
@click="codeClickFunction('beforeSetData', beforeSetData)"
@change="codeClickFunction('changeDataEvent', changeDataEvent)"
>
<template #CardGroup>
<CardGourp
v-if="cardGroupData.length > 0 && cardGroupData[index]"
:data="cardGroupData[index]"
:formData="cardGourpFormData"
:parentValue="cardGroupData[index].field"
:callModal="true"
/>
</template>
</BasicForm>
</a-tab-pane>
</a-tabs>
</template>
<BasicForm
ref="myDataBaseFormRef"
@register="registerForm"
v-if="formModalVisible && tabsColumns.length < 1"
@click="codeClickFunction('beforeSetData', beforeSetData)"
@change="codeClickFunction('changeDataEvent', changeDataEvent)"
/>
<template v-for="(item, index) in cardLayout" :key="index">
<a-row style="width: 100%">
<a-col :span="item?.colProps?.span || 24" style="padding: 10px">
<a-card
:title="item.label"
:class="
item.shadow === 'always' ? 'card-always' : item.shadow === 'hover' ? 'card-hover' : ''
"
>
<template v-for="(childItem, childIndex) in item.columns[0].children" :key="childIndex">
<a-row style="width: 100%; margin-bottom: 10px">
<a-col :span="childItem?.colProps?.span || 24">
<CallModalFormItem :data="childItem" :dataKey="item.field" :values="cardValues" />
</a-col>
</a-row>
</template>
</a-card>
</a-col>
</a-row>
</template>
<template v-if="tabsColumns.length < 1">
<CardGourp
v-if="cardGroupData.length > 0"
:data="cardGroupData[0]"
:formData="cardGourpFormData"
:parentValue="cardGroupData[0].field"
:callModal="true"
/>
</template>
<template v-for="(item, index) in buttonLayout" :key="index">
<a-row style="width: 100%">
<a-col :span="item?.colProps?.span || 24" style="padding: 10px">
<a-button
:type="item.componentProps.type"
:shape="item.componentProps.shape"
:size="item.componentProps.size"
@click="codeClickFunction('codeClick', item.componentProps.clickCode)"
>
{{ item.label }}
</a-button>
</a-col>
</a-row>
</template>
<a-table
class="sub-table"
:columns="subTableColumns"
:data-source="subTableList"
:pagination="false"
v-if="subTableId"
:scroll="scrollValue"
>
<template #headerCell="{ column, record }">
<template v-if="column.key === 'setting'">
<PlusOutlined class="icon-button" @click="addListItem" v-if="!isDetail" />
</template>
</template>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'setting'">
<DeleteOutlined
class="icon-button"
@click="delListItem(column, record)"
v-if="!isDetail"
/>
</template>
<template v-else>
<FormItem :data="column" :record="record" />
</template>
</template>
</a-table>
<!-- todo 创建/修改 /时间 -->
</div>
</template>
<script lang="ts" setup>
import { unref, ref, reactive,defineProps,defineEmits,onMounted } from 'vue';
import { FormSchema } from '@/components/Table';
import { BasicModal, useModalInner } from '@/components/Modal';
import { BasicForm, useForm } from '@/components/Form';
import { saveFormsData } from '@/api/formrender/index';
import { useMessage } from '@/hooks/web/useMessage';
import { useUserStore } from '@/store/modules/user';
import { create, saveDraft } from '@/api/sys/WFProcess';
import { PlusOutlined, DeleteOutlined,CloseOutlined } from '@ant-design/icons-vue';
import { v4 as uuidv4 } from 'uuid';
import FormItem from './ShowFormModal/FormItem/index.vue';
import CallModalFormItem from './CallModalFormItem/index.vue';
import { CardGourp } from '@/components/FormViewer/index.ts';
import { subTableStore } from '@/store/modules/subTable';
import { changeCardStructure, cardNestStructure } from '@/views/demo/onlineform/util.ts';
const subTableDataStore = subTableStore();
// import FormRender from '@/views/demo/form-design/components/VFormCreate/components/FormRender.vue';
const emit = defineEmits(['success','clsoeMapForm']);
const { createMessage } = useMessage();
const formModalVisible = ref(false);
const isUpdate = ref(true);
const isDetail = ref(true);
const getTitle = ref();
const primaryQuery = ref();
const addQuery: any = ref([]);
const formColumns: any = ref([]);
const tabsColumns: any = ref([]);
const flowCode = ref('');
const userStore = useUserStore();
const userInfo: any = userStore.getUserInfo;
const formData = reactive({
userId: userInfo.id,
title: '',
});
const cardGroupData = ref([]);
const cardGourpFormData = ref({});
const cardGroupValues = ref({});
const subTableId = ref(null);
const subTableColumns: any = ref([]);
const subTableData = ref([]);
const subTableList: any = ref([]);
const scrollValue = ref();
const cardLayout = ref([]);
const createOrModifyList = ref([]);
//
const buttonLayout = ref([]);
//
const cardValues = ref({});
const beforeSetData = ref('');
const afterValidateForm = ref('');
const afterSaveEvent = ref('');
const changeDataEvent = ref('');
const getCardLayoutKey = (dataList, key) => {
dataList.forEach((item) => {
if (item.component === 'Card') {
getCardLayoutKey(item.columns[0].children, key);
} else if (item.type === 'subTable') {
cardValues.value[key][item.field] = [];
} else {
cardValues.value[key][item.field] = '';
}
});
};
const getCardGroupLayoutKey = (dataList) => {
console.log('dataList', dataList);
dataList.children.forEach((item?) => {
if (['CardGroup'].includes(item.component)) {
cardGroupValues.value[item.field] = '';
item.componentProps.options.forEach((childItem) => {
getCardGroupLayoutKey(childItem);
});
} else {
cardGroupValues.value[item.field] = '';
}
});
};
let props = defineProps({
data:Object
})
console.log("propspropspropsprops",props.data);
const initForm = ((data: Object|any) => {
console.log("modalData",data);
cardLayout.value = [];
subTableDataStore.clearGoupData();
//
beforeSetData.value = data?.beforeSetData;
afterValidateForm.value = data?.afterValidateForm;
afterSaveEvent.value = data?.afterSaveEvent;
changeDataEvent.value = data?.changeDataEvent;
isUpdate.value = !!data?.isUpdate;
isDetail.value = !!data?.isDetail;
const arr: FormSchema[] = [];
data.tab.forEach((item) => {
if (item.field == 'Tabs') {
item.componentProps.options.forEach((val, index) => {
val.children.forEach((opt) => {
if (opt.rules !== undefined) {
let myString = opt.rules[0].pattern;
const lastCharacter = myString.charAt(myString.length - 1);
if (lastCharacter === 'i' || lastCharacter === 's') {
opt.rules[0].pattern = new RegExp(opt.rules[0].pattern.slice(1, -2), lastCharacter);
} else {
opt.rules[0].pattern = new RegExp(opt.rules[0].pattern.slice(1, -1));
}
}
if (opt.component === 'Card') {
cardLayout.value.push(opt);
}
if (opt.component === 'CardGroup') {
opt.slot = 'CardGroup';
if (cardGroupData.value.length !== index) {
cardGroupData.value.push(null);
}
cardGroupData.value.push(opt);
}
if (opt.component === 'Button') {
buttonLayout.value.push(opt);
}
if (['createuser', 'createtime', 'modifyuser', 'modifytime'].includes(opt.type)) {
createOrModifyList.value.push(opt);
}
subTableColumns.value = [
{
dataIndex: 'setting',
key: 'setting',
fixed: 'left',
width: 60,
},
];
if (opt.type === 'subTable') {
subTableId.value = opt.field;
let tableData = [];
opt.columns.forEach((itemColumn) => {
itemColumn.children.forEach((itemColumnChild) => {
tableData.push(itemColumnChild);
subTableColumns.value.push({
key: itemColumnChild.field,
title: itemColumnChild.label,
dataIndex: itemColumnChild.field,
...itemColumnChild,
width: 120,
});
});
});
scrollValue.value = { x: (subTableColumns.value.length - 1) * 140, y: 300 };
subTableData.value = tableData;
}
if (opt.columns) {
opt.columns.forEach((itemColumn) => {
itemColumn.children.forEach((itemColumnChild) => {
console.log('itemColumnChild', itemColumnChild);
itemColumnChild.itemProps.hidden = true;
if (index == 0) {
itemColumnChild.itemProps.hidden = false;
}
itemColumnChild.colProps.span = itemColumn.span;
arr.push(itemColumnChild);
// arr.push({
// parentValue: index,
// ...itemColumnChild,
// show: index == 0 ? true : false,
// });
val.children.push(itemColumnChild);
});
});
}
opt.itemProps.hidden = true;
if (index == 0) {
opt.itemProps.hidden = false;
}
if (opt.ptype !== 'gridlayout') {
arr.push(opt);
// arr.push({
// parentValue: index,
// ...opt,
// show: index == 0 ? true : false,
// });
}
// arr.forEach((arrcol) => {
// if (arrcol.component === 'CardGroup') {
// arrcol.label = '';
// }
// });
formColumns.value = arr;
});
});
tabsColumns.value = item.componentProps.options;
console.log('tabsColumns', tabsColumns.value);
console.log('formColumns1', formColumns.value);
} else {
if (item.rules !== undefined) {
let myString = item.rules[0].pattern;
const lastCharacter = myString.charAt(myString.length - 1);
if (lastCharacter === 'i' || lastCharacter === 's') {
item.rules[0].pattern = new RegExp(item.rules[0].pattern.slice(1, -2), lastCharacter);
} else {
item.rules[0].pattern = new RegExp(item.rules[0].pattern.slice(1, -1));
}
}
if (item.columns) {
item.columns.forEach((col) => {
col.children.forEach((chld) => {
chld.colProps.span = col.span;
arr.push(chld);
});
});
} else {
if (item.ptype !== 'gridlayout') {
arr.push(item);
}
}
// arr.forEach((arrcol) => {
// if (arrcol.component === 'CardGroup') {
// arrcol.label = '';
// }
// });
formColumns.value = arr;
if (item.component === 'Card') {
cardLayout.value.push(item);
}
if (item.component === 'CardGroup') {
item.slot = 'CardGroup';
cardGroupValues.value[item.field] = '';
item.componentProps.options.forEach((childItem) => {
getCardGroupLayoutKey(childItem);
});
cardGroupData.value.push(item);
}
if (item.component === 'Button') {
buttonLayout.value.push(item);
}
if (['createuser', 'createtime', 'modifyuser', 'modifytime'].includes(item.type)) {
createOrModifyList.value.push(item);
}
subTableColumns.value = [
{
dataIndex: 'setting',
key: 'setting',
fixed: 'left',
width: 60,
},
];
if (item.type === 'subTable') {
subTableId.value = item.field;
let tableData = [];
item.columns.forEach((itemColumn) => {
itemColumn.children.forEach((itemColumnChild) => {
tableData.push(itemColumnChild);
subTableColumns.value.push({
key: itemColumnChild.field,
title: itemColumnChild.label,
dataIndex: itemColumnChild.field,
...itemColumnChild,
width: 120,
});
});
});
scrollValue.value = { x: (subTableColumns.value.length - 1) * 140, y: 300 };
subTableData.value = tableData;
}
}
if (item.component === 'Card') {
cardValues.value[item.field] = {};
getCardLayoutKey(item.columns[0].children, item.field);
}
});
if (!unref(isUpdate) && !unref(isDetail)) {
getTitle.value = '新增';
data.btnList.forEach((element) => {
if (element.prop === 'Add' && element.isWFlow) {
flowCode.value = element.wFlowCode;
}
});
}
if (unref(isUpdate) && !unref(isDetail)) {
getTitle.value = '编辑';
data.btnList.forEach((element) => {
if (element.prop === 'Edit' && element.isWFlow) {
flowCode.value = element.wFlowCode;
}
});
if (Object.keys(cardValues.value).length > 0) {
Object.keys(cardValues.value).forEach((cardItem) => {
let cardItemKeyList = Object.keys(cardValues.value[cardItem]);
Object.keys(data.infoUseMainTableData).forEach((item) => {
if (cardItemKeyList.includes(item)) {
cardValues.value[cardItem][item] = data.infoUseMainTableData[item];
}
});
// todo
cardItemKeyList.forEach((item) => {
if (item.indexOf('grid') !== -1) {
cardValues.value[cardItem][item] = data.infoUseSubTableData;
}
});
});
}
Object.keys(cardGroupValues.value).forEach((item) => {
cardGroupValues.value[item] = data.infoUseMainTableData[item];
});
subTableDataStore.setGroupData(cardGroupValues.value);
}
if (!unref(isUpdate) && unref(isDetail)) {
getTitle.value = '详情';
let isTabs = false;
data.tab = changeCardStructure(data.tab);
data.tab.forEach((itemComponent) => {
if (itemComponent.component === 'Tabs') {
isTabs = true;
itemComponent.componentProps.options.forEach((itemChild) => {
itemChild.children.forEach((itemChildComponent) => {
if (itemChildComponent.component) {
itemChildComponent.componentProps.disabled = true;
}
});
});
} else if (itemComponent.component) {
itemComponent.componentProps.disabled = true;
}
});
if (isTabs) {
data.tab = data.tab[0];
data.tab.componentProps.options = data.tab.componentProps.options.map((item) => {
return {
value: item.value,
label: item.label,
schemas: item.children,
};
});
data.tab.componentProps.options = cardNestStructure(data.tab.componentProps.options);
data.tab.componentProps.options = data.tab.componentProps.options.map((item) => {
return {
value: item.value,
label: item.label,
children: item.schemas,
};
});
tabsColumns.value = data.tab.componentProps.options;
} else {
data.tab = cardNestStructure(data.tab);
}
if (Object.keys(cardValues.value).length > 0) {
Object.keys(cardValues.value).forEach((cardItem) => {
let cardItemKeyList = Object.keys(cardValues.value[cardItem]);
Object.keys(data.infoUseMainTableData).forEach((item) => {
if (cardItemKeyList.includes(item)) {
cardValues.value[cardItem][item] = data.infoUseMainTableData[item];
}
});
// todo
cardItemKeyList.forEach((item) => {
if (item.indexOf('grid') !== -1) {
cardValues.value[cardItem][item] = data.infoUseSubTableData;
}
});
});
}
Object.keys(cardGroupValues.value).forEach((item) => {
cardGroupValues.value[item] = data.infoUseMainTableData[item];
});
subTableDataStore.setGroupData(cardGroupValues.value);
}
formModalVisible.value = true;
primaryQuery.value = data.query;
if (data.record) {
setTimeout(() => {
setFieldsValue({
...data.record,
});
}, 100);
subTableList.value = data.recordChildren;
} else {
if (tabsColumns.value.length < 1) {
// resetFields();
}
subTableList.value = [];
}
addQuery.value = [];
if (data.addParams) {
data.addParams.forEach((item) => {
addQuery.value.push({
type: item.type,
field: item.field,
value: generateUniqueDigits(20).join(''),
});
});
console.log('addQuery', addQuery);
}
});
async function tabsChange(e) {
const columns: FormSchema[] = [];
tabsColumns.value.forEach((item) => {
item.children.forEach((val) => {
val.itemProps.hidden = true;
});
});
tabsColumns.value[e].children.forEach((item) => {
item.itemProps.hidden = false;
});
// formColumns.value.forEach((element) => {
// element.show = false;
// if (element.parentValue == e) {
// element.show = true;
// }
// });
tabsColumns.value.forEach((item) => {
item.children.forEach((val) => {
columns.push(val);
});
});
setTimeout(() => {
updateSchema(columns);
resetFields();
}, 100);
if(!isDetail.value){
const obj = await validate();
setTimeout(() => {
setFieldsValue(obj);
}, 500);
}
}
function generateUniqueDigits(length: number): number[] {
const digits = new Set<number>();
while (digits.size < length) {
const randomDigit = Math.floor(Math.random() * 20);
digits.add(randomDigit);
}
return Array.from(digits);
}
const addListItem = () => {
let keyValue = uuidv4();
let emptyItem = { key: keyValue };
subTableData.value.map((item) => {
if (item.component == 'InputGuid') {
emptyItem[item.field] = keyValue;
} else {
emptyItem[item.field] = '';
}
});
subTableList.value.push(emptyItem);
};
const delListItem = (column, record) => {
subTableList.value = subTableList.value.filter((item) => item.key != record.key);
};
const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, getFieldsValue }] =
useForm({
labelWidth: 100,
schemas: formColumns,
showActionButtonGroup: false,
actionColOptions: {
span: 24,
},
});
//
async function ModalSureClick() {
try {
let values = await validate();
//
let cardValueList = Object.values(cardValues.value);
cardValueList.forEach((item) => {
values = { ...values, ...item };
});
codeClickFunction('afterValidateForm', afterValidateForm.value);
console.log('values', values);
let query = values;
let saveSubTableList = [];
subTableList.value.forEach((item) => {
let emptyObj = {};
for (const key in item) {
if (key === 'key') continue;
emptyObj[key] = item[key];
}
saveSubTableList.push(emptyObj);
});
if (subTableId.value) {
query[subTableId.value] = JSON.stringify(saveSubTableList);
}
let params: any = {
schemeId: primaryQuery.value.id,
isUpdate: isUpdate.value,
pkey: primaryQuery.value.key,
};
console.log('params', params);
if (unref(isUpdate)) {
params.pkeyValue = primaryQuery.value.keyValue;
} else {
addQuery.value.forEach((item) => {
if (item.type == 'main') {
params.pkeyValue = item.value;
}
if (!query[item.field]) {
query[item.field] = item.value;
}
});
}
query = { ...query, ...subTableDataStore.getGroupData };
params.data = JSON.stringify(query);
console.log('query222', query);
console.log('params222', params);
const data = await saveFormsData(params);
if (data) {
setModalProps({ confirmLoading: true });
emit('success');
if (flowCode.value == '') {
closeModal();
} else {
handleCreateFlow(params.pkeyValue);
}
return createMessage.success('操作成功');
} else {
return createMessage.error('操作失败');
}
} finally {
setModalProps({ confirmLoading: false });
//
codeClickFunction('afterSaveEvent', afterSaveEvent.value);
closeFunc();
}
}
async function handleCreateFlow(processId) {
var querys = {
schemeCode: flowCode.value,
userId: formData.userId,
title: formData.title,
processId: processId,
};
const draft = await saveDraft(querys);
if (draft) {
querys.schemeCode = '';
const data = await create(querys);
if (data) {
closeModal();
return createMessage.success('发起流程成功');
} else {
return createMessage.error('发起流程失败');
}
} else {
return createMessage.error('保存草稿失败');
}
}
//
async function codeClickFunction(code, codeClick) {
try {
if (codeClick) {
// utils
const { utils } = await import('./utils');
let callModalData = {
formModalVisible: formModalVisible,
isUpdate: isUpdate,
isDetail: isDetail,
getTitle: getTitle,
primaryQuery: primaryQuery,
addQuery: addQuery,
formColumns: formColumns,
tabsColumns: tabsColumns,
flowCode: flowCode,
formData: formData,
subTableId: subTableId,
subTableColumns: subTableColumns,
subTableData: subTableData,
subTableList: subTableList,
scrollValue: scrollValue,
cardLayout: cardLayout,
createOrModifyList: createOrModifyList,
buttonLayout: buttonLayout,
record: isUpdate.value ? getFieldsValue() : {},
cardValues: cardValues,
};
utils.setCallModalData(callModalData);
eval(codeClick);
}
} catch (e) {
switch (code) {
case 'codeClick':
createMessage.success('【按钮组件脚本】错误:' + e);
break;
case 'beforeSetData':
createMessage.success('【添加赋值前脚本】错误:' + e);
break;
case 'afterValidateForm':
createMessage.success('【添加校验后脚本】错误:' + e);
break;
case 'afterSaveEvent':
createMessage.success('【添加保存后脚本】错误:' + e);
break;
case 'changeDataEvent':
createMessage.success('【添加数据改变脚本】错误:' + e);
break;
default:
createMessage.success('【未知脚本】错误:' + e);
break;
}
}
}
const closeFunc = () => {
buttonLayout.value = [];
// cardLayout.value = [];
createOrModifyList.value = [];
return true;
};
const handlerCloseForm = ()=>{
emit("clsoeMapForm")
}
onMounted(()=>{
console.log("props.data",props.data);
if(props.data){
initForm(props.data);
}
})
</script>
<style type="less" scoped>
.map-form{
width:100%;
height:100%;
padding:20px 30px;
}
.map-form-header{
padding:20px 0px;
border-bottom:1px solid #efefef;
margin-bottom:20px;
}
.map-form-close{
float:right;
}
.map-form-close:hover{
color:#aaa;
}
</style>

View File

@ -151,6 +151,7 @@
onMounted(() => {
const data = props.showFormModalData;
console.log("showFormModalData",props.showFormModalData)
isUpdate.value = !!data?.isUpdate;
isDetail.value = !!data?.isDetail;
data.tab.forEach((item) => {

View File

@ -30,7 +30,7 @@
</template>
</BasicTable>
<ShowFormModal
<!-- <ShowFormModal
v-if="openShowFormModal"
:showFormModalData="showFormModalData"
:mapgemoList="mapgemoList"
@ -42,7 +42,10 @@
@setSelectedSubTableDataId="setSelectedSubTableDataId"
@closeShowFormModal="closeShowFormModal"
@success="submitsuccess"
/>
/> -->
<div class="map-form-container" v-if="mapFormShow">
<MapFormModal v-if="mapFormShow" @clsoeMapForm="clsoeMapForm" :data="mapFormData"/>
</div>
</div>
<div
v-if="haveMap"
@ -59,12 +62,14 @@
/>
</div>
</div>
<CallModal @success="submitsuccess" @register="registerModal" />
<a-modal
width="100%"
wrap-class-name="full-modal"
v-model:open="previewOpen"
title="11"
title="表单"
:destroyOnClose="true"
>
<template #footer> </template>
@ -97,13 +102,15 @@
import { useModal } from '@/components/Modal';
import { useMessage } from '@/hooks/web/useMessage';
import CallModal from './CallModal.vue';
import MapFormModal from './MapForm.vue';
import CreateFlow from './CreateFlow.vue';
// import MapboxMap from '@/components/MapboxMaps/MapComponent.vue'
import ShowFormModal from './ShowFormModal/index.vue';
import { v4 as uuidv4 } from 'uuid';
import { changeCardStructure, cardNestStructure } from '@/views/demo/onlineform/util.ts';
const MapboxMap = defineAsyncComponent(() => import('@/components/MapboxMaps/MapComponent.vue'));
const mapFormShow = ref<boolean>(false)
const mapFormData = ref<Object>({})
const { createConfirm, createMessage } = useMessage();
const route = useRoute();
const btnArr: any = [
@ -248,6 +255,9 @@
];
}
const [registerModal, { openModal }] = useModal();
const [registerMapFormModal,{ openModal:openMapFormModal }] = useModal();
const [registerTable, { reload, setColumns, getSelectRows, clearSelectedRowKeys }] = useTable({
title: '表单列表',
api: getFormsPageData,
@ -405,7 +415,6 @@
// key: 'f_id',
keyValue: null,
});
console.log('addParamsArr', addParamsArr);
const str: any = ref(addParamsArr.value[0].field);
// const str: any = ref('_input_guid_43');
addParamsArr.value.forEach((item) => {
@ -440,8 +449,9 @@
changeDataEvent: config.changeDataEvent,
};
if (haveMap.value) {
showFormModalData.value = toProps;
openShowFormModal.value = true;
// showFormModalData.value = toProps;
// openShowFormModal.value = true;
openModal(true,toProps);
mapgemoList.value = [];
mapSetData.value.isAllowAddPolygon && MapboxComponent.value.handlerDraw(status);
} else {
@ -482,8 +492,11 @@
infoUseSubTableData: infoUseSubTableData.value,
};
if (haveMap.value) {
showFormModalData.value = toProps;
openShowFormModal.value = true;
// showFormModalData.value = toProps;
// openShowFormModal.value = true;
// openMapFormModal(true,toProps);
mapFormShow.value = true;
mapFormData.value = toProps;
MapboxComponent.value.handlerDraw(
status,
mapgemoList.value,
@ -525,7 +538,6 @@
if (rows.length == 0) {
return createMessage.warn('请选择一条数据查看详情');
}
console.log("DetailsRow",formConfig,rows);
let toProps = {
isDetail: true,
isUpdate: false,
@ -538,11 +550,12 @@
infoUseSubTableData: infoUseSubTableData.value,
};
if (haveMap.value) {
showFormModalData.value = toProps;
openShowFormModal.value = true;
mapFormShow.value = true;
mapFormData.value = toProps;
// openMapFormModal(true,toProps);
// showFormModalData.value = toProps;
// openShowFormModal.value = true;
// ids
try{
console.log("formConfig",formConfig);
handlerShowGeomtrys(formConfig,rows[0])
@ -563,6 +576,7 @@
};
const chooseLayer = ref<string>("")
const geomfield = ref<string>("");
function findValue(obj, targetKey) {
for (var key in obj) {
if (typeof obj[key] === 'object') {
@ -573,7 +587,6 @@
}
} else if (key === targetKey && obj[key] == 'MapGeom') {
//
console.log("遍历::",obj['mapSetData'],obj['field'])
chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field']
return obj[key];
@ -587,7 +600,6 @@
let info = currentNode.value.schemas?.find((item,index)=>{
return item.component.match(/mapgeom/i)
})
// console.log("info",info);
let layer:string=chooseLayer.value;
// // let layer:string="drone_shp_data";
// if(info){
@ -613,7 +625,7 @@
limit:999,
key:null,
}
getGeom(getGeomPrams).then(res=>{
await getGeom(getGeomPrams).then(res=>{
let geoms = [];
if(res){
if(res.items?.length>0){
@ -818,9 +830,7 @@
};
})
: [];
formData.value = [...subTableData];
infoUseSubTableData.value = res[childTableName]
? res[childTableName].map((item) => {
return {
@ -829,14 +839,10 @@
};
})
: [];
res[mainTableName].forEach((item) => {
infoUseMainTableData.value = { ...infoUseMainTableData.value, ...item };
});
mapgemoList.value = formData.value;
console.log('formData333', formData);
})
.catch((err) => {
console.log('err', err);
@ -897,6 +903,10 @@
if (status == 'Delete') {
}
};
const clsoeMapForm = ()=>{
mapFormShow.value = false;
}
</script>
<style lang="less">
.full-modal {
@ -928,4 +938,14 @@
background-color: #fff;
z-index: 1;
}
.map-form-container{
width:100%;
height:100%;
position:absolute;
top:0px;
left:0px;
background:#fff;
z-index:999;
}
</style>

View File

@ -761,21 +761,43 @@
}
}
const chooseLayer = ref<string>("")
const geomfield = ref<string>("");
function findValue(obj, targetKey) {
for (var key in obj) {
if (typeof obj[key] === 'object') {
// findValue
var result = findValue(obj[key], targetKey);
if (result !== undefined && result == 'MapGeom') {
return result;
}
} else if (key === targetKey && obj[key] == 'MapGeom') {
//
chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field']
return obj[key];
}
}
}
async function handlerShowGeomtrys(currentNode) {
findValue(currentNode.value.schemas,"component")
let info = currentNode.authFields?.find((item, index) => {
return item.component == 'MapGeom';
});
let layer: string = '';
let layer: string = chooseLayer.value;
// let layer:string="drone_shp_data";
if (info) {
layer = info?.mapSetData?.chooseLayer;
}
// if (info) {
// layer = info?.mapSetData?.chooseLayer;
// }
if (!layer) {
createMessage.error('图斑未绑定图层服务!');
return;
}
let geomfiledValue = info.field.toLowerCase();
let geomfiledValue = geomfield.value;
let gids = '';

View File

@ -406,21 +406,44 @@
// function closePage() {
// tabStore.closeTabByKey('/dashboard/task_look_preview/detail?processId=' + processId, router);
// }
//
const chooseLayer = ref<string>("")
const geomfield = ref<string>("");
function findValue(obj, targetKey) {
for (var key in obj) {
if (typeof obj[key] === 'object') {
// findValue
var result = findValue(obj[key], targetKey);
if (result !== undefined && result == 'MapGeom') {
return result;
}
} else if (key === targetKey && obj[key] == 'MapGeom') {
//
chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field']
return obj[key];
}
}
}
async function handlerShowGeomtrys(currentNode) {
findValue(currentNode.value.schemas,"component")
let info = currentNode.authFields?.find((item, index) => {
return item.component == 'MapGeom';
});
let layer: string = '';
let layer: string = chooseLayer.value;
// let layer:string="drone_shp_data";
if (info) {
layer = info?.mapSetData?.chooseLayer;
}
// if (info) {
// layer = info?.mapSetData?.chooseLayer;
// }
if (!layer) {
createMessage.error('图斑未绑定图层服务!');
return;
}
let geomfiledValue = info.field.toLowerCase();
let geomfiledValue = geomfield.value;
let gids = '';