diff --git a/src/api/demo/formScheme.ts b/src/api/demo/formScheme.ts index bbc79cc5..2da927a1 100644 --- a/src/api/demo/formScheme.ts +++ b/src/api/demo/formScheme.ts @@ -251,17 +251,6 @@ export function LoadFormScheme(params) { } function getColumnInfoList(params) { - params.dbColumnInfoList.push({ - tableName: params.tableName, - dbColumnName: 'id', - dataType: 'varchar', - length: 200, - columnDescription: '主键ID', - isNullable: 0, - isIdentity: 0, - isPrimarykey: 1, - decimalDigits: 0, - }); params.dbColumnInfoList.push({ tableName: params.tableName, dbColumnName: 'geom', diff --git a/src/components/Form/src/componentMap.ts b/src/components/Form/src/componentMap.ts index 82c261e8..ea4e8474 100644 --- a/src/components/Form/src/componentMap.ts +++ b/src/components/Form/src/componentMap.ts @@ -20,7 +20,6 @@ import { TimePicker, TreeSelect, Transfer, - Card, } from 'ant-design-vue'; import ApiRadioGroup from './components/ApiRadioGroup.vue'; import RadioButtonGroup from './components/RadioButtonGroup.vue'; @@ -36,8 +35,6 @@ import { IconPicker } from '@/components/Icon'; import { CountdownInput } from '@/components/CountDown'; import { BasicTitle } from '@/components/Basic'; import { CropperAvatar } from '@/components/Cropper'; -import CreateOrModifyUser from './components/CreateOrModifyUser.vue' -import CreateOrModifyTime from './components/CreateOrModifyTime.vue' const componentMap = new Map(); @@ -85,11 +82,6 @@ componentMap.set('Divider', Divider); componentMap.set('CropperAvatar', CropperAvatar); componentMap.set('BasicTitle', BasicTitle); -componentMap.set('Card', Card); -componentMap.set('CreateUser', CreateOrModifyUser); -componentMap.set('ModifyUser', CreateOrModifyUser); -componentMap.set('CreateTime', CreateOrModifyTime); -componentMap.set('ModifyTime', CreateOrModifyTime); export function add( compName: ComponentType | T, diff --git a/src/components/Form/src/components/CreateOrModifyTime.vue b/src/components/Form/src/components/CreateOrModifyTime.vue deleted file mode 100644 index cc131dea..00000000 --- a/src/components/Form/src/components/CreateOrModifyTime.vue +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/src/components/Form/src/components/CreateOrModifyUser.vue b/src/components/Form/src/components/CreateOrModifyUser.vue deleted file mode 100644 index 03486ba3..00000000 --- a/src/components/Form/src/components/CreateOrModifyUser.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - diff --git a/src/components/FormViewer/index.vue b/src/components/FormViewer/index.vue index 0fd60419..07a2a8fc 100644 --- a/src/components/FormViewer/index.vue +++ b/src/components/FormViewer/index.vue @@ -1,6 +1,42 @@ + + @@ -36,9 +76,11 @@ import { functionGetFormDataFormScheme, LoadFormScheme } from '@/api/demo/formScheme'; import { PlusOutlined, DeleteOutlined } from '@ant-design/icons-vue'; import FormItem from '@/views/demo/onlineform/formCall/ShowFormModal/FormItem/index.vue'; + import CallModalCardFormItem from '@/views/demo/onlineform/formCall/CallModalFormItem/index.vue'; + import CreateOrModifyComponent from '@/views/demo/onlineform/formCall/CreateOrModifyComponent/index.vue'; import { v4 as uuidv4 } from 'uuid'; - const formColumns: FormSchema[] = []; + let formColumns: FormSchema[] = []; const props = defineProps({ formConfig: Object, processId: String, @@ -61,66 +103,156 @@ const subTableList: any = ref([]); const scrollValue = ref(); const masterData = ref([]); - props.formConfig.forEach((element) => { - console.log(element); - if (element.disabled == false) { - var obj = { - ...element.componentProps, - disabled: false, - }; - obj.disabled = true; - element.componentProps = obj; - } - if (element.rules !== undefined) { - let myString = element.rules[0].pattern; - const lastCharacter = myString.charAt(myString.length - 1); - if (lastCharacter === 'i' || lastCharacter === 's') { - element.rules[0].pattern = new RegExp(element.rules[0].pattern.slice(1, -2), lastCharacter); - } else { - element.rules[0].pattern = new RegExp(element.rules[0].pattern.slice(1, -1)); - } - } - formColumns.push(element); - - if (element.type === 'childData' && element.ifShow) { - subTableId.value = element.gridprop; - subTableColumns.value.push({ - key: element.field, - title: element.label, - dataIndex: element.field, - ...element, - width: 120, - }); - subTableData.value.push(element); - } else if (!element.type && element.ifShow) { - masterData.value.push(element); - } - }); - console.log(subTableColumns.value); - scrollValue.value = { x: (subTableColumns.value.length - 1) * 140, y: 400 }; - formColumns.value = props.formConfig; - const [registerForm, { getFieldsValue, setFieldsValue, resetFields, validate }] = useForm({ - labelWidth: 100, - schemas: masterData.value, - showActionButtonGroup: false, - baseColProps: { lg: 24, md: 24 }, - }); + const subTableDB = ref([]); + const cardLayout = ref([]); + const cardLayoutData = ref([]); + const createOrModifyList = ref([]); + const formModalVisible = ref(false); + const tabsColumns: any = ref([]); const keyValue = ref(''); + const FieldsValue = ref({}); async function getFormHistory() { const data = await LoadFormScheme({ schemeId: props.formVerison, }); if (data) { const scheme = JSON.parse(data.scheme); - scheme.formInfo.schemas.forEach((element) => { - if (element.field == props.formRelationId) { - keyValue.value = element.componentProps.fieldName; - getFormDetail(); + console.log(scheme); + console.log(props.formConfig); + subTableDB.value = scheme.db; + scheme.formInfo.tabList.forEach((tabElement, index) => { + tabElement.schemas.forEach((element) => { + if (element.field == props.formRelationId) { + keyValue.value = element.componentProps.fieldName; + getFormDetail(); + } + //流程设置的表单显示和编辑与表单做关联 + props.formConfig.forEach((configElement) => { + if (configElement.field == element.field) { + element.componentProps.disabled = !configElement.disabled; + element.ifShow = configElement.ifShow; + } + if (element.columns) { + element.columns.forEach((child) => { + child.children.forEach((t) => { + if (configElement.field == t.field) { + t.componentProps.disabled = !configElement.disabled; + t.ifShow = configElement.ifShow; + } + }); + }); + } + }); + // 验证规则 + if (element.rules !== undefined) { + let myString = element.rules[0].pattern; + const lastCharacter = myString.charAt(myString.length - 1); + if (lastCharacter === 'i' || lastCharacter === 's') { + element.rules[0].pattern = new RegExp( + element.rules[0].pattern.slice(1, -2), + lastCharacter, + ); + } else { + element.rules[0].pattern = new RegExp(element.rules[0].pattern.slice(1, -1)); + } + } + // 卡片布局 + if (element.component === 'Card') { + cardLayout.value.push(element); + let obj = {}; + element.columns[0].children.forEach((data) => { + obj[data.field] = ''; + }); + cardLayoutData.value[element.field] = obj; + } + if (['createuser', 'createtime', 'modifyuser', 'modifytime'].includes(element.type)) { + createOrModifyList.value.push(element); + } + subTableColumns.value = [ + { + dataIndex: 'setting', + key: 'setting', + fixed: 'left', + width: 60, + }, + ]; + // 选项卡 + if (element.type === 'subTable') { + subTableId.value = element.field; + let tableData = []; + element.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; + } + formColumns.push({ + parentValue: index, + ...element, + show: index == 0 ? true : false, + }); + }); + // + if (tabElement.text != '') { + tabsColumns.value.push({ + label: tabElement.text, + value: index, + children: tabElement.schemas, + }); } }); + formModalVisible.value = true; + resetFields(); + scrollValue.value = { x: (subTableColumns.value.length - 1) * 140, y: 400 }; } } + async function tabsChange(e) { + formColumns.forEach((element) => { + element.show = false; + if (element.parentValue == e) { + element.show = true; + } + }); + // 切换时保存值 + const values = await validate(); + console.log(values); + console.log(Object.keys(FieldsValue.value)); + if (Object.keys(FieldsValue.value).length == 0) { + FieldsValue.value = values; + } + console.log(values); + console.log(FieldsValue.value); + for (const key in values) { + for (const fieKey in FieldsValue.value) { + if (key == fieKey) { + if (values[key] != undefined) { + FieldsValue.value[key] = values[key]; + } + } + } + } + setFieldsValue({ + ...FieldsValue.value, + }); + console.log(FieldsValue.value); + } + const [registerForm, { getFieldsValue, setFieldsValue, updateSchema, resetFields, validate }] = + useForm({ + labelWidth: 100, + schemas: formColumns, + showActionButtonGroup: false, + baseColProps: { lg: 24, md: 24 }, + }); async function getFormDetail() { var instance = JSON.parse(props.instanceInfo); const querys = { @@ -129,21 +261,50 @@ keyValue: instance.pkeyValue, }; const data = await functionGetFormDataFormScheme(querys); + console.log(data); let obj = new Object(); for (var i in data) { - for (var j in data[i]) { - Object.assign(obj, data[i][j]); - } + subTableDB.value.forEach((element) => { + if (element.type == 'chlid') { + subTableList.value = data[i]; + } else { + for (var j in data[i]) { + Object.assign(obj, data[i][j]); + } + } + }); } + console.log(obj); + FieldsValue.value = obj; setFieldsValue({ ...obj, }); } async function getForm() { try { + console.log(getFieldsValue()); const values = await validate(); + console.log(values); + console.log(FieldsValue.value); + for (const key in values) { + for (const fieKey in FieldsValue.value) { + if (key == fieKey) { + if (values[key] != undefined) { + FieldsValue.value[key] = values[key]; + } + } + } + } + console.log(values); + console.log(FieldsValue.value); let saveSubTableList = []; - let query = values; + let query; + if (Object.keys(FieldsValue.value).length == 0) { + query = values; + } else { + query = FieldsValue.value; + } + console.log(query); subTableList.value.forEach((item) => { let emptyObj = {}; for (const key in item) { @@ -194,4 +355,8 @@ .my-process-designer { width: 100%; } + .my-form-viewer { + overflow: auto; + height: 70vh; + } diff --git a/src/components/ProcessDesigner/package/penal/startEvent/index.vue b/src/components/ProcessDesigner/package/penal/startEvent/index.vue index e90be0cf..3649f424 100644 --- a/src/components/ProcessDesigner/package/penal/startEvent/index.vue +++ b/src/components/ProcessDesigner/package/penal/startEvent/index.vue @@ -322,6 +322,8 @@ // 表单版本更改 async function custmerformVerisonChange(val, isChange) { let obj; + console.log(val); + console.log(data.formVerisons); data.formVerisons.forEach((element) => { if (element.id == val) { obj = element; @@ -331,76 +333,113 @@ } function loadFormScheme(strScheme, isChange) { const scheme = JSON.parse(strScheme); - console.log(scheme.formInfo.schemas) + console.log(scheme); const fields: any[] = []; const rfields: { label?: string; value?: string; }[] = []; - scheme.formInfo.schemas.forEach( - (element: { label?: string; field?: string; component: any; itemProps: any }) => { - console.log(element); - if (['InputGuid'].includes(element.component)) { - rfields.push({ - label: element.label, - // value:element.prop - value: element.field, - }); - } + scheme.formInfo.tabList.forEach((tabElement) => { + tabElement.schemas.forEach( + (element: { label?: string; field?: string; component: any; itemProps: any }) => { + console.log(element); + if (['InputGuid'].includes(element.component)) { + rfields.push({ + label: element.label, + // value:element.prop + value: element.field, + }); + } - if (!['Divider', 'Grid'].includes(element.component) && !element.itemProps.hidden) { - let obj: any = element; - obj.required = element.itemProps.required; - // obj.componentProps.disabled = false; - obj.disabled = true; - obj.ifShow = true; - obj.fieldName = element.componentProps.fieldName; - fields.push(obj); - } else if (['Grid'].includes(element.component) || element.type == 'subTable') { - console.log('gridtable'); - fields.push({ - field: `${element.field}_add`, - label: `${element.label || '表格'}-添加按钮`, - required: false, - disabled: true, - ifShow: false, - type: 'grid', - }); - fields.push({ - field: `${element.field}_remove`, - label: `${element.label || '表格'}-删除按钮`, - required: false, - disabled: true, - ifShow: false, - type: 'grid', - }); + if ( + ![ + 'Divider', + 'Grid', + 'Card', + 'CreateUser', + 'CreateTime', + 'ModifyUser', + 'ModifyTime', + ].includes(element.component) && + !element.itemProps.hidden + ) { + let obj: any = element; + obj.required = element.itemProps.required; + // obj.componentProps.disabled = false; + obj.disabled = true; + obj.ifShow = true; + obj.fieldName = element.componentProps.fieldName; + fields.push(obj); + } else if (['Grid'].includes(element.component) || element.type == 'subTable') { + console.log('gridtable'); + fields.push({ + field: `${element.field}_add`, + label: `${element.label || '表格'}-添加按钮`, + required: false, + disabled: true, + ifShow: false, + type: 'grid', + }); + fields.push({ + field: `${element.field}_remove`, + label: `${element.label || '表格'}-删除按钮`, + required: false, + disabled: true, + ifShow: false, + type: 'grid', + }); - fields.push({ - field: `${element.field}_required`, - label: `${element.label || '表格'}-数据`, - required: element.itemProps.required, - disabled: false, - ifShow: false, - type: 'gridrequired', - }); - element.columns.forEach((child) => { - child.children.forEach((t) => { - fields.push({ - type: 'childData', - gridprop: element.field, - field: t.field, - label: `${element.label || '表格'}-${t.label}`, - required: t.itemProps.required, - disabled: true, - ifShow: true, - fieldName: t.componentProps.fieldName, - ...t, + fields.push({ + field: `${element.field}_required`, + label: `${element.label || '表格'}-数据`, + required: element.itemProps.required, + disabled: false, + ifShow: false, + type: 'gridrequired', + }); + element.columns.forEach((child) => { + child.children.forEach((t) => { + fields.push({ + gridprop: element.field, + field: t.field, + label: `${element.label || '表格'}-${t.label}`, + required: t.itemProps.required, + disabled: true, + ifShow: true, + fieldName: t.componentProps.fieldName, + ...t, + }); }); }); - }); - } - }, - ); + } else if (['Card'].includes(element.component)) { + element.columns.forEach((child) => { + child.children.forEach((t) => { + fields.push({ + gridprop: element.field, + field: t.field, + required: t.itemProps.required, + disabled: true, + ifShow: true, + fieldName: t.componentProps.fieldName, + ...t, + }); + }); + }); + } else if ( + ['CreateUser', 'CreateTime', 'ModifyUser', 'ModifyTime'].includes(element.component) && + element.display + ) { + let obj: any = element; + obj.required = element.itemProps.required; + // obj.componentProps.disabled = false; + obj.disabled = true; + obj.ifShow = true; + obj.fieldName = element.componentProps.fieldName; + fields.push(obj); + } + }, + ); + }); console.log(fields); data.formRelations = rfields; if (isChange) { diff --git a/src/components/ProcessDesigner/package/penal/userTask/index.vue b/src/components/ProcessDesigner/package/penal/userTask/index.vue index 91e7009c..d787cf82 100644 --- a/src/components/ProcessDesigner/package/penal/userTask/index.vue +++ b/src/components/ProcessDesigner/package/penal/userTask/index.vue @@ -858,69 +858,107 @@ label?: string; value?: string; }[] = []; - scheme.formInfo.schemas.forEach( - (element: { label?: string; field?: string; component: any; itemProps: any }) => { - if (['InputGuid'].includes(element.component)) { - rfields.push({ - label: element.label, - // value:element.prop - value: element.field, - }); - } + scheme.formInfo.tabList.forEach((tabElement) => { + tabElement.schemas.forEach( + (element: { label?: string; field?: string; component: any; itemProps: any }) => { + if (['InputGuid'].includes(element.component)) { + rfields.push({ + label: element.label, + // value:element.prop + value: element.field, + }); + } - if (!['Divider', 'Grid'].includes(element.component) && !element.itemProps.hidden) { - let obj: any = element; - obj.required = element.itemProps.required; - // obj.componentProps.disabled = true; - obj.disabled = true; - obj.ifShow = true; - obj.fieldName = element.componentProps.fieldName; - fields.push(obj); - } else if (['Grid'].includes(element.component) || element.type == 'subTable') { - console.log('gridtable'); - fields.push({ - field: `${element.field}_add`, - label: `${element.label || '表格'}-添加按钮`, - required: false, - disabled: true, - ifShow: false, - type: 'grid', - }); - fields.push({ - field: `${element.field}_remove`, - label: `${element.label || '表格'}-删除按钮`, - required: false, - disabled: true, - ifShow: false, - type: 'grid', - }); + if ( + ![ + 'Divider', + 'Grid', + 'Card', + 'CreateUser', + 'CreateTime', + 'ModifyUser', + 'ModifyTime', + ].includes(element.component) && + !element.itemProps.hidden + ) { + let obj: any = element; + obj.required = element.itemProps.required; + // obj.componentProps.disabled = true; + obj.disabled = true; + obj.ifShow = true; + obj.fieldName = element.componentProps.fieldName; + fields.push(obj); + } else if (['Grid'].includes(element.component) || element.type == 'subTable') { + console.log('gridtable'); + fields.push({ + field: `${element.field}_add`, + label: `${element.label || '表格'}-添加按钮`, + required: false, + disabled: true, + ifShow: false, + type: 'grid', + }); + fields.push({ + field: `${element.field}_remove`, + label: `${element.label || '表格'}-删除按钮`, + required: false, + disabled: true, + ifShow: false, + type: 'grid', + }); - fields.push({ - field: `${element.field}_required`, - label: `${element.label || '表格'}-数据`, - required: element.itemProps.required, - disabled: false, - ifShow: false, - type: 'gridrequired', - }); - element.columns.forEach((child) => { - child.children.forEach((t) => { - fields.push({ - type: 'childData', - gridprop: element.field, - field: t.field, - label: `${element.label || '表格'}-${t.label}`, - required: t.itemProps.required, - disabled: true, - ifShow: true, - fieldName: t.componentProps.fieldName, - ...t, + fields.push({ + field: `${element.field}_required`, + label: `${element.label || '表格'}-数据`, + required: element.itemProps.required, + disabled: false, + ifShow: false, + type: 'gridrequired', + }); + element.columns.forEach((child) => { + child.children.forEach((t) => { + fields.push({ + type: 'childData', + gridprop: element.field, + field: t.field, + label: `${element.label || '表格'}-${t.label}`, + required: t.itemProps.required, + disabled: true, + ifShow: true, + fieldName: t.componentProps.fieldName, + ...t, + }); }); }); - }); - } - }, - ); + } else if (['Card'].includes(element.component)) { + element.columns.forEach((child) => { + child.children.forEach((t) => { + fields.push({ + gridprop: element.field, + field: t.field, + required: t.itemProps.required, + disabled: true, + ifShow: true, + fieldName: t.componentProps.fieldName, + ...t, + }); + }); + }); + } else if ( + ['CreateUser', 'CreateTime', 'ModifyUser', 'ModifyTime'].includes(element.component) && + element.display + ) { + let obj: any = element; + obj.required = element.itemProps.required; + // obj.componentProps.disabled = false; + obj.disabled = true; + obj.ifShow = true; + obj.fieldName = element.componentProps.fieldName; + fields.push(obj); + } + }, + ); + }); data.formRelations = rfields; if (isChange) { node.value.authFields = fields; diff --git a/src/design/index.less b/src/design/index.less index 98a63d04..ee6ae775 100644 --- a/src/design/index.less +++ b/src/design/index.less @@ -52,3 +52,15 @@ ul { padding: 0; list-style: none; } +.card-always{ + border-color: transparent; + box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); +} +.card-hover{ + transition: box-shadow 0.2s, border-color 0.2s; +} +.card-hover:hover{ + border-color: transparent; + box-shadow: 0 1px 2px -2px rgba(0, 0, 0, 0.16), 0 3px 6px 0 rgba(0, 0, 0, 0.12), 0 5px 12px 4px rgba(0, 0, 0, 0.09); +} + diff --git a/src/views/demo/form-design/components/VFormCreate/components/FormRender.vue b/src/views/demo/form-design/components/VFormCreate/components/FormRender.vue index c093c341..1ccb8d46 100644 --- a/src/views/demo/form-design/components/VFormCreate/components/FormRender.vue +++ b/src/views/demo/form-design/components/VFormCreate/components/FormRender.vue @@ -44,9 +44,18 @@ diff --git a/src/views/demo/onlineform/formCall/CallModalFormItem/index.vue b/src/views/demo/onlineform/formCall/CallModalFormItem/index.vue new file mode 100644 index 00000000..c94397ff --- /dev/null +++ b/src/views/demo/onlineform/formCall/CallModalFormItem/index.vue @@ -0,0 +1,29 @@ + + + + + diff --git a/src/views/demo/onlineform/formCall/CreateFlow.vue b/src/views/demo/onlineform/formCall/CreateFlow.vue index a616a465..76ec7a87 100644 --- a/src/views/demo/onlineform/formCall/CreateFlow.vue +++ b/src/views/demo/onlineform/formCall/CreateFlow.vue @@ -19,6 +19,7 @@ ref="formBoxRef" :formConfig="formConfig" :flowFormData="props.flowFormData" + :formVerison="designerData.formCurrentNode.formVerison" v-if="formVisble" /> @@ -257,10 +258,12 @@ }); if (data) { const scheme = JSON.parse(data.scheme); - scheme.formInfo.schemas.forEach((element) => { - if (element.field == designerData.formCurrentNode.formRelationId) { - keyValue.value = element.componentProps.fieldName; - } + scheme.formInfo.tabList.forEach((tabElement) => { + tabElement.schemas.forEach((element) => { + if (element.field == designerData.formCurrentNode.formRelationId) { + keyValue.value = element.componentProps.fieldName; + } + }); }); } } diff --git a/src/views/demo/onlineform/formCall/CreateOrModifyComponent/index.vue b/src/views/demo/onlineform/formCall/CreateOrModifyComponent/index.vue new file mode 100644 index 00000000..a9cedb54 --- /dev/null +++ b/src/views/demo/onlineform/formCall/CreateOrModifyComponent/index.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/views/demo/onlineform/formCall/index.vue b/src/views/demo/onlineform/formCall/index.vue index 5d34226c..94e02562 100644 --- a/src/views/demo/onlineform/formCall/index.vue +++ b/src/views/demo/onlineform/formCall/index.vue @@ -111,7 +111,7 @@ const mapSetData = ref({ width: 100, }); - const selectedSubTableDataId = ref("") + const selectedSubTableDataId = ref(''); const formData = ref([]); const mapgemoList = ref([]); const MapboxComponent = ref(); @@ -309,6 +309,7 @@ }, afterFetch: () => { const rel = designData.value; + console.log('rel', rel); let arr: any = []; if (rel.primaryKey) { rel.db.forEach((val) => { @@ -319,6 +320,7 @@ let chlidKey: any = ref(); if (val.type === 'chlid') { getOutKeyList(params).then((res: Recordable) => { + console.log('ressss', res) if (res[0]) { res[0].db_codecolumnsList.forEach((item) => { if (item.isPrimaryKey == 1) { @@ -328,29 +330,62 @@ } }); } - rel.formInfo.schemas.forEach((item) => { - if ( - item.componentProps.dataTable == val.name && - rel.primaryKey == item.componentProps.fieldName - ) { - arr.push({ - type: val.type, - field: item.field, + setTimeout(() => { + console.log('chlidKey', chlidKey.value) + }, 500); + + if (rel.formInfo.schemas.length > 1) { + rel.formInfo.schemas.forEach((item) => { + if ( + item.componentProps.dataTable == val.name && + rel.primaryKey == item.componentProps.fieldName + ) { + arr.push({ + type: val.type, + field: item.field, + }); + } + if ( + val.type == 'chlid' && + val.name == item.componentProps.dataTable && + chlidKey.value == item.componentProps.fieldName + ) { + arr.push({ + type: val.type, + field: item.field, + }); + } + }); + } else { + rel.formInfo.schemas[0].componentProps.options.forEach((opt) => { + opt.children.forEach((item) => { + if ( + item.componentProps.dataTable == val.name && + rel.primaryKey == item.componentProps.fieldName + ) { + item.type = val.type; + arr.push({ + type: val.type, + field: item.field, + }); + } + if ( + val.type == 'chlid' && + val.name == item.componentProps.dataTable && + chlidKey.value == item.componentProps.fieldName + ) { + item.type = val.type; + arr.push({ + type: val.type, + field: item.field, + }); + } }); - } - if ( - val.type == 'chlid' && - val.name == item.componentProps.dataTable && - chlidKey.value == item.componentProps.fieldName - ) { - arr.push({ - type: val.type, - field: item.field, - }); - } - }); + }); + } }); } + console.log('after', arr); addParamsArr.value = [...new Set(arr)]; }, handleSearchInfoFn(info) { @@ -383,6 +418,7 @@ // 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) => { @@ -394,6 +430,7 @@ if (rows.length > 0) { query.value.keyValue = rows[0][str.value]; } + console.log('config', config) switch (status) { case 'Add': btnList.value.forEach((element) => { @@ -528,10 +565,41 @@ getFormsDesignData(params).then((res: Recordable) => { let columnObj = JSON.parse(res.entity.scheme); let formObj = JSON.parse(res.formScheme.scheme); - + console.log('formObj', formObj); + if (formObj.formInfo.tabList && formObj.formInfo.tabList.length > 1) { + const arr: any = []; + formObj.formInfo.tabList.forEach((item, index) => { + arr.push({ + label: item.text, + value: index + 1, + children: item.schemas, + }); + }); + formObj.formInfo.schemas = [ + { + component: 'Tabs', + label: '选项卡', + colProps: { + span: 24, + }, + field: 'Tabs', + componentProps: { + options: arr, + }, + itemProps: { + labelCol: {}, + wrapperCol: {}, + }, + }, + ]; + } + if (formObj.formInfo.tabList && formObj.formInfo.tabList.length == 1) { + formObj.formInfo.schemas = formObj.formInfo.tabList[0].schemas; + } + delete formObj.formInfo.tabList; // TODO 判断是否有地图 let mapgeomData = columnObj.table?.maps; - haveMap.value = mapgeomData?.isShowMap || false + haveMap.value = mapgeomData?.isShowMap || false; if (haveMap.value) { mapSetData.value = mapgeomData || { isAllowAddPolygon: false, @@ -598,7 +666,7 @@ const closeShowFormModal = () => { openShowFormModal.value = false; MapboxComponent.value.handlerCancleDraw(); - clearSelectedRowKeys() + clearSelectedRowKeys(); formData.value = []; }; const handRowClick = (record) => { @@ -617,7 +685,7 @@ }; getFormData(params) .then((res) => { - let childTableName = designData.value.db.find(item => item.type === 'chlid').name + let childTableName = designData.value.db.find((item) => item.type === 'chlid').name; let subTableData = res[childTableName].map((item) => { return { ...item, @@ -634,12 +702,12 @@ // 绘图完成返回geom const handlerDrawComplete = (geom) => { console.log('绘制完成返回的图斑', geom); - formData.value.forEach(item => { - if(item.key === selectedSubTableDataId.value){ - console.log(geom[0].value,'geom[0].value') - item.MapGeom = geom[0].value + formData.value.forEach((item) => { + if (item.key === selectedSubTableDataId.value) { + console.log(geom[0].value, 'geom[0].value'); + item.MapGeom = geom[0].value; } - }) + }); // mapgemoList.value = [...geom]; }; const mapOnLoad = (map) => { @@ -660,8 +728,8 @@ }); }; const setSelectedSubTableDataId = (value) => { - selectedSubTableDataId.value = value - } + selectedSubTableDataId.value = value; + };