king
2019-10-15 ee32a69f9a7f25c37757325dc28ac7b5127dceca
src/tabviews/datamanage/index.jsx
@@ -1,7 +1,9 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import {connect} from 'react-redux'
import { BackTop, notification } from 'antd'
import {refreshTabView} from '@/store/action'
import Api from '@/api'
import DataSearch from './modules/search'
import DataAction from './modules/action'
@@ -11,9 +13,10 @@
import enUS from '@/locales/en-US/main.js'
import './index.scss'
export default class DataManage extends Component {
class DataManage extends Component {
  static propTpyes = {
    MenuNo: PropTypes.string // 标签页数组
    MenuNo: PropTypes.string, // 菜单参数
    MenuID: PropTypes.string // 菜单Id
  }
  state = {
@@ -22,18 +25,12 @@
    searchparam: null, // 搜索参数
    actions: null, // 按钮
    columns: null, // 显示列
    mainKey: null, // 主键
    selectable: false, // 表格是否可选
    datafunc: null, // 获取数据及显示列的存储过程名称
    data: null,
    total: 0,
    loading: true,
    param: {
      pageIndex: 1,
      pageSize: 10,
      orderColumn: '',
      orderType: '',
      search: ''
    }
    loading: true
  }
  async loadconfig () {
@@ -48,15 +45,23 @@
        newconfig.searchlist = result.sWheredata
      }
      if (result.sMenusdata && result.sMenusdata.length > 0) {
        newconfig.actions = result.sMenusdata
        newconfig.actions = result.sMenusdata.map(action => {
          let width = +action.PopWidth
          if (width > 100 || !width) {
            width = 62
      }
      newconfig.selectable = result.CheckBox === 'true'
          action.PopWidth = width / 100
          return action
        })
      }
      newconfig.selectable = result.CheckBox !== 'true'
      newconfig.datafunc = result.sWhereAction
      this.setState(newconfig)
    } else {
      notification.warning({
        top: 92,
        message: result.message
        message: result.message,
        duration: 10
      })
    }
  }
@@ -73,13 +78,13 @@
    }
    let result = await Api.commonInterface(param)
    if (result.status) {
      result.sGriddata.length = 4
      this.setState({
        columns: result.sGriddata,
        data: result.data.map((item, index) => {
          item.key = index
          return item
        }),
        mainKey: result.sGriddata.filter(grid => grid.IDField === '1' || grid.IDField === '2'),
        total: result.Total,
        searchparam: searches,
        loading: false
@@ -87,7 +92,8 @@
    } else {
      notification.warning({
        top: 92,
        message: result.message
        message: result.message,
        duration: 10
      })
      this.setState({
        searchparam: searches,
@@ -128,13 +134,28 @@
    })
  }
  refreshbyaction = () => {
  refreshbyaction = (type) => {
    // 按钮操作后刷新表格,重置页码及选择项
    if (type === 'grid') {
    this.refs.dataTable.resetTable()
    this.loadDbdata(this.state.searchparam)
    this.setState({
      loading: true
    })
    } else if (type === 'all') {
      this.setState({
        searchlist: null,
        searchparam: null,
        actions: null,
        columns: null,
        mainKey: null,
        selectable: false,
        datafunc: null,
        data: null,
        total: 0
      })
      this.loadconfig()
    }
  }
  gettableselected = () => {
@@ -146,13 +167,27 @@
    return data
  }
  switchview = (param) => {
    console.log(param)
  }
  UNSAFE_componentWillMount () {
    // 组件加载时,获取菜单数据
    this.loadconfig()
  }
  shouldComponentUpdate (nextProps, nextState) {
    if (!is(fromJS(this.props.refreshTab), fromJS(nextProps.refreshTab)) && nextProps.refreshTab && this.props.MenuNo === nextProps.refreshTab.MenuNo) {
      // 接收到刷新命令,且刷新信息中菜单参数与当前页面相同
      this.props.refreshTabView(null)
      this.refreshbyaction(nextProps.refreshTab.ReloadForm)
      return false
    } else if (!is(fromJS(this.props.refreshTab), fromJS(nextProps.refreshTab)) && !(nextProps.refreshTab && this.props.MenuNo === nextProps.refreshTab.MenuNo)) {
      // 未接收到刷新命令,或刷新信息中菜单参数与当前页面不同
      return false
    } else {
    return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
    }
  }
  render() {
@@ -166,10 +201,13 @@
            dict={this.state.dict}
          />
        }
        {this.state.actions &&
        {this.state.actions && this.state.columns &&
          <DataAction
            MenuNo={this.props.MenuNo}
            columns={this.state.columns}
            mainKey={this.state.mainKey}
            refreshdata={this.refreshbyaction}
            switchview={this.switchview}
            gettableselected={this.gettableselected}
            actions={this.state.actions}
            dict={this.state.dict}
@@ -199,3 +237,17 @@
    )
  }
}
const mapStateToProps = (state) => {
  return {
    refreshTab: state.refreshTab
  }
}
const mapDispatchToProps = (dispatch) => {
  return {
    refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab))
  }
}
export default connect(mapStateToProps, mapDispatchToProps)(DataManage)