king
2022-09-29 b883ae5d7d46fc7a3503236f16a250c2264ea7c7
src/menu/components/share/actioncomponent/index.jsx
@@ -21,10 +21,10 @@
const VerifyPrint = asyncSpinComponent(() => import('@/templates/sharecomponent/actioncomponent/verifyprint'))
const VerifyExcelIn = asyncSpinComponent(() => import('@/templates/sharecomponent/actioncomponent/verifyexcelin'))
const VerifyExcelOut = asyncSpinComponent(() => import('@/templates/sharecomponent/actioncomponent/verifyexcelout'))
const VerifyMegvii = asyncSpinComponent(() => import('@/templates/sharecomponent/actioncomponent/verifymegvii'))
class ActionComponent extends Component {
  static propTpyes = {
    type: PropTypes.string,          // 菜单类型,主表或子表
    config: PropTypes.object,        // 菜单配置信息
    setSubConfig: PropTypes.func,    // 设置子配置信息
    updateaction: PropTypes.func     // 菜单配置更新
@@ -37,7 +37,8 @@
    formlist: null,      // 表单信息
    actionlist: null,    // 按钮组
    visible: false,      // 模态框控制
    profVisible: false   // 验证信息模态框
    profVisible: false,  // 验证信息模态框
    record: null
  }
  /**
@@ -63,7 +64,6 @@
  componentDidMount () {
    MKEmitter.addListener('addButton', this.addButton)
    MKEmitter.addListener('submitStyle', this.getStyle)
  }
  /**
@@ -88,14 +88,11 @@
      return
    }
    MKEmitter.removeListener('addButton', this.addButton)
    MKEmitter.removeListener('submitStyle', this.getStyle)
  }
  getStyle = (comIds, style) => {
  getStyle = (style) => {
    const { config } = this.props
    const { card, actionlist } = this.state
    if (comIds[0] !== config.uuid || comIds[1] !== 'actionlist') return
    let _card = fromJS(card).toJS()
    _card.style = style
@@ -113,8 +110,6 @@
  }
  changeBtnStyle = (element) => {
    const { config } = this.props
    let _style = element.style ? fromJS(element.style).toJS() : {}
    let options = ['font', 'border', 'background', 'margin', 'padding']
@@ -122,7 +117,7 @@
      card: element
    })
    MKEmitter.emit('changeStyle', [config.uuid, 'actionlist', element.uuid], options, _style)
    MKEmitter.emit('changeStyle', options, _style, this.getStyle)
  }
  addButton = (cardId, element) => {
@@ -171,6 +166,10 @@
    let functip = <div>
      <p style={{marginBottom: '5px'}}>{this.state.dict['model.tooltip.func.innerface'].replace('@ableField', ableField)}</p>
    </div>
    if (!ableField) { // 无字段限制
      functip = ''
    }
    let menulist = sessionStorage.getItem('fstMenuList')
    if (menulist) {
@@ -182,13 +181,24 @@
    } else {
      menulist = []
    }
    let supId = ''
    if (config.setting && config.setting.supModule) {
      let pid = config.setting.supModule[config.setting.supModule.length - 1]
      if (pid && pid !== 'empty') {
        supId = pid
      } else {
        supId = ''
      }
    }
    
    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid)
    let modules = MenuUtils.getSubModules(window.GLOB.customMenu.components, config.uuid, supId) || []
    let anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, config.uuid) || []
    this.setState({
      visible: true,
      card: card,
      formlist: getActionForm(card, functip, config, usefulFields, this.props.type, menulist, modules)
      formlist: getActionForm(card, functip, config, usefulFields, menulist, modules, anchors)
    })
  }
@@ -235,9 +245,8 @@
        if (item.uuid === btn.uuid) {
          btn.style = item.style || {}
          if (btn.class !== item.class || btn.show !== item.show || !btn.style.color) {
            if (btn.show === 'link' || btn.show === 'icon') {
          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 {
@@ -284,15 +293,10 @@
        _actionlist = _actionlist.filter(item => item.uuid !== card.uuid)
        let btnlog = config.btnlog || []
        if (card.OpenType === 'popview' || card.verify || card.modal) {
          btnlog.push(card)
        }
        _this.setState({
          actionlist: _actionlist
        }, () => {
          _this.props.updateaction({...config, action: _actionlist, btnlog})
          _this.props.updateaction({...config, action: _actionlist})
        })
        if (card.origin || appType === 'mob') return
@@ -312,6 +316,7 @@
      profVisible: true,
      card: element
    })
    MKEmitter.emit('modalStatus', '验证信息')
  }
  /**
@@ -339,6 +344,7 @@
      }, () => {
        this.props.updateaction({...config, action: _actionlist})
      })
      MKEmitter.emit('modalStatus', false)
    })
  }
@@ -410,9 +416,9 @@
    if (element.OpenType === 'pop' || element.OpenType === 'popview' || element.execMode === 'pop') {
      this.props.setSubConfig(element)
    } else if (element.OpenType === 'innerpage' && element.pageTemplate === 'page') {
      MKEmitter.emit('changeEditMenu', {MenuID: element.uuid, copyMenuId: element.copyMenuId})
    } else if (element.OpenType === 'innerpage' && element.pageTemplate === 'linkpage') {
      MKEmitter.emit('changeEditMenu', {MenuID: element.linkmenu})
    } else if (element.OpenType === 'funcbutton' && (element.funcType === 'copyurl' || element.funcType === 'scan') && element.linkmenu) {
      MKEmitter.emit('changeEditMenu', {MenuID: element.linkmenu})
    } else {
      this.handleAction(element)
@@ -423,13 +429,15 @@
    let config = fromJS(this.props.config).toJS()
    let btn = null
    if (config.subtype === 'normaltable') {
    let _col = null
    if (config.subtype === 'normaltable' || config.subtype === 'editable') {
      config.cols.forEach(col => {
        if (col.type !== 'action') return
        col.elements = col.elements.filter(item => {
          if (item.uuid === id) {
            btn = item
            _col = col
          }
          return item.uuid !== id
        })
@@ -438,8 +446,9 @@
    if (!btn) return
    btn.Ot = 'requiredSgl'
    config.action.push(btn)
    MKEmitter.emit('cardDelElement', _col.uuid, btn.uuid)
    this.setState({
      actionlist: config.action
@@ -448,14 +457,60 @@
    })
  }
  getVerify = (card) => {
    const { config } = this.props
    const { dict } = this.state
    if (!card) return null
    if (['pop', 'prompt', 'exec'].includes(card.OpenType)) {
      return <VerifyCard
        card={card}
        dict={dict}
        config={config}
        columns={config.columns}
        wrappedComponentRef={(inst) => this.verifyRef = inst}
      />
    } else if (card.OpenType === 'excelIn') {
      return <VerifyExcelIn
        card={card}
        dict={dict}
        columns={config.columns}
        wrappedComponentRef={(inst) => this.verifyRef = inst}
      />
    } else if (card.OpenType === 'excelOut') {
      return <VerifyExcelOut
        card={card}
        dict={dict}
        config={config}
        wrappedComponentRef={(inst) => this.verifyRef = inst}
      />
    } else if (card.OpenType === 'funcbutton' && card.funcType === 'print') {
      return <VerifyPrint
        card={card}
        dict={dict}
        columns={config.columns}
        wrappedComponentRef={(inst) => this.verifyRef = inst}
      />
    } else if (card.OpenType === 'funcbutton' && card.funcType === 'megvii') {
      return <VerifyMegvii
        card={card}
        dict={dict}
        columns={config.columns}
        wrappedComponentRef={(inst) => this.verifyRef = inst}
      />
    }
  }
  render() {
    const { config } = this.props
    const { actionlist, visible, card, dict, profVisible } = this.state
    const { actionlist, visible, appType, card, dict, profVisible, record } = this.state
    return (
      <div className={'model-menu-action-list'}>
      <div className={'model-menu-action-list length' + actionlist.length}>
        <DragElement
          list={actionlist}
          type={appType === 'mob' ? config.subtype : ''}
          handleList={this.handleList}
          dropButton={this.dropButton}
          handleMenu={this.handleAction}
@@ -466,13 +521,13 @@
        />
        {/* 编辑按钮:复制、编辑 */}
        <Modal
          title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])}
          title="按钮·编辑"
          visible={visible}
          width={850}
          width={920}
          maskClosable={false}
          onCancel={this.editModalCancel}
          footer={[
            <CreateFunc key="create" dict={dict} ref="btnCreatFunc" trigger={this.creatFunc}/>,
            record && record.intertype === 'inner' ? <CreateFunc key="create" dict={dict} ref="btnCreatFunc" trigger={this.creatFunc}/> : null,
            <Button key="cancel" onClick={this.editModalCancel}>{dict['model.cancel']}</Button>,
            <Button key="confirm" type="primary" onClick={this.handleSubmit}>{dict['model.confirm']}</Button>
          ]}
