Merge branch 'feature/2.8.3.2307.02-工资单模板添加发放薪资项目名称修改的功能' into develop
This commit is contained in:
commit
bc9214edcd
|
|
@ -64,7 +64,12 @@ 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 +82,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));
|
||||
}
|
||||
}
|
||||
|
|
@ -261,7 +268,9 @@ export default class Payroll extends React.Component {
|
|||
setTemplateTableSelectedRowKeys,
|
||||
deletePayroll,
|
||||
templateBaseData,
|
||||
setTemplateTablePageInfo
|
||||
setTemplateTablePageInfo,
|
||||
setSalaryBillItemNameSetting,
|
||||
salaryBillItemNameSetting
|
||||
} = payrollStore;
|
||||
const { currentStep, selectedTab, templateSearchValue, templateSelect, startDate, endDate } = this.state;
|
||||
if (!hasRight && !loading) { // 无权限处理
|
||||
|
|
@ -316,7 +325,7 @@ export default class Payroll extends React.Component {
|
|||
{
|
||||
showOperateBtn &&
|
||||
<Button type="primary" onClick={() => {
|
||||
this.setState({ stepSlideVisible: true });
|
||||
this.setState({ stepSlideVisible: true, currentStep: 0 });
|
||||
}}>新建</Button>
|
||||
}
|
||||
{
|
||||
|
|
@ -465,10 +474,16 @@ export default class Payroll extends React.Component {
|
|||
customOperate={
|
||||
currentStep === 0 ? [
|
||||
<Button type="primary" onClick={() => {
|
||||
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
|
||||
return { ...it, salaryTemplateId: "", itemShowNameSetting: [] };
|
||||
}));
|
||||
nextStep();
|
||||
}}>下一步</Button>
|
||||
] : currentStep === 1 ? [
|
||||
<Button type="default" onClick={() => {
|
||||
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
|
||||
return { ...it, salaryTemplateId: "", itemShowNameSetting: [] };
|
||||
}));
|
||||
prevStep();
|
||||
}}>上一步</Button>,
|
||||
<Button type="primary" onClick={() => this.getReplenishForm()}>下一步</Button>,
|
||||
|
|
@ -477,6 +492,9 @@ export default class Payroll extends React.Component {
|
|||
}}>预览</Button>
|
||||
] : currentStep === 2 ? [
|
||||
<Button type="default" onClick={() => {
|
||||
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
|
||||
return { ...it, salaryTemplateId: "", itemShowNameSetting: [] };
|
||||
}));
|
||||
prevStep();
|
||||
}}>上一步</Button>,
|
||||
<Button type="primary" onClick={this.handleSave}>保存</Button>
|
||||
|
|
@ -539,6 +557,9 @@ export default class Payroll extends React.Component {
|
|||
}
|
||||
subItemChange={(selectedTab) => {
|
||||
this.setState({ selectedTab: Number(selectedTab) }, () => {
|
||||
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
|
||||
return { ...it, salaryTemplateId: "", itemShowNameSetting: [] };
|
||||
}));
|
||||
if (this.state.selectedTab === 2) this.getReplenishForm(true, { id: this.state.templateCurrentId });
|
||||
});
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -192,9 +192,11 @@
|
|||
|
||||
.salaryItemName {
|
||||
width: 100%;
|
||||
min-height: 18px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
i.anticon-cross {
|
||||
|
|
|
|||
|
|
@ -16,13 +16,16 @@ class SalaryItemSettings extends Component {
|
|||
super(props);
|
||||
this.state = {
|
||||
dataList: [],
|
||||
itemShowNamesetting: [], //名称修改集合
|
||||
checkedValue: "",
|
||||
modalPayload: {
|
||||
visible: false,
|
||||
title: "",
|
||||
groupId: "",
|
||||
groupName: "",
|
||||
options: []
|
||||
options: [],
|
||||
salaryItemName: "",
|
||||
salaryItemId: ""
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -98,7 +101,9 @@ class SalaryItemSettings extends Component {
|
|||
title: "",
|
||||
groupId: "",
|
||||
groupName: "",
|
||||
options: []
|
||||
options: [],
|
||||
salaryItemName: "",
|
||||
salaryItemId: ""
|
||||
}
|
||||
});
|
||||
};
|
||||
|
|
@ -211,9 +216,60 @@ class SalaryItemSettings extends Component {
|
|||
});
|
||||
}
|
||||
};
|
||||
handleEditSalaryItemName = (item, field, viewAttr) => {
|
||||
const { groupId } = item, { salaryItemId } = field, { dataList } = this.state;
|
||||
if (groupId === "111111111111111111") return;
|
||||
this.setState({
|
||||
dataList: _.map(dataList, item => {
|
||||
if (item.groupId === groupId) {
|
||||
return {
|
||||
...item,
|
||||
items: _.map(item.items, child => {
|
||||
if (child.salaryItemId === salaryItemId) {
|
||||
return {
|
||||
...child,
|
||||
viewAttr
|
||||
};
|
||||
}
|
||||
return { ...child, viewAttr: 1 };
|
||||
})
|
||||
};
|
||||
}
|
||||
return {
|
||||
...item,
|
||||
items: _.map(item.items, child => {
|
||||
return { ...child, viewAttr: 1 };
|
||||
})
|
||||
};
|
||||
})
|
||||
}, () => document.getElementById("salaryItemInput") && document.getElementById("salaryItemInput").focus());
|
||||
};
|
||||
handleChangeSalaryItemShowName = (item, field, name) => {
|
||||
const { groupId } = item, { salaryItemId } = field, { dataList, itemShowNamesetting } = this.state;
|
||||
this.setState({
|
||||
dataList: _.map(dataList, item => {
|
||||
if (item.groupId === groupId) {
|
||||
return {
|
||||
...item,
|
||||
items: _.map(item.items, child => {
|
||||
if (child.salaryItemId === salaryItemId) {
|
||||
return { ...child, salaryItemShowName: name, name };
|
||||
}
|
||||
return { ...child };
|
||||
})
|
||||
};
|
||||
}
|
||||
return { ...item };
|
||||
}),
|
||||
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">
|
||||
|
|
@ -246,9 +302,36 @@ class SalaryItemSettings extends Component {
|
|||
})
|
||||
)}
|
||||
renderNodeItem={(filed) => {
|
||||
const salaryBillItemNameObj = salaryBillItemNameSet[filed.id] || {};
|
||||
return <div className="salaryItemList">
|
||||
<div className="salaryItem" title={filed.name}>
|
||||
<div className="salaryItemName">{filed.name}</div>
|
||||
<div className="salaryItem"
|
||||
title={
|
||||
(item.groupId !== "111111111111111111" && (!_.isEmpty(salaryBillItemNameObj) || (filed.salaryItemShowName !== filed.originName))) ?
|
||||
`${filed.salaryItemShowName}(${filed.originName})` :
|
||||
filed.salaryItemShowName
|
||||
}
|
||||
>
|
||||
{
|
||||
filed.viewAttr === 2 ?
|
||||
<WeaInput
|
||||
value={
|
||||
item.groupId !== "111111111111111111" ?
|
||||
filed.salaryItemShowName :
|
||||
filed.name
|
||||
}
|
||||
id="salaryItemInput"
|
||||
onBlur={() => this.handleEditSalaryItemName(item, filed, 1)}
|
||||
onChange={(val) => this.handleChangeSalaryItemShowName(item, filed, val)}
|
||||
/> :
|
||||
<div className="salaryItemName"
|
||||
onClick={() => this.handleEditSalaryItemName(item, filed, 2)}>
|
||||
{
|
||||
(item.groupId !== "111111111111111111" && (!_.isEmpty(salaryBillItemNameObj) || (filed.salaryItemShowName !== filed.originName))) ?
|
||||
`${filed.salaryItemShowName}(${filed.originName})` :
|
||||
filed.salaryItemShowName
|
||||
}
|
||||
</div>
|
||||
}
|
||||
<Icon type="cross" onClick={() => this.handleDeleteSalaryItem(item, filed)}/>
|
||||
</div>
|
||||
</div>;
|
||||
|
|
|
|||
|
|
@ -40,12 +40,21 @@ 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;
|
||||
const salaryTemplateShowSetStorage = (id ? "{}" : window.localStorage.getItem("salary-showset") || "{}");
|
||||
const { salaryTemplateShowSet } = payrollStore;
|
||||
const { salaryItemSet, templateBaseData } = payrollStore;
|
||||
const { salaryItemSet, templateBaseData, salaryBillItemNameSet } = payrollStore;
|
||||
const {
|
||||
theme,
|
||||
background,
|
||||
|
|
@ -141,8 +150,9 @@ 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}
|
||||
isReplenish={false} salaryBillItemNameSet={salaryBillItemNameSet}
|
||||
/>
|
||||
</WeaSearchGroup>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -26,6 +26,19 @@ export class payrollStore {
|
|||
@observable salaryTemplateShowSet = {}; // 显示设置基础表单
|
||||
@observable replenishSalaryTemplateSalaryItemSet = []; // 补发工资单模版基础表单
|
||||
@observable salaryItemSet = []; // 显示设置薪资项
|
||||
@observable salaryBillItemNameSetting = [
|
||||
{
|
||||
salaryTemplateId: "",
|
||||
salaryBillType: 0,
|
||||
itemShowNameSetting: []
|
||||
},
|
||||
{
|
||||
salaryTemplateId: "",
|
||||
salaryBillType: 1,
|
||||
itemShowNameSetting: []
|
||||
}
|
||||
]; // 工资单模板薪资项目名称修改列表
|
||||
@observable salaryBillItemNameSet = {}; // 工资单模板薪资项目名称修改列表
|
||||
|
||||
// **** 工资单页面 ****
|
||||
@observable salarySendTableStore = new TableStore(); // 工资单列表
|
||||
|
|
@ -87,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) => {
|
||||
|
|
@ -214,6 +231,7 @@ export class payrollStore {
|
|||
if (res.status) {
|
||||
if (id !== "") {
|
||||
this.salaryItemSet = res.data.salaryTemplateSalaryItemSet;
|
||||
this.salaryBillItemNameSet = res.data.salaryBillItemNameSet;
|
||||
this.replenishSalaryTemplateSalaryItemSet = res.data.salaryTemplateSalaryItemSet;
|
||||
}
|
||||
this.salaryTemplateShowSet = { ...res.data.salaryTemplateShowSet.data, ...JSON.parse(salaryTemplateShowSetStorage) };
|
||||
|
|
@ -262,6 +280,7 @@ export class payrollStore {
|
|||
: false;
|
||||
params.salaryItemSetting = toJS(this.salaryItemSet);
|
||||
params.replenishSalaryItemSetting = toJS(this.replenishSalaryTemplateSalaryItemSet);
|
||||
params.salaryBillItemNameSetting = toJS(this.salaryBillItemNameSetting);
|
||||
return params;
|
||||
};
|
||||
|
||||
|
|
@ -274,6 +293,9 @@ export class payrollStore {
|
|||
if (res.status) {
|
||||
message.success("保存成功");
|
||||
this.getPayrollTemplateList();
|
||||
this.setSalaryBillItemNameSetting(_.map(this.salaryBillItemNameSetting, it => {
|
||||
return { ...it, salaryTemplateId: "", itemShowNameSetting: [] };
|
||||
}));
|
||||
resolve();
|
||||
} else {
|
||||
message.error(res.errormsg || "保存失败");
|
||||
|
|
|
|||
Loading…
Reference in New Issue