From f448bd7b318f7696c97b392a263bc364700bc8a0 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 09 六月 2020 15:54:45 +0800 Subject: [PATCH] 2020-06-09 --- src/tabviews/zshare/mutilform/index.jsx | 153 ++++++++++++++++++++++++++++++++------------------- 1 files changed, 96 insertions(+), 57 deletions(-) diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index 5e8fa89..bf40107 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -21,15 +21,15 @@ } state = { - cols: 2, - datatype: null, - readtype: null, - readin: null, - fieldlen: null, - formlist: [], + cols: 2, // 鏄剧ず涓哄灏戝垪 + datatype: null, // 鏁版嵁绫诲瀷 + readtype: null, // 鏄惁鍙 + readin: null, // 琛屾暟鎹槸鍚﹀啓鍏� + fieldlen: null, // 瀛楁闀垮害 + formlist: [], // 琛ㄥ崟椤� encrypts: [], // 鍔犲瘑瀛楁 intercepts: [], // 鎴彇瀛楁 - record: {} + record: {} // 璁板綍涓嬫媺琛ㄥ崟鍏宠仈瀛楁锛岀敤浜庢暟鎹啓鍏� } UNSAFE_componentWillMount () { @@ -81,19 +81,24 @@ formlist = formlist.map(item => { if (item.type === 'title') return item + // 鍔犲瘑瀛楁 if (item.type === 'textarea' && item.encryption === 'true') { encrypts.push(item.field) } + + // 瀛楃鎴彇瀛楁 if (item.interception === 'true') { intercepts.push(item.field) } + // 鏁版嵁鍐欏叆 let _readin = item.readin !== 'false' if (item.type === 'linkMain' || item.type === 'funcvar') { _readin = false } - item.initVal = typeof(item.initval) === 'object' ? JSON.parse(JSON.stringify(item.initval)) : item.initval // 鐢ㄤ簬鍙楁帶鍊肩殑琛ㄥ崟锛岄殣钘忔椂浼犻粯璁ゅ�� + // 鐢ㄤ簬鍙楁帶鍊肩殑琛ㄥ崟锛岄殣钘忔椂浼犻粯璁ゅ��(鏈娇鐢紵) + item.initVal = typeof(item.initval) === 'object' ? JSON.parse(JSON.stringify(item.initval)) : item.initval let _fieldlen = item.fieldlength || 50 if (item.type === 'textarea' || item.type === 'fileupload' || item.type === 'multiselect') { @@ -120,22 +125,65 @@ item.options = [...item.options, ...this.props.configMap[item.uuid]] } + // 淇濆瓨鍒濆鍒楄〃锛岀敤浜庡叧鑱旇彍鍗曟帶鍒� item.oriOptions = JSON.parse(JSON.stringify(item.options)) + // 涓嬬骇琛ㄥ崟鎺у埗-瀛楁鍐欏叆 if (item.linkSubField && item.linkSubField.length > 0) { let _fields = _inputfields.map(_item => _item.field) item.linkSubField = item.linkSubField.filter(_item => _fields.includes(_item)) } } - let newval = '$$initval$$' + let newval = '' + if (item.type === 'linkMain' && BData && BData.hasOwnProperty(item.field)) { newval = BData[item.field] } else if (item.type !== 'linkMain' && _readin && !/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) { newval = this.props.data[item.field] + } else if (item.type === 'date') { // 鏃堕棿鎼滅储 + if (_readin && this.props.data && this.props.data.hasOwnProperty(item.field)) { + newval = this.props.data[item.field] + } + if (newval) { + newval = moment(newval, 'YYYY-MM-DD') + newval = newval.format('YYYY-MM-DD') === 'Invalid date' ? '' : newval + } + if (!newval && item.initval) { + newval = moment().subtract(item.initval, 'days') + } else if (!newval) { + newval = null + } + } else if (item.type === 'datemonth') { + if (_readin && this.props.data && this.props.data.hasOwnProperty(item.field)) { + newval = this.props.data[item.field] + } + if (newval) { + newval = moment(newval, 'YYYY-MM') + newval = newval.format('YYYY-MM') === 'Invalid date' ? '' : newval + } + if (!newval && item.initval) { + newval = moment().subtract(item.initval, 'month') + } else if (!newval) { + newval = null + } + } else if (item.type === 'datetime') { + if (_readin && this.props.data && this.props.data.hasOwnProperty(item.field)) { + newval = this.props.data[item.field] + } + if (newval) { + newval = moment(newval, 'YYYY-MM-DD HH:mm:ss') + newval = newval.format('YYYY-MM-DD HH:mm:ss') === 'Invalid date' ? '' : newval + } + if (!newval && item.initval) { + newval = moment().subtract(item.initval, 'days') + } else if (!newval) { + newval = null + } } - if (encrypts.includes(item.field) && newval !== '$$initval$$') { + // 鍔犲瘑瀛楁锛岃В瀵嗗鐞� + if (item.type === 'textarea' && item.encryption === 'true' && newval !== '') { try { newval = window.decodeURIComponent(window.atob(newval)) } catch (e) { @@ -143,10 +191,10 @@ } } - if (newval !== '$$initval$$') { - item.initval = newval - } + // 璇诲彇琛ㄦ牸鏁版嵁鎴栬鏈夋椂闂寸殑鍒濆鍊� + item.initval = newval !== '' ? newval : item.initval + // 涓嬫媺琛ㄥ崟锛屽瓨鍦ㄤ笂绾ц彍鍗曟椂锛岀敓鎴愭樉绀哄�煎垪琛紝浼樺厛浠ユ暟瀛楀垽鏂� if (item.supvalue) { let supvals = [] item.supvalue.split(',').forEach(val => { @@ -317,9 +365,6 @@ const fields = [] formlist.forEach((item, index) => { - // if ((!item.field && item.type !== 'title') || item.hidden === 'true') return - // if (item.supField && !item.supvalue.includes(this.props.form.getFieldValue(item.supField))) return - if (item.type === 'title') { fields.push( <Col span={24} key={index}> @@ -459,17 +504,11 @@ </Col> ) } else if (item.type === 'date') { // 鏃堕棿鎼滅储 - let _initval = this.props.data ? this.props.data[item.field] : '' - if (_initval && this.state.readin[item.field]) { - _initval = moment(_initval, 'YYYY-MM-DD') - } else { - _initval = item.initval ? moment().subtract(item.initval, 'days') : null - } fields.push( <Col span={24 / cols} key={index}> <Form.Item label={item.label}> {getFieldDecorator(item.field, { - initialValue: _initval, + initialValue: item.initval, rules: [ { required: item.required === 'true', @@ -483,17 +522,11 @@ </Col> ) } else if (item.type === 'datemonth') { - let _initval = this.props.data ? this.props.data[item.field] : '' - if (_initval && this.state.readin[item.field]) { - _initval = moment(_initval, 'YYYY-MM') - } else { - _initval = item.initval ? moment().subtract(item.initval, 'month') : null - } fields.push( <Col span={24 / cols} key={index}> <Form.Item label={item.label}> {getFieldDecorator(item.field, { - initialValue: _initval, + initialValue: item.initval, rules: [ { required: item.required === 'true', @@ -507,17 +540,11 @@ </Col> ) } else if (item.type === 'datetime') { - let _initval = this.props.data ? this.props.data[item.field] : '' - 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 - } fields.push( <Col span={24 / cols} key={index}> <Form.Item label={item.label}> {getFieldDecorator(item.field, { - initialValue: _initval, + initialValue: item.initval, rules: [ { required: item.required === 'true', @@ -525,7 +552,6 @@ } ] })( - // <DatePicker showTime getCalendarContainer={() => document.getElementById('form-box')} /> <DatePicker showTime disabled={item.readonly === 'true'} /> )} </Form.Item> @@ -620,9 +646,14 @@ } handleConfirm = () => { - const { record, encrypts, intercepts } = this.state + const { record, intercepts } = this.state + let _encrypts = JSON.parse(JSON.stringify(this.state.encrypts)) + let _format = { + date: 'YYYY-MM-DD', + datemonth: 'YYYY-MM', + datetime: 'YYYY-MM-DD HH:mm:ss' + } - let _encrypts = JSON.parse(JSON.stringify(encrypts)) // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { @@ -632,56 +663,63 @@ this.state.formlist.forEach(item => { if (!item.field) return + let _item = null if (item.type === 'funcvar') { - search.push({ + _item = { 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] - _encrypts = _encrypts.filter(_field => _field !== item.field) + _encrypts = _encrypts.filter(_field => _field !== item.field) // 闅愯棌瀛楁锛屼笉鍙備笌鍔犲瘑澶勭悊 } - search.push({ + _item = { 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: _val - }) + } } else if (item.supField && !item.supvalue.includes(this.props.form.getFieldValue(item.supField))) { - search.push({ + _item = { 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 - }) + } } + + if (!_item) return + + if (item.type === 'date' || item.type === 'datemonth' || item.type === 'datetime') { + if (_item.value && _item.value.format) { + _item.value = _item.value.format(_format[item.type]) + } else if (!_item.value) { + _item.value = '' + } + } + + search.push(_item) }) Object.keys(values).forEach(key => { let _value = '' if (this.state.datatype[key] === 'datetime') { - if (values[key]) { - _value = moment(values[key]).format('YYYY-MM-DD HH:mm:ss') - } + _value = values[key] ? moment(values[key]).format('YYYY-MM-DD HH:mm:ss') : '' } else if (this.state.datatype[key] === 'datemonth') { - if (values[key]) { - _value = moment(values[key]).format('YYYY-MM') - } + _value = values[key] ? moment(values[key]).format('YYYY-MM') : '' } else if (this.state.datatype[key] === 'date') { - if (values[key]) { - _value = moment(values[key]).format('YYYY-MM-DD') - } + _value = values[key] ? moment(values[key]).format('YYYY-MM-DD') : '' } else if (this.state.datatype[key] === 'number') { _value = values[key] @@ -723,6 +761,7 @@ }) }) + // 鍚湁鍔犲瘑瀛楁鏃讹紝瀵硅〃鍗曞�艰繘琛屽姞瀵� if (_encrypts && _encrypts.length > 0) { search = search.map(item => { let _value = item.value @@ -769,6 +808,7 @@ let rowIndex = 0 let colIndex = 0 + // 琛ㄥ崟鍒嗚锛岄伩鍏嶆帓鍒椾笉鏁撮綈 formlist.forEach(item => { if ((!item.field && item.type !== 'title') || item.hidden === 'true' || item.type === 'funcvar') return @@ -796,7 +836,6 @@ return ( <Form {...formItemLayout} className="ant-advanced-search-form main-form-field" id="main-form-box"> - {/* <Row gutter={24}>{this.getFields(formlist)}</Row> */} {_formlist.map((formrow, index) => <Row key={index} gutter={24}>{this.getFields(formrow)}</Row>)} </Form> ) -- Gitblit v1.8.0