king
2021-11-18 c98e45bfac25e9110ad0383faac54a54d98ea9d5
src/tabviews/scriptmanage/index.jsx
@@ -10,12 +10,14 @@
import Utils from '@/utils/utils.js'
import options from '@/store/options.js'
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 {
@@ -33,11 +35,9 @@
    actions: [],          // 按钮集
    columns: [],          // 显示列
    arr_field: '',        // 使用 sPC_Get_TableData 时的查询字段集
    logcolumns: null,     // 日志中显示的列信息 (增加至全部列,除去合并列)
    setting: {},          // 页面全局设置:数据源、按钮及显示列固定、主键等
    data: [],             // 列表数据集
    selectedData: [],     // 已选表格数据
    resetTable: false,    // 表格重置,值在true与false之间切换,切换时表格重置
    total: 0,             // 总数
    loading: false,       // 列表数据加载中
    pageIndex: 1,         // 页码
@@ -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))
        let subColumn = []
        _col.sublist.forEach(sub => {
      if (col.type === 'colspan') {
        if (col.unfold !== 'true') { // 不展开为旧版合并列
          col.type = 'old_colspan'
        }
        let _col = fromJS(col).toJS()
        let subcols = []
        _col.sublist && _col.sublist.forEach(sub => {
          if (colMap.has(sub)) {
            subColumn.push(colMap.get(sub))
            subcols.push(colMap.get(sub))
          }
        })
        _col.subColumn = subColumn
        _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.formatOptions(item.LongParam, true)
          item.key = index
          item.$$uuid = item[setting.primaryKey] || ''
          return item
        }),
        total: result.total,
@@ -166,7 +167,8 @@
    let param = {
      func: 'sPC_Get_TableData',
      obj_name: 'data',
      arr_field: arr_field
      arr_field: arr_field,
      menuname: this.props.MenuName || ''
    }
    
    let _orderBy = orderBy || setting.order
@@ -180,11 +182,11 @@
    let DateCount = `select count(1) as total from ${_dataresource} ${_search}`
    param.LText = Utils.formatOptions(LText)
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
    param.secretkey = Utils.encrypt(param.LText, param.timestamp)
    param.DateCount = Utils.formatOptions(DateCount)
    
    param.open_key = Utils.encrypt(param.secretkey, param.timestamp, true) // 云端数据验证
    param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) // 云端数据验证
    return param
  }
@@ -194,12 +196,12 @@
   * 含有初始不加载的页面,修改设置
   */
  refreshbysearch = (searches) => {
    MKEmitter.emit('resetTable', this.props.MenuID) // 列表重置
    this.setState({
      loading: true,
      pageIndex: 1,
      selectedData: [],
      search: searches,
      resetTable: !this.state.resetTable
      search: searches
    }, () => {
      this.loadmaindata()
    })
@@ -232,11 +234,11 @@
   * @description 表格刷新
   */
  reloadtable = () => {
    MKEmitter.emit('resetTable', this.props.MenuID) // 列表重置
    this.setState({
      loading: true,
      pageIndex: 1,
      selectedData: [],
      resetTable: !this.state.resetTable
      selectedData: []
    }, () => {
      this.loadmaindata()
    })
@@ -251,21 +253,6 @@
    }, () => {
      this.loadconfig()
    })
  }
  /**
   * @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()
    }
  }
  /**
@@ -285,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) {
@@ -301,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="veruptable pick-control" id={this.state.ContainerId}>
        <TopSearch
          dict={dict}
          searchlist={searchlist}
          refreshdata={this.refreshbysearch}
        />
      <div className="script-manage-table" id={this.state.ContainerId}>
        <MainSearch searchlist={searchlist} menuType="HS" refreshdata={this.refreshbysearch}/>
        <MainAction
          BID=""
          type="main"
@@ -321,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 ?
@@ -332,9 +327,8 @@
            </div> : null
          }
          <MainTable
            tableId="mainTable"
            tableId={this.props.MenuID}
            pickup={pickup}
            config={config}
            setting={setting}
            columns={columns}
            dict={this.state.dict}
@@ -344,8 +338,6 @@
            loading={this.state.loading}
            refreshdata={this.refreshbytable}
            buttonTrigger={() => {}}
            handleTableId={() => {}}
            resetTable={this.state.resetTable}
            chgSelectData={this.changeSelectedData}
          />
        </div>