king
2021-11-18 d4ceae86a84c085d240ecf1e1a2c8b697b8a40bc
src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -42,18 +42,20 @@
    eleType: '',
    datatype: '',
    showType: '',
    showInfo: 'false',
    link: ''
  }
  UNSAFE_componentWillMount () {
    const { card, config } = this.props
    let _options = this.getOptions(card.eleType, card.datatype, card.link, (card.showType || 'line'))
    let _options = this.getOptions(card.eleType, card.datatype, card.link, (card.showType || 'line'), card.showInfo)
    
    this.setState({
      link: card.link,
      eleType: card.eleType,
      datatype: card.datatype,
      showType: card.showType || 'line',
      showInfo: card.showInfo || 'false',
      formlist: this.props.formlist.map(item => {
        item.hidden = !_options.includes(item.key)
@@ -93,7 +95,7 @@
    })
  }
  getOptions = (eleType, datatype, link, showType) => {
  getOptions = (eleType, datatype, link, showType, showInfo) => {
    let _options = fromJS(cardTypeOptions[eleType]).toJS() // 选项列表
    
    if (['text', 'number', 'picture', 'link', 'slider', 'barcode', 'qrcode', 'video'].includes(eleType)) {
@@ -115,8 +117,13 @@
        }
      } else if (eleType === 'picture' && !link) {
        _options.push('scale')
      } else if (eleType === 'slider' && showType !== 'line') {
        _options.push('outlineWidth', 'textAlign')
      } else if (eleType === 'slider') {
        if (showInfo === 'true') {
          _options.push('infoColor')
        }
        if (showType !== 'line') {
          _options.push('outlineWidth', 'textAlign', 'trailColor')
        }
      }
    } else if (eleType === 'icon') {
      if (datatype === 'dynamic') {
@@ -137,10 +144,10 @@
   */
  selectChange = (key, value, option) => {
    const { card, config } = this.props
    const { datatype, eleType, showType } = this.state
    const { datatype, eleType, showType, showInfo } = this.state
    if (key === 'eleType') {
      let _options = this.getOptions(value, datatype, '', showType)
      let _options = this.getOptions(value, datatype, '', showType, showInfo)
      
      let _formlist = this.state.formlist.map(item => {
        item.hidden = !_options.includes(item.key)
@@ -176,6 +183,8 @@
          }
        } else if (item.key === 'url') {
          item.required = value !== 'qrcode'
        } else if (item.key === 'showInfo') {
          item.initVal = showInfo
        }
        return item
@@ -203,7 +212,7 @@
        this.props.form.setFieldsValue({value: option.props.title})
      }
    } else if (key === 'link') {
      let _options = this.getOptions(eleType, this.state.datatype, value, showType)
      let _options = this.getOptions(eleType, datatype, value, showType, showInfo)
      this.setState({
        link: value,
        formlist: this.state.formlist.map(item => {
@@ -218,11 +227,11 @@
  }
  onChange = (e, key) => {
    const { eleType, datatype, link, showType } = this.state
    const { eleType, datatype, link, showType, showInfo } = this.state
    let value = e.target.value
    if (key === 'datatype') {
      let _options = this.getOptions(eleType, value, link, showType)
      let _options = this.getOptions(eleType, value, link, showType, showInfo)
      this.setState({
        datatype: value,
@@ -233,7 +242,7 @@
        })
      })
    } else if (key === 'link') {
      let _options = this.getOptions(eleType, datatype, value, showType)
      let _options = this.getOptions(eleType, datatype, value, showType, showInfo)
      this.setState({
        link: value,
        formlist: this.state.formlist.map(item => {
@@ -244,11 +253,20 @@
          return item
        })
      })
    } else if (key === 'showInfo') {
      let _options = this.getOptions(eleType, datatype, link, showType, value)
      this.setState({
        showInfo: value,
        formlist: this.state.formlist.map(item => {
          item.hidden = !_options.includes(item.key)
          return item
        })
      })
    } else if (key === 'showType') {
      this.setState({
        showType: value
      }, () => {
        let _options = this.getOptions(eleType, datatype, link, value)
        let _options = this.getOptions(eleType, datatype, link, value, showInfo)
        this.setState({
          formlist: this.state.formlist.map(item => {
            item.hidden = !_options.includes(item.key)