From 8b9effb98612ee8a00d76d639a5733d12e9ecce6 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 13 十一月 2019 22:09:35 +0800 Subject: [PATCH] 2019-11-13 --- src/components/sidemenu/comtableconfig/searchform/index.jsx | 160 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 99 insertions(+), 61 deletions(-) diff --git a/src/components/sidemenu/comtableconfig/searchform/index.jsx b/src/components/sidemenu/comtableconfig/searchform/index.jsx index 319edf9..3f03957 100644 --- a/src/components/sidemenu/comtableconfig/searchform/index.jsx +++ b/src/components/sidemenu/comtableconfig/searchform/index.jsx @@ -24,23 +24,48 @@ openTypeChange = (key, value) => { if (key === 'type') { + let resourceType = this.state.formlist.filter(cell => cell.key === 'resourceType')[0].initVal + let _options = ['label', 'field', 'initval', 'type'] + if (value === 'select' && resourceType === '0') { + _options = [..._options, ...['resourceType', 'setAll', 'options']] + } else if (value === 'select' && resourceType === '1') { + _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']] + } + this.setState({ - inputType: value, - selectType: 0 + formlist: this.state.formlist.map(form => { + form.hidden = !_options.includes(form.key) + return form + }) }) } } - onChange = e => { - this.setState({ - selectType: e.target.value - }) + onChange = (e, key) => { + let value = e.target.value + if (key === 'resourceType') { + let _options = ['label', 'field', 'initval', 'type', 'resourceType', 'setAll'] + if (value === '0') { + _options = [..._options, ...['options']] + } else if (value === '1') { + _options = [..._options, ...['dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']] + } + + this.setState({ + formlist: this.state.formlist.map(form => { + form.hidden = !_options.includes(form.key) + return form + }) + }) + } } getFields() { const { getFieldDecorator } = this.props.form const fields = [] - this.props.formlist.forEach((item, index) => { + this.state.formlist.forEach((item, index) => { + if (item.hidden) return + if (item.type === 'text') { // 鏂囨湰鎼滅储 let placeholder = '' if (item.key === 'initval' && this.state.inputType === 'dateday') { @@ -49,7 +74,7 @@ placeholder = '渚嬶細' + moment().format('YYYY-MM-DD HH:mm:ss') } fields.push( - <Col span={24} key={index}> + <Col span={12} key={index}> <Form.Item label={item.label}> {getFieldDecorator(item.key, { initialValue: item.initVal || '', @@ -65,7 +90,7 @@ ) } else if (item.type === 'select') { // 涓嬫媺鎼滅储 fields.push( - <Col span={24} key={index}> + <Col span={12} key={index}> <Form.Item label={item.label}> {getFieldDecorator(item.key, { initialValue: item.initVal || '', @@ -92,35 +117,47 @@ </Form.Item> </Col> ) - if (item.key === 'type' && this.state.inputType === 'select') { - fields.push( - <Col span={24} key={'radio' + index}> - <Form.Item label={'閫夐」'}> - <Radio.Group onChange={this.onChange} value={this.state.selectType}> - <Radio value={0}>鑷畾涔�</Radio> - <Radio value={1}>鏁版嵁婧�</Radio> - </Radio.Group> - </Form.Item> - </Col> - ) - if (this.state.selectType === 0) { - fields.push( - <Col span={18} offset={6} key={'table' + index}> - <EditTable data={this.state.card.options} ref="editTable"/> - </Col> - ) - } else { - fields.push( - <Col span={18} offset={6} key={'table' + index}> - <Form.Item className="text-area"> - {getFieldDecorator('datasource', { - initialValue: '' - })(<TextArea rows={4} />)} - </Form.Item> - </Col> - ) - } - } + } else if (item.type === 'radio') { + fields.push( + <Col span={12} key={index}> + <Form.Item label={item.label}> + {getFieldDecorator(item.key, { initialValue: item.initVal })( + <Radio.Group onChange={(e) => {this.onChange(e, item.key)}}> + { + item.options.map(option => { + return ( + <Radio key={option.MenuID} value={option.MenuID}>{option.text}</Radio> + ) + }) + } + </Radio.Group>, + )} + </Form.Item> + </Col> + ) + + } else if (item.type === 'textarea') { + fields.push( + <Col span={20} offset={4} key={index}> + <Form.Item className="text-area"> + {getFieldDecorator(item.key, { + initialValue: item.initVal, + rules: [ + { + required: !!item.required, + message: this.props.dict['form.required.input'] + item.label + '!' + } + ] + })(<TextArea rows={4} />)} + </Form.Item> + </Col> + ) + } else if (item.type === 'options') { + fields.push( + <Col span={20} offset={4} key={index}> + <EditTable data={item.initVal} ref="editTable"/> + </Col> + ) } }) return fields @@ -131,16 +168,15 @@ return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { - if (this.state.inputType === 'select') { - values.resourceType = this.state.selectType - if (this.state.selectType === 0) { - values.options = this.refs.editTable.state.dataSource - } else { - values.options = [] - } + if (values.type === 'select' && values.resourceType === '0') { + values.options = this.refs.editTable.state.dataSource + values.dataSource = '' + } else if (values.type === 'select' && values.resourceType === '1') { + values.options = [] } - values.id = this.state.card.id - values.uuid = this.state.card.uuid + + values.id = this.props.card.id + values.uuid = this.props.card.uuid resolve({ type: 'search', values @@ -154,19 +190,21 @@ resetForm = (formlist) => { if (!formlist) return - let _item = formlist.filter(cell => cell.key === 'type')[0] - if (_item.initVal === 'select') { - this.setState({ - inputType: 'select', - card: _item.card, - selectType: _item.card.resourceType - }) - } else { - this.setState({ - inputType: _item.card.type, - card: _item.card - }) + let type = formlist.filter(cell => cell.key === 'type')[0].initVal + let resourceType = formlist.filter(cell => cell.key === 'resourceType')[0].initVal + let _options = ['label', 'field', 'initval', 'type'] + if (type === 'select' && resourceType === '0') { + _options = [..._options, ...['resourceType', 'setAll', 'options']] + } else if (type === 'select' && resourceType === '1') { + _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']] } + + this.setState({ + formlist: formlist.map(form => { + form.hidden = !_options.includes(form.key) + return form + }) + }) } UNSAFE_componentWillMount () { @@ -177,11 +215,11 @@ const formItemLayout = { labelCol: { xs: { span: 24 }, - sm: { span: 6 } + sm: { span: 8 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 18 } + sm: { span: 16 } } } return ( -- Gitblit v1.8.0