Compare commits

...

10 Commits

14 changed files with 1134 additions and 177 deletions

View File

@ -261,8 +261,8 @@ export function AddTable(params) {
// 创建字段
export function AddColumn(params) {
return defHttp.post({
url: Api.AddColumn,
params,
url: Api.AddColumn + '?dbCode=' + params.dbCode,
params: params.dbColumn,
});
}

View File

@ -156,7 +156,7 @@
});
nextTick(() => {
if (Object.keys(subTableDataStore.getGroupData).includes(tableData.field)) {
noTitleKey.value = subTableDataStore.getGroupData[tableData.field].toString();
noTitleKey.value = subTableDataStore.getGroupData[tableData.field];
if (tableData.ifShow) {
onTabChange({ target: { value: noTitleKey.value } }, tableData.field);
}

View File

@ -140,7 +140,7 @@
<a-textarea v-model:value="formContent" :rows="29" />
</div>
<div class="w-1/2 xl:w-1/2" style="overflow: auto; height: calc(100%)">
<a-alert message="脚本参数说明,只支持ES5语法兼容小程序" type="warning">
<a-alert message="脚本参数说明" type="warning">
<template #description>
<div v-html="description"></div>
</template>

View File

@ -7,6 +7,7 @@
:deep(.list-main) {
position: relative;
padding: 5px;
margin: 3px;
overflow: hidden;
border-radius: 4px;
@ -34,7 +35,8 @@
box-sizing: border-box;
min-height: 60px;
padding: 8px;
margin: 5px;
margin: 3px;
overflow: hidden;
transition: all 0.3s;
border-radius: 3px;
@ -137,7 +139,7 @@
box-sizing: border-box;
width: 100%;
padding: 5px;
margin: 5px;
margin: 3px;
overflow: hidden;
transition: all 0.3s;
background-color: @layout-background-color;

View File

@ -10,6 +10,7 @@
@ok="ModalSureClick"
width="80%"
:closeFunc="closeFunc"
:destroyOnClose="true"
>
<template v-if="tabsColumns.length > 1">
<a-tabs style="width: 100%" @change="tabsChange">

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="流程发起"
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,
@ -266,13 +276,10 @@
showTableSetting: true,
bordered: true,
beforeFetch: (data) => {
console.log('item.key', data);
//
const querys = JSON.parse(JSON.stringify(data));
console.log('1111', querys);
delete querys.page;
delete querys.limit;
console.log('querys', querys);
var temp = {
id: paramsId.value,
mid: codeId.value,
@ -405,8 +412,7 @@
// key: 'f_id',
keyValue: null,
});
console.log('addParamsArr', addParamsArr);
const str: any = ref(addParamsArr.value[0].field);
const str: any = ref();
// const str: any = ref('_input_guid_43');
addParamsArr.value.forEach((item) => {
if (item.type == 'main') {
@ -440,8 +446,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 +489,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 +535,6 @@
if (rows.length == 0) {
return createMessage.warn('请选择一条数据查看详情');
}
console.log("DetailsRow",formConfig,rows);
let toProps = {
isDetail: true,
isUpdate: false,
@ -538,16 +547,17 @@
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])
}catch(e){
createMessage.error("当前数据没有图斑!");
try {
console.log('formConfig', formConfig);
handlerShowGeomtrys(formConfig, rows[0]);
} catch (e) {
createMessage.error('当前数据没有图斑!');
}
} else {
openModal(true, toProps);
@ -561,83 +571,82 @@
break;
}
};
const chooseLayer = ref<string>("")
const geomfield = ref<string>("");
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') {
//
console.log("遍历::",obj['mapSetData'],obj['field'])
chooseLayer.value = obj['mapSetData'].chooseLayer;
geomfield.value = obj['field']
return obj[key];
}
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,rows){
findValue(currentNode.value.schemas,"component")
let info = currentNode.value.schemas?.find((item,index)=>{
return item.component.match(/mapgeom/i)
})
// console.log("info",info);
let layer:string=chooseLayer.value;
async function handlerShowGeomtrys(currentNode, rows) {
findValue(currentNode.value.schemas, 'component');
let info = currentNode.value.schemas?.find((item, index) => {
return item.component.match(/mapgeom/i);
});
let layer: string = chooseLayer.value;
// // let layer:string="drone_shp_data";
// if(info){
// layer = info?.mapSetData?.chooseLayer
// }
if(!layer){
createMessage.error("图斑未绑定图层服务!");
if (!layer) {
createMessage.error('图斑未绑定图层服务!');
return;
}
let geomfiledValue = geomfield.value;
let gids = "";
let gids = '';
try {
// geomfiledValue = geomfiledValue.charAt(0).toLowerCase();
geomfiledValue = geomfiledValue.charAt(0).toLowerCase() + geomfiledValue.slice(1);
gids = rows[geomfiledValue]
if(gids){
try{
let getGeomPrams = {
TableName:layer,
FieldName:"gid",
FieldValue:gids,
page:1,
limit:999,
key:null,
}
getGeom(getGeomPrams).then(res=>{
let geoms = [];
if(res){
if(res.items?.length>0){
res.items.forEach((item,index)=>{
let geom = {
key:item.gid,
mapgeom:item.geometry
}
geoms.push(geom);
})
}
MapboxComponent.value.handlerDraw("Details",geoms, false)
}else{
createMessage.error("当前数据没有图斑!");
gids = rows[geomfiledValue];
if (gids) {
try {
let getGeomPrams = {
TableName: layer,
FieldName: 'gid',
FieldValue: gids,
page: 1,
limit: 999,
key: null,
};
await getGeom(getGeomPrams).then((res) => {
let geoms = [];
if (res) {
if (res.items?.length > 0) {
res.items.forEach((item, index) => {
let geom = {
key: item.gid,
mapgeom: item.geometry,
};
geoms.push(geom);
});
}
})
}catch(e){
createMessage.error("当前数据没有图斑!");
}
}else{
createMessage.error("当前数据没有图斑!");
MapboxComponent.value.handlerDraw('Details', geoms, false);
} else {
createMessage.error('当前数据没有图斑!');
}
});
} catch (e) {
createMessage.error('当前数据没有图斑!');
}
}catch{
createMessage.error("获取图斑数据失败!");
} else {
createMessage.error('当前数据没有图斑!');
}
} catch {
createMessage.error('获取图斑数据失败!');
}
}
@ -818,9 +827,7 @@
};
})
: [];
formData.value = [...subTableData];
infoUseSubTableData.value = res[childTableName]
? res[childTableName].map((item) => {
return {
@ -829,14 +836,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 +900,10 @@
if (status == 'Delete') {
}
};
const clsoeMapForm = () => {
mapFormShow.value = false;
};
</script>
<style lang="less">
.full-modal {
@ -928,4 +935,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

@ -208,7 +208,7 @@
},
});
}
// -
// - @\views\demo\onlineform\formdesign\modal\HistoryModal.vue:107
async function handlePreview(record) {
// 使IDinfoscheme
const preview = await functionGetForm({ id: record.id });

View File

@ -61,17 +61,22 @@
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'dbColumnName'">
<div>
<a-input v-model:value="record.dbColumnName" :disabled="!isNewFormItem(record)" />
<a-input
v-model:value="record.dbColumnName"
:disabled="!isNewFormItem(record)"
@change="record.dbColumnName = record.dbColumnName.toLowerCase()"
/>
</div>
</template>
<template v-if="column.key === 'length'">
<div>
<a-input
<a-input-number
v-model:value="record.length"
defaultValue="200"
:disabled="
!isNewFormItem(record) || (record.length == 0 && record.dataType == 'bool')
"
@change="if (!record.length) record.length = 0;"
/>
</div>
</template>
@ -89,6 +94,14 @@
/>
</div>
</template>
<template v-if="column.key === 'columnDescription'">
<div>
<a-input
v-model:value="record.columnDescription"
:disabled="!isNewFormItem(record)"
/>
</div>
</template>
</template>
</BasicTable>
</CollapseContainer>
@ -119,17 +132,22 @@
let saveFormDatas: any;
// -
let tableInfo: any = {
dbCode: '',
type: '',
name: '',
tableName: '',
description: '',
type: '',
dbCode: '',
dbColumnInfoList: [],
};
//
let db_list: any = ref([]);
//
let primaryKey = '';
// dbCode
let forminfoDbCode = '';
// db
let oldDb: any = [];
//
let dbColumnInfo = {
tableName: '',
@ -165,6 +183,7 @@
let result_json = JSON.parse(result.scheme.scheme);
let data_json = JSON.parse(data.saveFormDatas.scheme.scheme);
data_json.db = result_json.db;
// db
oldDb = result_json.db;
data.saveFormDatas.scheme.scheme = JSON.stringify(data_json);
}
@ -173,9 +192,12 @@
console.log(160, scheme);
//
db_list.value = [];
// dbCode
forminfoDbCode = data.saveFormDatas.info.DbCode;
//
scheme = getSchemeByscheme(
scheme,
data.saveFormDatas.info.DbCode,
forminfoDbCode,
'main',
scheme.db,
scheme.db[0].tableName,
@ -183,11 +205,10 @@
'main',
cloneDeep(tableInfo),
);
// dbdb
// dbdb
if (!props.isAddVisible) {
changeOldDb();
replaceOldDb();
}
saveFormDatas = data.saveFormDatas;
saveFormDatas.scheme.scheme = JSON.stringify(scheme);
});
@ -355,8 +376,8 @@
//
else {
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = ch.component + ch.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (ch.component + ch.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = ch.label;
@ -369,7 +390,7 @@
temp.isPrimarykey = 1;
}
// componentProps
ch.componentProps.dataTable = db_temp.tableName;
ch.componentProps.dataTable = temp.tableName;
ch.componentProps.fieldName = temp.dbColumnName;
db_temp.dbColumnInfoList.push(temp);
@ -388,8 +409,8 @@
} else {
//
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = item.component + item.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (item.component + item.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = item.label;
@ -402,8 +423,9 @@
temp.isPrimarykey = 1;
}
// componentProps
item.componentProps.dataTable = db_temp.tableName;
item.componentProps.dataTable = temp.tableName;
item.componentProps.fieldName = temp.dbColumnName;
item.csType = 'string';
//
let gridFlag = true;
@ -417,7 +439,6 @@
}
}
}
item.csType = 'string';
schemas[index] = item;
});
if (gridType == 'main') {
@ -519,13 +540,13 @@
// -
else {
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = ch.component + ch.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (ch.component + ch.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = ch.label;
// componentProps
ch.componentProps.dataTable = db_temp.tableName;
ch.componentProps.dataTable = temp.tableName;
ch.componentProps.fieldName = temp.dbColumnName;
db_temp.dbColumnInfoList.push(temp);
@ -567,13 +588,13 @@
// -
else {
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = ch.component + ch.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (ch.component + ch.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = ch.label;
// componentProps
ch.componentProps.dataTable = db_temp.tableName;
ch.componentProps.dataTable = temp.tableName;
ch.componentProps.fieldName = temp.dbColumnName;
db_temp.dbColumnInfoList.push(temp);
}
@ -614,13 +635,13 @@
// -
else {
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = ch.component + ch.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (ch.component + ch.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = ch.label;
// componentProps
ch.componentProps.dataTable = db_temp.tableName;
ch.componentProps.dataTable = temp.tableName;
ch.componentProps.fieldName = temp.dbColumnName;
db_temp.dbColumnInfoList.push(temp);
}
@ -663,14 +684,15 @@
// -
else {
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = ch.component + ch.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (ch.component + ch.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = ch.label;
// componentProps
ch.componentProps.dataTable = db_temp.tableName;
ch.componentProps.dataTable = temp.tableName;
ch.componentProps.fieldName = temp.dbColumnName;
db_temp.dbColumnInfoList.push(temp);
}
});
@ -680,18 +702,19 @@
// -
else {
let temp = cloneDeep(dbColumnInfo);
temp.tableName = db_temp.tableName;
temp.dbColumnName = item.component + item.field;
temp.tableName = db_temp.tableName.toLowerCase();
temp.dbColumnName = (item.component + item.field).toLowerCase();
temp.length = 200;
temp.dataType = 'varchar';
temp.columnDescription = item.label;
// componentProps
item.componentProps.dataTable = db_temp.tableName;
item.componentProps.dataTable = temp.tableName;
item.componentProps.fieldName = temp.dbColumnName;
item.csType = 'string';
db_temp.dbColumnInfoList.push(temp);
}
}
item.csType = 'csType';
schemas[index] = item;
});
if (gridType == 'chlid') {
@ -716,10 +739,11 @@
return scheme;
}
// dbdb
function changeOldDb() {
// dbdb
function replaceOldDb() {
// db
let oldTableNameArray = oldDb.map((old) => old.tableName);
// db
db_list.value.forEach((db, db_index) => {
//
if (oldTableNameArray.includes(db.tableName)) {
@ -730,7 +754,7 @@
db.dbColumnInfoList?.forEach((dbColumn, dbColumn_index) => {
oldTable.dbColumnInfoList?.forEach((oldDbColumn) => {
if (dbColumn.dbColumnName == oldDbColumn.dbColumnName) {
// varchar
// varchar
db_list.value[db_index].dbColumnInfoList[dbColumn_index] = oldDbColumn;
}
});
@ -741,7 +765,7 @@
//
async function submit() {
//
//
let results = checkTablesAndWarn();
const checkflag = (await results).some(Boolean);
if (checkflag) {
@ -770,7 +794,12 @@
let oldDbColumnArray = old.dbColumnInfoList.map((o) => o.dbColumnName);
db.dbColumnInfoList.forEach(async (dbColumn) => {
if (!oldDbColumnArray.includes(dbColumn.dbColumnName)) {
await AddColumn(dbColumn);
dbColumn.isNullable = 1;
let query: any = {
dbCode: forminfoDbCode,
dbColumn: dbColumn,
};
await AddColumn(query);
}
});
}
@ -785,15 +814,67 @@
//
async function checkTablesAndWarn() {
const promises = db_list.value.map(async (db) => {
let flag = false;
if (isNewTable(db)) {
//
db.tableName = db.tableName.trim();
//
if (!db.tableName) {
createMessage.warn('表名是必填项!');
flag = true;
}
//
if (db.tableName && !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(db.tableName)) {
createMessage.warn('表名不符合数据库表名的命名规则!');
flag = true;
}
//
let query: any = { tableName: db.tableName };
let res = await CheckTableExist(query);
if (res) {
createMessage.warn('数据库已有表' + db.tableName);
return true;
flag = true;
}
if (!flag) {
let dbColumns: any = [];
//
db.dbColumnInfoList.forEach((dbColumn) => {
//
dbColumn.dbColumnName = dbColumn.dbColumnName.trim();
//
if (!dbColumn.dbColumnName) {
createMessage.warn('字段名不能为空!');
flag = true;
}
// !
if (dbColumn.dbColumnName && /[\u4e00-\u9fa5]/.test(dbColumn.dbColumnName)) {
createMessage.warn('字段名中不能含有中文!');
flag = true;
}
//
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(dbColumn.dbColumnName)) {
createMessage.warn('字段名不符合数据库字段名的命名规则!');
flag = true;
}
//
if (!dbColumns.includes(dbColumn.dbColumnName)) {
dbColumns.push(dbColumn.dbColumnName);
} else {
createMessage.warn('字段名不能重复!');
flag = true;
}
});
}
}
return false;
return flag;
});
const results = await Promise.all(promises);
@ -844,13 +925,18 @@
//
function changeTableName(db) {
let scheme_replace = JSON.stringify(saveFormDatas.scheme.scheme);
scheme_replace = scheme_replace.replace(db.name, db.tableName);
saveFormDatas.scheme.scheme = JSON.parse(scheme_replace);
db.name = db.tableName;
db.dbColumnInfoList?.forEach((d) => {
d.tableName = db.tableName;
});
if (db.tableName) {
//
db.tableName = db.tableName.toLowerCase();
let scheme_replace = JSON.stringify(saveFormDatas.scheme.scheme);
scheme_replace = scheme_replace.replace(db.name, db.tableName);
saveFormDatas.scheme.scheme = JSON.parse(scheme_replace);
db.name = db.tableName;
db.dbColumnInfoList?.forEach((d) => {
d.tableName = db.tableName;
});
}
}
//

View File

@ -48,6 +48,7 @@
import { getHistoryColumns } from './modelData';
import { functionGetSchemePageList, functionUpdateScheme } from '@/api/demo/formScheme';
import { cardNestStructure } from '@/views/demo/onlineform/util.ts';
const searchInfo = reactive<Recordable>({});
// 使schemeId
@ -103,10 +104,28 @@
reload();
}
// -
// - @\views\demo\onlineform\formdesign\index.vue:211
function fromTablePreviewModal(record, Modal: IToolbarMethods) {
let scheme = JSON.parse(record.scheme);
formConfig.value.schemas = scheme.formInfo.schemas;
scheme.formInfo.tabList = cardNestStructure(scheme.formInfo.tabList)
if(scheme.formInfo.tabList.length > 1){
let data = [{
component: 'Tabs',
componentProps: {
options: []
}
}]
data[0].componentProps.options = scheme.formInfo.tabList.map((item, index) => {
return {
label: item.text,
value: index,
children: item.schemas
}
})
formConfig.value.schemas = data
}else{
formConfig.value.schemas = scheme.formInfo.tabList[0].schemas;
}
Modal?.showModal(cloneDeep(formConfig.value));
}
</script>

View File

@ -303,19 +303,23 @@
formBoxRef.value
.getForm()
.then(async (res) => {
res[designerData.formCurrentNode.formRelationId] = processId;
for (var item in res) {
if (res[item] == undefined) {
res[item] = '';
if (item.search('_input_guid') != -1) {
res[item] = buildGUID();
if (!res) {
createMessage.error('请检查表单必填项');
} else {
res[designerData.formCurrentNode.formRelationId] = processId;
for (var item in res) {
if (res[item] == undefined) {
res[item] = '';
if (item.search('_input_guid') != -1) {
res[item] = buildGUID();
}
}
}
}
querys.data = JSON.stringify(res);
const formValue = await functionsaveForm(querys);
if (formValue) {
handleCreateFlow(processId);
querys.data = JSON.stringify(res);
const formValue = await functionsaveForm(querys);
if (formValue) {
handleCreateFlow(processId);
}
}
})
.catch((error) => {

View File

@ -605,19 +605,24 @@
formBoxRef.value
.getForm()
.then(async (res) => {
res[designerData.formCurrentNode.formRelationId] = instanceInfo.pkeyValue;
for (var item in res) {
if (res[item] == undefined) {
res[item] = '';
if (item.search('_input_guid') != -1) {
res[item] = buildGUID();
console.log(res);
if (!res) {
createMessage.error('请检查表单必填项');
} else {
res[designerData.formCurrentNode.formRelationId] = instanceInfo.pkeyValue;
for (var item in res) {
if (res[item] == undefined) {
res[item] = '';
if (item.search('_input_guid') != -1) {
res[item] = buildGUID();
}
}
}
}
querys.data = JSON.stringify(res);
const formValue = await functionsaveForm(querys);
if (formValue) {
handleSubmit(btn);
querys.data = JSON.stringify(res);
const formValue = await functionsaveForm(querys);
if (formValue) {
handleSubmit(btn);
}
}
})
.catch((error) => {
@ -753,21 +758,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 = '';