From 6afdec0062dacbded57e166230eb22cc55ced0c1 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期六, 08 五月 2021 14:30:21 +0800 Subject: [PATCH] 2021-05-08 --- src/tabviews/zshare/mutilform/index.jsx | 282 +++++++++++++++++++++---------------------------------- 1 files changed, 108 insertions(+), 174 deletions(-) diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index 68ea6a1..9698394 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -33,25 +33,13 @@ } state = { - datatype: null, // 鏁版嵁绫诲瀷 - readtype: null, // 鏄惁鍙 - readin: null, // 琛屾暟鎹槸鍚﹀啓鍏� - writein: null, // 鎵ц鏃舵槸鍚﹀~鍏ラ粯璁ql - fieldlen: null, // 瀛楁闀垮害 formlist: [], // 琛ㄥ崟椤� - intercepts: [], // 鎴彇瀛楁 record: {} // 璁板綍涓嬫媺琛ㄥ崟鍏宠仈瀛楁锛岀敤浜庢暟鎹啓鍏� } componentDidMount () { const { data, BData, action } = this.props - let datatype = {} - let readtype = {} - let readin = {} - let writein = {} - let fieldlen = {} - let intercepts = [] let _inputfields = [] let linkFields = {} // 鍏宠仈鑿滃崟 let supItemVal = {} // 涓婄骇鑿滃崟鍒濆鍊� @@ -68,9 +56,6 @@ linkFields[item.linkField] = linkFields[item.linkField] || [] linkFields[item.linkField].push(item.field) } - if (item.interception === 'true') { // 瀛楃鎴彇瀛楁 - intercepts.push(item.field) - } }) formlist = formlist.map(item => { @@ -81,24 +66,18 @@ if (item.type === 'split' || item.type === 'hint') return item // 鏁版嵁鑷姩濉厖 - let _readin = item.readin !== 'false' + item.readin = item.readin !== 'false' if (item.type === 'linkMain' || item.type === 'funcvar') { - _readin = false + item.readin = false } + item.readonly = item.readonly === 'true' + item.writein = item.writein !== 'false' - let _fieldlen = item.fieldlength || 50 - if (item.type === 'textarea' || item.type === 'fileupload' || item.type === 'multiselect' || item.type === 'brafteditor') { - _fieldlen = item.fieldlength || 512 - } else if (item.type === 'number') { - _fieldlen = item.decimal ? item.decimal : 0 + item.fieldlength = item.fieldlength || 50 + if (item.type === 'number') { + item.fieldlength = item.decimal ? item.decimal : 0 item.initval = item.initval || 0 } - - datatype[item.field] = item.type - readtype[item.field] = item.readonly === 'true' - readin[item.field] = _readin - writein[item.field] = item.writein !== 'false' - fieldlen[item.field] = _fieldlen if (item.setAll === 'true' && (item.type === 'select' || item.type === 'link' || item.type === 'radio')) { // 娣诲姞绌哄�� item.options.unshift({ @@ -123,10 +102,10 @@ if (item.type === 'linkMain') { newval = BData && BData[item.field] ? BData[item.field] : '' - } else if (_readin && !/^date/.test(item.type) && data && data.hasOwnProperty(item.field)) { + } else if (item.readin && !/^date/.test(item.type) && data && data.hasOwnProperty(item.field)) { newval = data[item.field] } else if (item.type === 'date') { // 鏃堕棿鎼滅储 - if (_readin && data && data.hasOwnProperty(item.field)) { + if (item.readin && data && data.hasOwnProperty(item.field)) { newval = data[item.field] } if (newval) { @@ -139,7 +118,7 @@ newval = null } } else if (item.type === 'datemonth') { - if (_readin && data && data.hasOwnProperty(item.field)) { + if (item.readin && data && data.hasOwnProperty(item.field)) { newval = data[item.field] } if (newval) { @@ -152,7 +131,7 @@ newval = null } } else if (item.type === 'datetime') { - if (_readin && data && data.hasOwnProperty(item.field)) { + if (item.readin && data && data.hasOwnProperty(item.field)) { newval = data[item.field] } if (newval) { @@ -223,12 +202,6 @@ }) this.setState({ - readin, - writein, - readtype, - datatype, - fieldlen, - intercepts, formlist }, () => { if (action.setting && action.setting.focus) { @@ -731,7 +704,7 @@ </Col> ) } else if (item.type === 'text') { - let _max = item.fieldlength || 50 + let _max = item.fieldlength let _rules = [{ pattern: /^[^']*$/ig, message: formRule.input.quotemsg @@ -787,7 +760,7 @@ }, ..._rules ] - })(<Input placeholder="" autoComplete="off" disabled={item.readonly === 'true'} onChange={(e) => this.handleChange(e, item)} onPressEnter={(e) => this.handleInputSubmit(e, item)} />)} + })(<Input placeholder="" autoComplete="off" disabled={item.readonly} onChange={(e) => this.handleChange(e, item)} onPressEnter={(e) => this.handleInputSubmit(e, item)} />)} </Form.Item> </Col> ) @@ -820,8 +793,8 @@ ] })( precision === null ? - <InputNumber disabled={item.readonly === 'true'} onPressEnter={(e) => this.handleInputSubmit(e, item)} /> : - <InputNumber precision={precision} disabled={item.readonly === 'true'} onPressEnter={(e) => this.handleInputSubmit(e, item)} /> + <InputNumber disabled={item.readonly} onPressEnter={(e) => this.handleInputSubmit(e, item)} /> : + <InputNumber precision={precision} disabled={item.readonly} onPressEnter={(e) => this.handleInputSubmit(e, item)} /> )} </Form.Item> </Col> @@ -932,7 +905,7 @@ } ] })( - <Checkbox.Group disabled={item.readonly === 'true'}> + <Checkbox.Group disabled={item.readonly}> {item.options.map(option => <Checkbox key={option.key} title={option.Text} value={option.Value}>{option.Text}</Checkbox>)} </Checkbox.Group> )} @@ -962,7 +935,7 @@ } ] })( - <Radio.Group disabled={item.readonly === 'true'} onChange={(e) => {this.selectChange(item, e.target.value)}}> + <Radio.Group disabled={item.readonly} onChange={(e) => {this.selectChange(item, e.target.value)}}> {item.options.map(option => <Radio key={option.key} value={option.Value}>{option.Text}</Radio>)} </Radio.Group> )} @@ -997,7 +970,7 @@ allowClear={true} filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 || option.props.value.toLowerCase().indexOf(input.toLowerCase()) >= 0} onSelect={(value) => {this.selectChange(item, value)}} - disabled={item.readonly === 'true'} + disabled={item.readonly} > {item.options.map(option => <Select.Option id={option.key} title={option.Text} key={option.key} value={option.Value}>{option.Text}</Select.Option> @@ -1035,7 +1008,7 @@ showSearch mode="multiple" filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 || option.props.value.toLowerCase().indexOf(input.toLowerCase()) >= 0} - disabled={item.readonly === 'true'} + disabled={item.readonly} > {item.options.map(option => <Select.Option id={option.key} title={option.Text} key={option.key} value={option.Value}>{option.Text}</Select.Option> @@ -1068,7 +1041,7 @@ } ] })( - <DatePicker disabled={item.readonly === 'true'} /> + <DatePicker disabled={item.readonly} /> )} </Form.Item> </Col> @@ -1096,7 +1069,7 @@ } ] })( - <MonthPicker disabled={item.readonly === 'true'} /> + <MonthPicker disabled={item.readonly} /> )} </Form.Item> </Col> @@ -1124,14 +1097,14 @@ } ] })( - <DatePicker showTime disabled={item.readonly === 'true'} /> + <DatePicker showTime disabled={item.readonly} /> )} </Form.Item> </Col> ) } else if (item.type === 'fileupload') { let filelist = this.props.data ? this.props.data[item.field] : item.initval - if (filelist && this.state.readin[item.field]) { + if (filelist && item.readin) { try { filelist = filelist.split(',').map((url, index) => { return { @@ -1198,14 +1171,14 @@ message: this.props.dict['form.required.input'] + item.label + '!' } ] - })(<Input placeholder="" autoComplete="off" disabled={item.readonly === 'true'} />)} + })(<Input placeholder="" autoComplete="off" disabled={item.readonly} />)} </Form.Item> </Col> ) } else if (item.type === 'funcvar') { // 鍑芥暟鍙橀噺瀛楁锛岄粯璁や笉鏄剧ず } else if (item.type === 'textarea') { - let _max = item.fieldlength || 512 + let _max = item.fieldlength let _rules = [] if (item.encryption !== 'true') { _rules = [{ @@ -1244,7 +1217,7 @@ </Col> ) } else if (item.type === 'brafteditor') { - let _max = item.fieldlength || 512 + let _max = item.fieldlength fields.push( <Col span={item.span || 24} key={index}> @@ -1282,7 +1255,7 @@ } handleConfirm = () => { - const { record, intercepts, writein } = this.state + const { record, formlist } = this.state let _format = { date: 'YYYY-MM-DD', datemonth: 'YYYY-MM', @@ -1294,139 +1267,100 @@ this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { let search = [] - // 闅愯棌琛ㄥ崟 - this.state.formlist.forEach(item => { + formlist.forEach(item => { if (!item.field) return - - let _item = null + + let _item = { + type: item.type, + readonly: item.readonly, + readin: item.readin, + writein: item.writein, + fieldlen: item.fieldlength, + key: item.field + } + if (item.type === 'funcvar') { - _item = { - type: 'funcvar', - readonly: 'true', - readin: false, - writein: writein[item.field], - fieldlen: this.state.fieldlen[item.field], - key: item.field, - value: '' - } - } else if (item.hidden === 'true') { + _item.value = '' + } else if (item.hidden === 'true' || (item.supField && !item.supvalue.includes(this.props.form.getFieldValue(item.supField)))) { let _val = item.initval if (record.hasOwnProperty(item.field)) { _val = record[item.field] } - - _item = { - type: this.state.datatype[item.field], - readonly: this.state.readtype[item.field], - readin: this.state.readin[item.field], - writein: writein[item.field], - fieldlen: this.state.fieldlen[item.field], - key: item.field, - value: _val + _item.value = _val + + if (['date', 'datemonth', 'datetime'].includes(item.type)) { + if (!_item.value) { + _item.value = '' + } else if (_item.value.format) { + _item.value = _item.value.format(_format[item.type]) + } + + if (item.declareType === 'nvarchar(50)') { + _item.type = 'text' + } + } else if (item.type === 'text' && _item.value && typeof(_item.value) === 'string') { // 鐗规畩瀛楁鏇挎崲 + _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey) + _item.value = _item.value.replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')) + _item.value = _item.value.replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) } - } else if (item.supField && !item.supvalue.includes(this.props.form.getFieldValue(item.supField))) { - _item = { - type: this.state.datatype[item.field], - readonly: this.state.readtype[item.field], - readin: this.state.readin[item.field], - writein: writein[item.field], - fieldlen: this.state.fieldlen[item.field], - key: item.field, - value: item.initval + } else if (typeof(values[item.field]) !== 'undefined') { + let _value = values[item.field] + + if (item.type === 'datetime') { + _value = _value ? moment(_value).format('YYYY-MM-DD HH:mm:ss') : '' + if (item.declareType === 'nvarchar(50)') { + _item.type = 'text' + } + } else if (item.type === 'datemonth') { + _value = _value ? moment(_value).format('YYYY-MM') : '' + if (item.declareType === 'nvarchar(50)') { + _item.type = 'text' + } + } else if (item.type === 'date') { + _value = _value ? moment(_value).format('YYYY-MM-DD') : '' + if (item.declareType === 'nvarchar(50)') { + _item.type = 'text' + } + } else if (item.type === 'multiselect' || item.type === 'checkbox') { + _value = _value ? _value.join(',') : '' + + } else if (item.type === 'fileupload') { + let vals = [] + + if (_value && _value.length > 0) { + _value.forEach(_val => { + if (_val.origin && _val.url) { + vals.push(_val.url) + } else if (!_val.origin && _val.status === 'done' && _val.response) { + vals.push(_val.response) + } + }) + } + + _value = vals.join(',') + } else if (item.type === 'text' || item.type === 'textarea') { + _value = _value.replace(/\t*|\v*/g, '') // 鍘婚櫎鍒惰〃绗� + + if (item.interception === 'true') { // 鍘婚櫎棣栧熬绌烘牸 + _value = _value.replace(/(^\s*|\s*$)/g, '') + } + + if (item.type === 'text' && _value) { // 鐗规畩瀛楁鏇挎崲 + _value = _value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey) + _value = _value.replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')) + _value = _value.replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) + } } + _item.value = _value + } else { + _item.value = '' } - - if (!_item) return - + if (_item.value === undefined) { _item.value = '' - } else if (item.type === 'date' || item.type === 'datemonth' || item.type === 'datetime') { - if (!_item.value) { - _item.value = '' - } else if (_item.value.format) { - _item.value = _item.value.format(_format[item.type]) - } - } else if (item.type === 'text' && _item.value && typeof(_item.value) === 'string') { // 鐗规畩瀛楁鏇挎崲 - _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey) - _item.value = _item.value.replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')) - _item.value = _item.value.replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) } - + search.push(_item) - }) - - Object.keys(values).forEach(key => { - if (values[key] === undefined) { // 琛ㄥ崟寮傚父锛燂紵锛� - if (search.filter(s => s.key === key).length === 0) { - search.push({ - type: this.state.datatype[key], - readonly: this.state.readtype[key], - readin: this.state.readin[key], - writein: writein[key], - fieldlen: this.state.fieldlen[key], - key: key, - value: '' - }) - } - return - } - - let _value = '' - let _type = this.state.datatype[key] - if (_type === 'datetime') { - _value = values[key] ? moment(values[key]).format('YYYY-MM-DD HH:mm:ss') : '' - } else if (_type === 'datemonth') { - _value = values[key] ? moment(values[key]).format('YYYY-MM') : '' - } else if (_type === 'date') { - _value = values[key] ? moment(values[key]).format('YYYY-MM-DD') : '' - } else if (_type === 'number') { - _value = values[key] - - } else if (_type === 'multiselect' || _type === 'checkbox') { - _value = values[key] ? values[key].join(',') : '' - - } else if (_type === 'fileupload') { - let vals = [] - - if (values[key] && values[key].length > 0) { - values[key].forEach(_val => { - if (_val.origin && _val.url) { - vals.push(_val.url) - } else if (!_val.origin && _val.status === 'done' && _val.response) { - vals.push(Utils.getrealurl(_val.response)) - } - }) - } - - _value = vals.join(',') - } else if (_type === 'text' || _type === 'textarea') { - _value = values[key].replace(/\t*|\v*/g, '') // 鍘婚櫎鍒惰〃绗� - - if (intercepts.includes(key)) { // 鍘婚櫎棣栧熬绌烘牸 - _value = _value.replace(/(^\s*|\s*$)/g, '') - } - if (_type === 'text' && _value) { // 鐗规畩瀛楁鏇挎崲 - _value = _value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey) - _value = _value.replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')) - _value = _value.replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) - } - } else { - _value = values[key] - } - - if (_value === undefined) { - _value = '' - } - - search.push({ - type: this.state.datatype[key], - readonly: this.state.readtype[key], - readin: this.state.readin[key], - writein: writein[key], - fieldlen: this.state.fieldlen[key], - key: key, - value: _value - }) }) resolve(search) -- Gitblit v1.8.0