From 6d0137932fcc8f9848123743c1aad5cff8172d8a Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期日, 09 二月 2020 13:09:39 +0800 Subject: [PATCH] 2020-02-09 --- src/tabviews/formtab/formgroup/index.jsx | 131 +++++++++++++++++++++++++++---------------- 1 files changed, 83 insertions(+), 48 deletions(-) diff --git a/src/tabviews/formtab/formgroup/index.jsx b/src/tabviews/formtab/formgroup/index.jsx index 906308d..9bd6ce0 100644 --- a/src/tabviews/formtab/formgroup/index.jsx +++ b/src/tabviews/formtab/formgroup/index.jsx @@ -24,7 +24,9 @@ state = { datatype: null, readtype: null, - formlist: [] + groups: null, + formlist: [], + record: {} } componentDidMount () { @@ -90,66 +92,94 @@ }) } - resetform = (formlist, supfields, index, fieldsvalue) => { + resetform = (groups, supfields, index, fieldsvalue) => { index++ let subfields = [] supfields.forEach(supfield => { - formlist = formlist.map(item => { - if (item.type === 'link' && item.linkField === supfield.field) { - item.options = item.oriOptions.filter(option => option.parentId === supfield.initval) - item.initval = item.options[0] ? item.options[0].Value : '' + groups = groups.map(group => { + group.sublist = group.sublist.map(item => { + if (item.type === 'link' && item.linkField === supfield.field) { + item.options = item.oriOptions.filter(option => option.parentId === supfield.initval) + item.initval = item.options[0] ? item.options[0].Value : '' + fieldsvalue[item.field] = item.initval + + subfields.push(item) + } + return item + }) + return group + }) + }) + + if (subfields.length === 0 || index > 6) { + return {groups: groups, fieldsvalue: fieldsvalue} + } else { + return this.resetform(groups, subfields, index, fieldsvalue) + } + } + + selectChange = (_field, value, option) => { + const { record } = this.state + let groups = JSON.parse(JSON.stringify(this.state.groups)) + + let subfields = [] + let fieldsvalue = {} + let _record = {} + groups = groups.map(group => { + group.sublist = group.sublist.map(item => { + if (item.type === 'link' && item.linkField === _field.field) { + item.options = item.oriOptions.filter(option => option.parentId === value) + item.initval = item.options[0] ? item.options[0].Value : '' + fieldsvalue[item.field] = item.initval subfields.push(item) } return item }) - }) - - if (subfields.length === 0 || index > 6) { - this.props.form.setFieldsValue(fieldsvalue) - return formlist - } else { - return this.resetform(formlist, subfields, index, fieldsvalue) - } - } - - selectChange = (_field, value, option) => { - let formlist = JSON.parse(JSON.stringify(this.state.formlist)) - - let subfields = [] - let fieldsvalue = {} - formlist = formlist.map(item => { - if (item.type === 'link' && item.linkField === _field.field) { - item.options = item.oriOptions.filter(option => option.parentId === value) - item.initval = item.options[0] ? item.options[0].Value : '' - - fieldsvalue[item.field] = item.initval - - subfields.push(item) - } - return item + return group }) // 琛ㄥ崟鍒囨崲鏃讹紝鏇存柊鍏宠仈瀛楁 if (_field.type === 'select' && _field.linkSubField && _field.linkSubField.length > 0 && option.props.data) { let _data = option.props.data - let fieldVal = {} _field.linkSubField.forEach(subfield => { - fieldVal[subfield] = _data[subfield] + if (this.props.form.getFieldValue(subfield) !== undefined) { + fieldsvalue[subfield] = _data[subfield] + } else { + _record[subfield] = _data[subfield] + } }) - this.props.form.setFieldsValue(fieldVal) } - if (subfields.length === 0) return + if (subfields.length === 0) { + if (Object.keys(fieldsvalue).length > 0) { + this.props.form.setFieldsValue(fieldsvalue) + } + if (Object.keys(_record).length > 0) { + this.setState({ + record: {...record, ..._record} + }) + } + } else { + let result = this.resetform(groups, subfields, 0, fieldsvalue) - formlist = this.resetform(formlist, subfields, 0, fieldsvalue) + if (Object.keys(result.fieldsvalue).length > 0) { + this.props.form.setFieldsValue(fieldsvalue) + } - this.setState({ - formlist: formlist - }) + let _param = { + groups: result.groups + } + + if (Object.keys(_record).length > 0) { + _param.record = {...record, ..._record} + } + + this.setState(_param) + } } getFields(formlist) { @@ -428,6 +458,7 @@ } handleConfirm = () => { + const { record } = this.state // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { @@ -445,11 +476,15 @@ value: '' }) } else if (item.hidden === 'true') { + let _val = item.initval + if (record.hasOwnProperty(item.field)) { + _val = record[item.field] + } search.push({ type: this.state.datatype[item.field], readonly: this.state.readtype[item.field], key: item.field, - value: item.initval + value: _val }) } }) @@ -521,14 +556,7 @@ key: key, value: vals.join(',') }) - } else if (this.state.datatype[key] === 'funcvar') { - search.push({ - type: this.state.datatype[key], - readonly: this.state.readtype[key], - key: key, - value: values[key] - }) - } else { + } else if (this.state.datatype[key] === 'text') { search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], @@ -536,6 +564,13 @@ value: values[key].replace(/(^\s*|\s*$)/ig, '') // value: values[key].replace(/[\x00-\xff]+/ig, '') }) + } else { + search.push({ + type: this.state.datatype[key], + readonly: this.state.readtype[key], + key: key, + value: values[key] + }) } }) resolve(search) -- Gitblit v1.8.0