产品-工资单模板添加发放薪资项目名称修改的功能

This commit is contained in:
黎永顺 2023-07-20 16:16:43 +08:00
parent 9d94619c1d
commit f7cd085c92
5 changed files with 69 additions and 17 deletions

View File

@ -64,7 +64,7 @@ export default class Payroll extends React.Component {
getReplenishForm = (isEdit = false, params = {}) => {
const { payrollStore } = this.props;
const { templateBaseData, salaryTemplateShowSet, setReplenishSalaryTemplateSalaryItemSet } = payrollStore;
const { templateBaseData, salaryTemplateShowSet, setReplenishSalaryTemplateSalaryItemSet, setSalaryBillItemNameSet } = payrollStore;
if (!salaryTemplateShowSet.theme && !isEdit) {
Modal.warning({
title: "信息确认",
@ -77,10 +77,12 @@ export default class Payroll extends React.Component {
if (!isEdit) {
this.setState({ currentStep: this.state.currentStep + 1 }, () => {
setReplenishSalaryTemplateSalaryItemSet(data.replenishSalaryTemplateSalaryItemSet);
setSalaryBillItemNameSet(data.salaryBillItemNameSet)
window.localStorage.setItem("salary-showset", JSON.stringify(salaryTemplateShowSet));
});
} else {
setReplenishSalaryTemplateSalaryItemSet(data.replenishSalaryTemplateSalaryItemSet);
setSalaryBillItemNameSet(data.salaryBillItemNameSet)
window.localStorage.setItem("salary-showset", JSON.stringify(salaryTemplateShowSet));
}
}

View File

@ -16,6 +16,7 @@ class SalaryItemSettings extends Component {
super(props);
this.state = {
dataList: [],
itemShowNamesetting: [], //名称修改集合
checkedValue: "",
modalPayload: {
visible: false,
@ -215,8 +216,7 @@ class SalaryItemSettings extends Component {
});
}
};
handleEditSalaryItemName = (item, field, viewAttr, name) => {
const { salaryBillItemNameSet } = this.props;
handleEditSalaryItemName = (item, field, viewAttr) => {
const { groupId } = item, { salaryItemId } = field, { dataList } = this.state;
if (groupId === "111111111111111111") return;
this.setState({
@ -226,11 +226,8 @@ class SalaryItemSettings extends Component {
...item,
items: _.map(item.items, child => {
if (child.salaryItemId === salaryItemId) {
console.log(child, name);
const originName = salaryBillItemNameSet[salaryItemId] && salaryBillItemNameSet[salaryItemId].salaryItemName;
return {
...child,
name: (name && name !== (originName || child.originName)) ? `${child.name}(${originName || child.originName})` : `${child.name}`,
viewAttr
};
}
@ -248,7 +245,7 @@ class SalaryItemSettings extends Component {
});
};
handleChangeSalaryItemShowName = (item, field, name) => {
const { groupId } = item, { salaryItemId } = field, { dataList } = this.state;
const { groupId } = item, { salaryItemId } = field, { dataList, itemShowNamesetting } = this.state;
this.setState({
dataList: _.map(dataList, item => {
if (item.groupId === groupId) {
@ -263,12 +260,16 @@ class SalaryItemSettings extends Component {
};
}
return { ...item };
})
}, () => this.props.onChangeSalaryItem(this.state.dataList));
}),
itemShowNamesetting: _.unionBy([{ salaryItemId, salaryItemShowName: name }], itemShowNamesetting, "salaryItemId")
}, () => {
this.props.onChangeSalaryItem(this.state.dataList);
this.props.onChangeSalaryItemShowNamesetting(this.state.itemShowNamesetting);
});
};
render() {
const { onChangeSalaryItem } = this.props;
const { onChangeSalaryItem, salaryBillItemNameSet } = this.props;
const { dataList, modalPayload, checkedValue } = this.state;
return (
<div className="salaryItemSettingWrapper">
@ -301,16 +302,29 @@ class SalaryItemSettings extends Component {
})
)}
renderNodeItem={(filed) => {
const salaryBillItemNameObj = salaryBillItemNameSet[filed.id] || {};
return <div className="salaryItemList">
<div className="salaryItem" title={filed.name}>
<div className="salaryItem"
title={
(item.groupId !== "111111111111111111" && (!_.isEmpty(salaryBillItemNameObj) || (filed.name !== filed.originName))) ?
`${salaryBillItemNameObj.salaryItemShowName || filed.name}(${filed.originName})` :
filed.name
}
>
{
filed.viewAttr === 2 ?
<WeaInput value={filed.name}
onBlur={(val) => this.handleEditSalaryItemName(item, filed, 1, val)}
onBlur={() => this.handleEditSalaryItemName(item, filed, 1)}
onChange={(val) => this.handleChangeSalaryItemShowName(item, filed, val)}
/> :
<div className="salaryItemName"
onClick={() => this.handleEditSalaryItemName(item, filed, 2)}>{filed.name}</div>
onClick={() => this.handleEditSalaryItemName(item, filed, 2)}>
{
(item.groupId !== "111111111111111111" && (!_.isEmpty(salaryBillItemNameObj) || (filed.name !== filed.originName))) ?
`${salaryBillItemNameObj.salaryItemShowName || filed.name}(${filed.originName})` :
filed.name
}
</div>
}
<Icon type="cross" onClick={() => this.handleDeleteSalaryItem(item, filed)}/>
</div>

View File

@ -40,6 +40,15 @@ export default class ShowSettingForm extends React.Component {
const { payrollStore: { setSalaryItemSet } } = this.props;
setSalaryItemSet(resultSet);
};
handleChangeSalaryItemShowNamesetting = (itemShowNamesetting) => {
const { payrollStore: { setSalaryBillItemNameSetting, salaryBillItemNameSetting } } = this.props;
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
if (it.salaryBillType === 0) {
return { ...it, salaryTemplateId: this.props.id, itemShowNameSetting: itemShowNamesetting };
}
return { ...it, salaryTemplateId: this.props.id };
}));
};
render() {
const { payrollStore, id } = this.props;
@ -141,6 +150,7 @@ export default class ShowSettingForm extends React.Component {
ref={dom => this.salaryItemSettingsRef = dom}
dataSource={salaryItemSet}
onChangeSalaryItem={this.handleChangeSalaryItem}
onChangeSalaryItemShowNamesetting={this.handleChangeSalaryItemShowNamesetting}
salarySobId={toJS(templateBaseData).salarySob}
isReplenish={false} salaryBillItemNameSet={salaryBillItemNameSet}
/>

View File

@ -14,9 +14,19 @@ export default class TemplateSettingForm extends React.Component {
setReplenishSalaryTemplateSalaryItemSet(resultSet);
};
handleChangeSalaryItemShowNamesetting = (itemShowNamesetting) => {
const { payrollStore: { setSalaryBillItemNameSetting, salaryBillItemNameSetting } } = this.props;
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
if (it.salaryBillType === 1) {
return { ...it, salaryTemplateId: this.props.id, itemShowNameSetting: itemShowNamesetting };
}
return { ...it, salaryTemplateId: this.props.id };
}));
};
render() {
const { payrollStore } = this.props;
const { replenishSalaryTemplateSalaryItemSet, templateBaseData } = payrollStore;
const { replenishSalaryTemplateSalaryItemSet, templateBaseData, salaryBillItemNameSet } = payrollStore;
return (
<div className="showSettingForm">
<WeaSearchGroup
@ -32,8 +42,9 @@ export default class TemplateSettingForm extends React.Component {
ref={dom => this.salaryItemSettingsRef = dom}
dataSource={replenishSalaryTemplateSalaryItemSet}
onChangeSalaryItem={this.handleChangeSalaryItem}
onChangeSalaryItemShowNamesetting={this.handleChangeSalaryItemShowNamesetting}
salarySobId={toJS(templateBaseData).salarySob}
isReplenish={true}
isReplenish={true} salaryBillItemNameSet={salaryBillItemNameSet}
/>
</WeaSearchGroup>
</div>

View File

@ -26,6 +26,18 @@ export class payrollStore {
@observable salaryTemplateShowSet = {}; // 显示设置基础表单
@observable replenishSalaryTemplateSalaryItemSet = []; // 补发工资单模版基础表单
@observable salaryItemSet = []; // 显示设置薪资项
@observable salaryBillItemNameSetting = [
{
salaryTemplateId: "",
salaryBillType: 0,
itemShowNameSetting: []
},
{
salaryTemplateId: "",
salaryBillType: 1,
itemShowNameSetting: []
}
]; // 工资单模板薪资项目名称修改列表
@observable salaryBillItemNameSet = {}; // 工资单模板薪资项目名称修改列表
// **** 工资单页面 ****
@ -88,6 +100,10 @@ export class payrollStore {
@action
setSalaryItemSet = salaryItemSet => (this.salaryItemSet = salaryItemSet);
@action
setSalaryBillItemNameSet = salaryBillItemNameSet => (this.salaryBillItemNameSet = salaryBillItemNameSet);
@action
setSalaryBillItemNameSetting = salaryBillItemNameSetting => (this.salaryBillItemNameSetting = salaryBillItemNameSetting);
@action("工资单模板分页信息修改")
setTemplateTablePageInfo = (pageInfo, callback) => {
@ -264,6 +280,7 @@ export class payrollStore {
: false;
params.salaryItemSetting = toJS(this.salaryItemSet);
params.replenishSalaryItemSetting = toJS(this.replenishSalaryTemplateSalaryItemSet);
params.salaryBillItemNameSetting = toJS(this.salaryBillItemNameSetting);
return params;
};
@ -291,8 +308,6 @@ export class payrollStore {
return new Promise((resolve, reject) => {
let params = this.convertParams();
params.id = id;
console.log(params);
return
API.updatePayroll(params).then(res => {
if (res.status) {
message.success("保存成功");