king
2022-04-26 5046d0d13dc6a8563b8e54e31913bc44cfa1072f
src/tabviews/custom/components/table/edit-table/index.jsx
@@ -1,6 +1,6 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import {connect} from 'react-redux'
import { connect } from 'react-redux'
import { is, fromJS } from 'immutable'
import { notification } from 'antd'
@@ -15,13 +15,11 @@
// 通用组件
const MainSearch = asyncComponent(() => import('@/tabviews/zshare/topSearch'))
const MainAction = asyncComponent(() => import('@/tabviews/zshare/actionList'))
// const MainTable = asyncComponent(() => import('./normalTable'))
const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader'))
class EditableTable extends Component {
  static propTpyes = {
    BID: PropTypes.any,              // 父级Id
    data: PropTypes.array,           // 统一查询数据
    config: PropTypes.object,        // 组件配置信息
    mainSearch: PropTypes.any,       // 外层搜索条件
    menuType: PropTypes.any,         // 菜单类型
@@ -58,6 +56,20 @@
    let _cols = new Map()
    let setting = {..._config.setting, ..._config.wrap, style: {}}
    setting.tableId = Utils.getuuid()
    _config.submit.style = _config.submit.style || {}
    _config.submit.wrapStyle = {}
    _config.submit.hasAction = _config.action.length > 0
    if (!_config.submit.hasAction) {
      if (_config.submit.style.marginTop) {
        _config.submit.wrapStyle.paddingTop = _config.submit.style.marginTop
      }
      if (_config.submit.style.marginBottom) {
        _config.submit.wrapStyle.paddingBottom = _config.submit.style.marginBottom
      }
    } else {
      _config.submit.wrapStyle.paddingTop = '15px'
    }
    if (setting.height) {
      setting.operType = 'btnMode'
@@ -477,7 +489,6 @@
    const { config } = this.state
    if (config.uuid !== menuId) return
    if (id === 'empty') return
    if (!id) {
      this.reloadtable()
@@ -513,20 +524,29 @@
    if (config.uuid !== menuId) return
    if (position === 'line' && lines && lines.length === 1) {
      this.loadmainLinedata(lines[0].$$uuid)
    } else {
      this.reloadtable(btn)                                                    // 数据刷新
    let supModule = config.setting.supModule
    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
      if (position === 'line') {
        if (lines && lines.length === 1) {
          this.loadmainLinedata(lines[0].$$uuid)
        } else {
          this.reloadtable(btn)
        }
      } else if (position === 'mainline' || position === 'popclose') { // 刷新源组件时,附带刷新上级行与当前组件
        if (supModule && BID) {
          MKEmitter.emit('reloadData', supModule, BID)
        } else {
          this.reloadtable(btn)
        }
      } else {
        this.reloadtable(btn)
      }
    }
    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 同级标签刷新
    }
    if (position === 'mainline' && config.setting.supModule) {                 // 主表行刷新
      MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty'))
    } else if (position === 'popclose') {                                      // 标签关闭刷新
      config.setting.supModule && MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty'))
    if (position === 'popclose') { // 执行启动弹窗的按钮所选择的刷新项
      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
    }
  }
@@ -566,7 +586,7 @@
  }
  render() {
    const { BID, setting, searchlist, actions, config, columns, BData, data, selectedData, lock } = this.state
    const { BID, setting, searchlist, actions, config, columns, BData, selectedData, lock } = this.state
    return (
      <div className="custom-edit-table" style={config.style}>
@@ -583,24 +603,21 @@
          columns={config.columns}
          selectedData={selectedData}
        />
        <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}>
          <MainTable
            BID={BID}
            data={data}
            setting={setting}
            columns={columns}
            MenuID={config.uuid}
            submit={config.submit}
            fields={config.columns}
            total={this.state.total}
            lineMarks={config.lineMarks}
            loading={this.state.loading}
            refreshdata={this.refreshbytable}
            chgSelectData={(selects) => this.setState({selectedData: selects})}
            changeLock={(lock) => this.setState({lock: lock})}
            statFValue={this.state.statFValue}
          />
        </div>
        <MainTable
          BID={BID}
          setting={setting}
          columns={columns}
          MenuID={config.uuid}
          submit={config.submit}
          fields={config.columns}
          total={this.state.total}
          lineMarks={config.lineMarks}
          loading={this.state.loading}
          refreshdata={this.refreshbytable}
          chgSelectData={(selects) => this.setState({selectedData: selects})}
          changeLock={(lock) => this.setState({lock: lock})}
          statFValue={this.state.statFValue}
        />
      </div>
    )
  }