diff --git a/pc4mobx/hrmSalary/pages/payroll/index.js b/pc4mobx/hrmSalary/pages/payroll/index.js index 10c526ea..38a5eba4 100644 --- a/pc4mobx/hrmSalary/pages/payroll/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/index.js @@ -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 && } { @@ -465,10 +474,16 @@ export default class Payroll extends React.Component { customOperate={ currentStep === 0 ? [ ] : currentStep === 1 ? [ , , @@ -477,6 +492,9 @@ export default class Payroll extends React.Component { }}>预览 ] : currentStep === 2 ? [ , @@ -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 }); }); }} diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less b/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less index f30d0063..ebcbbe4c 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less @@ -192,9 +192,11 @@ .salaryItemName { width: 100%; + min-height: 18px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + cursor: pointer; } i.anticon-cross { diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js index c1441f0c..1b70707f 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js @@ -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 (
@@ -246,9 +302,36 @@ class SalaryItemSettings extends Component { }) )} renderNodeItem={(filed) => { + const salaryBillItemNameObj = salaryBillItemNameSet[filed.id] || {}; return
-
-
{filed.name}
+
+ { + filed.viewAttr === 2 ? + this.handleEditSalaryItemName(item, filed, 1)} + onChange={(val) => this.handleChangeSalaryItemShowName(item, filed, val)} + /> : +
this.handleEditSalaryItemName(item, filed, 2)}> + { + (item.groupId !== "111111111111111111" && (!_.isEmpty(salaryBillItemNameObj) || (filed.salaryItemShowName !== filed.originName))) ? + `${filed.salaryItemShowName}(${filed.originName})` : + filed.salaryItemShowName + } +
+ } this.handleDeleteSalaryItem(item, filed)}/>
; diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js index 3b27a87b..7cfd9404 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js @@ -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} />
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js index ad0fabfe..ce64f1e4 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js @@ -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 (
this.salaryItemSettingsRef = dom} dataSource={replenishSalaryTemplateSalaryItemSet} onChangeSalaryItem={this.handleChangeSalaryItem} + onChangeSalaryItemShowNamesetting={this.handleChangeSalaryItemShowNamesetting} salarySobId={toJS(templateBaseData).salarySob} - isReplenish={true} + isReplenish={true} salaryBillItemNameSet={salaryBillItemNameSet} />
diff --git a/pc4mobx/hrmSalary/stores/payroll.js b/pc4mobx/hrmSalary/stores/payroll.js index e42cdba0..6c2e7d34 100644 --- a/pc4mobx/hrmSalary/stores/payroll.js +++ b/pc4mobx/hrmSalary/stores/payroll.js @@ -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 || "保存失败");