forked from gzzfw/frontEnd/gzDyh

xusd
2024-09-18 3ae864f005e8a874de01c15e14b83196a3f6f11b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/** 表格公用组件 */
import React, { Component } from 'react';
import { Table } from 'antd';
import './index.less';
import * as $$ from '../../../utils/utility';
export default class TableView extends Component {
    constructor(props) {
        super(props);
        this.config = {};
        this.state = {
            tableData: [],
            totalElements: 0,
            pageSize: this.props.formData.size,
            page: 1,
            loading: false,
        };
    }
 
    UNSAFE_componentWillMount() {}
 
    componentDidMount() {
        let { page, size } = this.props.formData;
        this.loadData(page, size);
    }
 
    loadData = (page, size) => {
        let { formData, extraFromData, url, watermeter, service } = this.props;
        this.setState({
            loading: true,
        });
        $$.ax
            .request({
                url,
                service,
                type: 'get',
                data: {
                    ...formData,
                    ...extraFromData,
                    page,
                    size,
                },
            })
            .then((res) => {
                if (res.type) {
                    res.data.content = (res.data.content || []).map(({ ...a }, idx) => ({
                        ...a,
                        index: idx + 1 + size * (page - 1),
                        key: idx,
                    }));
                }
                this.setState({
                    tableData: res.data ? res.data.content : [],
                    loading: false,
                    totalElements: res.data ? res.data.totalElements : 0,
                });
            });
    };
 
    pageChange = (page, size) => {
        this.props.setFormData({
            ...this.props.formData,
            page,
        });
        this.loadData(page, size);
    };
 
    onShowSizeChange = (current, size) => {
        this.props.setFormData({
            ...this.props.formData,
            page: 1,
            size,
        });
        this.loadData(1, size);
    };
 
    itemRender = (current, type, originalElement) => {
        if (type === 'prev') {
            return <span>上一页&nbsp;</span>;
        } else if (type === 'next') {
            return <span>&nbsp;下一页</span>;
        }
        return originalElement;
    };
 
    render() {
        const { columns, rowSelection, rowClassName, bordered = true } = this.props;
        const { page, size } = this.props.formData;
        return (
            <div className="table-view-main">
                <Table
                    rowSelection={rowSelection || null}
                    rowKey={(record) => record.id}
                    rowClassName={rowClassName}
                    bordered={bordered}
                    size="middle"
                    className="rowColor"
                    dataSource={this.state.tableData}
                    loading={{ spinning: this.state.loading }}
                    columns={columns}
                    pagination={{
                        pageSize: Number(size),
                        onChange: this.pageChange,
                        total: this.state.totalElements,
                        showSizeChanger: true,
                        onShowSizeChange: this.onShowSizeChange,
                        showTotal: (total, range) => `共${total}条记录 `,
                        // itemRender: this.itemRender,
                        showQuickJumper: true,
                        defaultCurrent: 1,
                        current: Number(page),
                    }}
                />
            </div>
        );
    }
}