| | |
| | | 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' |
| | |
| | | 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 = { |
| | |
| | | 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 () { |
| | |
| | | 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 |
| | | }) |
| | | } |
| | | } |
| | |
| | | } |
| | | 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 |
| | |
| | | } else { |
| | | notification.warning({ |
| | | top: 92, |
| | | message: result.message |
| | | message: result.message, |
| | | duration: 10 |
| | | }) |
| | | this.setState({ |
| | | searchparam: searches, |
| | |
| | | }) |
| | | } |
| | | |
| | | 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 = () => { |
| | |
| | | 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() { |
| | |
| | | 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} |
| | |
| | | ) |
| | | } |
| | | } |
| | | |
| | | const mapStateToProps = (state) => { |
| | | return { |
| | | refreshTab: state.refreshTab |
| | | } |
| | | } |
| | | |
| | | const mapDispatchToProps = (dispatch) => { |
| | | return { |
| | | refreshTabView: (refreshTab) => dispatch(refreshTabView(refreshTab)) |
| | | } |
| | | } |
| | | |
| | | export default connect(mapStateToProps, mapDispatchToProps)(DataManage) |