king
2021-11-18 c98e45bfac25e9110ad0383faac54a54d98ea9d5
src/tabviews/scriptmanage/index.jsx
@@ -12,11 +12,12 @@
import { scriptMainTable, buttonConfig } from './config'
import MKEmitter from '@/utils/events.js'
import asyncComponent from '@/utils/asyncComponent'
import asyncSpinComponent from '@/utils/asyncSpinComponent'
import TopSearch from './topSearch'
import MainAction from './actionList'
import './index.scss'
const MainSearch = asyncComponent(() => import('@/tabviews/zshare/topSearch'))
const MainTable = asyncSpinComponent(() => import('@/tabviews/zshare/normalTable'))
class ScriptTable extends Component {
@@ -34,7 +35,6 @@
    actions: [],          // 按钮集
    columns: [],          // 显示列
    arr_field: '',        // 使用 sPC_Get_TableData 时的查询字段集
    logcolumns: null,     // 日志中显示的列信息 (增加至全部列,除去合并列)
    setting: {},          // 页面全局设置:数据源、按钮及显示列固定、主键等
    data: [],             // 列表数据集
    selectedData: [],     // 已选表格数据
@@ -56,7 +56,6 @@
    let _arrField = []     // 字段集
    let _columns = []      // 显示列
    let _logcolumns = []   // 日志显示列
    let _hideCol = []      // 隐藏及合并列中字段的uuid集
    let colMap = new Map() // 用于字段过滤
@@ -64,13 +63,9 @@
    config.columns.forEach(col => {
      if (col.field) {
        _arrField.push(col.field)
        _logcolumns.push(col)
      }
      if (col.type === 'colspan' && col.sublist) { // 筛选隐藏列
        _hideCol = _hideCol.concat(col.sublist)
      } else if (col.Hide === 'true') {
        _hideCol.push(col.uuid)
      }
      colMap.set(col.uuid, col)
    })
@@ -79,16 +74,22 @@
    config.columns.forEach(col => {
      if (_hideCol.includes(col.uuid)) return
      if (col.type === 'colspan' && col.sublist) {
        let _col = JSON.parse(JSON.stringify(col))
      if (col.type === 'colspan') {
        if (col.unfold !== 'true') { // 不展开为旧版合并列
          col.type = 'old_colspan'
        }
        let _col = fromJS(col).toJS()
        let subcols = []
        _col.sublist.forEach(sub => {
        _col.sublist && _col.sublist.forEach(sub => {
          if (colMap.has(sub)) {
            subcols.push(colMap.get(sub))
          }
        })
        _col.subcols = subcols
        _columns.push(_col)
        if (subcols.length > 0) {
          _col.subcols = subcols
          _columns.push(_col)
        }
      } else {
        _columns.push(col)
      }
@@ -105,7 +106,6 @@
        return item
      }),
      columns: _columns,
      logcolumns: _logcolumns,
      arr_field: _arrField.join(','),
      search: Utils.initMainSearch(config.search)
    }, () => {
@@ -120,6 +120,7 @@
   * @description 主表数据加载
   */ 
  async loadmaindata () {
    const { setting } = this.state
    let param = this.getDefaultParam()
    this.setState({
@@ -134,8 +135,8 @@
    if (result.status) {
      this.setState({
        data: result.data.map((item, index) => {
          item.LongParam = Utils.UnformatOptions(item.LongParam)
          item.key = index
          item.$$uuid = item[setting.primaryKey] || ''
          return item
        }),
        total: result.total,
@@ -195,7 +196,7 @@
   * 含有初始不加载的页面,修改设置
   */
  refreshbysearch = (searches) => {
    MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable') // 列表重置
    MKEmitter.emit('resetTable', this.props.MenuID) // 列表重置
    this.setState({
      loading: true,
      pageIndex: 1,
@@ -233,7 +234,7 @@
   * @description 表格刷新
   */
  reloadtable = () => {
    MKEmitter.emit('resetTable', this.props.MenuID + 'mainTable') // 列表重置
    MKEmitter.emit('resetTable', this.props.MenuID) // 列表重置
    this.setState({
      loading: true,
      pageIndex: 1,
@@ -255,21 +256,6 @@
  }
  /**
   * @description 按钮操作完成后(成功或失败),页面刷新,重置页码及选择项
   */
  refreshbyaction = (btn, type) => {
    if (btn.execSuccess === 'grid' && type === 'success') {
      this.reloadtable()
    } else if (btn.execError === 'grid' && type === 'error') {
      this.reloadtable()
    } else if (btn.execSuccess === 'view' && type === 'success') {
      this.reloadview()
    } else if (btn.execError === 'view' && type === 'error') {
      this.reloadview()
    }
  }
  /**
   * @description 表格选择项切换
   */
  changeSelectedData = (selectedData) => {
@@ -286,9 +272,21 @@
    })
  }
  reloadMenuView = (menuId) => {
    const { MenuID } = this.props
    if (MenuID !== menuId) return
    this.reloadview()
  }
  UNSAFE_componentWillMount () {
    // 组件加载时,获取菜单数据
    this.loadconfig()
  }
  componentDidMount () {
    MKEmitter.addListener('reloadMenuView', this.reloadMenuView)
  }
  shouldComponentUpdate (nextProps, nextState) {
@@ -302,18 +300,15 @@
    this.setState = () => {
      return
    }
    MKEmitter.removeListener('reloadMenuView', this.reloadMenuView)
  }
  render() {
    const { dict, searchlist, config, setting, actions, columns, pickup, selectedData } = this.state
    const { searchlist, setting, actions, columns, pickup, selectedData } = this.state
    return (
      <div className="script-manage-table" id={this.state.ContainerId}>
        <TopSearch
          dict={dict}
          searchlist={searchlist}
          refreshdata={this.refreshbysearch}
        />
        <MainSearch searchlist={searchlist} menuType="HS" refreshdata={this.refreshbysearch}/>
        <MainAction
          BID=""
          type="main"
@@ -322,9 +317,8 @@
          dict={this.state.dict}
          MenuID={this.props.MenuID}
          selectedData={selectedData}
          logcolumns={this.state.logcolumns}
          ContainerId={this.state.ContainerId}
          refreshdata={this.refreshbyaction}
          refreshdata={this.reloadtable}
        />
        <div className="main-table-box">
          {this.state.data && this.state.data.length > 0 ?
@@ -333,9 +327,8 @@
            </div> : null
          }
          <MainTable
            tableId="mainTable"
            tableId={this.props.MenuID}
            pickup={pickup}
            config={config}
            setting={setting}
            columns={columns}
            dict={this.state.dict}
@@ -345,7 +338,6 @@
            loading={this.state.loading}
            refreshdata={this.refreshbytable}
            buttonTrigger={() => {}}
            handleTableId={() => {}}
            chgSelectData={this.changeSelectedData}
          />
        </div>