king
2020-01-09 f068c617b918fc7817c11724424cb1a9149ec3a2
src/tabviews/tableshare/mutilform/index.jsx
@@ -2,6 +2,7 @@
import PropTypes from 'prop-types'
import { Form, Row, Col, Input, InputNumber, Select, DatePicker, notification } from 'antd'
import moment from 'moment'
import { formRule } from '@/utils/option.js'
import Utils from '@/utils/utils.js'
import FileUpload from '../fileupload'
import './index.scss'
@@ -57,6 +58,8 @@
      })
    }
    let _inputfields = formlist.filter(item => item.type === 'text' || item.type === 'number') // 用于过滤下拉菜单关联表单
    formlist = formlist.map(item => {
      if (item.type === 'select' || item.type === 'link') {
        if (item.setAll === 'true') {
@@ -72,6 +75,11 @@
        }
        item.oriOptions = JSON.parse(JSON.stringify(item.options))
        if (item.linkSubField && item.linkSubField.length > 0) {
          let _fields = _inputfields.map(_item => _item.field)
          item.linkSubField = item.linkSubField.filter(_item => _fields.includes(_item))
        }
      }
      if (!/^date/.test(item.type) && this.props.data && this.props.data.hasOwnProperty(item.field)) {
@@ -154,7 +162,7 @@
    }
  }
  selectChange = (_field, value) => {
  selectChange = (_field, value, option) => {
    let formlist = JSON.parse(JSON.stringify(this.state.formlist))
    let subfields = []
@@ -168,6 +176,16 @@
      }
      return item
    })
    // 表单切换时,更新关联字段
    if (_field.type === 'select' && _field.linkSubField && _field.linkSubField.length > 0 && option.props.data) {
      let _data = option.props.data
      let fieldVal = {}
      _field.linkSubField.forEach(subfield => {
        fieldVal[subfield] = _data[subfield]
      })
      this.props.form.setFieldsValue(fieldVal)
    }
    if (subfields.length === 0) return
@@ -225,6 +243,10 @@
                  {
                    required: item.required === 'true',
                    message: this.props.dict['form.required.input'] + item.label + '!'
                  },
                  {
                    max: formRule.input.max,
                    message: formRule.input.message
                  }
                ]
              })(<Input placeholder="" autoComplete="off" disabled={item.readonly === 'true'} onPressEnter={this.handleSubmit} />)}
@@ -264,6 +286,11 @@
          </Col>
        )
      } else if (item.type === 'select' || item.type === 'link') { // 下拉搜索
        let hasSubField = false
        if (item.linkSubField && item.linkSubField.length > 0) { // 存在关联字段,数据存储
          hasSubField = true
        }
        fields.push(
          <Col span={24 / cols} key={index}>
            <Form.Item label={item.label}>
@@ -279,11 +306,10 @@
                <Select
                  showSearch
                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                  onChange={(value) => {this.selectChange(item, value)}}
                  // getPopupContainer={() => document.getElementById('form-box')}
                  onChange={(value, option) => {this.selectChange(item, value, option)}}
                >
                  {item.options.map(option =>
                    <Select.Option id={option.key} title={option.Text} key={option.key} value={option.Value}>{option.Text}</Select.Option>
                    <Select.Option id={option.key} data={hasSubField ? option : ''} title={option.Text} key={option.key} value={option.Value}>{option.Text}</Select.Option>
                  )}
                </Select>
              )}