From 4e837faa0307fda4d0d3bd463c88a7ef43817443 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 20 九月 2019 16:06:41 +0800 Subject: [PATCH] 2019-09-20update --- src/tabviews/commontable/index.jsx | 189 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 141 insertions(+), 48 deletions(-) diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx index 0acf50f..fc17a2b 100644 --- a/src/tabviews/commontable/index.jsx +++ b/src/tabviews/commontable/index.jsx @@ -1,65 +1,158 @@ import React, {Component} from 'react' -import { Form, Row, Col, Input, Button } from 'antd' +import PropTypes from 'prop-types' +import { is, fromJS } from 'immutable' +import { BackTop, Button, message } from 'antd' +import Api from '@/api' +import MainSearch from '@/components/mainSearch' +import MainAction from '@/components/mainAction' +import MainTable from '@/components/mainTable' +import Loading from '@/components/loading' +import zhCN from '@/locales/zh-CN/main.js' +import enUS from '@/locales/en-US/main.js' import './index.scss' -class AdvancedSearchForm extends React.Component { +export default class NormalTable extends Component { + static propTpyes = { + MenuNo: PropTypes.string // 鏍囩椤垫暟缁� + } + state = { - - } - - getFields() { - const { getFieldDecorator } = this.props.form - const children = [] - for (let i = 0; i < 10; i++) { - children.push( - <Col span={6} key={i}> - <Form.Item label={`鑿滃崟鍚嶇О寮�濮媊}> - {getFieldDecorator(`field-${i}`)(<Input placeholder="placeholder" />)} - </Form.Item> - </Col> - ) + dict: (!sessionStorage.getItem('lang') || sessionStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS, + searchlist: null, + actions: null, + columns: null, + select: null, + data: null, + total: 0, + loading: true, + param: { + pageIndex: 1, + pageSize: 10, + orderColumn: '', + orderType: '', + search: '' } - return children } - handleSearch = e => { - e.preventDefault() - this.props.form.validateFields((err, values) => { - console.log('Received values of form: ', values) + async loadconfig () { + // 鑾峰彇涓昏彍鍗� + let result = await Api.getMainConfigsData(this.props.MenuNo) + if (result.status) { + let newconfig = {} + if (result.searches && result.searches.length > 0) { + newconfig.searchlist = result.searches.map(search => { + search.DynOptions = search.DynOptions ? JSON.parse(search.DynOptions) : '' + return search + }) + } + if (result.actions && result.actions.length > 0) { + newconfig.actions = result.actions.map(action => { + return action + }) + } + if (result.columns && result.columns.length > 0) { + newconfig.columns = result.columns.map(column => { + return column + }) + // newconfig.columns.length = 4 + } + newconfig.select = result.select + this.setState(newconfig) + } + } + + async loadmaindata (pageIndex = 1, pageSize = 10, orderColumn = '', orderType = '', search = '') { + // 鑾峰彇鍒楄〃鏁版嵁 + let result = await Api.getMainTableData(this.props.MenuNo, pageIndex, pageSize, orderColumn, orderType, search) + if (result.status) { + this.setState({ + data: result.data.map((item, index) => { + item.key = index + item.rows = item.mkrows + return item + }), + total: result.total, + loading: false + }) + } + } + + refreshbysearch = (searches) => { + console.log(searches) + this.loadmaindata(this.state.param.pageIndex, this.state.param.pageSize, this.state.param.orderColumn, this.state.param.orderType, searches) + let param = Object.assign({}, this.state.param, { + search: searches + }) + this.setState({ + loading: true, + param: param + }) + // window.print() + } + + refreshbytable = (pagination, filters, sorter) => { + console.log(filters) + if (sorter.order) { + let _chg = { + ascend: 'asc', + descend: 'desc' + } + sorter.order = _chg[sorter.order] + } + this.loadmaindata(pagination.current, pagination.pageSize, sorter.field, sorter.order, this.state.param.search) + let param = Object.assign({}, this.state.param, { + pageIndex: pagination.current, + pageSize: pagination.pageSize, + orderColumn: sorter.field, + orderType: sorter.order + }) + this.setState({ + loading: true, + param: param }) } - handleReset = () => { - this.props.form.resetFields() + copyMenuNo = (e) => { + e.stopPropagation() + let oInput = document.createElement('input') + oInput.value = this.props.MenuNo + document.body.appendChild(oInput) + oInput.select() + document.execCommand('Copy') + oInput.className = 'oInput' + oInput.style.display='none' + message.success(this.state.dict['main.copy.success']) + } + + UNSAFE_componentWillMount () { + // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁 + this.loadconfig() + this.loadmaindata() + } + + shouldComponentUpdate (nextProps, nextState) { + return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState)) + } + + componentDidMount () { + // console.log(this.props.MenuNo) } render() { return ( - <Form className="ant-advanced-search-form" onSubmit={this.handleSearch}> - <Row gutter={24}>{this.getFields()}</Row> - <Row> - <Col span={24} style={{ textAlign: 'right' }}> - <Button type="primary" htmlType="submit"> - 鎼滅储 - </Button> - <Button style={{ marginLeft: 8 }} onClick={this.handleReset}> - 閲嶇疆 - </Button> - </Col> - </Row> - </Form> - ) - } -} - -const WrappedAdvancedSearchForm = Form.create()(AdvancedSearchForm) - -export default class NormalTable extends Component { - render() { - return ( - <div> - <WrappedAdvancedSearchForm /> - <div className="search-result-list">Search Result List</div> + <div className="commontable"> + {!this.state.searchlist && <Loading />} + {this.state.searchlist && <MainSearch refreshdata={this.refreshbysearch} searchlist={this.state.searchlist} dict={this.state.dict} />} + {this.state.actions && <MainAction actions={this.state.actions} dict={this.state.dict} />} + {this.state.columns && <MainTable refreshdata={this.refreshbytable} columns={this.state.columns} data={this.state.data} select={this.state.select} total={this.state.total} loading={this.state.loading} dict={this.state.dict} />} + <Button className="main-copy" icon="copy" onClick={this.copyMenuNo} shape="circle" /> + <BackTop> + <div className="ant-back-top"> + <div className="ant-back-top-content"> + <div className="ant-back-top-icon"></div> + </div> + </div> + </BackTop> </div> ) } -- Gitblit v1.8.0