@@ -484,54 +539,32 @@
            formlist={this.state.formlist}
            inputSubmit={this.handleSubmit}
            setting={config.setting}
            updRecord={(record) => this.setState({record: fromJS(record).toJS()})}
            wrappedComponentRef={(inst) => this.actionFormRef = inst}
          />
        </Modal>
        {/* 按钮使用系统存储过程时,验证信息模态框 */}
        <Modal
          wrapClassName="model-table-action-verify-modal"
          title={'验证信息'}
          wrapClassName="mk-pop-modal"
          visible={profVisible}
          width={'75vw'}
          width={'90vw'}
          maskClosable={false}
          okText={dict['model.submit']}
          onOk={this.verifySubmit}
          onCancel={() => { this.setState({ profVisible: false }) }}
          onCancel={() => {
            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
        >
          {card && !card.execMode && card.OpenType !== 'excelIn' && card.OpenType !== 'excelOut' ?
            <VerifyCard
              card={card}
              dict={dict}
              config={config}
              columns={config.columns}
              wrappedComponentRef={(inst) => this.verifyRef = inst}
            /> : null
          }
          {card && card.execMode ?
            <VerifyPrint
              card={card}
              dict={dict}
              columns={config.columns}
              wrappedComponentRef={(inst) => this.verifyRef = inst}
            /> : null
          }
          {card && card.OpenType === 'excelIn' ?
            <VerifyExcelIn
              card={card}
              dict={dict}
              columns={config.columns}
              wrappedComponentRef={(inst) => this.verifyRef = inst}
            /> : null
          }
          {card && card.OpenType === 'excelOut' ?
            <VerifyExcelOut
              card={card}
              dict={dict}
              config={config}
              wrappedComponentRef={(inst) => this.verifyRef = inst}
            /> : null
          }
          {this.getVerify(card)}
        </Modal>
      </div>
    )