From d3edd6d592db12fbec67e2700d168e07546aed29 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 15 十一月 2019 09:46:00 +0800 Subject: [PATCH] 2019-11-15 --- src/components/sidemenu/comtableconfig/searchform/index.jsx | 100 +++++++++++++++++++++++++++++++++++--------------- 1 files changed, 70 insertions(+), 30 deletions(-) diff --git a/src/components/sidemenu/comtableconfig/searchform/index.jsx b/src/components/sidemenu/comtableconfig/searchform/index.jsx index 3f03957..9207158 100644 --- a/src/components/sidemenu/comtableconfig/searchform/index.jsx +++ b/src/components/sidemenu/comtableconfig/searchform/index.jsx @@ -1,7 +1,6 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -// import { is, fromJS } from 'immutable' -import { Form, Row, Col, Input, Select, Icon, Radio } from 'antd' +import { Form, Row, Col, Input, Select, Icon, Radio, notification } from 'antd' import moment from 'moment' import EditTable from '../editable' import './index.scss' @@ -11,28 +10,31 @@ class MainSearch extends Component { static propTpyes = { dict: PropTypes.object, // 瀛楀吀椤� - formlist: PropTypes.any + formlist: PropTypes.any, + card: PropTypes.object } state = { - card: null, - inputType: 'text', - selectType: 0, - options: null, + openType: null, + resourceType: null, formlist: null } 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']] + if (value === 'select' && this.state.resourceType === '0') { + _options = [..._options, ...['resourceType', 'setAll', 'options', 'display']] + } else if (value === 'select' && this.state.resourceType === '1') { + _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']] + } else if (value === 'link' && this.state.resourceType === '0') { + _options = [..._options, ...['resourceType', 'setAll', 'options', 'linkField', 'display']] + } else if (value === 'link' && this.state.resourceType === '1') { + _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'linkField', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']] } this.setState({ + openType: value, formlist: this.state.formlist.map(form => { form.hidden = !_options.includes(form.key) return form @@ -45,13 +47,18 @@ 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']] + if (this.state.openType === 'select' && value === '0') { + _options = [..._options, ...['options', 'display']] + } else if (this.state.openType === 'select' && value === '1') { + _options = [..._options, ...['dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']] + } else if (this.state.openType === 'link' && value === '0') { + _options = [..._options, ...['options', 'linkField', 'display']] + } else if (this.state.openType === 'link' && value === '1') { + _options = [..._options, ...['dataSource', 'linkField', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']] } this.setState({ + resourceType: value, formlist: this.state.formlist.map(form => { form.hidden = !_options.includes(form.key) return form @@ -68,9 +75,9 @@ if (item.type === 'text') { // 鏂囨湰鎼滅储 let placeholder = '' - if (item.key === 'initval' && this.state.inputType === 'dateday') { + if (item.key === 'initval' && this.state.openType === 'dateday') { placeholder = '渚嬶細' + moment().format('YYYY-MM-DD') - } else if (item.key === 'initval' && this.state.inputType === 'datetime') { + } else if (item.key === 'initval' && this.state.openType === 'datetime') { placeholder = '渚嬶細' + moment().format('YYYY-MM-DD HH:mm:ss') } fields.push( @@ -121,7 +128,15 @@ fields.push( <Col span={12} key={index}> <Form.Item label={item.label}> - {getFieldDecorator(item.key, { initialValue: item.initVal })( + {getFieldDecorator(item.key, { + initialValue: item.initVal, + rules: [ + { + required: !!item.required, + message: this.props.dict['form.required.select'] + item.label + '!' + } + ] + })( <Radio.Group onChange={(e) => {this.onChange(e, item.key)}}> { item.options.map(option => { @@ -155,7 +170,7 @@ } else if (item.type === 'options') { fields.push( <Col span={20} offset={4} key={index}> - <EditTable data={item.initVal} ref="editTable"/> + <EditTable data={item.initVal} type={this.state.openType} ref="editTable"/> </Col> ) } @@ -168,19 +183,38 @@ return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { - if (values.type === 'select' && values.resourceType === '0') { + let isvalid = true + values.id = this.props.card.id + values.uuid = this.props.card.uuid + // 涓嬫媺鑿滃崟鎴栧叧鑱旇彍鍗� + if ((values.type === 'select' || values.type === 'link') && values.resourceType === '0') { values.options = this.refs.editTable.state.dataSource values.dataSource = '' - } else if (values.type === 'select' && values.resourceType === '1') { + let emptys = [] + if (values.type === 'select') { + emptys = values.options.filter(op => !(op.Value && op.Text)) + } else { + emptys = values.options.filter(op => !(op.Value && op.Text && op.ParentID)) + } + if (emptys.length > 0) { + isvalid = false + } + } else if ((values.type === 'select' || values.type === 'link') && values.resourceType === '1') { values.options = [] } - values.id = this.props.card.id - values.uuid = this.props.card.uuid - resolve({ - type: 'search', - values - }) + if (isvalid) { + resolve({ + type: 'search', + values + }) + } else { + notification.warning({ + top: 92, + message: this.props.dict['header.form.selectItem.error'], + duration: 10 + }) + } } else { reject(err) } @@ -194,12 +228,18 @@ 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']] + _options = [..._options, ...['resourceType', 'setAll', 'options', 'display']] } else if (type === 'select' && resourceType === '1') { - _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType']] + _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']] + } else if (type === 'link' && resourceType === '0') { + _options = [..._options, ...['resourceType', 'setAll', 'options', 'linkField', 'display']] + } else if (type === 'link' && resourceType === '1') { + _options = [..._options, ...['resourceType', 'setAll', 'dataSource', 'linkField', 'valueField', 'valueText', 'orderBy', 'orderType', 'display']] } this.setState({ + openType: type, + resourceType: resourceType, formlist: formlist.map(form => { form.hidden = !_options.includes(form.key) return form -- Gitblit v1.8.0