diff --git a/src/components/formFields/form/index.tsx b/src/components/formFields/form/index.tsx index ca01bb30cef4d42c69960a20e7c6a711c155d08c..9f9a06c8981b7d25e43bf84128a3049b0f2a584a 100644 --- a/src/components/formFields/form/index.tsx +++ b/src/components/formFields/form/index.tsx @@ -1,7 +1,7 @@ import React from 'react' import { Field, FieldConfig, FieldConfigs, FieldError, FieldProps, IField } from '../common' import getALLComponents from '../' -import { getValue, listItemMove } from '../../../util/value' +import { getValue, listItemMove, setValue } from '../../../util/value' import { cloneDeep } from 'lodash' import ConditionHelper from '../../../util/condition' @@ -18,6 +18,7 @@ export interface FormFieldConfig extends FieldConfig { canRemove?: boolean canSort?: boolean canCollapse?: boolean // 是否用Collapse折叠展示 + stringify?: string[] // 序列号字段 } export interface IFormField { @@ -147,6 +148,41 @@ export default class FormField extends Field { + let data: any[] = []; + + for(let index = 0; index < this.formFieldsList.length; index++) { + if (this.formFieldsList[index]) { + let item: any = {} + + if (Array.isArray(this.props.config.fields)) { + for (const formFieldIndex in this.props.config.fields) { + const formFieldConfig = this.props.config.fields[formFieldIndex] + if (!ConditionHelper(formFieldConfig.condition, { record: this.props.value[index], data: this.props.data, step: this.props.step })) { + continue + } + const formField = this.formFieldsList[index] && this.formFieldsList[index][formFieldIndex] + if (formField) { + const value = await formField.get() + item = setValue(item, formFieldConfig.field, value) + } + } + } + + if (this.props.config.stringify) { + for (const field of this.props.config.stringify) { + const info = getValue(item, field) + item = setValue(item, field, JSON.stringify(info)) + } + } + + data[index] = item + } + } + + return data + } + handleMount = async (index: number, formFieldIndex: number) => { if (!this.formFieldsMountedList[index]) { this.formFieldsMountedList[index] = [] diff --git a/src/steps/form/index.tsx b/src/steps/form/index.tsx index ca719c43fe10ba166512f64a43eb6de8208b4749..f9bf9764b3a753db6bf5071ac8fbe93838e3144f 100644 --- a/src/steps/form/index.tsx +++ b/src/steps/form/index.tsx @@ -42,6 +42,7 @@ export interface FormConfig extends StepConfig { condition?: ConditionConfig message?: StatementConfig }> + stringify?: string[] // 序列化字段 } /** @@ -243,6 +244,14 @@ export default class FormStep extends Step { } } } + + if (this.props.config.stringify) { + for (const field of this.props.config.stringify) { + const info = getValue(data, field) + data = setValue(data, field, JSON.stringify(info)) + } + } + console.info('表单参数信息', data, this.state.formValue, this.formData) await this.setState({