salary-management-front/pc4mobx/hrmSalary/pages/ledgerPage/components/incomeTaxFieldsCorrespondin...

148 lines
5.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
*
* 个税字段对应
* @Author: 黎永顺
* @Date: 2024/6/17
* @Wechat:
* @Email: 971387674@qq.com
* @description:
*/
import React, { Component } from "react";
import { WeaLocaleProvider, WeaSearchGroup, WeaTab } from "ecCom";
import LedgerFieldsItemPopver from "./ledgerFieldsItemPopver";
import { taxruleGetForm } from "../../../apis/ledger";
import LedgerFieldsTable from "./ledgerFieldsTable";
const { getLabel } = WeaLocaleProvider;
class IncomeTaxFields extends Component {
constructor(props) {
super(props);
this.state = {
selectedKey: "", tabs: [],
incomeTaxFields: [], keywords: ""
};
}
componentDidMount() {
this.taxruleGetForm();
}
taxruleGetForm = () => {
const { editId, saveSalarySobId } = this.props;
taxruleGetForm({ id: editId || saveSalarySobId }).then(({ status, data }) => {
if (status && !_.isEmpty(data)) {
this.setState({
tabs: _.map(data, it => ({ viewcondition: it.incomeCategoryId, title: it.incomeCategoryName })),
selectedKey: _.take(data)[0].incomeCategoryId,
incomeTaxFields: _.map(data, it => ({
...it, taxReportRules: _.map(it.taxRules, o => ({
...o, canEdit: o.canEdit, id: "", reportColumnDataIndex: o.taxIndex, reportColumnName: o.name,
salaryItem: [{ id: o.salaryItemId, name: o.salaryItemName }]
}))
}))
}, () => this.props.onSetTaxreportrule(this.state.incomeTaxFields, this.state.selectedKey));
}
});
};
handleChangeSwitch = (visible, id) => {
const { incomeTaxFields, selectedKey } = this.state;
this.setState({
incomeTaxFields: _.map(incomeTaxFields, it => {
if (it.incomeCategoryId === selectedKey) {
return {
...it,
taxReportRules: _.map(it.taxReportRules, child => {
if (child.id === id) {
return { ...child, visible };
}
return { ...child, visible: false };
})
};
}
return { ...it };
})
}, () => this.props.onSetTaxreportrule(this.state.incomeTaxFields, this.state.selectedKey));
};
handleChangeIncomeFieldsItem = (salaryItem, recordRuleId) => {
const { incomeTaxFields, selectedKey } = this.state;
this.setState({
incomeTaxFields: _.map(incomeTaxFields, it => {
if (it.incomeCategoryId === selectedKey) {
return {
...it,
taxReportRules: _.map(it.taxReportRules, child => {
if (child.id === recordRuleId) {
return { ...child, visible: false, salaryItem };
}
return { ...child, visible: false };
})
};
}
return { ...it };
})
}, () => {
this.props.onSetTaxreportrule(this.state.incomeTaxFields, this.state.selectedKey);
});
};
render() {
const { editId, saveSalarySobId } = this.props;
const { selectedKey, tabs, incomeTaxFields, keywords } = this.state;
const list = _.map(incomeTaxFields, it => {
if (it.incomeCategoryId === selectedKey) {
return {
...it,
taxReportRules: _.filter(it.taxReportRules, item => item.reportColumnName.indexOf(keywords) !== -1)
};
}
return { ...it };
});
const dataSource = _.takeWhile(list, it => it.incomeCategoryId === selectedKey);
return (
<WeaSearchGroup
className="incomeWrapper" showGroup needTigger={false}
title={
<div className="incomeTitleContail">
<WeaTab
datas={tabs} keyParam="viewcondition" selectedKey={selectedKey}
searchType={["base"]} searchsBasePlaceHolder={getLabel(111, "请输入对象")}
onSearch={val => this.setState({ keywords: val })}
/>
</div>
}
>
<LedgerFieldsTable
columns={[
{
title: <span>
<span style={{ marginRight: 8 }}>{getLabel(111, "个税申报表字段")}</span>
{/*<WeaHelpfulTip*/}
{/* title={getLabel(111, "若【个税申报表字段】与【对应本账套薪资项目】对应则申报表内数据为当前账套核算数据若【个税申报表字段】未与【对应本账套薪资项目】对应则申报表内数据默认显示为0")}*/}
{/* placement="top" width={250}*/}
{/*/>*/}
</span>,
width: "50%",
dataIndex: "reportColumnName"
},
{
title: getLabel(111, "对应本账套薪资项目"),
width: "50%",
dataIndex: "salaryItem",
render: (_, record) => (
<LedgerFieldsItemPopver salarySobId={editId || saveSalarySobId} record={record}
onChangeSwitch={this.handleChangeSwitch}
onChange={this.handleChangeIncomeFieldsItem}
/>
)
}
]}
dataSource={dataSource}
/>
</WeaSearchGroup>
);
}
}
export default IncomeTaxFields;