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/tableshare/mutilform/index.jsx | 127 ++++++++++++++++++++++++++++++++---------- 1 files changed, 96 insertions(+), 31 deletions(-) diff --git a/src/tabviews/tableshare/mutilform/index.jsx b/src/tabviews/tableshare/mutilform/index.jsx index c4ec170..4286fa1 100644 --- a/src/tabviews/tableshare/mutilform/index.jsx +++ b/src/tabviews/tableshare/mutilform/index.jsx @@ -23,7 +23,10 @@ state = { datatype: null, readtype: null, - formlist: [] + readin: null, + fieldlen: null, + formlist: [], + record: {} } componentDidMount () { @@ -32,6 +35,8 @@ let datatype = {} let readtype = {} + let readin = {} + let fieldlen = {} let formlist = [] if (action.groups.length > 0) { action.groups.forEach(group => { @@ -45,24 +50,32 @@ }) } - group.sublist.forEach(item => { - datatype[item.field] = item.type - readtype[item.field] = item.readonly === 'true' - formlist.push(item) - }) + formlist.push(...group.sublist) }) } else { - formlist = action.fields.map(item => { - datatype[item.field] = item.type - readtype[item.field] = item.readonly === 'true' - - return item - }) + formlist = action.fields } let _inputfields = formlist.filter(item => item.type === 'text' || item.type === 'number') // 鐢ㄤ簬杩囨护涓嬫媺鑿滃崟鍏宠仈琛ㄥ崟 formlist = formlist.map(item => { + let _readin = item.readin !== 'false' + if (item.type === 'linkMain' || item.type === 'funcvar') { + _readin = false + } + + let _fieldlen = item.fieldlength || 50 + if (item.type === 'textarea' || item.type === 'fileupload') { + _fieldlen = item.fieldlength || 512 + } else if (item.type === 'number') { + _fieldlen = (item.decimal || item.decimal === 0) ? item.decimal : 18 + } + + datatype[item.field] = item.type + readtype[item.field] = item.readonly === 'true' + readin[item.field] = _readin + fieldlen[item.field] = _fieldlen + if (item.type === 'select' || item.type === 'link' || item.type === 'multiselect') { if (item.setAll === 'true') { item.options.unshift({ @@ -83,10 +96,10 @@ item.linkSubField = item.linkSubField.filter(_item => _fields.includes(_item)) } } - + if (item.type === 'linkMain' && BData && BData.hasOwnProperty(item.field)) { item.initval = BData[item.field] - } else if (!/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) { + } else if (_readin && !/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) { item.initval = this.props.data[item.field] } @@ -94,7 +107,7 @@ }) let error = false - + formlist = formlist.map(item => { if (item.type === 'link') { let supItem = formlist.filter(form => form.field === item.linkField)[0] @@ -120,10 +133,12 @@ duration: 10 }) } - + this.setState({ readtype: readtype, datatype: datatype, + readin: readin, + fieldlen: fieldlen, formlist: formlist }, () => { if (action.setting && action.setting.focus) { @@ -161,18 +176,19 @@ }) if (subfields.length === 0 || index > 6) { - this.props.form.setFieldsValue(fieldsvalue) - return formlist + return {formlist: formlist, fieldsvalue: fieldsvalue} } else { return this.resetform(formlist, subfields, index, fieldsvalue) } } selectChange = (_field, value, option) => { + const { record } = this.state let formlist = JSON.parse(JSON.stringify(this.state.formlist)) let subfields = [] let fieldsvalue = {} + let _record = {} formlist = formlist.map(item => { if (item.type === 'link' && item.linkField === _field.field) { item.options = item.oriOptions.filter(option => option.parentId === value) @@ -188,20 +204,41 @@ // 琛ㄥ崟鍒囨崲鏃讹紝鏇存柊鍏宠仈瀛楁 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(formlist, 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 = { + formlist: result.formlist + } + + if (Object.keys(_record).length > 0) { + _param.record = {...record, ..._record} + } + + this.setState(_param) + } } getFields() { @@ -330,7 +367,7 @@ ) } else if (item.type === 'date') { // 鏃堕棿鎼滅储 let _initval = this.props.data ? this.props.data[item.field] : '' - if (_initval) { + if (_initval && this.state.readin[item.field]) { _initval = moment(_initval, 'YYYY-MM-DD') } else { _initval = item.initval ? moment().subtract(item.initval, 'days') : null @@ -354,7 +391,7 @@ ) } else if (item.type === 'datemonth') { let _initval = this.props.data ? this.props.data[item.field] : '' - if (_initval) { + if (_initval && this.state.readin[item.field]) { _initval = moment(_initval, 'YYYY-MM') } else { _initval = item.initval ? moment().subtract(item.initval, 'month') : null @@ -378,7 +415,7 @@ ) } else if (item.type === 'datetime') { let _initval = this.props.data ? this.props.data[item.field] : '' - if (_initval) { + if (_initval && this.state.readin[item.field]) { _initval = moment(_initval, 'YYYY-MM-DD HH:mm:ss') } else { _initval = item.initval ? moment().subtract(item.initval, 'days') : null @@ -403,7 +440,7 @@ ) } else if (item.type === 'fileupload') { let filelist = this.props.data ? this.props.data[item.field] : item.initval - if (filelist) { + if (filelist && this.state.readin[item.field]) { try { filelist = filelist.split(',').map((url, index) => { return { @@ -417,6 +454,8 @@ } catch { filelist = [] } + } else { + filelist = [] } fields.push( @@ -495,6 +534,7 @@ } handleConfirm = () => { + const { record } = this.state // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { @@ -508,15 +548,23 @@ search.push({ type: 'funcvar', readonly: 'true', + readin: false, + fieldlen: this.state.fieldlen[item.field], key: item.field, 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], + readin: this.state.readin[item.field], + fieldlen: this.state.fieldlen[item.field], key: item.field, - value: item.initval + value: _val }) } }) @@ -530,6 +578,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: _value }) @@ -541,6 +591,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: _value }) @@ -552,6 +604,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: _value }) @@ -559,6 +613,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: values[key] }) @@ -566,6 +622,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: values[key] ? values[key].join(',') : '' }) @@ -585,6 +643,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: vals.join(',') }) @@ -592,6 +652,8 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: values[key].replace(/(^\s*|\s*$) | \t* | \v*/ig, '') }) @@ -599,11 +661,14 @@ search.push({ type: this.state.datatype[key], readonly: this.state.readtype[key], + readin: this.state.readin[key], + fieldlen: this.state.fieldlen[key], key: key, value: values[key] }) } }) + resolve(search) } else { reject(err) -- Gitblit v1.8.0