| | |
| | | |
| | | 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') { |
| | |
| | | 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 || '', |
| | |
| | | ) |
| | | } 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 || '', |
| | |
| | | </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 |
| | |
| | | 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 |
| | |
| | | |
| | | 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 () { |
| | |
| | | const formItemLayout = { |
| | | labelCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 6 } |
| | | sm: { span: 8 } |
| | | }, |
| | | wrapperCol: { |
| | | xs: { span: 24 }, |
| | | sm: { span: 18 } |
| | | sm: { span: 16 } |
| | | } |
| | | } |
| | | return ( |