king
2023-01-17 cc1a76df575c18f0d0ee96e8658461efdce3a918
src/menu/components/share/actioncomponent/index.jsx
@@ -4,7 +4,7 @@
import { Modal, notification, Button } from 'antd'
import Utils, { FuncUtils } from '@/utils/utils.js'
import { getActionForm } from './formconfig'
import { getActionForm, getBaseTableActionForm } from './formconfig'
import asyncSpinComponent from '@/utils/asyncSpinComponent'
import MKEmitter from '@/utils/events.js'
@@ -60,17 +60,9 @@
  }
  componentDidMount () {
    MKEmitter.addListener('revert', this.revert)
    MKEmitter.addListener('addButton', this.addButton)
  }
  /**
   * @description 监听到按钮复制时,触发按钮编辑
   */
  UNSAFE_componentWillReceiveProps (nextProps) {
    const { actionlist } = this.state
    if (!is(fromJS(nextProps.config.action), fromJS(this.props.config.action)) && !is(fromJS(nextProps.config.action), fromJS(actionlist))) {
      this.setState({actionlist: fromJS(nextProps.config.action).toJS()})
    }
    MKEmitter.addListener('submitModal', this.handleSave)
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -84,7 +76,43 @@
    this.setState = () => {
      return
    }
    MKEmitter.removeListener('revert', this.revert)
    MKEmitter.removeListener('addButton', this.addButton)
    MKEmitter.removeListener('submitModal', this.handleSave)
  }
  revert = (id) => {
    if (id && id !== this.props.config.uuid) return
    this.setState({
      actionlist: fromJS(this.props.config.action).toJS()
    })
  }
  handleSave = (componentId, btnId, modal) => {
    const { config } = this.props
    if (config.uuid !== componentId) return
    const { actionlist } = this.state
    let _index = actionlist.findIndex(cell => cell.uuid === btnId)
    if (_index === -1) return
    let _actionlist = actionlist.map(cell => {
      if (cell.uuid === btnId) {
        cell.modal = modal
      }
      return cell
    })
    this.setState({
      actionlist: _actionlist
    }, () => {
      this.props.updateaction({...config, action: _actionlist})
    })
  }
  getStyle = (style) => {
@@ -179,14 +207,25 @@
      }
    }
    
    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId) || []
    let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId)
    this.setState({
      visible: true,
      card: card,
      formlist: getActionForm(card, functip, config, usefulFields, modules, anchors)
    })
    if (config.subtype === 'basetable') {
      delete card.eleType // 区分按钮位置
      this.setState({
        visible: true,
        card: card,
        formlist: getBaseTableActionForm(card, functip, config, usefulFields, modules)
      })
    } else {
      let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
      this.setState({
        visible: true,
        card: card,
        formlist: getActionForm(card, functip, config, usefulFields, modules, anchors)
      })
    }
  }
  /**
@@ -218,7 +257,7 @@
   */
  handleSubmit = () => {
    const { config } = this.props
    let color = { primary: '#1890ff', yellow: '#c49f47', orange: 'orange', danger: '#ff4d4f', green: '#26C281', dgreen: '#32c5d2', purple: '#8E44AD', cyan: '#13c2c2', gray: '#666666' }
    let color = { primary: '#1890ff', yellow: '#c49f47', orange: 'orange', danger: '#ff4d4f', green: '#26C281', dgreen: '#32c5d2', purple: '#8E44AD', cyan: '#13c2c2', gray: '#666666', default: 'rgba(0, 0, 0, 0.65)' }
    let _actionlist = fromJS(this.state.actionlist).toJS()
    
    this.actionFormRef.handleConfirm().then(btn => {
@@ -231,14 +270,25 @@
        }
        if (item.uuid === btn.uuid) {
          btn.style = item.style || {}
          if (btn.class !== item.class || btn.show !== item.show || !btn.style.color || item.focus) {
            if (btn.show === 'icon') {
              btn.style.color = color[btn.class]
              btn.style.backgroundColor = 'transparent'
          if (config.subtype === 'basetable') {
            let _c = btn.class.replace('border-', '')
            if (btn.class === 'default') {
              btn.style = {color: 'rgba(0, 0, 0, 0.65)', backgroundColor: '#fff', borderColor: '#d9d9d9', marginRight: '15px'}
            } else if (btn.class.indexOf('border') > -1) {
              btn.style = {color: color[_c], backgroundColor: '#fff', borderColor: color[_c], marginRight: '15px'}
            } else {
              btn.style.color = '#ffffff'
              btn.style.backgroundColor = color[btn.class]
              btn.style = {color: '#fff', backgroundColor: color[_c], borderColor: color[_c], marginRight: '15px'}
            }
          } else {
            btn.style = item.style || {}
            if (btn.class !== item.class || btn.show !== item.show || !btn.style.color || item.focus) {
              if (btn.show === 'icon') {
                btn.style.color = color[btn.class]
                btn.style.backgroundColor = 'transparent'
              } else {
                btn.style.color = '#ffffff'
                btn.style.backgroundColor = color[btn.class]
              }
            }
          }
          return btn
@@ -270,7 +320,6 @@
   */
  deleteElement = (card) => {
    const { config } = this.props
    const { appType } = this.state
    let _this = this
    confirm({
@@ -285,11 +334,6 @@
        }, () => {
          _this.props.updateaction({...config, action: _actionlist})
        })
        if (card.origin || appType === 'mob') return
        if (appType === 'pc' && card.OpenType !== 'popview') return
        MKEmitter.emit('delButtons', [card.uuid])
      },
      onCancel() {}
    })
@@ -303,7 +347,6 @@
      profVisible: true,
      card: element
    })
    MKEmitter.emit('modalStatus', '验证信息')
  }
  /**
@@ -331,7 +374,6 @@
      }, () => {
        this.props.updateaction({...config, action: _actionlist})
      })
      MKEmitter.emit('modalStatus', false)
    })
  }
@@ -374,11 +416,7 @@
        newLText = Utils.formatOptions(FuncUtils.getexcelInfunc(_param, btn, menu))
        DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
      } else if (btn.OpenType === 'excelOut') {
        let _param = {
          innerFunc: btn.innerFunc
        }
        newLText = Utils.formatOptions(FuncUtils.getTableFunc(_param, menu, _config)) // 创建存储过程sql
        newLText = Utils.formatOptions(FuncUtils.getTableFunc(btn.innerFunc, menu, _config)) // 创建存储过程sql
        DelText = Utils.formatOptions(FuncUtils.dropfunc(btn.innerFunc))
      } else {
        let _param = {
@@ -417,7 +455,7 @@
    let btn = null
    let _col = null
    if (config.subtype === 'normaltable' || config.subtype === 'editable') {
    if (config.type === 'table') {
      config.cols.forEach(col => {
        if (col.type !== 'action') return
@@ -491,7 +529,7 @@
      <div className={'model-menu-action-list length' + actionlist.length}>
        <DragElement
          list={actionlist}
          type={appType === 'mob' ? config.subtype : ''}
          type={appType === 'mob' || config.subtype === 'basetable' ? config.subtype : ''}
          handleList={this.handleList}
          dropButton={this.dropButton}
          handleMenu={this.handleAction}
@@ -535,11 +573,9 @@
            if (this.verifyRef.handleCancel) {
              this.verifyRef.handleCancel().then(() => {
                this.setState({ profVisible: false })
                MKEmitter.emit('modalStatus', false)
              })
            } else {
              this.setState({ profVisible: false })
              MKEmitter.emit('modalStatus', false)
            }
          }}
          destroyOnClose