king
2020-03-26 f7d1f17bdcb8c3e794a798165737bb7529dbe8ca
src/tabviews/subtabtable/index.jsx
@@ -11,12 +11,14 @@
import Utils from '@/utils/utils.js'
import options from '@/store/options.js'
import asyncComponent from '@/utils/asyncComponent'
import SubTable from '@/tabviews/zshare/normalTable'
import SubAction from '@/tabviews/zshare/actionList'
import SubSearch from '@/tabviews/zshare/topSearch'
import NotFount from '@/components/404'
import './index.scss'
const SubAction = asyncComponent(() => import('@/tabviews/zshare/actionList'))
class SubTabModalTable extends Component {
  static propTpyes = {
@@ -49,7 +51,7 @@
    pageSize: 10,         // 每页数据条数
    orderBy: '',          // 排序
    search: '',           // 搜索条件数组,使用时需分场景处理
    configMap: {}         // 页面配置信息:下拉、按钮等
    triggerBtn: null      // 按钮触发
  }
  /**
@@ -532,7 +534,7 @@
      pageSize: 10,
      orderBy: '',
      search: '',
      configMap: {}
      triggerBtn: null
    }, () => {
      this.loadconfig()
    })
@@ -550,68 +552,10 @@
      this.reloadtable()
    } else if (btn.execError === 'view' && type === 'error') {
      this.reloadview()
    } else if (type === 'excelOut') {
      this.handleDefaultExcelout(btn)
    }
    if (type === 'success') {
      this.props.refreshSupView()
    }
  }
  /**
   * @description 使用默认存储过程 sPC_Get_TableData 导出excel表格
   */
  handleDefaultExcelout = (btn) => {
    const { MenuName } = this.props
    const { arr_field, orderBy, search, setting, config } = this.state
    let _arr_labels = []      // 列名称集
    let _arr_label_field = [] // 列名称字段集
    config.columns.forEach(col => {
      if (col.field) {
        _arr_labels.push(col.label)
        _arr_label_field.push(`${col.field} as ${col.label}`)
      }
    })
    _arr_labels = _arr_labels.join(',')
    _arr_label_field = _arr_label_field.join(',')
    let _search = Utils.joinMainSearchkey(search)
    _search = _search ? 'where (' + _search + ')' : ''
    // 获取列表数据
    let param = {
      func: 'sPC_Get_TableData',
      obj_name: 'data',
      arr_field: _arr_labels,
      BID: this.props.BID,
      appkey: window.GLOB.appkey || ''
    }
    let _orderBy = orderBy || setting.order
    let _dataresource = setting.dataresource
    if (/\s/.test(_dataresource)) {
      _dataresource = '(' + _dataresource + ') tb'
    }
    let LText = `select ${_arr_label_field} from (select ${arr_field} ,ROW_NUMBER() over(order by ${_orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows`
    param.LText = Utils.formatOptions(LText)
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
    param.DateCount = ''
    let name = `${MenuName}${moment().format('YYYYMMDDHHmmss')}.xlsx`
    Api.getExcelOut(param, name).then(res => {
      if (res && res.status === false) {
        this.refs.subtabButton.execError(res, btn)
      } else {
        this.refs.subtabButton.execSuccess(btn)
      }
    })
  }
  /**
@@ -629,7 +573,14 @@
   * @description 表格中,按钮触发事件传递
   */
  buttonTrigger = (btn, record) => {
    this.refs.subtabButton.actionTrigger(btn, record)
    this.setState({
      triggerBtn: {
        uuid: new Date().getTime(),
        parentId: this.props.MenuID,
        button: btn,
        data: record
      }
    })
  }
  UNSAFE_componentWillMount () {
@@ -651,7 +602,7 @@
  }
  render() {
    const { setting, searchlist, actions, columns, loadingview, viewlost } = this.state
    const { setting, searchlist, actions, columns, loadingview, viewlost, triggerBtn } = this.state
    return (
      <div className="subtabtable" id={'subtabtable' + this.props.MenuID}>
@@ -666,8 +617,8 @@
        {actions ?
          <div style={{minHeight: '25px'}}>
            <SubAction
              ref="subtabButton"
              type="subtab"
              triggerBtn={triggerBtn}
              menuType={this.props.menuType}
              setting={setting}
              actions={actions}