From dadb749c4ca3d72e2f7e62d15f7626b55d58cc66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Wed, 18 Oct 2023 17:12:44 +0800 Subject: [PATCH] =?UTF-8?q?feature/2.9.42310.01-=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E5=8F=91=E6=94=BE=E9=A1=B5=E9=9D=A2=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrmSalary/components/pcTemplate/index.js | 24 ++++ .../components/pcTemplate/index.less | 32 ++++++ pc4mobx/hrmSalary/index.js | 10 +- .../pages/payroll/templatePreview/index.less | 55 +++++++++ .../payroll/templatePreview/tmpPreview.js | 54 +++++++++ .../components/payrollTempBaseSet/index.js | 14 ++- .../components/payrollTempNormalSet/index.js | 32 ++++-- .../components/payrollTempReissueSet/index.js | 20 ++-- .../payrollTemplateTableList/index.js | 2 +- .../updatePayrollTemplateSlide/index.js | 107 +++++++++++++----- pc4mobx/hrmSalary/stores/payroll.js | 2 + 11 files changed, 298 insertions(+), 54 deletions(-) create mode 100644 pc4mobx/hrmSalary/components/pcTemplate/index.js create mode 100644 pc4mobx/hrmSalary/components/pcTemplate/index.less create mode 100644 pc4mobx/hrmSalary/pages/payroll/templatePreview/tmpPreview.js diff --git a/pc4mobx/hrmSalary/components/pcTemplate/index.js b/pc4mobx/hrmSalary/components/pcTemplate/index.js new file mode 100644 index 00000000..66fdb988 --- /dev/null +++ b/pc4mobx/hrmSalary/components/pcTemplate/index.js @@ -0,0 +1,24 @@ +import React, { Component } from "react"; +import { toJS } from "mobx"; +import "./index.less"; + +class Index extends Component { + componentDidMount() { + const { store: { tmplDataSource } } = this.props; + console.log(toJS(tmplDataSource)); + } + + render() { + return ( +
+
+
+
+
+
+
+ ); + } +} + +export default Index; diff --git a/pc4mobx/hrmSalary/components/pcTemplate/index.less b/pc4mobx/hrmSalary/components/pcTemplate/index.less new file mode 100644 index 00000000..c17d0949 --- /dev/null +++ b/pc4mobx/hrmSalary/components/pcTemplate/index.less @@ -0,0 +1,32 @@ +.pbpc-content { + height: 100%; + border: 1px solid #e5e5e5; + overflow-y: auto; + + .weapp-salary-sp { + background: #f6f6f6; + + .salary-preview-container { + display: flex; + justify-content: flex-start; + align-items: center; + flex-direction: column; + width: 100%; + + .edition-center { + max-width: 1000px; + display: flex; + flex-direction: column; + align-items: center; + width: 100%; + padding-bottom: 32px; + } + } + } + + .weapp-salary-payroll-pc-preview { + padding: 32px 0; + height: 100%; + overflow-y: auto; + } +} diff --git a/pc4mobx/hrmSalary/index.js b/pc4mobx/hrmSalary/index.js index 2ae4df93..bca2db82 100644 --- a/pc4mobx/hrmSalary/index.js +++ b/pc4mobx/hrmSalary/index.js @@ -18,7 +18,7 @@ import Ledger from "./pages/ledgerPage"; // import Calculate from "./pages/calculate"; import Calculate from "./pages/calculate/calculate"; //重构的薪资核算页面 // import Payroll from "./pages/payroll"; -import Payroll from "./pages/payrollRelease";//重构的工资单发放页面 +import Payroll from "./pages/payrollRelease"; //重构的工资单发放页面 import PayrollGrant from "./pages/payroll/payrollGrant"; import PayrollDetail from "./pages/payroll/payrollDetail"; import Declare from "./pages/declare"; @@ -31,6 +31,7 @@ import DoCalcDetail from "./pages/calculate/doCalc"; import OfflineCompare from "./pages/calculate/calcOc"; import GenerateDeclarationDetail from "./pages/declare/generateDeclarationDetail"; import TemplatePreview from "./pages/payroll/templatePreview"; +import PayrollTemplatePreview from "./pages/payroll/templatePreview/tmpPreview"; //重构的工资单模板预览页面 import MobilePayroll from "./pages/mobilePayroll"; import SysConfig from "./pages/sysConfig"; import RuleConfig from "./pages/ruleConfig"; @@ -144,11 +145,8 @@ const Routes = ( - + + +
+
+ { + _.map(phsImgList, o => ( +
this.setState({ active: o.key })}> +
)) + } +
+
+
+
+ +
+
+
+ + ); + } +} + +export default TmpPreview; diff --git a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempBaseSet/index.js b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempBaseSet/index.js index bcaa4073..74123d25 100644 --- a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempBaseSet/index.js +++ b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempBaseSet/index.js @@ -61,7 +61,13 @@ class Index extends Component { const { autoSendDayOfMonth = "1", autoSendTimeOfDay = "09:00", autoSendCycleType = "1", ...fieldsEchoData - } = { ...result, ...toJS(tmplDataSource) }; + } = { + ...result, ...toJS(tmplDataSource), + reissueRule: ( + (!id && (_.isEmpty(toJS(tmplDataSource)) || (!_.isEmpty(toJS(tmplDataSource)) && toJS(tmplDataSource).replenishRule === "ALL"))) || + (id && ((_.isEmpty(toJS(tmplDataSource)) && !result.replenishRule) || (!_.isEmpty(toJS(tmplDataSource)) && toJS(tmplDataSource).replenishRule === "ALL"))) + ) ? "0" : "1" + }; const { data: replenishRuleOptions } = (fieldsEchoData["reissueRule"] === "1" && fieldsEchoData["salarySob"]) ? await getReplenishRuleSetOptions({ salarySobId: fieldsEchoData["salarySob"] }) : []; this.setState({ conditions: _.map(tempBaseSetConditions, it => { @@ -170,7 +176,7 @@ class Index extends Component { }); }; handleChange = async (params) => { - const { payrollStore: { payrollTempForm } } = this.props; + const { payrollStore: { payrollTempForm, setHasBeenModify } } = this.props; const key = _.keys(params)[0], salarySobId = payrollTempForm.getFormParams().salarySob, reissueRule = payrollTempForm.getFormParams().reissueRule; const { data: replenishRuleOptions } = (reissueRule === "1" && salarySobId) ? await getReplenishRuleSetOptions({ salarySobId }) : []; @@ -227,6 +233,7 @@ class Index extends Component { this.resetRequiredForm(); }); } + setHasBeenModify(true); this.forceUpdate(); }; resetRequiredForm = () => { @@ -236,7 +243,7 @@ class Index extends Component { if (reissueRule === "1") payrollTempForm.updateFields({ replenishRule: "" }); }; handleFbChange = (params) => { - const { payrollStore: { payrollTempFeedbackForm } } = this.props; + const { payrollStore: { payrollTempFeedbackForm, setHasBeenModify } } = this.props; const key = _.keys(params)[0]; if (key === "ackFeedbackStatus") { this.setState({ @@ -261,6 +268,7 @@ class Index extends Component { if (ackFeedbackStatus === "0") payrollTempFeedbackForm.updateFields({ autoAckDays: "7", feedbackUrl: "/" }); }); } + setHasBeenModify(true); this.forceUpdate(); }; diff --git a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempNormalSet/index.js b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempNormalSet/index.js index 5cb2331f..5d587ecd 100644 --- a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempNormalSet/index.js +++ b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempNormalSet/index.js @@ -36,12 +36,13 @@ class Index extends Component { } getPayrollShowForm = () => { - const { tmplId: id, payrollStore: { payrollTempNormalForm, tmplDataSource } } = this.props; + const { tmplId: id, payrollStore: { payrollTempNormalForm, tmplDataSource, setTmplDataSource } } = this.props; getPayrollShowForm({ id }).then(async ({ status, data }) => { if (status) { const { salaryTemplateShowSet, salaryTemplateSalaryItemSet: salaryItemSet, salaryBillItemNameSet } = data; const { data: result } = salaryTemplateShowSet; - const { ...fieldsEchoData } = { ...result, ...toJS(tmplDataSource) }; + const fieldsEchoData = { ...result, ...toJS(tmplDataSource) }; + setTmplDataSource(fieldsEchoData); this.setState({ conditions: _.map(tempNormalSetConditions, it => { if (it.title === "themeSet") { @@ -66,7 +67,7 @@ class Index extends Component { }; } }), - salaryBillItemNameSet, salaryItemSet + salaryBillItemNameSet }, () => { payrollTempNormalForm.initFormFields(this.state.conditions); //字段回显 @@ -82,7 +83,25 @@ class Index extends Component { break; } }); - !id && this.getPayrollItemList(); + if (!id && !fieldsEchoData.salaryItemSetting) this.getPayrollItemList(); + if (id && !fieldsEchoData.salaryItemSetting) { + setTmplDataSource({ ...toJS(tmplDataSource), salaryItemSetting: salaryItemSet }); + this.setState({ salaryItemSet }); + } + if (fieldsEchoData.salaryItemSetting) { + setTmplDataSource({ + ...toJS(tmplDataSource), salaryItemSetting: _.map(toJS(fieldsEchoData.salaryItemSetting), o => ({ + ...o, + items: _.map(o.items, it => ({ ...it, viewAttr: 1 })) + })) + }); + this.setState({ + salaryItemSet: _.map(toJS(fieldsEchoData.salaryItemSetting), o => ({ + ...o, + items: _.map(o.items, it => ({ ...it, viewAttr: 1 })) + })) + }); + } }); } }); @@ -117,9 +136,8 @@ class Index extends Component { }; handleChangeSalaryItem = (resultSet) => { const { payrollStore: { setTmplDataSource, tmplDataSource } } = this.props; - this.setState({ salaryItemSet: resultSet }, () => { - setTmplDataSource({ ...toJS(tmplDataSource), salaryItemSetting: resultSet }); - }); + setTmplDataSource({ ...toJS(tmplDataSource), salaryItemSetting: resultSet }); + this.setState({ salaryItemSet: resultSet }); }; handleChangeSalaryItemShowNamesetting = (itemShowNamesetting) => { const { payrollStore: { setSalaryBillItemNameSetting, salaryBillItemNameSetting } } = this.props; diff --git a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempReissueSet/index.js b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempReissueSet/index.js index 247da322..fd443897 100644 --- a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempReissueSet/index.js +++ b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTempReissueSet/index.js @@ -21,7 +21,17 @@ class Index extends Component { } componentDidMount() { - this.getReplenishForm(); + const { payrollStore: { tmplDataSource } } = this.props; + if (!toJS(tmplDataSource.replenishSalaryItemSetting)) { + this.getReplenishForm(); + } else { + this.setState({ + replenishSalaryTemplateSalaryItemSet: _.map(toJS(tmplDataSource.replenishSalaryItemSetting), o => ({ + ...o, + items: _.map(o.items, it => ({ ...it, viewAttr: 1 })) + })) + }); + } } getReplenishForm = () => { @@ -44,12 +54,8 @@ class Index extends Component { handleChangeSalaryItem = (resultSet) => { const { payrollStore: { setTmplDataSource, tmplDataSource } } = this.props; - this.setState({ replenishSalaryTemplateSalaryItemSet: resultSet }, () => { - setTmplDataSource({ - ...toJS(tmplDataSource), - replenishSalaryItemSetting: resultSet - }); - }); + setTmplDataSource({ ...toJS(tmplDataSource), replenishSalaryItemSetting: resultSet }); + this.setState({ replenishSalaryTemplateSalaryItemSet: resultSet }); }; handleChangeSalaryItemShowNamesetting = (itemShowNamesetting) => { const { payrollStore: { setSalaryBillItemNameSetting, salaryBillItemNameSetting } } = this.props; diff --git a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTemplateTableList/index.js b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTemplateTableList/index.js index aca60f91..bc4fd61f 100644 --- a/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTemplateTableList/index.js +++ b/pc4mobx/hrmSalary/pages/payrollRelease/components/payrollTemplateTableList/index.js @@ -181,7 +181,7 @@ class Index extends Component { {/* 新建编辑工资单模板*/} this.setState({ - tmplSlide: { ...tmplSlide, visible: false, copyId: "" } + tmplSlide: { ...tmplSlide, visible: false, tmplId: "" } }, () => v === "refresh" && this.getPayrollTemplateList(this.props))} /> diff --git a/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js b/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js index c6ed81a2..5cadc957 100644 --- a/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js +++ b/pc4mobx/hrmSalary/pages/payrollRelease/components/updatePayrollTemplateSlide/index.js @@ -8,14 +8,15 @@ import React, { Component } from "react"; import { toJS } from "mobx"; import { inject, observer } from "mobx-react"; import { WeaLocaleProvider, WeaSlideModal, WeaSteps } from "ecCom"; -import { Button, message } from "antd"; +import { Button, message, Modal } from "antd"; import PayrollTempBaseSet from "../payrollTempBaseSet"; import PayrollTempNormalSet from "../payrollTempNormalSet"; import PayrollTempReissueSet from "../payrollTempReissueSet"; -import { savePayroll } from "../../../../apis/payroll"; +import { savePayroll, updatePayroll } from "../../../../apis/payroll"; const Step = WeaSteps.Step; const getLabel = WeaLocaleProvider.getLabel; +const APIFox = { save: savePayroll, update: updatePayroll }; @inject("payrollStore") @observer @@ -28,11 +29,16 @@ class Index extends Component { this.tmpBaseSetRef = null; } + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && !nextProps.visible) nextProps.payrollStore.setHasBeenModify(false); + } + save = async () => { const { payrollStore: { payrollTempForm, payrollTempFeedbackForm, initPayrollTempForm, - initPayrollTempFeedbackForm, setTmplDataSource, tmplDataSource + initPayrollTempFeedbackForm, setTmplDataSource, tmplDataSource, + setHasBeenModify } } = this.props; const [tempFormm, fbForm] = await Promise.all([payrollTempForm.validateForm(), payrollTempFeedbackForm.validateForm()]); @@ -47,12 +53,13 @@ class Index extends Component { emailStatus: emailStatus === "1", msgStatus: msgStatus === "1", autoAckDays: Number(autoAckDays), - replenishRule: replenishRule === "0" ? "" : replenishRule + replenishRule: (replenishRule === "0" || !replenishRule) ? "ALL" : replenishRule }; setTmplDataSource(payload); this.setState({ current: this.state.current + 1 }, () => { initPayrollTempForm(); initPayrollTempFeedbackForm(); + setHasBeenModify(true); }); } else { tempFormm.showErrors(); @@ -84,35 +91,20 @@ class Index extends Component { }); }; savePayroll = () => { - const { - payrollStore: { - tmplDataSource, salaryBillItemNameSetting, initPayrollTempForm, initPayrollTempFeedbackForm, - initPayrollTempNormalForm, setTmplDataSource, setSalaryBillItemNameSetting - } - } = this.props; - const payload = { ...toJS(tmplDataSource), salaryBillItemNameSetting: toJS(salaryBillItemNameSetting) }; + const { payrollStore: { tmplDataSource, salaryBillItemNameSetting, setHasBeenModify }, tmplId: id } = this.props; + const payload = { + ...toJS(tmplDataSource), id, + salarySobId: toJS(tmplDataSource).salarySob, + salaryBillItemNameSetting: toJS(salaryBillItemNameSetting) + }; this.setState({ loading: true }); - savePayroll(payload).then(({ status, errormsg }) => { + const API = APIFox[id ? "update" : "save"]; + API(payload).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { - initPayrollTempForm(); - initPayrollTempFeedbackForm(); - initPayrollTempNormalForm(); - setTmplDataSource({}); - setSalaryBillItemNameSetting([ - { - salaryTemplateId: "", - salaryBillType: 0, - itemShowNameSetting: [] - }, - { - salaryTemplateId: "", - salaryBillType: 1, - itemShowNameSetting: [] - } - ]); message.success(getLabel(30700, "操作成功!")); - this.props.onClose("refresh"); + setHasBeenModify(false); + this.handleClose("refresh"); } else { message.error(errormsg); } @@ -147,7 +139,8 @@ class Index extends Component { this.setState({ current: current - 1 }); }}>{getLabel(1876, "上一步")} - + :