115 lines
4.2 KiB
JavaScript
115 lines
4.2 KiB
JavaScript
/*
|
||
* Author: 黎永顺
|
||
* name: 在线申报-在线对比
|
||
* Description:
|
||
* Date: 2024/1/22
|
||
*/
|
||
import React, { Component } from "react";
|
||
import { WeaCheckbox, WeaLocaleProvider, WeaTable, WeaTop } from "ecCom";
|
||
import { getTaxdeclarationContrastList } from "../../apis/declare";
|
||
import "./index.less";
|
||
|
||
const getLabel = WeaLocaleProvider.getLabel;
|
||
|
||
class Index extends Component {
|
||
constructor(props) {
|
||
super(props);
|
||
this.state = {
|
||
loading: false, dataSource: [], columns: [],
|
||
pageInfo: { current: 1, pageSize: 10, total: 0 },
|
||
queryParams: { onlyShowDiffEmp: true, onlyShowDiffItem: true }
|
||
};
|
||
}
|
||
|
||
componentDidMount() {
|
||
this.getTaxdeclarationContrastList();
|
||
}
|
||
|
||
getTaxdeclarationContrastList = () => {
|
||
const { pageInfo, queryParams } = this.state;
|
||
const { params: { taxDeclarationId } } = this.props;
|
||
this.setState({ loading: true });
|
||
getTaxdeclarationContrastList({ taxDeclarationId, ...pageInfo, ...queryParams })
|
||
.then(({ status, data }) => {
|
||
this.setState({ loading: false });
|
||
if (status) {
|
||
const { columns, pageInfo: result } = data;
|
||
const { list: dataSource, pageNum: current, pageSize, total } = result;
|
||
this.setState({
|
||
dataSource, pageInfo: { ...pageInfo, current, pageSize, total },
|
||
columns: _.map(columns, o => ({
|
||
dataIndex: o, title: o, width: 150,
|
||
render: (__, record) => {
|
||
return <div className="comparison-column-item-container">
|
||
<div className="comparison-single-row">
|
||
<span>{getLabel(543280, "系统值")}:</span>
|
||
<span>{record[o].local}</span>
|
||
</div>
|
||
<div className="comparison-single-row">
|
||
<span>{getLabel(111, "线上值")}:</span>
|
||
<span>{record[o].online}</span>
|
||
</div>
|
||
{
|
||
!_.isNil(record[o].diff) &&
|
||
<div className="comparison-single-row danger">
|
||
<span>{getLabel(543282, "差值")}:</span>
|
||
<span>{record[o].diff}</span>
|
||
</div>
|
||
}
|
||
</div>;
|
||
}
|
||
}))
|
||
});
|
||
}
|
||
}).catch(() => this.setState({ loading: false }));
|
||
};
|
||
handleDiffChange = (key, value) => {
|
||
const { queryParams } = this.state;
|
||
this.setState({
|
||
queryParams: { ...queryParams, [key]: value === "1" }
|
||
}, () => this.getTaxdeclarationContrastList());
|
||
};
|
||
|
||
render() {
|
||
const { loading, columns, dataSource, pageInfo, queryParams } = this.state;
|
||
const { onlyShowDiffEmp, onlyShowDiffItem } = queryParams;
|
||
const pagination = {
|
||
...pageInfo,
|
||
showTotal: total => `${getLabel(18609, "共")} ${total} ${getLabel(18256, "条")}`,
|
||
showQuickJumper: true,
|
||
showSizeChanger: true,
|
||
pageSizeOptions: ["10", "20", "50", "100"],
|
||
onShowSizeChange: (current, pageSize) => {
|
||
this.setState({
|
||
pageInfo: { ...pageInfo, current, pageSize }
|
||
}, () => this.getTaxdeclarationContrastList());
|
||
},
|
||
onChange: current => {
|
||
this.setState({
|
||
pageInfo: { ...pageInfo, current }
|
||
}, () => this.getTaxdeclarationContrastList());
|
||
}
|
||
};
|
||
return (
|
||
<WeaTop title={getLabel(111, "在线对比")} icon={<i className="icon-coms-fa"/>}
|
||
iconBgcolor="#F14A2D" buttonSpace={10} showDropIcon={false}
|
||
buttons={[
|
||
<WeaCheckbox content={getLabel(543283, "只显示有差异的人员")} value={onlyShowDiffEmp ? 1 : 0}
|
||
onChange={v => this.handleDiffChange("onlyShowDiffEmp", v)}
|
||
/>,
|
||
<WeaCheckbox content={getLabel(543284, "只显示有差异的薪资项目")} value={onlyShowDiffItem ? 1 : 0}
|
||
onChange={v => this.handleDiffChange("onlyShowDiffItem", v)}
|
||
/>
|
||
]}
|
||
>
|
||
<WeaTable rowKey="id" dataSource={dataSource} pagination={pagination} bordered
|
||
loading={loading} columns={columns} scroll={{ x: 1200, y: `calc(100vh - 170px)` }}
|
||
className="online-comparison-table"
|
||
/>
|
||
</WeaTop>
|
||
);
|
||
}
|
||
}
|
||
|
||
export default Index;
|