king
2019-11-13 8b9effb98612ee8a00d76d639a5733d12e9ecce6
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 (