king
7 天以前 a1e9b18a4dbfd21e1bf4d5cb60974ac2f0115efd
src/tabviews/zshare/mutilform/mkSelect/index.jsx
@@ -17,6 +17,14 @@
      } else {
        value = []
      }
    } else if (value) {
      let option = config.oriOptions[0]
      if (option && typeof(option.value) !== typeof(value)) {
        if (typeof(option.value) === 'number' && !isNaN(value)) {
          value = +value
        }
      }
    }
    this.state = {
@@ -40,7 +48,7 @@
  }
  UNSAFE_componentWillReceiveProps (nextProps) {
    const { config } = this.state
    const { config, value } = this.state
    if (!is(fromJS(config.oriOptions), fromJS(nextProps.config.oriOptions))) {
      this.setState({
@@ -48,10 +56,24 @@
        options: fromJS(nextProps.config.options).toJS()
      })
      if (typeof(config.initval) === 'string' && config.initval.indexOf('$first') > -1) {
      let option = nextProps.config.oriOptions[0]
      if (config.$first) {
        this.setState({
          value: nextProps.config.initval,
        })
        if (config.linkFields && nextProps.config.initval) {
          config.linkFields.forEach((m, i) => {
            setTimeout(() => {
              MKEmitter.emit('mkFP', m.uuid, nextProps.config.initval, 0)
            }, (i + 1) * 70)
          })
        }
      } else if (option && typeof(option.value) !== typeof(value)) {
        if (typeof(option.value) === 'number' && !isNaN(value)) {
          this.setState({
            value: +value
          })
        }
      }
    }
  }
@@ -64,12 +86,15 @@
    MKEmitter.removeListener('mkFC', this.mkFormFocus)
  }
  mkFormFocus = (type, uuid) => {
  mkFormFocus = (type, uuid, val, level) => {
    if (uuid !== this.props.config.uuid) return
    if (type !== 'focus') return
    let _div = document.getElementById(uuid)
    _div && _div.click && _div.click()
    if (type === 'focus') {
      let _div = document.getElementById(uuid)
      _div && _div.click && _div.click()
    } else if (type === 'input' && (!level || level < 10)) {
      let _level = level || 1
      this.selectChange(val, _level++)
    }
  }
  mkFormHandle = (uuid, parentId, level) => {
@@ -78,7 +103,7 @@
    const { config } = this.state
    let options = config.oriOptions.filter(option => option.ParentID === parentId || option.value === '')
    let _option = options[0] || null
    let _option = options[0] && !options[0].$disabled ? options[0] : null
    let val = _option ? _option.value : ''
    this.setState({
@@ -108,7 +133,7 @@
    }
  }
  selectChange = (val) => {
  selectChange = (val, level) => {
    const { config } = this.state
    let other = {}
@@ -117,7 +142,7 @@
      option && config.subFields.forEach((n, i) => {
        other[n.field] = option[n.field]
        setTimeout(() => {
          MKEmitter.emit('mkFC', 'input', n.uuid, option[n.field])
          MKEmitter.emit('mkFC', 'input', n.uuid, option[n.field], level)
        }, i * 5)
      })
    }
@@ -134,12 +159,13 @@
      if (config.enter === 'tab') {
        MKEmitter.emit('mkFC', 'focus', config.tabUuid)
      } else if (config.enter === 'sub') {
        config.tabUuid && MKEmitter.emit('mkFC', 'focus', config.tabUuid)
        if (config.linkFields || config.subFields || config.controlFields) {
          setTimeout(() => {
            this.props.onSubmit()
            this.props.onSubmit(config.tabUuid, config.errTabUuid)
          }, 1000)
        } else {
          this.props.onSubmit()
          this.props.onSubmit(config.tabUuid, config.errTabUuid)
        }
      }
    })
@@ -161,7 +187,7 @@
          value={value}
          dropdownMatchSelectWidth={config.dropdown !== 'false'}
          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
          onSelect={this.selectChange}
          onSelect={(val) => this.selectChange(val)}
          onChange={(val) => val === undefined && this.selectChange('')}
          disabled={config.readonly}
        >
@@ -176,6 +202,7 @@
        id={config.uuid}
        mode="multiple"
        defaultValue={value}
        dropdownMatchSelectWidth={config.dropdown !== 'false'}
        filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
        onChange={this.mutilselectChange}
        disabled={config.readonly}