From b17796f0ab25bf92963f48a34a4269bc77fad5ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Sat, 3 Dec 2022 17:28:11 +0800 Subject: [PATCH 01/38] =?UTF-8?q?=E4=B8=AA=E7=A8=8E=E6=89=A3=E7=BC=B4?= =?UTF-8?q?=E4=B9=89=E5=8A=A1=E4=BA=BA=E6=81=A2=E5=A4=8D=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/taxAgent/index.js | 34 +++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/taxAgent/index.js b/pc4mobx/hrmSalary/pages/taxAgent/index.js index 5896b994..ef782627 100644 --- a/pc4mobx/hrmSalary/pages/taxAgent/index.js +++ b/pc4mobx/hrmSalary/pages/taxAgent/index.js @@ -1,6 +1,6 @@ import React from "react"; import { inject, observer } from "mobx-react"; -import { Button, Col, message, Modal, Row, Switch } from "antd"; +import { Button, Col, message, Modal, Row, Switch, Dropdown, Menu } from "antd"; import { WeaFormItem, WeaInputSearch, WeaSearchGroup, WeaTable, WeaTop } from "ecCom"; import { renderNoright } from "../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 import EditModal from "./editModal"; @@ -356,22 +356,22 @@ export default class TaxAgent extends React.Component { onClick={() => this.showEditModal(record.id)}> 编辑 - {/**/} - {/* */} - {/* this.deleteTaxAgent(record.id)}>*/} - {/* 删除*/} - {/* */} - {/* */} - {/* */} - {/* }>*/} - {/* */} - {/* */} - {/* */} - {/**/} + + + this.deleteTaxAgent(record.id)}> + 删除 + + + + }> + + + + } ], From 4825d0cd494da84999d6417e891cbe388a0d3e8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 6 Dec 2022 15:04:57 +0800 Subject: [PATCH 02/38] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/stepSlide/stepSlideHeader.js | 51 ++++++++++--------- pc4mobx/hrmSalary/pages/payroll/index.js | 42 ++++++++------- .../pages/payroll/stepForm/baseInformForm.js | 39 ++++++++++++++ pc4mobx/hrmSalary/stores/payroll.js | 19 ++++--- 4 files changed, 98 insertions(+), 53 deletions(-) diff --git a/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js b/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js index 4a4918d9..35d4ac22 100644 --- a/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js +++ b/pc4mobx/hrmSalary/components/stepSlide/stepSlideHeader.js @@ -1,28 +1,29 @@ -import React from 'react'; -import { WeaSteps } from 'ecCom' +import React from "react"; +import { WeaSteps } from "ecCom"; +import "./index.less"; + const Step = WeaSteps.Step; -import "./index.less" export default class StepSlideHeader extends React.Component { - render() { - return ( -
-
- - { - this.props.steps && this.props.steps.map(item => - ( - - ) - ) - } - -
-
- {this.props.children} -
-
- - ) - } -} \ No newline at end of file + render() { + return ( +
+
+ + { + this.props.steps && this.props.steps.map(item => + ( + + ) + ) + } + +
+
+ {this.props.children} +
+
+ + ); + } +} diff --git a/pc4mobx/hrmSalary/pages/payroll/index.js b/pc4mobx/hrmSalary/pages/payroll/index.js index 83a1c169..be4f500c 100644 --- a/pc4mobx/hrmSalary/pages/payroll/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/index.js @@ -278,7 +278,7 @@ export default class Payroll extends React.Component { }]; const renderRightOperation = () => { - if (this.state.selectedKey == "0") { + if (this.state.selectedKey === "0") { return
; - } else if (this.state.selectedKey == "1") { + } else if (this.state.selectedKey === "1") { return (
{ @@ -354,12 +354,7 @@ export default class Payroll extends React.Component { ); } }; - - const steps = [ - "基础设置", - "显示设置" - ]; - + const steps = ["基础设置", "正常核算工资单模板", "补发工资单模版"]; const validateStep1 = () => { const { payrollStore: { templateBaseData } } = this.props; if (!notNull(templateBaseData.name)) { @@ -408,7 +403,7 @@ export default class Payroll extends React.Component { }} /> { - this.state.selectedKey == 0 && + this.state.selectedKey === "0" && { this.handleTemplateListEdit(record); @@ -424,7 +419,7 @@ export default class Payroll extends React.Component { } { - this.state.selectedKey == 1 && + this.state.selectedKey === "1" && { this.handleTemplateListEdit(record); @@ -447,32 +442,43 @@ export default class Payroll extends React.Component { this.setState({ stepSlideVisible: false }); }} customOperate={ - currentStep == 0 ? [ + currentStep === 0 ? [ - ] : currentStep == 1 ? [ + ] : currentStep === 1 ? [ , , + }}>下一步, - ] : [] + ] : currentStep === 2 ? [ + , + , + + ] : + [] } title="新建工资单模板" content={
{ - currentStep == 0 && { - this.handleBaseInfoChange(request); - }}/> + currentStep === 0 && this.handleBaseInfoChange(request)}/> } { - currentStep == 1 && + currentStep === 1 && + } + { + currentStep === 2 &&
补发工资单模版
}
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js index dca4447e..3878d5a9 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js @@ -75,6 +75,45 @@ export default class BaseInformForm extends React.Component { onChange={value => this.hanldeChange({ name: value })} /> + + this.hanldeChange({ name: value })} + /> + + + { + }} + /> + + + { + }} + /> + - (this.templateBaseData = templateBaseData); + setTemplateBaseData = templateBaseData => (this.templateBaseData = templateBaseData); // 显示设置基础表单 @action @@ -160,12 +159,12 @@ export class payrollStore { this.salarySobOptions = response.salarySobOptions ? response.salarySobOptions.map(item => { - let result = {}; - result.showname = item.name; - result.key = item.id + ""; - result.selected = false; - return result; - }) + let result = {}; + result.showname = item.name; + result.key = item.id + ""; + result.selected = false; + return result; + }) : []; resolve({ templateBaseData: this.templateBaseData, @@ -453,7 +452,7 @@ export class payrollStore { API.exportDetailList(params); }; // 工资单发放-导出-工资单发放列表 - + @action exportPayroll = (params = {}) => { API.exportPayroll(params); From 2631e8065ef1251329b283c8694d4faf9ff85eb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 6 Dec 2022 16:06:35 +0800 Subject: [PATCH 03/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- pc4mobx/hrmSalary/index.js | 2 +- pc4mobx/hrmSalary/pages/ledgerPage/index.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/index.js diff --git a/pc4mobx/hrmSalary/index.js b/pc4mobx/hrmSalary/index.js index 626b9ca2..9f796db5 100644 --- a/pc4mobx/hrmSalary/index.js +++ b/pc4mobx/hrmSalary/index.js @@ -14,7 +14,7 @@ import OtherDeduct from "./pages/dataAcquisition/otherDeduct"; import CumSituation from "./pages/dataAcquisition/cumSituation"; import Attendance from "./pages/dataAcquisition/attendance"; import SpecialAddDeduction from "./pages/dataAcquisition/specialAddDeduction"; -import Ledger from "./pages/ledger"; +import Ledger from "./pages/ledgerPage"; import Calculate from "./pages/calculate"; import Payroll from "./pages/payroll"; import PayrollGrant from "./pages/payroll/payrollGrant"; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.js b/pc4mobx/hrmSalary/pages/ledgerPage/index.js new file mode 100644 index 00000000..e7c6d0fd --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.js @@ -0,0 +1,19 @@ +/* + * Author: 黎永顺 + * name: 薪资账套 + * Description: + * Date: 2022/12/6 + */ +import React, { Component } from "react"; + +class Index extends Component { + render() { + return ( +
+薪资账套 +
+ ); + } +} + +export default Index; From 593140b54f8c6db1c62333163ae3015584645a8b 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, 7 Dec 2022 14:15:46 +0800 Subject: [PATCH 04/38] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/payroll.js | 23 +++ pc4mobx/hrmSalary/pages/payroll/index.js | 178 ++++++++++++------ .../pages/payroll/stepForm/baseInformForm.js | 80 +++++--- .../pages/payroll/stepForm/index.less | 1 - .../pages/payroll/stepForm/showSettingForm.js | 6 +- .../payroll/stepForm/tmplateSettingForm.js | 121 ++++++++++++ .../pages/salaryItem/formalFormModal.js | 10 +- pc4mobx/hrmSalary/single.js | 35 ++-- pc4mobx/hrmSalary/stores/payroll.js | 45 ++--- 9 files changed, 359 insertions(+), 140 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js diff --git a/pc4mobx/hrmSalary/apis/payroll.js b/pc4mobx/hrmSalary/apis/payroll.js index 954050e9..1adf0868 100644 --- a/pc4mobx/hrmSalary/apis/payroll.js +++ b/pc4mobx/hrmSalary/apis/payroll.js @@ -313,3 +313,26 @@ export const grantProxy = params => { body: JSON.stringify(params) }).then(res => res.json()); }; + +// 工资单发放-新建时获取补发工资单模板薪资项目设置 +export const getReplenishForm = params => { + return fetch("/api/bs/hrmsalary/salaryBill/template/getReplenishForm", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(params) + }).then(res => res.json()); +}; + +// 工资单发放-获取规则设置下拉框 +export const getReplenishRuleSetOptions = ({ salarySobId }) => { + return fetch(`/api/bs/hrmsalary/salaryBill/template/getReplenishRuleSetOptions?salarySobId=${salarySobId}`, { + method: "GET", + mode: "cors", + headers: { + "Content-Type": "application/json" + } + }).then(res => res.json()); +}; diff --git a/pc4mobx/hrmSalary/pages/payroll/index.js b/pc4mobx/hrmSalary/pages/payroll/index.js index be4f500c..1e0e5cb6 100644 --- a/pc4mobx/hrmSalary/pages/payroll/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/index.js @@ -13,9 +13,10 @@ import BaseInformForm from "./stepForm/baseInformForm"; import ShowSettingForm from "./stepForm/showSettingForm"; import SlideModalTitle from "../../components/slideModalTitle"; import TemplateSettingList from "./templateSettingList"; -import { notNull } from "../../util/validate"; +import TemplateSettingForm from "./stepForm/tmplateSettingForm"; import CopyModal from "./copyModal"; import SalarySendList from "./SalarySendList"; +import { getReplenishForm } from "../../apis/payroll"; import "../dataAcquisition/cumDeduct/index.less"; const { MonthPicker } = DatePicker; @@ -95,19 +96,45 @@ export default class Payroll extends React.Component { } // 工资单模板-新建表单变化监听 - handleBaseInfoChange(request) { + handleBaseInfoChange = (request) => { const { payrollStore: { setTemplateBaseData } } = this.props; setTemplateBaseData(request); - } + }; + getReplenishForm = (isEdit = false, params = {}) => { + const { payrollStore } = this.props; + const { templateBaseData, salaryTemplateShowSet, setReplenishSalaryTemplateSalaryItemSet } = payrollStore; + if (!salaryTemplateShowSet.theme && !isEdit) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return; + } + getReplenishForm({ salarySobId: templateBaseData.salarySob, ...params }).then(({ status, data }) => { + if (status) { + if (!isEdit) { + this.setState({ currentStep: this.state.currentStep + 1 }, () => { + setReplenishSalaryTemplateSalaryItemSet(data.replenishSalaryTemplateSalaryItemSet); + window.localStorage.setItem("salaryTemplateShowSet", JSON.stringify(salaryTemplateShowSet)); + }); + } else { + setReplenishSalaryTemplateSalaryItemSet(data.replenishSalaryTemplateSalaryItemSet); + window.localStorage.setItem("salaryTemplateShowSet", JSON.stringify(salaryTemplateShowSet)); + } + } + }); + }; // 新建保存 - handleSave() { + handleSave = () => { const { payrollStore } = this.props; const { fetchSavePayroll } = payrollStore; fetchSavePayroll().then(() => { + window.localStorage.removeItem("templateBaseData"); + window.localStorage.removeItem("salaryTemplateShowSet"); this.setState({ currentStep: 0, stepSlideVisible: false }); }); - } + }; componentWillMount() { const { payrollStore } = this.props; @@ -177,9 +204,6 @@ export default class Payroll extends React.Component { content: "确认删除", onOk: () => { deletePayroll([record.id]); - }, - onCancel: () => { - } }); } @@ -197,25 +221,46 @@ export default class Payroll extends React.Component { } // 预览 - handlePreview() { + handlePreview = () => { const { payrollStore: { templateBaseData, salaryTemplateShowSet, salaryItemSet } } = this.props; window.localStorage.setItem("templateBaseData", JSON.stringify(templateBaseData)); window.localStorage.setItem("salaryTemplateShowSet", JSON.stringify(salaryTemplateShowSet)); window.localStorage.setItem("salaryItemSet", JSON.stringify(salaryItemSet)); window.open("/spa/hrmSalary/static/index.html#/main/hrmSalary/templatePreview"); - } + }; // 更新保存 - handleUpdateSave() { + handleUpdateSave = () => { + const { selectedTab } = this.state; const { payrollStore } = this.props; const { fetchUpdatePayroll } = payrollStore; + if (selectedTab === 0) { + if (!this.validateStep1()) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return; + } + } else if (selectedTab === 1) { + const { salaryTemplateShowSet } = payrollStore; + if (!salaryTemplateShowSet.theme) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return; + } + } + + fetchUpdatePayroll(this.recordId).then(() => { this.setState({ editSlideVisible: false, selectedTab: 0 }); }); - } + }; // 发放页面页码跳转 handleListDataPageChange(value, pageInfo) { @@ -231,6 +276,18 @@ export default class Payroll extends React.Component { getPayrollList({ salaryYearMonth: this.salaryYearMonth, ...pageInfo }); } + validateStep1 = () => { + const { payrollStore: { templateBaseData } } = this.props; + const { reissueRule = "0" } = templateBaseData; + const validList = reissueRule === "0" ? ["name", "replenishName", "salarySob"] : ["name", "replenishName", "salarySob", "replenishRule"]; + if (_.every(validList, it => !!templateBaseData[it])) { + window.localStorage.setItem("templateBaseData", JSON.stringify(templateBaseData)); + } else { + window.localStorage.removeItem("templateBaseData"); + } + return _.every(validList, it => !!templateBaseData[it]); + }; + render() { const { payrollStore, taxAgentStore: { showOperateBtn } } = this.props; const { @@ -355,21 +412,12 @@ export default class Payroll extends React.Component { } }; const steps = ["基础设置", "正常核算工资单模板", "补发工资单模版"]; - const validateStep1 = () => { - const { payrollStore: { templateBaseData } } = this.props; - if (!notNull(templateBaseData.name)) { - message.warning("工资单模板名称不能为空"); - return false; - } - - if (!notNull(templateBaseData.salarySob)) { - message.warning("薪资账套不能为空"); - return false; - } - return true; - }; const nextStep = () => { - if (!validateStep1()) { + if (!this.validateStep1()) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); return; } this.setState({ @@ -439,6 +487,8 @@ export default class Payroll extends React.Component { currentStep={currentStep} steps={steps} onCancel={() => { + window.localStorage.removeItem("templateBaseData"); + window.localStorage.removeItem("salaryTemplateShowSet"); this.setState({ stepSlideVisible: false }); }} customOperate={ @@ -447,24 +497,18 @@ export default class Payroll extends React.Component { nextStep(); }}>下一步 ] : currentStep === 1 ? [ - , - , - , + ] : currentStep === 2 ? [ - , - , - + ] : [] } @@ -478,10 +522,9 @@ export default class Payroll extends React.Component { currentStep === 1 && } { - currentStep === 2 &&
补发工资单模版
+ currentStep === 2 && }
- } /> } @@ -494,50 +537,61 @@ export default class Payroll extends React.Component { top={0} width={50} height={100} - direction={"right"} - measure={"%"} + direction="right" + measure="%" title={ { this.handleUpdateSave(); }}>保存 - ] : selectedTab == 1 ? [ + ] : selectedTab === 1 ? [ , - - ] : [] - } - subItemChange={ - (selectedTab) => { - this.setState({ selectedTab }); - } + }}>保存, + + ] : [ + + ] } + subItemChange={(selectedTab) => { + this.setState({ selectedTab: Number(selectedTab) }, () => { + if (this.state.selectedTab === 2) this.getReplenishForm(true, { id: this.state.templateCurrentId }); + }); + }} /> } content={
{ - selectedTab == 0 && - { - this.handleBaseInfoChange(request); - }}/> + selectedTab === 0 && + this.handleBaseInfoChange(request)}/> } { - selectedTab == 1 && + selectedTab === 1 && + } + { + selectedTab === 2 && }
} - onClose={() => this.setState({ editSlideVisible: false }, () => this.setState({ selectedTab: 0 }))} - showMask={true} - closeMaskOnClick={() => this.setState({ editSlideVisible: false }, () => this.setState({ selectedTab: 0 }))}/> + onClose={() => this.setState({ editSlideVisible: false }, () => { + window.localStorage.removeItem("templateBaseData"); + window.localStorage.removeItem("salaryTemplateShowSet"); + this.setState({ selectedTab: 0 }); + })} + /> } { this.state.copyModalVisible && diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js index 3878d5a9..8a1bd83d 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js @@ -1,6 +1,7 @@ import React from "react"; import { WeaFormItem, WeaInput, WeaSearchGroup, WeaSelect } from "ecCom"; import { inject, observer } from "mobx-react"; +import { getReplenishRuleSetOptions } from "../../../apis/payroll"; import { toJS } from "mobx"; @inject("payrollStore") @@ -11,6 +12,7 @@ export default class BaseInformForm extends React.Component { this.state = { inited: false, options: [], + replenishRuleOptions: [], request: {} }; } @@ -18,16 +20,22 @@ export default class BaseInformForm extends React.Component { componentWillMount() { const { payrollStore } = this.props; const { getPayrollBaseForm } = payrollStore; + const templateBaseData = window.localStorage.getItem("templateBaseData") || "{}"; getPayrollBaseForm(this.props.id).then(data => { this.setState( { + replenishRuleOptions: _.map(data.replenishRuleSetOption, it => ({ key: it.id, showname: it.content })), options: _.isEmpty(toJS(data.salarySobOptions)) ? [{ key: "", showname: "" }] : [{ key: "", showname: "" }, ...toJS(data.salarySobOptions)], - request: data.templateBaseData - }, - () => { + request: { + ...data.templateBaseData, + reissueRule: data.templateBaseData.replenishRule ? "1" : "0", + ...JSON.parse(templateBaseData) + } + }, () => { + this.props.onChange && this.props.onChange(this.state.request); this.setState({ inited: true }); @@ -36,19 +44,35 @@ export default class BaseInformForm extends React.Component { }); } - hanldeChange(params) { + hanldeChange = (params) => { let request = { ...this.state.request, ...params }; this.setState({ request + }, () => { + if (this.state.request.reissueRule === "1" && this.state.request.salarySob) { + // TODO:获取规则设置枚举项 + this.getReplenishRuleSetOptions(); + } }); this.props.onChange && this.props.onChange(request); - } + }; + getReplenishRuleSetOptions = () => { + const { request } = this.state; + getReplenishRuleSetOptions({ salarySobId: request.salarySob }).then(({ status, data }) => { + if (status && !_.isEmpty(data)) { + this.setState({ + replenishRuleOptions: _.map(data, it => ({ key: it.id, showname: it.content })) + }); + } + }); + }; render() { - const { request, options } = this.state; - const { salarySob, name, description } = request; + const { request, options, replenishRuleOptions } = this.state; + const { salarySob, name, description, replenishName, replenishRule, reissueRule } = request; + return ( - + this.hanldeChange({ name: value })} + onChange={value => this.hanldeChange({ replenishName: value })} /> { - }} - /> - - - { - }} + onChange={value => this.hanldeChange({ reissueRule: value })} /> + { + reissueRule !== "0" && + + this.hanldeChange({ replenishRule: value })} + /> + + } { if (sourceGroup.id == group.id) { @@ -84,6 +83,7 @@ export default class ShowSettingForm extends React.Component { } render() { + const salaryTemplateShowSetStorage = window.localStorage.getItem("salaryTemplateShowSet") || "{}"; const { payrollStore } = this.props; const { salaryTemplateShowSet } = payrollStore; const { salaryItemSet } = payrollStore; @@ -94,7 +94,7 @@ export default class ShowSettingForm extends React.Component { textContentPosition, salaryItemNullStatus, salaryItemZeroStatus - } = salaryTemplateShowSet; + } = { ...salaryTemplateShowSet, ...JSON.parse(salaryTemplateShowSetStorage) }; return (
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js new file mode 100644 index 00000000..af2ea5de --- /dev/null +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js @@ -0,0 +1,121 @@ +import React from "react"; +import { Icon, Modal } from "antd"; +import { WeaSearchGroup } from "ecCom"; +import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; +import "./index.less"; + + +@inject("payrollStore") +@observer +export default class TemplateSettingForm extends React.Component { + + handleDownClick = (index) => { + const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props; + let downItem = replenishSalaryTemplateSalaryItemSet[index + 1]; + let thisItem = replenishSalaryTemplateSalaryItemSet[index]; + let resultSet = [...replenishSalaryTemplateSalaryItemSet]; + resultSet[index] = downItem; + resultSet[index + 1] = thisItem; + setReplenishSalaryTemplateSalaryItemSet(resultSet); + }; + + handleUpClick = (index) => { + const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props; + let upItem = replenishSalaryTemplateSalaryItemSet[index - 1]; + let thisItem = replenishSalaryTemplateSalaryItemSet[index]; + let resultSet = [...replenishSalaryTemplateSalaryItemSet]; + resultSet[index] = upItem; + resultSet[index - 1] = thisItem; + setReplenishSalaryTemplateSalaryItemSet(resultSet); + }; + + handleDeleteItem = (group, item) => { + const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props; + let resultSalaryItemSet = [...replenishSalaryTemplateSalaryItemSet]; + resultSalaryItemSet.map(sourceGroup => { + if (sourceGroup.id === group.id) { + sourceGroup.items.map((sourceItem, index) => { + if (sourceItem.id === item.id) { + sourceGroup.items.splice(index, 1); + } + }); + } + }); + setReplenishSalaryTemplateSalaryItemSet(resultSalaryItemSet); + }; + + handleDeleteClick = (index) => { + Modal.confirm({ + title: "信息确认", + content: "确认删除", + onOk: () => { + const { payrollStore: { replenishSalaryTemplateSalaryItemSet, setReplenishSalaryTemplateSalaryItemSet } } = this.props; + let resultSalaryItemSet = [...replenishSalaryTemplateSalaryItemSet]; + resultSalaryItemSet.splice(index, 1); + setReplenishSalaryTemplateSalaryItemSet(resultSalaryItemSet); + }, + onCancel: () => { + } + }); + }; + + render() { + const { payrollStore } = this.props; + const { replenishSalaryTemplateSalaryItemSet } = payrollStore; + return ( +
+ + { + !_.isEmpty(toJS(replenishSalaryTemplateSalaryItemSet)) && + replenishSalaryTemplateSalaryItemSet.map((group, index) => ( +
+
{group.groupName} + { + index < replenishSalaryTemplateSalaryItemSet.length - 1 && + { + this.handleDownClick(index); + }} + /> + } + { + index > 0 && + { + this.handleUpClick(index); + }} + /> + } + { + this.handleDeleteClick(index); + }} + /> +
+
+ {group.items.map(item => ( + {item.name} + { + this.handleDeleteItem(group, item); + }} + /> + + ))} +
+
+ )) + } +
+
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js index 3ddf0cad..aed71b03 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js @@ -10,6 +10,8 @@ export default class FormalFormModal extends React.Component { constructor(props) { super(props); this.state = { + validateType: "", + returnType: "", value: "", extendParam: { sqlReturnKey: "", @@ -35,7 +37,9 @@ export default class FormalFormModal extends React.Component { if (this.props.formulaId) { detailFormual(this.props.formulaId).then(data => { this.setState({ - value: data.formula + value: data.formula, + validateType: data.validateType, + returnType: data.returnType, }); this.parameters = data.parameters; this.referenceType = data.referenceType; @@ -185,8 +189,8 @@ export default class FormalFormModal extends React.Component { description: "备注", module: "salary", useFor: "salaryitem", - returnType: this.props.dataType, - validateType: this.props.dataType, + returnType: this.props.dataType || this.state.returnType, + validateType: this.props.dataType|| this.state.validateType, extendParam: JSON.stringify(this.state.extendParam), formula: this.state.value, parameters: this.parameters, diff --git a/pc4mobx/hrmSalary/single.js b/pc4mobx/hrmSalary/single.js index 396ff1e7..6de29eb9 100644 --- a/pc4mobx/hrmSalary/single.js +++ b/pc4mobx/hrmSalary/single.js @@ -1,26 +1,26 @@ -import React from 'react'; -import ReactDOM from 'react-dom'; +import React from "react"; +import ReactDOM from "react-dom"; -import { createHashHistory } from 'History'; +import { createHashHistory } from "History"; -import { Router, Route, useRouterHistory, IndexRedirect } from 'react-router'; +import { IndexRedirect, Route, Router, useRouterHistory } from "react-router"; -import { syncHistoryWithStore, RouterStore } from 'mobx-react-router'; +import { RouterStore, syncHistoryWithStore } from "mobx-react-router"; -import { Provider } from 'mobx-react'; +import { Provider } from "mobx-react"; -import Module from 'weaHrmSalary'; +import Module from "weaHrmSalary"; const routing = new RouterStore(); const allStore = { routing, - ...Module.store, + ...Module.store }; const browserHistory = useRouterHistory(createHashHistory)({ - queryKey: '_key', - basename: '/', + queryKey: "_key", + basename: "/" }); const history = syncHistoryWithStore(browserHistory, allStore.routing); @@ -31,21 +31,24 @@ class Root extends React.Component { componentWillMount() { top.$(".ant-message").remove(); allStore.taxAgentStore.getPermission(); + window.localStorage.removeItem("templateBaseData"); + window.localStorage.removeItem("salaryTemplateShowSet"); } + render() { return ( - - - - { Module.Route } + + + + {Module.Route} - ) + ); } } -ReactDOM.render(, document.getElementById('container')); +ReactDOM.render(, document.getElementById("container")); diff --git a/pc4mobx/hrmSalary/stores/payroll.js b/pc4mobx/hrmSalary/stores/payroll.js index 132441ce..5f1ee444 100644 --- a/pc4mobx/hrmSalary/stores/payroll.js +++ b/pc4mobx/hrmSalary/stores/payroll.js @@ -1,9 +1,8 @@ -import { action, observable } from "mobx"; +import { action, observable, toJS } from "mobx"; import { message } from "antd"; import { WeaForm, WeaTableNew } from "comsMobx"; import * as API from "../apis/payroll"; // 引入API接口文件 -import { notNull } from "../util/validate"; import { removePropertyCondition } from "../util/response"; const { TableStore } = WeaTableNew; @@ -23,6 +22,7 @@ export class payrollStore { @observable salarySobOptions = []; // 账套列表 // 显示设置表单 @observable salaryTemplateShowSet = {}; // 显示设置基础表单 + @observable replenishSalaryTemplateSalaryItemSet = []; // 补发工资单模版基础表单 @observable salaryItemSet = []; // 显示设置薪资项 // **** 工资单页面 **** @@ -53,6 +53,10 @@ export class payrollStore { @observable canWidthdrawColumns = []; // 可以撤回的列表列名 @observable canWithdrawPageInfo = {}; // 可以撤回列表分页对象 + @action + setReplenishSalaryTemplateSalaryItemSet = replenishSalaryTemplateSalaryItemSet => + (this.replenishSalaryTemplateSalaryItemSet = replenishSalaryTemplateSalaryItemSet); + @action setGrantListShowSearchAd = grantListShowSearchAd => (this.grantListShowSearchAd = grantListShowSearchAd); @@ -167,6 +171,7 @@ export class payrollStore { }) : []; resolve({ + replenishRuleSetOption: res.data.replenishRuleSetOption, templateBaseData: this.templateBaseData, salarySobOptions: this.salarySobOptions }); @@ -181,15 +186,14 @@ export class payrollStore { // 工资单模板-获取工资单模板显示设置表单 @action getPayrollShowForm = (id = "") => { - let params = { - id - }; + const params = { id }; + const salaryTemplateShowSetStorage = window.localStorage.getItem("salaryTemplateShowSet") || "{}"; API.getPayrollShowForm(params).then(res => { if (res.status) { if (id !== "") { this.salaryItemSet = res.data.salaryTemplateSalaryItemSet; } - this.salaryTemplateShowSet = res.data.salaryTemplateShowSet.data; + this.salaryTemplateShowSet = { ...res.data.salaryTemplateShowSet.data, ...JSON.parse(salaryTemplateShowSetStorage) }; } else { message.error(res.errormsg || "获取失败"); } @@ -215,23 +219,15 @@ export class payrollStore { @action initShowSettingForm = (id = "") => { this.getPayrollShowForm(id); - if (id == "") { + if (id === "") { this.getPayrollItemList(this.templateBaseData.salarySob); } }; - // 校验显示设置表单 - validateSalaryTemplateShowSet = () => { - if (!notNull(this.salaryTemplateShowSet.theme)) { - message.warning("工资单主题不能为空"); - return false; - } - return true; - }; - // 拼装保存参数 convertParams = () => { let params = { ...this.templateBaseData, ...this.salaryTemplateShowSet }; + params.replenishRule = (!params.replenishRule || params.reissueRule === "0") ? "ALL" : params.replenishRule; params.salarySobId = params.salarySob; params.emailStatus = params.emailStatus ? params.emailStatus : false; params.msgStatus = params.msgStatus ? params.msgStatus : false; @@ -241,18 +237,16 @@ export class payrollStore { params.salaryItemZeroStatus = params.salaryItemZeroStatus ? params.salaryItemZeroStatus : false; - params.salaryItemSetting = this.salaryItemSet; + params.salaryItemSetting = toJS(this.salaryItemSet); + params.replenishSalaryItemSetting = toJS(this.replenishSalaryTemplateSalaryItemSet); return params; }; // 工资单模板-新建工资单模板 @action fetchSavePayroll = () => { - if (!this.validateSalaryTemplateShowSet()) { - return false; - } - let params = this.convertParams(); return new Promise((resolve, reject) => { + const params = this.convertParams(); API.savePayroll(params).then(res => { if (res.status) { message.success("保存成功"); @@ -262,19 +256,16 @@ export class payrollStore { message.error(res.errormsg || "保存失败"); reject(); } - }); + }).catch(() => reject()); }); }; // 工资单模板-更新工资单模板 @action fetchUpdatePayroll = id => { - if (!this.validateSalaryTemplateShowSet()) { - return false; - } - let params = this.convertParams(); - params.id = id; return new Promise((resolve, reject) => { + let params = this.convertParams(); + params.id = id; API.updatePayroll(params).then(res => { if (res.status) { message.success("保存成功"); From b12d3862a030dccf0395933062ce1054819993d0 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, 7 Dec 2022 14:40:07 +0800 Subject: [PATCH 05/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=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 --- .../ledgerPage/components/ledgerTable.js | 73 +++++++++++++++++++ pc4mobx/hrmSalary/pages/ledgerPage/index.js | 34 ++++++++- pc4mobx/hrmSalary/pages/ledgerPage/index.less | 3 + 3 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/index.less diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js new file mode 100644 index 00000000..0219c069 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js @@ -0,0 +1,73 @@ +/* + * Author: 黎永顺 + * name: 薪资账套列表 + * Description: + * Date: 2022/12/7 + */ +import React, { Component } from "react"; +import { WeaTable } from "ecCom"; +import { getLedgerList } from "../../../apis/ledger"; + +class LedgerTable extends Component { + constructor(props) { + super(props); + this.state = { + loading: false, + dataSource: [], + columns: [], + pageInfo: { + current: 1, + pageSize: 10, + total: 0 + } + }; + } + + componentDidMount() { + this.getLedgerList(); + } + + getLedgerList = () => { + const { name } = this.props; + const { pageInfo } = this.state; + const payload = { name, ...pageInfo }; + this.setState({ loading: true }); + getLedgerList(payload).then(({ status, data }) => { + this.setState({ loading: true }); + if (status) { + console.log(data); + } + }); + }; + + render() { + const { dataSource, columns, pageInfo, loading } = this.state; + const pagination = { + ...pageInfo, + showTotal: total => `共 ${total} 条`, + showQuickJumper: true, + showSizeChanger: true, + pageSizeOptions: ["10", "20", "50", "100"], + onShowSizeChange: (current, pageSize) => { + this.setState({ pageInfo: { ...pageInfo, current, pageSize } }); + }, + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => { + }); + } + }; + return ( + + ); + } +} + +export default LedgerTable; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.js b/pc4mobx/hrmSalary/pages/ledgerPage/index.js index e7c6d0fd..c9d66bde 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/index.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.js @@ -5,13 +5,41 @@ * Date: 2022/12/6 */ import React, { Component } from "react"; +import { WeaInputSearch, WeaTop } from "ecCom"; +import { Button } from "antd"; +import LedgerTable from "./components/ledgerTable"; class Index extends Component { + constructor(props) { + super(props); + this.state = { + searchVal: "" + }; + this.ledgerTableRef = null; + } + render() { + const { searchVal } = this.state; + const btns = [ + , + this.setState({ searchVal })} + onSearch={() => this.ledgerTableRef.getLedgerList()} + /> + ]; return ( -
-薪资账套 -
+ } + iconBgcolor="#F14A2D" + showDropIcon={false} + buttons={btns} + > +
+ this.ledgerTableRef = dom}/> +
+
); } } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/index.less new file mode 100644 index 00000000..34c2ad88 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.less @@ -0,0 +1,3 @@ +.ledgerWrapper { + height: 100%; +} From 7627c4f6a470aea3a3c7a0cf1c70665c8cec99e5 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, 7 Dec 2022 15:14:20 +0800 Subject: [PATCH 06/38] =?UTF-8?q?=E5=B7=A5=E8=B5=84=E5=8D=95=E6=A8=A1?= =?UTF-8?q?=E6=9D=BF=E6=B7=BB=E5=8A=A0=E8=A1=A5=E5=8F=91=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E6=A8=A1=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/payroll/stepForm/baseInformForm.js | 5 ++-- .../pages/payroll/stepForm/showSettingForm.js | 30 +++++++++---------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js index 8a1bd83d..f29e2f53 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js @@ -42,6 +42,7 @@ export default class BaseInformForm extends React.Component { } ); }); + JSON.parse(templateBaseData).salarySob && this.getReplenishRuleSetOptions({ salarySobId: JSON.parse(templateBaseData).salarySob }); } hanldeChange = (params) => { @@ -56,9 +57,9 @@ export default class BaseInformForm extends React.Component { }); this.props.onChange && this.props.onChange(request); }; - getReplenishRuleSetOptions = () => { + getReplenishRuleSetOptions = (params = {}) => { const { request } = this.state; - getReplenishRuleSetOptions({ salarySobId: request.salarySob }).then(({ status, data }) => { + getReplenishRuleSetOptions({ salarySobId: request.salarySob, ...params }).then(({ status, data }) => { if (status && !_.isEmpty(data)) { this.setState({ replenishRuleOptions: _.map(data, it => ({ key: it.id, showname: it.content })) diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js index 9dea9c85..15e21c20 100644 --- a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js +++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js @@ -17,22 +17,22 @@ export default class ShowSettingForm extends React.Component { } // form 字段变化时的回调 - handleChange(params) { + handleChange = (params) => { const { payrollStore: { salaryTemplateShowSet, setSalaryTemplateShowSet } } = this.props; let request = { ...salaryTemplateShowSet, ...params }; setSalaryTemplateShowSet(request); - } + }; // 工资单主题 插入变量 - handleThemeNameCllck(param) { + handleThemeNameCllck = (param) => { const { payrollStore } = this.props; const { salaryTemplateShowSet, setSalaryTemplateShowSet } = payrollStore; let request = { ...salaryTemplateShowSet }; request.theme = (request.theme ? request.theme : "") + param; setSalaryTemplateShowSet(request); - } + }; - handleDownClick(index) { + handleDownClick = (index) => { const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props; let downItem = salaryItemSet[index + 1]; let thisItem = salaryItemSet[index]; @@ -40,9 +40,9 @@ export default class ShowSettingForm extends React.Component { resultSet[index] = downItem; resultSet[index + 1] = thisItem; setSalaryItemSet(resultSet); - } + }; - handleUpClick(index) { + handleUpClick = (index) => { const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props; let upItem = salaryItemSet[index - 1]; let thisItem = salaryItemSet[index]; @@ -50,9 +50,9 @@ export default class ShowSettingForm extends React.Component { resultSet[index] = upItem; resultSet[index - 1] = thisItem; setSalaryItemSet(resultSet); - } + }; - handleDeleteItem(group, item) { + handleDeleteItem = (group, item) => { const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props; let resultSalaryItemSet = [...salaryItemSet]; resultSalaryItemSet.map(sourceGroup => { @@ -65,9 +65,9 @@ export default class ShowSettingForm extends React.Component { } }); setSalaryItemSet(resultSalaryItemSet); - } + }; - handleDeleteClick(index) { + handleDeleteClick = (index) => { Modal.confirm({ title: "信息确认", content: "确认删除", @@ -76,15 +76,13 @@ export default class ShowSettingForm extends React.Component { let resultSalaryItemSet = [...salaryItemSet]; resultSalaryItemSet.splice(index, 1); setSalaryItemSet(resultSalaryItemSet); - }, - onCancel: () => { } }); - } + }; render() { - const salaryTemplateShowSetStorage = window.localStorage.getItem("salaryTemplateShowSet") || "{}"; - const { payrollStore } = this.props; + const { payrollStore, id } = this.props; + const salaryTemplateShowSetStorage = id ? "{}" : window.localStorage.getItem("salaryTemplateShowSet") || "{}"; const { salaryTemplateShowSet } = payrollStore; const { salaryItemSet } = payrollStore; const { From 53d418fe78d1bafa853b9816e4abc413f8b3fb08 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, 7 Dec 2022 17:06:00 +0800 Subject: [PATCH 07/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../ledgerPage/components/ledgerTable.js | 28 ++++++++++++++++--- pc4mobx/hrmSalary/pages/ledgerPage/index.less | 8 ++++++ 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js index 0219c069..cb49bd49 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js @@ -5,7 +5,7 @@ * Date: 2022/12/7 */ import React, { Component } from "react"; -import { WeaTable } from "ecCom"; +import { WeaCheckbox, WeaTable } from "ecCom"; import { getLedgerList } from "../../../apis/ledger"; class LedgerTable extends Component { @@ -33,9 +33,26 @@ class LedgerTable extends Component { const payload = { name, ...pageInfo }; this.setState({ loading: true }); getLedgerList(payload).then(({ status, data }) => { - this.setState({ loading: true }); + this.setState({ loading: false }); if (status) { - console.log(data); + const { pageNum: current, pageSize, total, columns, list: dataSource } = data; + this.setState({ + pageInfo: { ...pageInfo, current, pageSize, total }, + dataSource, + columns: _.map(columns, item => { + const { dataIndex } = item; + if (dataIndex === "disable") { + item.render = (text) => { + return ; + }; + } else { + item.render = (text) => { + return {text}; + }; + } + return { ...item }; + }) + }); } }); }; @@ -49,12 +66,15 @@ class LedgerTable extends Component { showSizeChanger: true, pageSizeOptions: ["10", "20", "50", "100"], onShowSizeChange: (current, pageSize) => { - this.setState({ pageInfo: { ...pageInfo, current, pageSize } }); + this.setState({ pageInfo: { ...pageInfo, current, pageSize } }, () => { + this.getLedgerList(); + }); }, onChange: current => { this.setState({ pageInfo: { ...pageInfo, current } }, () => { + this.getLedgerList(); }); } }; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/index.less index 34c2ad88..3f90918b 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.less @@ -1,3 +1,11 @@ .ledgerWrapper { height: 100%; + + .tdEllipsis { + display: inline-block; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } } From d6fde20bd184fcfbdf8093cc02f448f8ca85a2d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 8 Dec 2022 13:55:52 +0800 Subject: [PATCH 08/38] =?UTF-8?q?=E8=B0=83=E5=B7=AE=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../standingBookDetail/components/adjustmentSlide.js | 1 + 1 file changed, 1 insertion(+) diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/adjustmentSlide.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/adjustmentSlide.js index 86c4e684..978dbd9f 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/adjustmentSlide.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/adjustmentSlide.js @@ -68,6 +68,7 @@ class AdjustmentSlide extends Component { const { data: dataMsg, errorMessage = [] } = data; const msg = dataMsg + errorMessage.join(","); !_.isEmpty(errorMessage) ? message.error(msg) : message.success(msg || "保存成功"); + _.isEmpty(errorMessage) && this.adjustTableRef.getCompensationList().then(r => { }); } else { From 7baf97e20fb3c994b2d021ad09aa38c007a53103 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 8 Dec 2022 15:48:46 +0800 Subject: [PATCH 09/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ledgerPage/components/copyLedgerModal.js | 93 +++++++++++++ .../pages/ledgerPage/components/index.less | 23 +++ .../ledgerPage/components/ledgerTable.js | 131 +++++++++++++++--- pc4mobx/hrmSalary/pages/ledgerPage/config.js | 29 ++++ pc4mobx/hrmSalary/pages/ledgerPage/index.js | 7 +- pc4mobx/hrmSalary/stores/ledger.js | 6 +- 6 files changed, 264 insertions(+), 25 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/index.less create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/config.js diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js new file mode 100644 index 00000000..1d79687f --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js @@ -0,0 +1,93 @@ +/* + * Author: 黎永顺 + * name: 复制账套 + * Description: + * Date: 2022/12/8 + */ +import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { copyConditions } from "../config"; +import { WeaDialog } from "ecCom"; +import { Button } from "antd"; +import { getSearchs } from "../../../util"; +import "./index.less"; + +@inject("ledgerStore", "taxAgentStore") +@observer +class CopyLedgerModal extends Component { + + componentDidMount() { + this.getTaxAgentSelectListAsAdmin(); + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) { + const { ledgerStore, name, taxAgentId } = nextProps; + const { copyForm: form } = ledgerStore; + form.updateFields({ + name: { value: name }, + // taxAgentId: { value: taxAgentId } + }); + } + } + + getTaxAgentSelectListAsAdmin = () => { + const { taxAgentStore, ledgerStore } = this.props; + const { copyForm: form } = ledgerStore; + const { getTaxAgentSelectListAsAdmin } = taxAgentStore; + getTaxAgentSelectListAsAdmin().then(({ status, data }) => { + if (status) { + const conditions = _.map(copyConditions, it => { + it.items = _.map(it.items, child => { + if (child.domkey[0] === "taxAgentId") { + return { + ...child, + options: _.map(data, it => ({ key: it.id, showname: it.content })) + }; + } else { + return { ...child }; + } + }); + return { ...it }; + }); + form.initFormFields(conditions); + } + }); + }; + handleSubmit = () => { + const { ledgerStore } = this.props; + const { copyForm: form } = ledgerStore; + form.validateForm().then(f => { + if (f.isValid) { + const params = form.getFormParams(); + console.log(params); + } else { + f.showErrors(); + } + }); + }; + + + render() { + const { onCancel, ledgerStore, ...extra } = this.props; + const { copyForm: form } = ledgerStore; + const buttons = [ + , + + ]; + return ( + + {getSearchs(form, copyConditions, 1)} + + ); + } +} + +export default CopyLedgerModal; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less new file mode 100644 index 00000000..b797e736 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -0,0 +1,23 @@ +.ledgerWrapper { + .optWrapper { + display: flex; + align-items: center; + + i { + cursor: pointer; + } + } +} + +.copyWrapper { + .wea-select { + .ant-select { + width: 100% !important; + + .ant-select-selection { + border-radius: 0 !important; + height: 30px !important; + } + } + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js index cb49bd49..cc2a0bb0 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js @@ -6,8 +6,14 @@ */ import React, { Component } from "react"; import { WeaCheckbox, WeaTable } from "ecCom"; -import { getLedgerList } from "../../../apis/ledger"; +import { inject, observer } from "mobx-react"; +import { Menu, message, Modal, Popover } from "antd"; +import { deleteLedger, getLedgerList } from "../../../apis/ledger"; +import CopyLedgerModal from "./copyLedgerModal"; +import "./index.less"; +@inject("taxAgentStore") +@observer class LedgerTable extends Component { constructor(props) { super(props); @@ -19,6 +25,10 @@ class LedgerTable extends Component { current: 1, pageSize: 10, total: 0 + }, + copyLedgerModal: { + visible: false, + title: "复制账套", id: "", name: "", taxAgenyId: "" } }; } @@ -28,7 +38,7 @@ class LedgerTable extends Component { } getLedgerList = () => { - const { name } = this.props; + const { name, taxAgentStore } = this.props; const { pageInfo } = this.state; const payload = { name, ...pageInfo }; this.setState({ loading: true }); @@ -39,26 +49,95 @@ class LedgerTable extends Component { this.setState({ pageInfo: { ...pageInfo, current, pageSize, total }, dataSource, - columns: _.map(columns, item => { - const { dataIndex } = item; - if (dataIndex === "disable") { - item.render = (text) => { - return ; - }; - } else { - item.render = (text) => { - return {text}; - }; - } - return { ...item }; - }) + columns }); } }); }; + getColumns = () => { + const { columns } = this.state; + const { taxAgentStore } = this.props; + const { showOperateBtn } = taxAgentStore; + return _.map(columns, item => { + const { dataIndex } = item; + if (dataIndex === "disable") { + item.render = (text) => { + return ; + }; + } else if (dataIndex === "operate") { + item.width = 120; + item.render = (text, record) => { + return
+ {showOperateBtn ? "编辑" : "查看"} + { + showOperateBtn && + this.handleMenuClick(e, record.id)}> + 复制 + 删除 + } title=""> + + + } +
; + }; + } else { + item.render = (text) => { + return {text}; + }; + } + return { ...item }; + }); + }; + /* + * Author: 黎永顺 + * Description: 刪除薪资账套 + * Params: + * Date: 2022/12/8 + */ + deleteLedger = (payload) => { + deleteLedger(payload).then(({ status, errormsg }) => { + if (status) { + message.success("删除成功"); + this.getLedgerList(); + } else { + message.error(errormsg || "删除失败"); + } + }); + }; + handleResetCopy = () => { + const { copyLedgerModal } = this.state; + this.setState({ + copyLedgerModal: { ...copyLedgerModal, visible: false, id: "", name: "", taxAgenyId: "" } + }); + }; + handleMenuClick = ({ key }, record) => { + const { copyLedgerModal } = this.state; + const { id, name, taxAgenyId } = this.state; + switch (key) { + case "copy": + this.setState({ + copyLedgerModal: { ...copyLedgerModal, visible: true, id, name, taxAgenyId } + }); + break; + case "delete": + Modal.confirm({ + title: "信息确认", + content: "确认要删除吗?", + onOk: () => { + this.deleteLedger([id]); + } + }); + break; + default: + break; + } + }; render() { - const { dataSource, columns, pageInfo, loading } = this.state; + const { dataSource, columns, pageInfo, loading, copyLedgerModal } = this.state; const pagination = { ...pageInfo, showTotal: total => `共 ${total} 条`, @@ -79,13 +158,19 @@ class LedgerTable extends Component { } }; return ( - + + + + ); } } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/config.js b/pc4mobx/hrmSalary/pages/ledgerPage/config.js new file mode 100644 index 00000000..0ad53156 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/config.js @@ -0,0 +1,29 @@ +export const copyConditions = [ + { + items: [ + { + colSpan: 1, + conditionType: "INPUT", + domkey: ["name"], + fieldcol: 14, + rules: "required|string", + label: "账套名称", + labelcol: 6, + value: "", + viewAttr: 3, + }, + { + colSpan: 1, + conditionType: "SELECT", + domkey: ["taxAgentId"], + fieldcol: 14, + rules: "required|string", + label: "个税扣缴义务人", + labelcol: 6, + value: "", + viewAttr: 3, + }, + ], + defaultshow: true, + }, +]; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.js b/pc4mobx/hrmSalary/pages/ledgerPage/index.js index c9d66bde..3b062fa2 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/index.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.js @@ -5,10 +5,13 @@ * Date: 2022/12/6 */ import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; import { WeaInputSearch, WeaTop } from "ecCom"; import { Button } from "antd"; import LedgerTable from "./components/ledgerTable"; +@inject("taxAgentStore") +@observer class Index extends Component { constructor(props) { super(props); @@ -20,6 +23,8 @@ class Index extends Component { render() { const { searchVal } = this.state; + const { taxAgentStore } = this.props; + const { showOperateBtn } = taxAgentStore; const btns = [ , } iconBgcolor="#F14A2D" showDropIcon={false} - buttons={btns} + buttons={showOperateBtn ? btns : btns.slice(-1)} >
this.ledgerTableRef = dom}/> diff --git a/pc4mobx/hrmSalary/stores/ledger.js b/pc4mobx/hrmSalary/stores/ledger.js index d0fa1604..618cae74 100644 --- a/pc4mobx/hrmSalary/stores/ledger.js +++ b/pc4mobx/hrmSalary/stores/ledger.js @@ -3,12 +3,16 @@ import { message } from "antd"; import { WeaForm, WeaTableNew } from "comsMobx"; import * as API from "../apis/ledger"; // 引入API接口文件 -import { tempateColumns } from "../pages/payroll/columns"; import { notNull } from "../util/validate"; const { TableStore } = WeaTableNew; export class LedgerStore { + //重构薪资账套 + @observable copyForm = new WeaForm(); // nrew 一个form + + + /*******************************************************/ @observable tableStore = new TableStore(); // new table @observable form = new WeaForm(); // nrew 一个form @observable condition = []; // 存储后台得到的form数据 From 645ec864f3e55737f1219ff704b6d1e8c881c55e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 8 Dec 2022 16:43:55 +0800 Subject: [PATCH 10/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ledgerPage/components/copyLedgerModal.js | 30 ++++++++++++--- .../ledgerPage/components/ledgerTable.js | 38 ++++++++++++++++--- pc4mobx/hrmSalary/pages/ledgerPage/index.js | 10 ++--- 3 files changed, 61 insertions(+), 17 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js index 1d79687f..463f36fb 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js @@ -7,14 +7,21 @@ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { copyConditions } from "../config"; +import { duplicateLedger } from "../../../apis/ledger"; import { WeaDialog } from "ecCom"; -import { Button } from "antd"; +import { Button, message } from "antd"; import { getSearchs } from "../../../util"; import "./index.less"; @inject("ledgerStore", "taxAgentStore") @observer class CopyLedgerModal extends Component { + constructor(props) { + super(props); + this.state = { + loading: false + }; + } componentDidMount() { this.getTaxAgentSelectListAsAdmin(); @@ -26,7 +33,7 @@ class CopyLedgerModal extends Component { const { copyForm: form } = ledgerStore; form.updateFields({ name: { value: name }, - // taxAgentId: { value: taxAgentId } + taxAgentId: { value: taxAgentId } }); } } @@ -55,12 +62,22 @@ class CopyLedgerModal extends Component { }); }; handleSubmit = () => { - const { ledgerStore } = this.props; + const { ledgerStore, id, onRefreshList, onCancel } = this.props; const { copyForm: form } = ledgerStore; form.validateForm().then(f => { if (f.isValid) { - const params = form.getFormParams(); - console.log(params); + const payload = { id, ...form.getFormParams() }; + this.setState({ loading: true }); + duplicateLedger(payload).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success(errormsg || "复制成功"); + onRefreshList(); + onCancel(); + } else { + message.error(errormsg || "复制失败"); + } + }); } else { f.showErrors(); } @@ -70,9 +87,10 @@ class CopyLedgerModal extends Component { render() { const { onCancel, ledgerStore, ...extra } = this.props; + const { loading } = this.state; const { copyForm: form } = ledgerStore; const buttons = [ - , + , ]; return ( diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js index cc2a0bb0..4fa7519b 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js @@ -8,7 +8,7 @@ import React, { Component } from "react"; import { WeaCheckbox, WeaTable } from "ecCom"; import { inject, observer } from "mobx-react"; import { Menu, message, Modal, Popover } from "antd"; -import { deleteLedger, getLedgerList } from "../../../apis/ledger"; +import { changeLedgerStatus, deleteLedger, getLedgerList } from "../../../apis/ledger"; import CopyLedgerModal from "./copyLedgerModal"; import "./index.less"; @@ -37,8 +37,12 @@ class LedgerTable extends Component { this.getLedgerList(); } + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.doSearch !== this.props.doSearch) this.getLedgerList(); + } + getLedgerList = () => { - const { name, taxAgentStore } = this.props; + const { name } = this.props; const { pageInfo } = this.state; const payload = { name, ...pageInfo }; this.setState({ loading: true }); @@ -61,8 +65,13 @@ class LedgerTable extends Component { return _.map(columns, item => { const { dataIndex } = item; if (dataIndex === "disable") { - item.render = (text) => { - return ; + item.render = (text, record) => { + return this.changeLedgerStatus({ id: record.id, disable: disable === "0" ? 1 : 0 })} + />; }; } else if (dataIndex === "operate") { item.width = 120; @@ -74,7 +83,7 @@ class LedgerTable extends Component { this.handleMenuClick(e, record.id)}> + content={ this.handleMenuClick(e, record)}> 复制 删除 } title=""> @@ -107,6 +116,22 @@ class LedgerTable extends Component { } }); }; + /* + * Author: 黎永顺 + * Description: 启用/关闭账套 + * Params: + * Date: 2022/12/8 + */ + changeLedgerStatus = (payload) => { + changeLedgerStatus(payload).then(({ status, errormsg }) => { + if (status) { + message.success("操作成功"); + this.getLedgerList(); + } else { + message.error(errormsg || "操作成功"); + } + }); + }; handleResetCopy = () => { const { copyLedgerModal } = this.state; this.setState({ @@ -115,7 +140,7 @@ class LedgerTable extends Component { }; handleMenuClick = ({ key }, record) => { const { copyLedgerModal } = this.state; - const { id, name, taxAgenyId } = this.state; + const { id, name, taxAgenyId } = record; switch (key) { case "copy": this.setState({ @@ -169,6 +194,7 @@ class LedgerTable extends Component { ); diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.js b/pc4mobx/hrmSalary/pages/ledgerPage/index.js index 3b062fa2..f566c238 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/index.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.js @@ -16,13 +16,13 @@ class Index extends Component { constructor(props) { super(props); this.state = { - searchVal: "" + searchVal: "", + doSearch: false }; - this.ledgerTableRef = null; } render() { - const { searchVal } = this.state; + const { searchVal, doSearch } = this.state; const { taxAgentStore } = this.props; const { showOperateBtn } = taxAgentStore; const btns = [ @@ -30,7 +30,7 @@ class Index extends Component { this.setState({ searchVal })} - onSearch={() => this.ledgerTableRef.getLedgerList()} + onSearch={() => this.setState({ doSearch: !doSearch })} /> ]; return ( @@ -42,7 +42,7 @@ class Index extends Component { buttons={showOperateBtn ? btns : btns.slice(-1)} >
- this.ledgerTableRef = dom}/> +
); From 1d64220c7c23ead70c48e5328031f80d89b5060c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 8 Dec 2022 16:58:32 +0800 Subject: [PATCH 11/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrmSalary/pages/ledgerPage/components/copyLedgerModal.js | 2 +- pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js index 463f36fb..a3fd96e5 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/copyLedgerModal.js @@ -33,7 +33,7 @@ class CopyLedgerModal extends Component { const { copyForm: form } = ledgerStore; form.updateFields({ name: { value: name }, - taxAgentId: { value: taxAgentId } + taxAgentId: { value: taxAgentId.toString() } }); } } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js index 4fa7519b..ab876a17 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js @@ -140,11 +140,11 @@ class LedgerTable extends Component { }; handleMenuClick = ({ key }, record) => { const { copyLedgerModal } = this.state; - const { id, name, taxAgenyId } = record; + const { id, name, taxAgentId } = record; switch (key) { case "copy": this.setState({ - copyLedgerModal: { ...copyLedgerModal, visible: true, id, name, taxAgenyId } + copyLedgerModal: { ...copyLedgerModal, visible: true, id, name, taxAgentId } }); break; case "delete": From b3532b6bd05536bbbfcb8af6a565757ed5d28afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 8 Dec 2022 17:18:56 +0800 Subject: [PATCH 12/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ledgerPage/components/ledgerSlide.js | 19 +++++++++++++++++++ pc4mobx/hrmSalary/pages/ledgerPage/index.js | 13 ++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js new file mode 100644 index 00000000..cad9ca71 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -0,0 +1,19 @@ +/* + * Author: 黎永顺 + * name: 新增编辑薪资账套 + * Description: + * Date: 2022/12/8 + */ +import React, { Component } from "react"; + +class LedgerSlide extends Component { + render() { + return ( +
+ +
+ ); + } +} + +export default LedgerSlide; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/index.js b/pc4mobx/hrmSalary/pages/ledgerPage/index.js index f566c238..a556e054 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/index.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/index.js @@ -17,16 +17,23 @@ class Index extends Component { super(props); this.state = { searchVal: "", - doSearch: false + doSearch: false, + slideparams: { + visible: false, + title: "新建账套" + } }; } render() { - const { searchVal, doSearch } = this.state; + const { searchVal, doSearch, slideparams } = this.state; const { taxAgentStore } = this.props; const { showOperateBtn } = taxAgentStore; const btns = [ - , + , this.setState({ searchVal })} From 76120a7a5463afdf8b0c876de903696ad2bd7911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 8 Dec 2022 17:27:04 +0800 Subject: [PATCH 13/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=87=8D=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ledgerPage/components/ledgerSlide.js | 91 ++++++++++++++++++- 1 file changed, 87 insertions(+), 4 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index cad9ca71..eebdb855 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -5,13 +5,96 @@ * Date: 2022/12/8 */ import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { WeaSlideModal, WeaSteps } from "ecCom"; +import SlideModalTitle from "../../../components/slideModalTitle"; +const Step = WeaSteps.Step; +const tabs = [ + { key: 0, title: "基础设置" }, + { key: 1, title: "关联人员" }, + { key: 3, title: "薪资项目" }, + { key: 4, title: "回算薪资项目" }, + { key: 5, title: "校验规则" } +]; + +@inject("taxAgentStore") +@observer class LedgerSlide extends Component { - render() { - return ( -
+ constructor(props) { + super(props); + this.state = { + current: 0, + loading: false, + taxAgentId: "" + }; + } -
+ handleChangeSlideTab = (current) => { + this.setState({ current: Number(current) }); + }; + renderChildren = () => { + const { current } = this.state; + const { decentralization } = this.props; + const { taxAgentId } = this.state; + let CurrentDom = null; + switch (current) { + case 0: + CurrentDom = ; + break; + default: + CurrentDom = null; + break; + } + return CurrentDom; + }; + + render() { + const { title, visible, onCancel, taxAgentStore: { showOperateBtn } } = this.props; + const { current, taxAgentId } = this.state; + return ( + { + }} + selectedTab={current} + customOperate={this.renderCustomOperate()} + subItemChange={this.handleChangeSlideTab} + /> + } + content={ +
+ { + !taxAgentId && + + { + _.map(tabs, item => { + const { key, title } = item; + return ; + }) + } + + } + { + this.renderChildren() + } +
+ } + onClose={onCancel} + /> ); } } From c6d66931981fcf294c615518c147538b535e535c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 9 Dec 2022 14:16:11 +0800 Subject: [PATCH 14/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../pages/ledgerPage/components/index.less | 44 ++ .../components/ledgerBaseSetting.js | 140 +++++ .../ledgerPage/components/ledgerSlide.js | 105 +++- .../ledgerPage/components/ledgerTable.js | 4 +- pc4mobx/hrmSalary/pages/ledgerPage/config.js | 492 +++++++++++++++++- pc4mobx/hrmSalary/pages/ledgerPage/index.js | 28 +- 6 files changed, 796 insertions(+), 17 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index b797e736..0fbc139b 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -9,6 +9,9 @@ } } +.ledgerSlideContent { +} + .copyWrapper { .wea-select { .ant-select { @@ -21,3 +24,44 @@ } } } + +//薪资账套基本设置信息 +.baseSettingWrapper{ + padding: 12px 12px 12px 20px; + .baseSettingLeft{ + border: 1px solid #ebedf0; + padding: 0!important; + border-bottom: none; + .wea-form-item{ + padding: 4px 10px; + border-bottom: 1px solid #ebedf0; + .desc{ + line-height: 32px; + } + } + } + .baseSettingRight{ + width: 100%; + background: #fff; + border: 1px solid #ebedf0; + .title{ + border-bottom: 1px solid #ebedf0; + background: #f7fbfe; + width: 100%; + padding: 0 12px; + line-height: 40px; + font-size: 14px; + } + .descContent{ + color: #999; + width: 100%; + padding: 0 12px; + line-height: 24px; + .descTitle{ + font-size: 14px; + color: #333; + line-height: 26px; + } + } + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js new file mode 100644 index 00000000..cca8c3de --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js @@ -0,0 +1,140 @@ +/* + * Author: 黎永顺 + * name: 薪资账套基本设置 + * Description: + * Date: 2022/12/9 + */ +import React, { Component } from "react"; +import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSelect, WeaTextarea } from "ecCom"; +import { Col, Row } from "antd"; +import { inject, observer } from "mobx-react"; +import { baseSettingFormItem } from "../config"; +import "./index.less"; + +@inject("taxAgentStore") +@observer +class LedgerBaseSetting extends Component { + constructor(props) { + super(props); + this.state = { + baseForm: baseSettingFormItem, + settingBaseInfo: { + name: "", taxAgentId: "", taxableItems: "1", salaryCycleType: "3", salaryCycleFromDay: "1", taxCycleType: "3", + attendCycleType: "3", attendCycleFromDay: "1", socialSecurityCycleType: "3", description: "" + } + }; + } + + componentDidMount() { + this.getTaxAgentSelectListAsAdmin(); + } + + getTaxAgentSelectListAsAdmin = () => { + const { taxAgentStore } = this.props; + const { getTaxAgentSelectListAsAdmin } = taxAgentStore; + getTaxAgentSelectListAsAdmin().then(({ status, data }) => { + if (status) { + const { baseForm } = this.state; + this.setState({ + baseForm: _.map(baseForm, it => { + if (it.key === "taxAgentId") { + return { + ...it, + options: _.map(data, it => ({ key: it.id, showname: it.content })) + }; + } + return { ...it }; + }) + }); + } + }); + }; + handleChangeField = (key, value) => { + const { onSaveParams } = this.props; + const { settingBaseInfo } = this.state; + this.setState({ + settingBaseInfo: { + ...settingBaseInfo, + [key]: value + } + }, () => { + onSaveParams(this.state.settingBaseInfo); + }); + }; + + render() { + const { baseForm, settingBaseInfo } = this.state; + return ( +
+ + + { + _.map(baseForm, item => { + const { key, label, type, options = [], children = [] } = item; + return + { + type === "INPUT" ? + this.handleChangeField(key, v)}/> : + type === "TEXTAREA" ? + this.handleChangeField(key, v)}/> : + type === "CHECKBOX" ? + + + + : + type === "SELECT" ? + this.handleChangeField(key, v)}/> : + type === "CUSTOM" ? this.handleChangeField(key, v)}/> : null + } + ; + }) + } + + + +
+ ); + } +} + +export default LedgerBaseSetting; + +const CustomSelect = (props) => { + const { list, baseInfo, onChange } = props; + return + { + _.map(list, item => { + const { key, options = [] } = item; + return + onChange(key, v)}/> + ; + }) + } + 111 + ; +}; +const MonthCycleDesc = (props) => { + return
+
月份周期说明
+
+
例:薪资所属月是2022-12(即核算员工12月的工资)
+
根据您当前的选择,相应的周期为:
+
薪资周期
+
2022-12-04至2023-01-03
+
税款所属期
+
2022-12-04至2023-01-03
+
考勤取值周期
+
2022-12-04至2023-01-03
+
福利台账月份
+
2022-12-04至2023-01-03
+
+
; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index eebdb855..5cee45eb 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -7,7 +7,11 @@ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { WeaSlideModal, WeaSteps } from "ecCom"; +import { Button, message, Modal } from "antd"; import SlideModalTitle from "../../../components/slideModalTitle"; +import LedgerBaseSetting from "./ledgerBaseSetting"; +import { saveLedgerBasic } from "../../../apis/ledger"; +import "./index.less"; const Step = WeaSteps.Step; const tabs = [ @@ -26,21 +30,56 @@ class LedgerSlide extends Component { this.state = { current: 0, loading: false, - taxAgentId: "" + taxAgentId: "", + baseSettingInfo: {} }; } + saveLedgerBasic = () => { + const { baseSettingInfo, current } = this.state; + const { description, ...extra } = baseSettingInfo; + const bool = _.every(Object.keys(extra), key => !!baseSettingInfo[key]); + if (!bool || _.isEmpty(baseSettingInfo)) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return false; + } + this.setState({ loading: true }); + saveLedgerBasic(baseSettingInfo).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + const { onRefreshList } = this.props; + message.success("保存成功"); + this.setState({ current: current + 1 }); + onRefreshList(); + } else { + message.error(errormsg || "保存失败"); + } + }).catch(() => this.setState({ loading: false })); + }; handleChangeSlideTab = (current) => { this.setState({ current: Number(current) }); }; + handleClose = () => { + this.setState({ current: 0 }, () => this.props.onCancel()); + }; + /* + * Author: 黎永顺 + * Description: 基础信息字段切换 + * Params: + * Date: 2022/12/9 + */ + handleChangeSaveParams = (baseSettingInfo) => { + this.setState({ baseSettingInfo }); + }; renderChildren = () => { const { current } = this.state; - const { decentralization } = this.props; - const { taxAgentId } = this.state; let CurrentDom = null; switch (current) { case 0: - CurrentDom = ; + CurrentDom = ; break; default: CurrentDom = null; @@ -48,16 +87,66 @@ class LedgerSlide extends Component { } return CurrentDom; }; + renderCustomOperate = () => { + const { taxAgentStore: { showOperateBtn }, editId } = this.props; + const { current, loading } = this.state; + let CurrentDom = []; + //管理员操作权限 + if (showOperateBtn) { + switch (current) { + case 0: + CurrentDom = [ + + ]; + break; + case 1: + CurrentDom = [ + , + + ]; + break; + case 2: + CurrentDom = !editId ? + [ + , + , + + ] : []; + break; + case 3: + CurrentDom = !editId ? + [ + , + + ] : []; + break; + case 4: + CurrentDom = !editId ? + [ + , + + ] : []; + break; + default: + break; + } + } + return CurrentDom; + }; render() { - const { title, visible, onCancel, taxAgentStore: { showOperateBtn } } = this.props; + const { title, visible, taxAgentStore: { showOperateBtn } } = this.props; const { current, taxAgentId } = this.state; return ( } content={ -
+
{ !taxAgentId && @@ -93,7 +182,7 @@ class LedgerSlide extends Component { }
} - onClose={onCancel} + onClose={this.handleClose} /> ); } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js index ab876a17..f0e38407 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerTable.js @@ -60,7 +60,7 @@ class LedgerTable extends Component { }; getColumns = () => { const { columns } = this.state; - const { taxAgentStore } = this.props; + const { taxAgentStore, onEditLedger } = this.props; const { showOperateBtn } = taxAgentStore; return _.map(columns, item => { const { dataIndex } = item; @@ -77,7 +77,7 @@ class LedgerTable extends Component { item.width = 120; item.render = (text, record) => { return
- {showOperateBtn ? "编辑" : "查看"} + onEditLedger(record)}>{showOperateBtn ? "编辑" : "查看"} { showOperateBtn && { + const { slideparams } = this.state; + const { id } = record; + this.setState({ slideparams: { ...slideparams, visible: true, title: "编辑账套", editId: id } }); + }; + handleResetLedger = () => { + const { slideparams } = this.state; + this.setState({ + slideparams: { + ...slideparams, + visible: false, + title: "新建账套", + editId: "" + } + }); + }; + render() { const { searchVal, doSearch, slideparams } = this.state; const { taxAgentStore } = this.props; @@ -49,7 +68,12 @@ class Index extends Component { buttons={showOperateBtn ? btns : btns.slice(-1)} >
- + + this.setState({ doSearch: !doSearch })} + />
); From ac8c1ee43a0e7755ba97fabfc0f0bf9e95ff9beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 9 Dec 2022 15:26:21 +0800 Subject: [PATCH 15/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../pages/ledgerPage/components/index.less | 29 +++++++++++++------ .../components/ledgerBaseSetting.js | 26 ++++++++++++++--- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index 0fbc139b..6d697700 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -26,25 +26,30 @@ } //薪资账套基本设置信息 -.baseSettingWrapper{ +.baseSettingWrapper { padding: 12px 12px 12px 20px; - .baseSettingLeft{ + + .baseSettingLeft { border: 1px solid #ebedf0; - padding: 0!important; + padding: 0 !important; border-bottom: none; - .wea-form-item{ + + .wea-form-item { padding: 4px 10px; border-bottom: 1px solid #ebedf0; - .desc{ + + .desc { line-height: 32px; } } } - .baseSettingRight{ + + .baseSettingRight { width: 100%; background: #fff; border: 1px solid #ebedf0; - .title{ + + .title { border-bottom: 1px solid #ebedf0; background: #f7fbfe; width: 100%; @@ -52,16 +57,22 @@ line-height: 40px; font-size: 14px; } - .descContent{ + + .descContent { color: #999; width: 100%; padding: 0 12px; line-height: 24px; - .descTitle{ + + .descTitle { font-size: 14px; color: #333; line-height: 26px; } } + + .notice { + color: #ff4d4f; + } } } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js index cca8c3de..229d6191 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js @@ -9,6 +9,7 @@ import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSelect, WeaTextar import { Col, Row } from "antd"; import { inject, observer } from "mobx-react"; import { baseSettingFormItem } from "../config"; +import { getAddMonthYearMonth, getCurrentYearMonth, getSubtractMonthYearMonth } from "../../../util/date"; import "./index.less"; @inject("taxAgentStore") @@ -97,7 +98,7 @@ class LedgerBaseSetting extends Component { }) } - +
); @@ -122,19 +123,36 @@ const CustomSelect = (props) => { ; }; const MonthCycleDesc = (props) => { + const { taxCycleType, socialSecurityCycleType } = props; return
月份周期说明
-
例:薪资所属月是2022-12(即核算员工12月的工资)
+
+ 例:薪资所属月是{moment().format("YYYY-MM")}(即核算员工{moment().format("MM")}月的工资) +
根据您当前的选择,相应的周期为:
薪资周期
2022-12-04至2023-01-03
税款所属期
-
2022-12-04至2023-01-03
+
{getMonth(taxCycleType)}
考勤取值周期
2022-12-04至2023-01-03
福利台账月份
-
2022-12-04至2023-01-03
+
引用{getMonth(socialSecurityCycleType)}的福利台账数据
; }; + +const getMonth = (salaryCycleType) => { + switch (salaryCycleType) { + case "1": // 上上月 + return getSubtractMonthYearMonth(2); + case "2": // 上月 + return getSubtractMonthYearMonth(1); + case "3": // 本月 + return getCurrentYearMonth(); + case "4": // 下月 + return getAddMonthYearMonth(1); + } +}; From 1e0c47364f192a360e706042ee2e0013320b2a13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 10:24:07 +0800 Subject: [PATCH 16/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../components/ledgerBaseSetting.js | 163 ++++++++++- .../ledgerPage/components/ledgerSlide.js | 18 +- pc4mobx/hrmSalary/pages/ledgerPage/config.js | 252 +++++++++--------- 3 files changed, 289 insertions(+), 144 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js index 229d6191..6e043517 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js @@ -9,6 +9,7 @@ import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSelect, WeaTextar import { Col, Row } from "antd"; import { inject, observer } from "mobx-react"; import { baseSettingFormItem } from "../config"; +import { getLedgerBasicForm } from "../../../apis/ledger"; import { getAddMonthYearMonth, getCurrentYearMonth, getSubtractMonthYearMonth } from "../../../util/date"; import "./index.less"; @@ -20,16 +21,75 @@ class LedgerBaseSetting extends Component { this.state = { baseForm: baseSettingFormItem, settingBaseInfo: { - name: "", taxAgentId: "", taxableItems: "1", salaryCycleType: "3", salaryCycleFromDay: "1", taxCycleType: "3", - attendCycleType: "3", attendCycleFromDay: "1", socialSecurityCycleType: "3", description: "" + name: "", + taxAgentId: "", + taxableItems: "1", + salaryCycleType: "3", + salaryCycleFromDay: "1", + taxCycleType: "3", + attendCycleType: "3", + attendCycleFromDay: "1", + socialSecurityCycleType: "3", + description: "", + canEdit: false } }; } componentDidMount() { this.getTaxAgentSelectListAsAdmin(); + if (this.props.visible && this.props.editId) { + this.getLedgerBasicForm(this.props.editId); + } + } + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.editId) { + this.getLedgerBasicForm(nextProps.editId); + } + if (nextProps.visible !== this.props.visible && !nextProps.editId) { + this.handleResetBaseInfo(); + } + } + + handleResetBaseInfo = () => { + this.setState({ + settingBaseInfo: { + name: "", + taxAgentId: "", + taxableItems: "1", + salaryCycleType: "3", + salaryCycleFromDay: "1", + taxCycleType: "3", + attendCycleType: "3", + attendCycleFromDay: "1", + socialSecurityCycleType: "3", + description: "", + canEdit: false + } + }); + }; + getLedgerBasicForm = (id) => { + getLedgerBasicForm({ id }).then(({ status, data }) => { + if (status) { + const { basicForm } = data; + const { settingBaseInfo } = this.state; + let tmpV = {}; + _.map(Object.keys(settingBaseInfo), key => { + tmpV[key] = basicForm[key].toString(); + }); + this.setState({ + settingBaseInfo: { + ...settingBaseInfo, + ...tmpV + } + }, () => { + this.props.onSaveParams(this.state.settingBaseInfo); + }); + } + }); + }; getTaxAgentSelectListAsAdmin = () => { const { taxAgentStore } = this.props; const { getTaxAgentSelectListAsAdmin } = taxAgentStore; @@ -91,8 +151,9 @@ class LedgerBaseSetting extends Component { type === "SELECT" ? this.handleChangeField(key, v)}/> : - type === "CUSTOM" ? this.handleChangeField(key, v)}/> : null + type === "CUSTOM" ? + this.handleChangeField(key, v)}/> : null } ; }) @@ -108,7 +169,10 @@ class LedgerBaseSetting extends Component { export default LedgerBaseSetting; const CustomSelect = (props) => { - const { list, baseInfo, onChange } = props; + const { list, baseInfo, onChange, inputStr } = props; + const { salaryCycleType, salaryCycleFromDay, attendCycleType, attendCycleFromDay } = baseInfo; + const salaryCycleStrObj = initPeriodStr("inputStr", salaryCycleType, salaryCycleFromDay); + const attendCycleStrObj = initPeriodStr("inputStr", attendCycleType, attendCycleFromDay); return { _.map(list, item => { @@ -119,11 +183,21 @@ const CustomSelect = (props) => { ; }) } - 111 + {inputStr === "salaryCycleStrObj" ? salaryCycleStrObj.inputStr : attendCycleStrObj.inputStr} ; }; const MonthCycleDesc = (props) => { - const { taxCycleType, socialSecurityCycleType } = props; + const { + taxCycleType, + socialSecurityCycleType, + salaryCycleFromDay, + salaryCycleType, + attendCycleType, + attendCycleFromDay + } = props; + const salaryCycleStrObj = initPeriodStr("salaryCycleStr", salaryCycleType, salaryCycleFromDay); + const attendCycleStrObj = initPeriodStr("attendCycleStr", attendCycleType, attendCycleFromDay); return
月份周期说明
@@ -133,17 +207,29 @@ const MonthCycleDesc = (props) => {
根据您当前的选择,相应的周期为:
薪资周期
-
2022-12-04至2023-01-03
+
+ {getStartDate(salaryCycleType, salaryCycleFromDay)}至 + {salaryCycleStrObj.date} +
税款所属期
{getMonth(taxCycleType)}
考勤取值周期
-
2022-12-04至2023-01-03
+
+ {getStartDate(attendCycleType, attendCycleFromDay)}至 + {attendCycleStrObj.date} +
福利台账月份
引用{getMonth(socialSecurityCycleType)}的福利台账数据
; }; +// 获取开始日期 +const getStartDate = (salaryCycleType, day) => { + day = Number(day); + return getMonth(salaryCycleType) + "-" + (day < 10 ? "0" + day : day); +}; + const getMonth = (salaryCycleType) => { switch (salaryCycleType) { case "1": // 上上月 @@ -156,3 +242,62 @@ const getMonth = (salaryCycleType) => { return getAddMonthYearMonth(1); } }; +const initPeriodStr = (periodStrType, types, fromDay) => { + let str = "", tmpDate = null; + switch (types) { + case "1": + tmpDate = moment().subtract(2, "month"); + const is_31H = moment(tmpDate, "YYYY-MM").daysInMonth() === 31; + if (fromDay == 1) { + tmpDate = moment().subtract(2, "month").endOf("month"); + str = `至上上月最后一天`; + } else { + tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`)) + .add(is_31H ? 30 : 29, "days"); + str = `至上月${moment(tmpDate).date()}号`; + } + break; + case "2": + tmpDate = moment().subtract(1, "month"); + const is_31 = moment(tmpDate, "YYYY-MM").daysInMonth() === 31; + if (fromDay == 1) { + tmpDate = moment().subtract(1, "month").endOf("month"); + str = `至上月最后一天`; + } else { + tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`)) + .add(is_31 ? 30 : 29, "days"); + str = `至本月${moment(tmpDate).date()}号`; + } + break; + case "3": + tmpDate = moment().add(0, "month"); + const is_31K = moment(tmpDate, "YYYY-MM").daysInMonth() === 31; + if (fromDay == 1) { + tmpDate = moment().endOf("month"); + str = `至本月最后一天`; + } else { + tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`)) + .add(is_31K ? 30 : 29, "days"); + str = `至下月${moment(tmpDate).date()}号`; + } + break; + case "4": + tmpDate = moment().add(1, "month"); + const is_31L = moment(tmpDate, "YYYY-MM").daysInMonth() === 31; + if (fromDay == 1) { + tmpDate = moment().add(1, "month").endOf("month"); + str = `至下月最后一天`; + } else { + tmpDate = moment(new Date(`${moment(tmpDate).format("YYYY-MM")}-0${fromDay}`)) + .add(is_31L ? 30 : 29, "days"); + str = `至下下月${moment(tmpDate).date()}号`; + } + break; + default: + break; + } + return { + [periodStrType]: str, + date: moment(tmpDate).format("YYYY-MM-DD") + }; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index 5cee45eb..e3c58e7c 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -30,15 +30,15 @@ class LedgerSlide extends Component { this.state = { current: 0, loading: false, - taxAgentId: "", baseSettingInfo: {} }; } saveLedgerBasic = () => { const { baseSettingInfo, current } = this.state; - const { description, ...extra } = baseSettingInfo; - const bool = _.every(Object.keys(extra), key => !!baseSettingInfo[key]); + const { editId } = this.props; + const { description, canEdit, ...extra } = baseSettingInfo; + const bool = _.every(Object.keys(extra), key => !!extra[key]); if (!bool || _.isEmpty(baseSettingInfo)) { Modal.warning({ title: "信息确认", @@ -47,13 +47,13 @@ class LedgerSlide extends Component { return false; } this.setState({ loading: true }); - saveLedgerBasic(baseSettingInfo).then(({ status, errormsg }) => { + saveLedgerBasic({ ...extra, description, id: editId }).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { const { onRefreshList } = this.props; message.success("保存成功"); - this.setState({ current: current + 1 }); onRefreshList(); + !editId && this.setState({ current: current + 1 }); } else { message.error(errormsg || "保存失败"); } @@ -139,8 +139,8 @@ class LedgerSlide extends Component { }; render() { - const { title, visible, taxAgentStore: { showOperateBtn } } = this.props; - const { current, taxAgentId } = this.state; + const { title, visible, editId, taxAgentStore: { showOperateBtn } } = this.props; + const { current } = this.state; return ( { - !taxAgentId && + !editId && { _.map(tabs, item => { diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/config.js b/pc4mobx/hrmSalary/pages/ledgerPage/config.js index 7e4c33c2..62e7bc19 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/config.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/config.js @@ -57,7 +57,7 @@ export const baseSettingFormItem = [ ] }, { - key: "salaryCycle", + key: "salaryCycleStrObj", label: "薪资周期", type: "CUSTOM", children: [ @@ -92,159 +92,159 @@ export const baseSettingFormItem = [ type: "SELECT", options: [ { - key: '1', + key: "1", selected: true, - showname: '1号' + showname: "1号" }, { - key: '2', + key: "2", selected: false, - showname: '2号' + showname: "2号" }, { - key: '3', + key: "3", selected: false, - showname: '3号' + showname: "3号" }, { - key: '4', + key: "4", selected: false, - showname: '4号' + showname: "4号" }, { - key: '5', + key: "5", selected: false, - showname: '5号' + showname: "5号" }, { - key: '6', + key: "6", selected: false, - showname: '6号' + showname: "6号" }, { - key: '7', + key: "7", selected: false, - showname: '7号' + showname: "7号" }, { - key: '8', + key: "8", selected: false, - showname: '8号' + showname: "8号" }, { - key: '9', + key: "9", selected: false, - showname: '9号' + showname: "9号" }, { - key: '10', + key: "10", selected: false, - showname: '10号' + showname: "10号" }, { - key: '11', + key: "11", selected: false, - showname: '11号' + showname: "11号" }, { - key: '12', + key: "12", selected: false, - showname: '12号' + showname: "12号" }, { - key: '13', + key: "13", selected: false, - showname: '13号' + showname: "13号" }, { - key: '14', + key: "14", selected: false, - showname: '14号' + showname: "14号" }, { - key: '15', + key: "15", selected: false, - showname: '15号' + showname: "15号" }, { - key: '16', + key: "16", selected: false, - showname: '16号' + showname: "16号" }, { - key: '17', + key: "17", selected: false, - showname: '17号' + showname: "17号" }, { - key: '18', + key: "18", selected: false, - showname: '18号' + showname: "18号" }, { - key: '19', + key: "19", selected: false, - showname: '19号' + showname: "19号" }, { - key: '20', + key: "20", selected: false, - showname: '20号' + showname: "20号" }, { - key: '21', + key: "21", selected: false, - showname: '21号' + showname: "21号" }, { - key: '22', + key: "22", selected: false, - showname: '22号' + showname: "22号" }, { - key: '23', + key: "23", selected: false, - showname: '23号' + showname: "23号" }, { - key: '24', + key: "24", selected: false, - showname: '24号' + showname: "24号" }, { - key: '25', + key: "25", selected: false, - showname: '25号' + showname: "25号" }, { - key: '26', + key: "26", selected: false, - showname: '26号' + showname: "26号" }, { - key: '27', + key: "27", selected: false, - showname: '27号' + showname: "27号" }, { - key: '28', + key: "28", selected: false, - showname: '28号' + showname: "28号" }, { - key: '29', + key: "29", selected: false, - showname: '29号' + showname: "29号" }, { - key: '30', + key: "30", selected: false, - showname: '30号' + showname: "30号" }, { - key: '31', + key: "31", selected: false, - showname: '31号' + showname: "31号" } ] } @@ -278,7 +278,7 @@ export const baseSettingFormItem = [ ] }, { - key: "attendancePeriod", + key: "attendCycleStrObj", label: "考勤周期", type: "CUSTOM", children: [ @@ -313,159 +313,159 @@ export const baseSettingFormItem = [ type: "SELECT", options: [ { - key: '1', + key: "1", selected: true, - showname: '1号' + showname: "1号" }, { - key: '2', + key: "2", selected: false, - showname: '2号' + showname: "2号" }, { - key: '3', + key: "3", selected: false, - showname: '3号' + showname: "3号" }, { - key: '4', + key: "4", selected: false, - showname: '4号' + showname: "4号" }, { - key: '5', + key: "5", selected: false, - showname: '5号' + showname: "5号" }, { - key: '6', + key: "6", selected: false, - showname: '6号' + showname: "6号" }, { - key: '7', + key: "7", selected: false, - showname: '7号' + showname: "7号" }, { - key: '8', + key: "8", selected: false, - showname: '8号' + showname: "8号" }, { - key: '9', + key: "9", selected: false, - showname: '9号' + showname: "9号" }, { - key: '10', + key: "10", selected: false, - showname: '10号' + showname: "10号" }, { - key: '11', + key: "11", selected: false, - showname: '11号' + showname: "11号" }, { - key: '12', + key: "12", selected: false, - showname: '12号' + showname: "12号" }, { - key: '13', + key: "13", selected: false, - showname: '13号' + showname: "13号" }, { - key: '14', + key: "14", selected: false, - showname: '14号' + showname: "14号" }, { - key: '15', + key: "15", selected: false, - showname: '15号' + showname: "15号" }, { - key: '16', + key: "16", selected: false, - showname: '16号' + showname: "16号" }, { - key: '17', + key: "17", selected: false, - showname: '17号' + showname: "17号" }, { - key: '18', + key: "18", selected: false, - showname: '18号' + showname: "18号" }, { - key: '19', + key: "19", selected: false, - showname: '19号' + showname: "19号" }, { - key: '20', + key: "20", selected: false, - showname: '20号' + showname: "20号" }, { - key: '21', + key: "21", selected: false, - showname: '21号' + showname: "21号" }, { - key: '22', + key: "22", selected: false, - showname: '22号' + showname: "22号" }, { - key: '23', + key: "23", selected: false, - showname: '23号' + showname: "23号" }, { - key: '24', + key: "24", selected: false, - showname: '24号' + showname: "24号" }, { - key: '25', + key: "25", selected: false, - showname: '25号' + showname: "25号" }, { - key: '26', + key: "26", selected: false, - showname: '26号' + showname: "26号" }, { - key: '27', + key: "27", selected: false, - showname: '27号' + showname: "27号" }, { - key: '28', + key: "28", selected: false, - showname: '28号' + showname: "28号" }, { - key: '29', + key: "29", selected: false, - showname: '29号' + showname: "29号" }, { - key: '30', + key: "30", selected: false, - showname: '30号' + showname: "30号" }, { - key: '31', + key: "31", selected: false, - showname: '31号' + showname: "31号" } ] } From fa45739e66ccebb3d38843384bfb7b97536acc01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 11:38:43 +0800 Subject: [PATCH 17/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../components/PersonalScopeTable/index.js | 130 ++++++++++++++++++ .../components/PersonalScopeTable/index.less | 11 ++ .../components/ledgerAssociatedPersonnel.js | 110 +++++++++++++++ .../components/ledgerBaseSetting.js | 16 ++- .../ledgerPage/components/ledgerSlide.js | 14 +- 5 files changed, 272 insertions(+), 9 deletions(-) create mode 100644 pc4mobx/hrmSalary/components/PersonalScopeTable/index.js create mode 100644 pc4mobx/hrmSalary/components/PersonalScopeTable/index.less create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js diff --git a/pc4mobx/hrmSalary/components/PersonalScopeTable/index.js b/pc4mobx/hrmSalary/components/PersonalScopeTable/index.js new file mode 100644 index 00000000..fcb80bf7 --- /dev/null +++ b/pc4mobx/hrmSalary/components/PersonalScopeTable/index.js @@ -0,0 +1,130 @@ +/* + * Author: 黎永顺 + * name: 人员范围列表数据 + * Description: + * Date: 2022/11/30 + */ +import React, { Component } from "react"; +import { WeaTable } from "ecCom"; +import { calcPageNo } from "../../util"; +import "./index.less"; + +class PersonalScopeTable extends Component { + constructor(props) { + super(props); + this.state = { + loading: { + query: false + }, + dataSource: [], + columns: [], + selectedRowKeys: [], + pageInfo: { + current: 1, + pageSize: 10, + total: 0 + } + }; + } + + componentDidMount() { + this.getPersonalScopeList(); + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.tabActive !== this.props.tabActive) { + this.setState({ selectedRowKeys: [] }, () => { + this.getPersonalScopeList(nextProps.tabActive); + nextProps.onChangeSelectKey([]); + }); + } + } + + getPersonalScopeList = (tabActive = this.props.tabActive) => { + const { searchValue, searchKeyVal, APIFox } = this.props; + const { pageInfo, loading } = this.state; + const payload = { + [searchKeyVal["key"]]: searchKeyVal["value"], + targetName: searchValue, + ...pageInfo + }; + this.setState({ loading: { ...loading, query: true } }); + APIFox[tabActive](payload).then(({ status, data }) => { + this.setState({ loading: { ...loading, query: false } }); + if (status) { + const { pageNum: current, pageSize, total, columns, list: dataSource } = data; + this.setState({ + pageInfo: { ...pageInfo, current, pageSize, total }, + dataSource, + columns: _.map(columns, item => { + return { + ...item, + render: (text) => { + return {text}; + } + }; + }) + }); + } + }).catch(() => { + this.setState({ loading: { ...loading, query: false } }); + }); + }; + + /* + * Author: 黎永顺 + * Description: 清空选中项 + * Params: + * Date: 2022/11/30 + */ + clearRowkeys = () => { + const { pageInfo, selectedRowKeys } = this.state; + this.setState({ + selectedRowKeys: [], + pageInfo: { + ...pageInfo, + current: calcPageNo(pageInfo.total, pageInfo.current, 10, selectedRowKeys.length) + } + }, () => { + this.getPersonalScopeList(); + }); + }; + + render() { + const { dataSource, columns, pageInfo, loading, selectedRowKeys } = this.state; + const { onChangeSelectKey } = this.props; + const pagination = { + ...pageInfo, + showTotal: total => `共 ${total} 条`, + showQuickJumper: true, + pageSizeOptions: ["10", "20", "50", "100"], + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => { + this.getPersonalScopeList(); + }); + } + }; + const rowSelection = { + selectedRowKeys, + onChange: (selectedRowKeys) => { + this.setState({ selectedRowKeys }, () => { + onChangeSelectKey(this.state.selectedRowKeys); + }); + } + }; + return ( + + ); + } +} + +export default PersonalScopeTable; diff --git a/pc4mobx/hrmSalary/components/PersonalScopeTable/index.less b/pc4mobx/hrmSalary/components/PersonalScopeTable/index.less new file mode 100644 index 00000000..3f90918b --- /dev/null +++ b/pc4mobx/hrmSalary/components/PersonalScopeTable/index.less @@ -0,0 +1,11 @@ +.ledgerWrapper { + height: 100%; + + .tdEllipsis { + display: inline-block; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js new file mode 100644 index 00000000..fd53c936 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js @@ -0,0 +1,110 @@ +/* + * Author: 黎永顺 + * name: 薪资账套关联人员 + * Description: + * Date: 2022/12/12 + */ +import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { WeaButtonIcon, WeaInputSearch, WeaTab } from "ecCom"; +import PersonalScopeTable from "../../../components/PersonalScopeTable"; +import { getLedgerPersonRangeExclude, getLedgerPersonRangeInclude } from "../../../apis/ledger"; + +const APIFox = { + listInclude: getLedgerPersonRangeInclude, + listExclude: getLedgerPersonRangeExclude +}; + +@inject("taxAgentStore") +@observer +class LedgerAssociatedPersonnel extends Component { + constructor(props) { + super(props); + this.state = { + searchValue: "", + selectedKey: "listInclude", + rowKeys: [], + personalAddModal: { + visible: false, + title: "关联人员", + includeType: "" + } + }; + } + + + /* + * Author: 黎永顺 + * Description:新增人员范围 + * Params: + * Date: 2022/11/30 + */ + handleAddPersonal = () => { + const { personalAddModal, selectedKey } = this.state; + this.setState({ + personalAddModal: { + ...personalAddModal, + visible: true, + includeType: selectedKey === "listInclude" ? 1 : 0 + } + }); + }; + + render() { + const { selectedKey, searchValue, rowKeys, personalAddModal } = this.state; + const { taxAgentStore: { showOperateBtn }, editId } = this.props; + const topTab = [ + { + title: "关联人员范围", + viewcondition: "listInclude" + }, + { + title: "从范围中排除", + viewcondition: "listExclude" + } + ]; + const btns = showOperateBtn ? [ + , + , + this.setState({ searchValue })} + placeholder="请输入对象" + onSearch={() => console.log(searchValue)} + /> + ] : [ this.setState({ searchValue })} + placeholder="请输入对象" + onSearch={() => console.log(searchValue)} + />]; + return ( +
+ this.setState({ selectedKey })} + /> + this.personalScopeTableRef = dom} + searchKeyVal={{ key: "salarySobId", value: editId }} + APIFox={APIFox} + tabActive={selectedKey} + searchValue={searchValue} + onChangeSelectKey={rowKeys => this.setState({ rowKeys })} + /> +
+ ); + } +} + +export default LedgerAssociatedPersonnel; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js index 6e043517..29f4af17 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js @@ -66,7 +66,7 @@ class LedgerBaseSetting extends Component { attendCycleFromDay: "1", socialSecurityCycleType: "3", description: "", - canEdit: false + canEdit: "true" } }); }; @@ -124,7 +124,10 @@ class LedgerBaseSetting extends Component { }; render() { + const { editId } = this.props; const { baseForm, settingBaseInfo } = this.state; + const { canEdit, taxAgentId } = settingBaseInfo; + let taxAgentIdDisabled = false, taxableItemsDisabled = false; return (
@@ -132,16 +135,19 @@ class LedgerBaseSetting extends Component { { _.map(baseForm, item => { const { key, label, type, options = [], children = [] } = item; + taxAgentIdDisabled = key === "taxAgentId" && taxAgentId; + taxableItemsDisabled = key === "taxableItems" && editId; return { type === "INPUT" ? - this.handleChangeField(key, v)}/> : type === "TEXTAREA" ? - this.handleChangeField(key, v)}/> : + this.handleChangeField(key, v)}/> : type === "CHECKBOX" ? : type === "SELECT" ? this.handleChangeField(key, v)}/> : type === "CUSTOM" ? { const { list, baseInfo, onChange, inputStr } = props; - const { salaryCycleType, salaryCycleFromDay, attendCycleType, attendCycleFromDay } = baseInfo; + const { salaryCycleType, salaryCycleFromDay, attendCycleType, attendCycleFromDay, canEdit } = baseInfo; const salaryCycleStrObj = initPeriodStr("inputStr", salaryCycleType, salaryCycleFromDay); const attendCycleStrObj = initPeriodStr("inputStr", attendCycleType, attendCycleFromDay); return @@ -179,6 +186,7 @@ const CustomSelect = (props) => { const { key, options = [] } = item; return onChange(key, v)}/> ; }) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index e3c58e7c..d861e3c6 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -10,6 +10,7 @@ import { WeaSlideModal, WeaSteps } from "ecCom"; import { Button, message, Modal } from "antd"; import SlideModalTitle from "../../../components/slideModalTitle"; import LedgerBaseSetting from "./ledgerBaseSetting"; +import LedgerAssociatedPersonnel from "./ledgerAssociatedPersonnel"; import { saveLedgerBasic } from "../../../apis/ledger"; import "./index.less"; @@ -17,9 +18,9 @@ const Step = WeaSteps.Step; const tabs = [ { key: 0, title: "基础设置" }, { key: 1, title: "关联人员" }, - { key: 3, title: "薪资项目" }, - { key: 4, title: "回算薪资项目" }, - { key: 5, title: "校验规则" } + { key: 2, title: "薪资项目" }, + { key: 3, title: "回算薪资项目" }, + { key: 4, title: "调薪计薪规则" } ]; @inject("taxAgentStore") @@ -81,6 +82,9 @@ class LedgerSlide extends Component { case 0: CurrentDom = ; break; + case 1: + CurrentDom = ; + break; default: CurrentDom = null; break; @@ -104,10 +108,10 @@ class LedgerSlide extends Component { ]; break; case 1: - CurrentDom = [ + CurrentDom = !editId ? [ , - ]; + ] : []; break; case 2: CurrentDom = !editId ? From a7028943ed1ebe5d580ddf5feb18b8a32d89d8ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 14:15:58 +0800 Subject: [PATCH 18/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../components/PersonalScopeModal/index.js | 227 ++++++++++++++++++ .../components/PersonalScopeModal/index.less | 14 ++ .../components/ledgerAssociatedPersonnel.js | 58 ++++- 3 files changed, 295 insertions(+), 4 deletions(-) create mode 100644 pc4mobx/hrmSalary/components/PersonalScopeModal/index.js create mode 100644 pc4mobx/hrmSalary/components/PersonalScopeModal/index.less diff --git a/pc4mobx/hrmSalary/components/PersonalScopeModal/index.js b/pc4mobx/hrmSalary/components/PersonalScopeModal/index.js new file mode 100644 index 00000000..1668de36 --- /dev/null +++ b/pc4mobx/hrmSalary/components/PersonalScopeModal/index.js @@ -0,0 +1,227 @@ +/* + * Author: 黎永顺 + * name: 新增人员范围弹框 + * Description: + * Date: 2022/11/30 + */ +import React, { Component } from "react"; +import { WeaBrowser, WeaDialog, WeaFormItem, WeaSearchGroup, WeaSelect } from "ecCom"; +import { Button, message, Modal } from "antd"; +import { getTaxAgentRangeForm } from "../../apis/taxAgent"; +import { SelectWithAll } from "../../pages/socialSecurityBenefits/standingBookDetail/components/regAddEmployee"; +import "./index.less"; + +class PersonalScopeModal extends Component { + constructor(props) { + super(props); + this.state = { + loading: false, + employeeStatus: [], + targetTypeList: [], + targetType: "EMPLOYEE", + targetTypeIds: "", + targetTypeIdsNames: "", + status: "", + statusAll: "" + }; + } + + componentDidMount() { + const { isTaxgent = true } = this.props; + if (isTaxgent) { + this.getTaxAgentRangeForm(); + } else { + const employeeStatus = [ + { key: "TRIAL", showname: "试用" }, + { key: "FORMAL", showname: "正式" }, + { key: "TEMPORARY", showname: "临时" }, + { key: "DELAY", showname: "试用延期" }, + { key: "FIRE", showname: "解雇" }, + { key: "DEPARTURE", showname: "离职" }, + { key: "RETIRED", showname: "退休" } + ]; + const targetTypeList = [ + { + key: "EMPLOYEE", + showname: "人员", + selected: false + }, + { + key: "SUBCOMPANY", + showname: "分部", + selected: false + }, + { + key: "DEPT", + showname: "部门", + selected: false + }, + { + key: "POSITION", + showname: "岗位", + selected: false + } + ]; + this.setState({ targetTypeList, employeeStatus }); + } + } + + getTaxAgentRangeForm = () => { + getTaxAgentRangeForm().then(({ status, data }) => { + if (status) { + const { employeeStatus, targetTypeList } = data; + this.setState({ + targetTypeList: _.map(targetTypeList, it => ({ key: it.id, showname: it.name })), + employeeStatus: _.map(employeeStatus, it => ({ key: it.id, showname: it.name })) + }); + } + }); + }; + handleSubmit = () => { + const { status, targetTypeIds, targetType } = this.state; + const { includeType, saveKeyVal, onSuccess, onCancel, APISaveFox } = this.props; + if (_.isEmpty(status) || _.isEmpty(targetTypeIds)) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return; + } + const payload = { + employeeStatus: status.split(","), + includeType, + targetParams: _.map(targetTypeIds.split(","), it => ({ targetType, targetId: it })), + [saveKeyVal["key"]]: saveKeyVal["value"], + }; + this.setState({ loading: true }); + APISaveFox["save"](payload).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success("保存成功"); + this.handleReset(); + onSuccess(); + onCancel(); + } else { + message.error(errormsg || "保存失败"); + } + }).catch(() => this.setState({ loading: true })); + }; + renderBrowser = () => { + const { targetType, targetTypeIds, targetTypeIdsNames } = this.state; + let browserType = {}; + switch (targetType) { + case "EMPLOYEE": + browserType = { ...browserType, type: 17, title: "人员选择" }; + break; + case "DEPT": + browserType = { ...browserType, type: 57, title: "部门选择" }; + break; + case "SUBCOMPANY": + browserType = { ...browserType, type: 164, title: "分部选择" }; + break; + case "POSITION": + browserType = { ...browserType, type: 278, title: "岗位选择" }; + break; + default: + break; + } + return { + this.setState({ targetTypeIds, targetTypeIdsNames }); + }} + />; + }; + handleReset = () => { + this.setState({ + targetType: "EMPLOYEE", + targetTypeIds: "", + status: "", + statusAll: "" + }); + }; + + render() { + const { onCancel, title, visible } = this.props; + const { employeeStatus, targetTypeList, targetType, status, statusAll, loading } = this.state; + const buttons = [ + , + + ]; + return ( + { + this.handleReset(); + onCancel(); + }} + > + + +
+ this.setState({ targetType })} + /> + {this.renderBrowser()} +
+
+ { + SelectWithAll({ + label: "选择员工状态", + options: employeeStatus, + detailtype: 2, + valueAll: statusAll, + value: status, + onChangeAll: ({ selected }) => { + if (selected) { + this.setState({ + status: _.map(employeeStatus, it => it.key).join(","), + statusAll: selected + }); + } else { + this.setState({ + status: "", + statusAll: selected + }); + } + }, + onChange: ({ selected }) => { + const bool = _.every(_.map(employeeStatus, it => it.key), item => selected.split(",").includes(item)); + if (bool) { + this.setState({ + status: selected, + statusAll: "0" + }); + } else { + this.setState({ + status: selected, + statusAll: "" + }); + } + } + }) + } +
+
+ ); + } +} + +export default PersonalScopeModal; diff --git a/pc4mobx/hrmSalary/components/PersonalScopeModal/index.less b/pc4mobx/hrmSalary/components/PersonalScopeModal/index.less new file mode 100644 index 00000000..0c603d8e --- /dev/null +++ b/pc4mobx/hrmSalary/components/PersonalScopeModal/index.less @@ -0,0 +1,14 @@ +//添加关联人员弹框中的下拉框样式 +.personalScopeModalWrapper{ + .wea-select,.ant-select-selection,.ant-select{ + width: 100%; + } + .wea-select{ + display: inline-block; + position: relative; + } + .ant-select-selection{ + height: 30px; + border-radius: 0; + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js index fd53c936..53aef91a 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js @@ -6,14 +6,24 @@ */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; +import { message, Modal } from "antd"; import { WeaButtonIcon, WeaInputSearch, WeaTab } from "ecCom"; import PersonalScopeTable from "../../../components/PersonalScopeTable"; -import { getLedgerPersonRangeExclude, getLedgerPersonRangeInclude } from "../../../apis/ledger"; +import PersonalScopeModal from "../../../components/PersonalScopeModal"; +import { + deleteLedgerPersonRange, + getLedgerPersonRangeExclude, + getLedgerPersonRangeInclude, + saveLedgerPersonRange +} from "../../../apis/ledger"; const APIFox = { listInclude: getLedgerPersonRangeInclude, listExclude: getLedgerPersonRangeExclude }; +const APISaveFox = { + save: saveLedgerPersonRange +}; @inject("taxAgentStore") @observer @@ -32,7 +42,30 @@ class LedgerAssociatedPersonnel extends Component { }; } - + /* + * Author: 黎永顺 + * Description: 删除人员范围 + * Params: + * Date: 2022/11/30 + */ + taxAgentRangeDelete = () => { + Modal.confirm({ + title: "信息确认", + content: "确认要删除吗?", + onOk: () => { + deleteLedgerPersonRange(this.state.rowKeys).then(({ status, errormsg }) => { + if (status) { + message.success("删除成功"); + this.setState({ rowKeys: [] }, () => { + this.personalScopeTableRef.clearRowkeys(); + }); + } else { + message.error(errormsg || "删除失败"); + } + }); + } + }); + }; /* * Author: 黎永顺 * Description:新增人员范围 @@ -76,14 +109,14 @@ class LedgerAssociatedPersonnel extends Component { value={searchValue} onChange={searchValue => this.setState({ searchValue })} placeholder="请输入对象" - onSearch={() => console.log(searchValue)} + onSearch={() => this.personalScopeTableRef.getPersonalScopeList()} /> ] : [ this.setState({ searchValue })} placeholder="请输入对象" - onSearch={() => console.log(searchValue)} + onSearch={() => this.personalScopeTableRef.getPersonalScopeList()} />]; return (
@@ -102,6 +135,23 @@ class LedgerAssociatedPersonnel extends Component { searchValue={searchValue} onChangeSelectKey={rowKeys => this.setState({ rowKeys })} /> + {/*新增人员范围*/} + this.personalScopeTableRef.getPersonalScopeList()} + onCancel={() => + this.setState({ + personalAddModal: { + ...personalAddModal, + visible: false, + includeType: "" + } + }) + } + />
); } From 2de636febce8e63461a65bf617dd8fd8f0406eb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 15:16:10 +0800 Subject: [PATCH 19/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../components/ledgerSalaryAdjustmentRules.js | 26 +++++++++++++++++++ .../ledgerPage/components/ledgerSlide.js | 8 +++++- 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js new file mode 100644 index 00000000..9f63cc90 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js @@ -0,0 +1,26 @@ +/* + * Author: 黎永顺 + * name: 调薪计薪规则 + * Description: + * Date: 2022/12/12 + */ +import React, { Component } from "react"; +import { WeaButtonIcon, WeaInputSearch, WeaTab } from "ecCom"; + +class LedgerSalaryAdjustmentRules extends Component { + render() { + return ( +
+ this.setState({ selectedKey })} + /> +
+ ); + } +} + +export default LedgerSalaryAdjustmentRules; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index d861e3c6..1eb231da 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -11,6 +11,7 @@ import { Button, message, Modal } from "antd"; import SlideModalTitle from "../../../components/slideModalTitle"; import LedgerBaseSetting from "./ledgerBaseSetting"; import LedgerAssociatedPersonnel from "./ledgerAssociatedPersonnel"; +import LedgerSalaryAdjustmentRules from "./ledgerSalaryAdjustmentRules"; import { saveLedgerBasic } from "../../../apis/ledger"; import "./index.less"; @@ -85,6 +86,9 @@ class LedgerSlide extends Component { case 1: CurrentDom = ; break; + case 4: + CurrentDom = ; + break; default: CurrentDom = null; break; @@ -133,7 +137,9 @@ class LedgerSlide extends Component { [ , - ] : []; + ] : [ + + ]; break; default: break; From 6d9787d924a18ffe9e201bb18b78d9b6f3608f3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 16:10:11 +0800 Subject: [PATCH 20/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../pages/ledgerPage/components/index.less | 34 ++++ .../components/ledgerAdjustRuleAddModal.js | 149 +++++++++++++++++ .../components/ledgerSalaryAdjustmentRules.js | 61 ++++++- pc4mobx/hrmSalary/pages/ledgerPage/config.js | 157 ++++++++++++++++++ 4 files changed, 394 insertions(+), 7 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index 6d697700..f24e52f2 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -76,3 +76,37 @@ } } } + +//调薪计薪规则弹框 +.adjustRuleModalWrapper { + .titleTipWrapper { + display: flex; + align-items: center; + + .title { + margin-right: 4px; + } + } + + .adjustRuleDetailWrapper{ + display: flex; + flex-direction: column; + .adjustSalaryFlex{ + display: flex; + } + } + + .wea-select, .ant-select-selection, .ant-select { + width: 100%; + } + + .wea-select { + display: inline-block; + position: relative; + } + + .ant-select-selection { + height: 30px; + border-radius: 0; + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js new file mode 100644 index 00000000..81fc8739 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js @@ -0,0 +1,149 @@ +/* + * Author: 黎永顺 + * name: 新增调薪计薪规 + * Description: + * Date: 2022/12/12 + */ +import React, { Component } from "react"; +import { WeaDialog, WeaFormItem, WeaHelpfulTip, WeaSearchGroup, WeaSelect } from "ecCom"; +import { Button, Radio } from "antd"; +import { monthDays } from "../config"; +import { listSalarySobItem } from "../../../apis/ledger"; +import "./index.less"; + +class LedgerAdjustRuleAddModal extends Component { + constructor(props) { + super(props); + this.state = { + beforeAdjustmentType: "", + afterAdjustmentType: "", + salaryItemId: "", + salaryItemName: "", + dayOfMonth: "", + salaryItemOptions: [] + }; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && !nextProps.salarySobId) this.listSalarySobItem(); + } + + listSalarySobItem = () => { + const { salarySobId } = this.props; + const payload = { + excludeSalaryItemIds: [], + salarySobId + }; + listSalarySobItem(payload).then(({ status, data }) => { + if (status) { + this.setState({ + salaryItemOptions: _.map(data, it => ({ key: it.id, showname: it.content })) + }); + } + }); + }; + + render() { + const { + salaryItemId, + salaryItemOptions, + dayOfMonth, + beforeAdjustmentType, + afterAdjustmentType + } = this.state; + const { onCancel, title, visible } = this.props; + const buttons = []; + return ( + + + + this.setState({ salaryItemId, salaryItemName })} + /> + + } labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}> +
+
+ 如果:调薪生效日期在 + this.setState({ dayOfMonth })} + /> + (含)之前 +
+
+ 计薪规则为: + { + console.log(value); + }} value={beforeAdjustmentType}> + 取调整后薪资 + 分段计薪 + 取平均 + + +
+
否则:调薪生效日期在{dayOfMonth}号之后
+
+ 计薪规则为: + { + console.log(value); + }} value={afterAdjustmentType}> + 取调整前薪资 + 分段计薪 + 取平均 + + +
+
+
+
+
+ ); + } +} + +export default LedgerAdjustRuleAddModal; + +const AdjustTitle = () => { + return
+ 计薪规则 + +
; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js index 9f63cc90..47d2c529 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js @@ -5,18 +5,65 @@ * Date: 2022/12/12 */ import React, { Component } from "react"; -import { WeaButtonIcon, WeaInputSearch, WeaTab } from "ecCom"; +import { inject, observer } from "mobx-react"; +import { WeaButtonIcon, WeaTab, WeaTable } from "ecCom"; +import LedgerAdjustRuleAddModal from "./ledgerAdjustRuleAddModal"; +@inject("taxAgentStore") +@observer class LedgerSalaryAdjustmentRules extends Component { + constructor(props) { + super(props); + this.state = { + dataSource: [], + columns: [], + adjustRuleAddModal: { + visible: false, + title: "调薪计薪规则项", + salarySobId: "" + } + }; + } + + handleAddAdjustRule = () => { + const { adjustRuleAddModal } = this.state; + const { editId } = this.props; + this.setState({ + adjustRuleAddModal: { + ...adjustRuleAddModal, + visible: true, + salarySobId: editId + } + }); + }; + handleCloseModal = () => { + const { adjustRuleAddModal } = this.state; + this.setState({ + adjustRuleAddModal: { + ...adjustRuleAddModal, + visible: false, + salarySobId: "" + } + }); + }; + render() { + const { taxAgentStore: { showOperateBtn }, editId, adjustRuleAddModal } = this.props; + const btns = showOperateBtn ? [ + + ] : []; return (
- this.setState({ selectedKey })} + + +
); diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/config.js b/pc4mobx/hrmSalary/pages/ledgerPage/config.js index 62e7bc19..01fb9d44 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/config.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/config.js @@ -509,3 +509,160 @@ export const baseSettingFormItem = [ type: "TEXTAREA" } ]; +export const monthDays = [ + { + key: "1", + selected: true, + showname: "1号" + }, + { + key: "2", + selected: false, + showname: "2号" + }, + { + key: "3", + selected: false, + showname: "3号" + }, + { + key: "4", + selected: false, + showname: "4号" + }, + { + key: "5", + selected: false, + showname: "5号" + }, + { + key: "6", + selected: false, + showname: "6号" + }, + { + key: "7", + selected: false, + showname: "7号" + }, + { + key: "8", + selected: false, + showname: "8号" + }, + { + key: "9", + selected: false, + showname: "9号" + }, + { + key: "10", + selected: false, + showname: "10号" + }, + { + key: "11", + selected: false, + showname: "11号" + }, + { + key: "12", + selected: false, + showname: "12号" + }, + { + key: "13", + selected: false, + showname: "13号" + }, + { + key: "14", + selected: false, + showname: "14号" + }, + { + key: "15", + selected: false, + showname: "15号" + }, + { + key: "16", + selected: false, + showname: "16号" + }, + { + key: "17", + selected: false, + showname: "17号" + }, + { + key: "18", + selected: false, + showname: "18号" + }, + { + key: "19", + selected: false, + showname: "19号" + }, + { + key: "20", + selected: false, + showname: "20号" + }, + { + key: "21", + selected: false, + showname: "21号" + }, + { + key: "22", + selected: false, + showname: "22号" + }, + { + key: "23", + selected: false, + showname: "23号" + }, + { + key: "24", + selected: false, + showname: "24号" + }, + { + key: "25", + selected: false, + showname: "25号" + }, + { + key: "26", + selected: false, + showname: "26号" + }, + { + key: "27", + selected: false, + showname: "27号" + }, + { + key: "28", + selected: false, + showname: "28号" + }, + { + key: "29", + selected: false, + showname: "29号" + }, + { + key: "30", + selected: false, + showname: "30号" + }, + { + key: "31", + selected: false, + showname: "31号" + } +]; From 9e3739d8163e1ee2f347d9a5c7c459933fa1c342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 16:35:19 +0800 Subject: [PATCH 21/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../pages/ledgerPage/components/index.less | 2 ++ .../components/ledgerAdjustRuleAddModal.js | 17 +++++++++-------- .../components/ledgerSalaryAdjustmentRules.js | 4 +++- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index f24e52f2..f11be705 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -93,6 +93,8 @@ flex-direction: column; .adjustSalaryFlex{ display: flex; + align-items: center; + margin-bottom: 10px; } } diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js index 81fc8739..ebe0e19d 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js @@ -15,17 +15,17 @@ class LedgerAdjustRuleAddModal extends Component { constructor(props) { super(props); this.state = { - beforeAdjustmentType: "", - afterAdjustmentType: "", + beforeAdjustmentType: 4, + afterAdjustmentType: 1, salaryItemId: "", salaryItemName: "", - dayOfMonth: "", + dayOfMonth: "1", salaryItemOptions: [] }; } componentWillReceiveProps(nextProps, nextContext) { - if (nextProps.visible !== this.props.visible && !nextProps.salarySobId) this.listSalarySobItem(); + if (nextProps.visible !== this.props.visible && nextProps.salarySobId) this.listSalarySobItem(); } listSalarySobItem = () => { @@ -59,12 +59,12 @@ class LedgerAdjustRuleAddModal extends Component { className="adjustRuleModalWrapper" title={title} visible={visible} - style={{ width: 680 }} + style={{ width: 780 }} buttons={buttons} onCancel={onCancel} > - - + + this.setState({ salaryItemId, salaryItemName })} /> - } labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}> + } labelCol={{ span: 8 }} wrapperCol={{ span: 16 }}>
如果:调薪生效日期在 this.setState({ dayOfMonth })} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js index 47d2c529..9ab9f162 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js @@ -48,7 +48,9 @@ class LedgerSalaryAdjustmentRules extends Component { }; render() { - const { taxAgentStore: { showOperateBtn }, editId, adjustRuleAddModal } = this.props; + const { taxAgentStore: { showOperateBtn }, editId } = this.props; + const { adjustRuleAddModal } = this.state; + const { dataSource, columns } = this.state; const btns = showOperateBtn ? [ ] : []; From 61b595404f008a366ab946be30dea0f5f5c6109a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 12 Dec 2022 16:36:08 +0800 Subject: [PATCH 22/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../pages/ledgerPage/components/ledgerAdjustRuleAddModal.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js index ebe0e19d..a557844d 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js @@ -72,7 +72,7 @@ class LedgerAdjustRuleAddModal extends Component { onChange={(salaryItemId, salaryItemName) => this.setState({ salaryItemId, salaryItemName })} /> - } labelCol={{ span: 8 }} wrapperCol={{ span: 16 }}> + } labelCol={{ span: 8 }} wrapperCol={{ span: 16 }} colon={false}>
如果:调薪生效日期在 @@ -146,5 +146,6 @@ const AdjustTitle = () => { title="该规则适用于一个薪资核算周期内只调整一次薪资或个税扣缴义务人的情况,其他情况默认按照分段计薪规则核算" placement="topLeft" /> + :
; }; From a193ed669015a180eb9d9c496d0b87e6d9aa428d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 13 Dec 2022 16:10:48 +0800 Subject: [PATCH 23/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- pc4mobx/hrmSalary/apis/ledger.js | 14 ++ .../LedgerBackCalculatedSalaryItemTable.js | 102 +++++++++ .../pages/ledgerPage/components/index.less | 40 +++- .../components/ledgerAdjustRuleAddModal.js | 75 +++++-- .../components/ledgerBackCalcEditSlide.js | 196 ++++++++++++++++++ .../ledgerBackCalculatedSalaryItem.js | 104 ++++++++++ .../components/ledgerSalaryAdjustmentRules.js | 95 ++++++++- .../ledgerPage/components/ledgerSlide.js | 45 +++- pc4mobx/hrmSalary/pages/ledgerPage/config.js | 88 ++++++++ .../pages/salaryItem/formalFormModal.js | 8 +- 10 files changed, 734 insertions(+), 33 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js diff --git a/pc4mobx/hrmSalary/apis/ledger.js b/pc4mobx/hrmSalary/apis/ledger.js index 2d411cd3..254c4643 100644 --- a/pc4mobx/hrmSalary/apis/ledger.js +++ b/pc4mobx/hrmSalary/apis/ledger.js @@ -268,3 +268,17 @@ export const listAdjustmentRule = params => { body: JSON.stringify(params) }).then(res => res.json()); }; + +//获取回算薪资项目 +export const getAggregate = params => { + return WeaTools.callApi("/api/bs/hrmsalary/salarysob/backitem/getAggregate", "GET", params); +}; + +//编辑回算薪资项目详情 +export const getBackitemForm = params => { + return WeaTools.callApi("/api/bs/hrmsalary/salarysob/backitem/getForm", "GET", params); +}; +//保存回算薪资项目详情 +export const salarysobBackitemSave = params => { + return postFetch("/api/bs/hrmsalary/salarysob/backitem/save", params); +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js new file mode 100644 index 00000000..5fa8bfdd --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js @@ -0,0 +1,102 @@ +/* + * Author: 黎永顺 + * name: 回算薪资项目表格数据 + * Description: + * Date: 2022/12/13 + */ +import React, { Component } from "react"; +import { WeaTable } from "ecCom"; +import { inject, observer } from "mobx-react"; +import LedgerBackCalcEditSlide from "./ledgerBackCalcEditSlide"; + +@inject("taxAgentStore") +@observer +class LedgerBackCalculatedSalaryItemTable extends Component { + constructor(props) { + super(props); + this.state = { + backCalcEditSlide: { + visible: false, + title: "编辑薪资项目", + id: "", + salaryItemId: "" + } + }; + } + + handleEditBackCalc = (record) => { + const { id, salaryItemId } = record; + const { backCalcEditSlide } = this.state; + this.setState({ + backCalcEditSlide: { + ...backCalcEditSlide, + visible: true, + id, + salaryItemId + } + }); + }; + handleClose = (isRefresh = false) => { + const { backCalcEditSlide } = this.state; + const { onRefresh } = this.props; + this.setState({ + backCalcEditSlide: { + ...backCalcEditSlide, + visible: false, + id: "", + salaryItemId: "" + } + }, () => { + isRefresh && onRefresh(); + }); + }; + + render() { + const { backCalcEditSlide } = this.state; + const { taxAgentStore: { showOperateBtn }, dataSource, editId } = this.props; + const columns = [ + { + dataIndex: "name", + title: "薪资项目", + render: (text) => { + return {text}; + } + }, + { + dataIndex: "formulaContent", + title: "核算公式", + render: (text, record) => { + return {text}; + } + }, + { + dataIndex: "", + title: "操作", + width: 80, + render: (text, record, index) => { + const { canEdit } = record; + return (showOperateBtn && canEdit) ? + this.handleEditBackCalc(record)}>编辑 : ; + } + } + ]; + return ( +
+ + +
+ ); + } +} + +export default LedgerBackCalculatedSalaryItemTable; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index f11be705..0fc0fb8d 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -88,10 +88,11 @@ } } - .adjustRuleDetailWrapper{ + .adjustRuleDetailWrapper { display: flex; flex-direction: column; - .adjustSalaryFlex{ + + .adjustSalaryFlex { display: flex; align-items: center; margin-bottom: 10px; @@ -112,3 +113,38 @@ border-radius: 0; } } + +// 回算薪资项目 +.ledgerBackCalculatedSalaryItemWrapper { + .titleWrapper { + display: flex; + align-items: center; + + & > span { + margin-right: 8px; + } + } +} + +//回算薪资项目编辑弹框 +.backCalcSlideWrapper { + .backCalcSlideCol { + border: 1px solid #ebedf0; + border-bottom: none; + margin: 10px; + + .wea-form-item { + padding: 4px 10px; + border-bottom: 1px solid #ebedf0; + } + } + + .textareaBox { + position: relative; + z-index: 1; + + & > .wea-textarea-normal { + z-index: -11; + } + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js index a557844d..220ff5e2 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js @@ -6,7 +6,7 @@ */ import React, { Component } from "react"; import { WeaDialog, WeaFormItem, WeaHelpfulTip, WeaSearchGroup, WeaSelect } from "ecCom"; -import { Button, Radio } from "antd"; +import { Button, Modal, Radio } from "antd"; import { monthDays } from "../config"; import { listSalarySobItem } from "../../../apis/ledger"; import "./index.less"; @@ -15,7 +15,7 @@ class LedgerAdjustRuleAddModal extends Component { constructor(props) { super(props); this.state = { - beforeAdjustmentType: 4, + beforeAdjustmentType: 2, afterAdjustmentType: 1, salaryItemId: "", salaryItemName: "", @@ -25,11 +25,10 @@ class LedgerAdjustRuleAddModal extends Component { } componentWillReceiveProps(nextProps, nextContext) { - if (nextProps.visible !== this.props.visible && nextProps.salarySobId) this.listSalarySobItem(); + if (nextProps.visible !== this.props.visible && nextProps.salarySobId) this.listSalarySobItem(nextProps.salarySobId); } - listSalarySobItem = () => { - const { salarySobId } = this.props; + listSalarySobItem = (salarySobId) => { const payload = { excludeSalaryItemIds: [], salarySobId @@ -37,11 +36,42 @@ class LedgerAdjustRuleAddModal extends Component { listSalarySobItem(payload).then(({ status, data }) => { if (status) { this.setState({ - salaryItemOptions: _.map(data, it => ({ key: it.id, showname: it.content })) + salaryItemOptions: _.map(data, it => ({ key: it.salaryItemId.toString(), showname: it.salaryItemName })) }); } }); }; + handleSave = () => { + const { salaryRuleItemsList, onSave } = this.props; + const { salaryItemOptions, ...extraItems } = this.state; + if (_.isEmpty(extraItems.salaryItemId)) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return; + } + const items = { + ...extraItems, + salaryItemName: this.state.salaryItemName, + }; + this.handleReset(); + onSave([...salaryRuleItemsList, items]); + }; + handleReset = () => { + this.setState({ + beforeAdjustmentType: 2, + afterAdjustmentType: 1, + salaryItemId: "", + salaryItemName: "", + dayOfMonth: "1", + salaryItemOptions: [] + }, () => { + const { onCancel } = this.props; + onCancel(); + }); + }; + render() { const { @@ -51,34 +81,37 @@ class LedgerAdjustRuleAddModal extends Component { beforeAdjustmentType, afterAdjustmentType } = this.state; - const { onCancel, title, visible } = this.props; - const buttons = []; + const { title, visible } = this.props; + const buttons = []; return ( - - + + this.setState({ salaryItemId, salaryItemName })} /> - } labelCol={{ span: 8 }} wrapperCol={{ span: 16 }} colon={false}> + } labelCol={{ span: 4 }} wrapperCol={{ span: 20 }} colon={false}>
如果:调薪生效日期在 this.setState({ dayOfMonth })} @@ -87,9 +120,8 @@ class LedgerAdjustRuleAddModal extends Component {
计薪规则为: - { - console.log(value); - }} value={beforeAdjustmentType}> + this.setState({ beforeAdjustmentType: e.target.value })} + value={beforeAdjustmentType}> 取调整后薪资 分段计薪
-
否则:调薪生效日期在{dayOfMonth}号之后
+
否则:调薪生效日期在{dayOfMonth}号之后
计薪规则为: - { - console.log(value); - }} value={afterAdjustmentType}> + this.setState({ afterAdjustmentType: e.target.value })} + value={afterAdjustmentType}> 取调整前薪资 分段计薪 { + getBackitemForm({ id }).then(({ status, data }) => { + if (status) { + this.setState({ ...data }); + } + }); + }; + handleChange = (type, value) => { + this.setState({ + ...this.state, + [type]: value + }); + }; + handleSaveBackCalcItems = () => { + const { salaryItem, loading, backCalcEditFormulModal, ...extra } = this.state; + const { salaryItemId, editId: salarySobId, onCancle } = this.props; + if (extra.valueType === "FORMULA" && _.isEmpty(extra.formulaContent)) { + Modal.warning({ + title: "信息确认", + content: "必要信息不完整,红色*为必填项!" + }); + return; + } + const payload = { ...extra, salarySobId, salaryItemId }; + this.setState({ loading: true }); + salarysobBackitemSave(payload).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success("保存成功"); + onCancle(true); + } else { + message.error(errormsg || "保存失败"); + } + }).catch(() => this.setState({ loading: false })); + }; + handleEditFormnul = () => { + const { backCalcEditFormulModal, valueType, dataType } = this.state; + this.setState({ + backCalcEditFormulModal: { + ...backCalcEditFormulModal, + visible: true, + valueType, + dataType: _.lowerCase(dataType) + } + }); + }; + handleCloseEditFormnul = () => { + const { backCalcEditFormulModal } = this.state; + this.setState({ + backCalcEditFormulModal: { + ...backCalcEditFormulModal, + visible: false, + valueType: "", + dataType: "" + } + }); + }; + + render() { + const { title, visible, showOperateBtn, onCancle } = this.props; + const { + valueType, + dataType, + roundingMode, + pattern, + salaryItem = [], + loading, + formulaContent, + backCalcEditFormulModal + } = this.state; + const salaryItemName = salaryItem[0] ? salaryItem[0].name : ""; + return ( + + } + content={ +
+ + + + + + + + + + + + this.handleChange("roundingMode", v)} + /> + + + + + this.handleChange("pattern", v)} + /> + + + + + this.handleChange("valueType", v)} + /> + + { + valueType === "FORMULA" && + +
+ +
+ {/*公式弹框*/} + { + backCalcEditFormulModal.visible && + this.setState({ + ...this.state, + formulaId: data.id, + formulaContent: data.formula + })} + onCancel={this.handleCloseEditFormnul} + /> + } +
+ } + +
+
+ } + onClose={onCancle} + /> + ); + } +} + +export default LedgerBackCalcEditSlide; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js new file mode 100644 index 00000000..e7382646 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js @@ -0,0 +1,104 @@ +/* + * Author: 黎永顺 + * name: 回算薪资项目 + * Description: + * Date: 2022/12/13 + */ +import React, { Component } from "react"; +import { WeaHelpfulTip, WeaSearchGroup } from "ecCom"; +import LedgerBackCalculatedSalaryItemTable from "./LedgerBackCalculatedSalaryItemTable"; +import { getAggregate } from "../../../apis/ledger"; +import "./index.less"; + +class LedgerBackCalculatedSalaryItem extends Component { + constructor(props) { + super(props); + this.state = { + backCalcItems: [ + { + key: "issuedItems", + label: "已发项目设置", + dataSource: [], + helpContent: [ + "核算时,已发项目的公式中各项目值均取该项目在该账套核算中的最后一次核算值;", + "已发项目的公式设置,只可在【取最后一次核算值的项目】中选择;" + ] + }, + { + key: "reissueItems", + label: "补发项目设置", + dataSource: [], + helpContent: [ + "系统内置补发项目【补发薪资合计】,可新增其他的项目,如【补发备注】等;", + "公式取值为当次回算的核算值。" + ] + } + ] + }; + } + + componentDidMount() { + this.getAggregate(); + } + + getAggregate = () => { + const { editId: salarySobId } = this.props; + const { backCalcItems } = this.state; + getAggregate({ salarySobId }).then(({ status, data }) => { + if (status) { + this.setState({ + backCalcItems: _.map(backCalcItems, item => { + const { key } = item; + return { + ...item, + dataSource: data[key] + }; + }) + }); + } + }); + }; + + render() { + const { backCalcItems } = this.state; + return ( +
+ { + _.map(backCalcItems, item => { + const { key, label, helpContent, dataSource } = item; + return ( + + } + showGroup + > + + ); + }) + } +
+ ); + } +} + +export default LedgerBackCalculatedSalaryItem; + +const TitleComp = (props) => { + const helpContent = _.map(props.helpContent, (it, idx) => { + return
{`${idx + 1}、${it}`}
; + }); + return
+ {props.title} + +
; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js index 9ab9f162..706b0ff5 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js @@ -7,7 +7,9 @@ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { WeaButtonIcon, WeaTab, WeaTable } from "ecCom"; +import { Modal } from "antd"; import LedgerAdjustRuleAddModal from "./ledgerAdjustRuleAddModal"; +import { listAdjustmentRule } from "../../../apis/ledger"; @inject("taxAgentStore") @observer @@ -16,7 +18,6 @@ class LedgerSalaryAdjustmentRules extends Component { super(props); this.state = { dataSource: [], - columns: [], adjustRuleAddModal: { visible: false, title: "调薪计薪规则项", @@ -25,6 +26,24 @@ class LedgerSalaryAdjustmentRules extends Component { }; } + componentDidMount() { + this.listAdjustmentRule(); + } + + listAdjustmentRule = () => { + const { editId: salarySobId } = this.props; + listAdjustmentRule({ salarySobId }).then(({ status, data }) => { + if (status) { + this.setState({ + dataSource: data + }, () => { + const { onSaveParams } = this.props; + const { dataSource } = this.state; + onSaveParams(dataSource); + }); + } + }); + }; handleAddAdjustRule = () => { const { adjustRuleAddModal } = this.state; const { editId } = this.props; @@ -46,14 +65,73 @@ class LedgerSalaryAdjustmentRules extends Component { } }); }; + handleDelete = (index) => { + const { dataSource } = this.state; + Modal.confirm({ + title: "信息确认", + content: "确认要删除吗?", + onOk: () => { + this.setState({ + dataSource: _.filter(dataSource, (it, idx) => idx !== index) + }, () => { + const { onSaveParams } = this.props; + const { dataSource } = this.state; + onSaveParams(dataSource); + }); + } + }); + }; + convertAdjustmentType = (index) => { + const nameList = { + 1: "取调薪前薪资", + 2: "取调薪后薪资", + 3: "平均值", + 4: "分段计薪" + }; + return nameList[Number(index)]; + }; render() { - const { taxAgentStore: { showOperateBtn }, editId } = this.props; + const { taxAgentStore: { showOperateBtn }, editId, onSaveParams } = this.props; const { adjustRuleAddModal } = this.state; - const { dataSource, columns } = this.state; + const { dataSource } = this.state; const btns = showOperateBtn ? [ ] : []; + const columns = [ + { + title: "序号", + dataIndex: "index", + width: 60, + render: (text, record, index) => { + return index + 1; + } + }, + { + dataIndex: "salaryItemName", + title: "薪资项目", + render: (text) => { + return {text}; + } + }, + { + dataIndex: "salaryCalculationRules", + title: "计薪规则", + render: (text, record) => { + const salaryCalculationRules = `${record.dayOfMonth}号(含)之前调薪,${this.convertAdjustmentType(record.beforeAdjustmentType)};${record.dayOfMonth}号之后调薪,${this.convertAdjustmentType(record.afterAdjustmentType)}`; + return {salaryCalculationRules}; + } + }, + { + dataIndex: "", + title: "操作", + width: 80, + render: (text, record, index) => { + return showOperateBtn ? + this.handleDelete(index)}>删除 : ; + } + } + ]; return (
@@ -65,7 +143,18 @@ class LedgerSalaryAdjustmentRules extends Component { /> { + this.setState({ dataSource }, () => { + const { dataSource } = this.state; + const ruleParams = _.map(dataSource, it => { + const { salaryCalculationRules, ...params } = it; + return { ...params }; + }); + onSaveParams(ruleParams); + }); + }} />
); diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index 1eb231da..02402512 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -12,7 +12,8 @@ import SlideModalTitle from "../../../components/slideModalTitle"; import LedgerBaseSetting from "./ledgerBaseSetting"; import LedgerAssociatedPersonnel from "./ledgerAssociatedPersonnel"; import LedgerSalaryAdjustmentRules from "./ledgerSalaryAdjustmentRules"; -import { saveLedgerBasic } from "../../../apis/ledger"; +import LedgerBackCalculatedSalaryItem from "./ledgerBackCalculatedSalaryItem"; +import { saveAdjustmentRule, saveLedgerBasic } from "../../../apis/ledger"; import "./index.less"; const Step = WeaSteps.Step; @@ -32,10 +33,17 @@ class LedgerSlide extends Component { this.state = { current: 0, loading: false, - baseSettingInfo: {} + baseSettingInfo: {}, + adjustRules: [] }; } + /* + * Author: 黎永顺 + * Description: 保存基本信息 + * Params: + * Date: 2022/12/12 + */ saveLedgerBasic = () => { const { baseSettingInfo, current } = this.state; const { editId } = this.props; @@ -61,6 +69,29 @@ class LedgerSlide extends Component { } }).catch(() => this.setState({ loading: false })); }; + /* + * Author: 黎永顺 + * Description: 保存调薪计薪规则 + * Params: + * Date: 2022/12/12 + */ + saveLedgerAdjustRule = () => { + const { adjustRules } = this.state; + const payload = { + salarySobId: this.props.editId, + ruleParams: adjustRules + }; + this.setState({ loading: true }); + saveAdjustmentRule(payload).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success("保存成功"); + } else { + message.success(errormsg || "保存失败"); + } + }).catch(() => this.setState({ loading: false })); + } + ; handleChangeSlideTab = (current) => { this.setState({ current: Number(current) }); }; @@ -86,8 +117,12 @@ class LedgerSlide extends Component { case 1: CurrentDom = ; break; + case 3: + CurrentDom = ; + break; case 4: - CurrentDom = ; + CurrentDom = + this.setState({ adjustRules })}/>; break; default: CurrentDom = null; @@ -136,9 +171,9 @@ class LedgerSlide extends Component { CurrentDom = !editId ? [ , - + ] : [ - + ]; break; default: diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/config.js b/pc4mobx/hrmSalary/pages/ledgerPage/config.js index 01fb9d44..6bd81428 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/config.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/config.js @@ -666,3 +666,91 @@ export const monthDays = [ showname: "31号" } ]; +export const fieldType = [ + { + key: "STRING", + selected: false, + showname: "字符" + }, + { + key: "NUMBER", + selected: false, + showname: "数值" + } +]; +export const valueTaking = [ + { + key: "INPUT", + selected: false, + showname: "输入" + }, + { + key: "FORMULA", + selected: false, + showname: "公式" + } +]; +export const roundingRules = [ + { + key: "RAW_DATA", + selected: false, + showname: "原始数据" + }, + { + key: "ROUNDING", + selected: false, + showname: "四舍五入" + }, + { + key: "ROUND_UP", + selected: false, + showname: "向上舍入" + }, + { + key: "ROUND_DOWN", + selected: false, + showname: "向下舍入" + }, + { + key: "CEILING", + selected: false, + showname: "见分进角" + }, + { + key: "UP_EVEN", + selected: false, + showname: "向上求偶" + }, +]; +export const keepDecimalPlaces = [ + { + key: "0", + selected: false, + showname: "0" + }, + { + key: "1", + selected: false, + showname: "1" + }, + { + key: "2", + selected: false, + showname: "2" + }, + { + key: "3", + selected: false, + showname: "3" + }, + { + key: "4", + selected: false, + showname: "4" + }, + { + key: "5", + selected: false, + showname: "5" + } +]; diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js index 3ddf0cad..92de743a 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js @@ -67,6 +67,12 @@ export default class FormalFormModal extends React.Component { let groupParams = {}; if (this.props.valueType == "3") { groupParams = { "referenceType": "sql" }; + } else if (this.props.valueType === "FORMULA") { + groupParams = { "referenceType": "backCalc" }; + this.referenceType = "backCalc"; + this.setState({ + value: this.props.formulaContent + }); } salaryAcctImportTemplateParam(groupParams); } @@ -247,7 +253,7 @@ export default class FormalFormModal extends React.Component { const { value, formulaDatasourceList, extendParam } = this.state; return ( Date: Wed, 14 Dec 2022 15:37:55 +0800 Subject: [PATCH 24/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../ledgerPage/components/categoryAddModal.js | 79 +++++ .../pages/ledgerPage/components/index.less | 60 ++++ .../components/ledgerAdjustRuleAddModal.js | 5 +- .../components/ledgerAssociatedPersonnel.js | 4 +- .../ledgerBackCalculatedSalaryItem.js | 4 +- .../components/ledgerSalaryAdjustmentRules.js | 8 +- .../ledgerPage/components/ledgerSalaryItem.js | 301 ++++++++++++++++++ .../components/ledgerSalaryItemAddModal.js | 150 +++++++++ .../components/ledgerSalaryItemBaseInfo.js | 103 ++++++ .../components/ledgerSalaryItemNormal.js | 252 +++++++++++++++ .../components/ledgerSalaryItemTable.js | 135 ++++++++ .../ledgerPage/components/ledgerSlide.js | 94 +++++- pc4mobx/hrmSalary/pages/ledgerPage/config.js | 20 +- pc4mobx/hrmSalary/stores/ledger.js | 4 +- 14 files changed, 1190 insertions(+), 29 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/categoryAddModal.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/categoryAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/categoryAddModal.js new file mode 100644 index 00000000..2aef96cb --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/categoryAddModal.js @@ -0,0 +1,79 @@ +/* + * Author: 黎永顺 + * name: 复制账套 + * Description: + * Date: 2022/12/8 + */ +import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { categoryConditions } from "../config"; +import { WeaDialog } from "ecCom"; +import { Button } from "antd"; +import { getSearchs } from "../../../util"; + +@inject("ledgerStore") +@observer +class CategoryAddModal extends Component { + constructor(props) { + super(props); + this.state = { + loading: false + }; + } + + componentDidMount() { + this.getFormFields(); + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) { + const { ledgerStore, name = "" } = nextProps; + const { categoryForm: form } = ledgerStore; + form.updateFields({ + name: { value: name } + }); + } + } + + getFormFields = () => { + const { ledgerStore } = this.props; + const { categoryForm: form } = ledgerStore; + form.initFormFields(categoryConditions); + }; + handleSubmit = () => { + const { ledgerStore, id, onSaveCategory, onCancel } = this.props; + const { categoryForm: form } = ledgerStore; + form.validateForm().then(f => { + if (f.isValid) { + const payload = form.getFormParams(); + onSaveCategory({ ...payload, id }); + onCancel(); + } else { + f.showErrors(); + } + }); + }; + + + render() { + const { onCancel, ledgerStore, ...extra } = this.props; + const { loading } = this.state; + const { categoryForm: form } = ledgerStore; + const buttons = [ + , + + ]; + return ( + + {getSearchs(form, categoryConditions, 1)} + + ); + } +} + +export default CategoryAddModal; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less index 0fc0fb8d..f4c29337 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/index.less @@ -148,3 +148,63 @@ } } } + +//薪资项目 +.ledgerSalaryItemWrapper { + .userInfoWrapper { + margin-top: 10px; + margin-bottom: 10px; + padding: 10px; + border: 1px solid #ebedf0; + border-radius: 5px; + display: flex; + align-items: center; + + .wea-sortable-grid-item { + display: inline-block; + border: none; + padding: 0; + } + } + + .categroyListWrapper { + .titleNormalWrapper { + display: flex; + justify-content: space-between; + align-items: center; + .titleWrapper, .titleBtnWrapper{ + display: flex; + align-items: center; + width: inherit; + } + .titleWrapper{ + i{ + font-size: 16px; + color: #333; + margin-left: 8px; + } + } + .titleBtnWrapper{ + .wea-button-icon{ + margin-left: 12px; + } + } + } + } + + .titleWrapper { + display: flex; + justify-content: space-between; + align-items: center; + width: 100%; + + .titleLeft { + display: flex; + align-items: center; + + & > span { + margin-right: 8px; + } + } + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js index 220ff5e2..38552ba7 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAdjustRuleAddModal.js @@ -29,8 +29,9 @@ class LedgerAdjustRuleAddModal extends Component { } listSalarySobItem = (salarySobId) => { + const { salaryRuleItemsList } = this.props; const payload = { - excludeSalaryItemIds: [], + excludeSalaryItemIds: _.map(salaryRuleItemsList, item => item.salaryItemId), salarySobId }; listSalarySobItem(payload).then(({ status, data }) => { @@ -53,7 +54,7 @@ class LedgerAdjustRuleAddModal extends Component { } const items = { ...extraItems, - salaryItemName: this.state.salaryItemName, + salaryItemName: this.state.salaryItemName }; this.handleReset(); onSave([...salaryRuleItemsList, items]); diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js index 53aef91a..5aa85886 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js @@ -85,7 +85,7 @@ class LedgerAssociatedPersonnel extends Component { render() { const { selectedKey, searchValue, rowKeys, personalAddModal } = this.state; - const { taxAgentStore: { showOperateBtn }, editId } = this.props; + const { taxAgentStore: { showOperateBtn }, editId, saveSalarySobId } = this.props; const topTab = [ { title: "关联人员范围", @@ -129,7 +129,7 @@ class LedgerAssociatedPersonnel extends Component { /> this.personalScopeTableRef = dom} - searchKeyVal={{ key: "salarySobId", value: editId }} + searchKeyVal={{ key: "salarySobId", value: editId || saveSalarySobId }} APIFox={APIFox} tabActive={selectedKey} searchValue={searchValue} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js index e7382646..6d39fd12 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js @@ -42,9 +42,9 @@ class LedgerBackCalculatedSalaryItem extends Component { } getAggregate = () => { - const { editId: salarySobId } = this.props; + const { editId: salarySobId, saveSalarySobId } = this.props; const { backCalcItems } = this.state; - getAggregate({ salarySobId }).then(({ status, data }) => { + getAggregate({ salarySobId: salarySobId || saveSalarySobId }).then(({ status, data }) => { if (status) { this.setState({ backCalcItems: _.map(backCalcItems, item => { diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js index 706b0ff5..a1aad64c 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryAdjustmentRules.js @@ -31,8 +31,8 @@ class LedgerSalaryAdjustmentRules extends Component { } listAdjustmentRule = () => { - const { editId: salarySobId } = this.props; - listAdjustmentRule({ salarySobId }).then(({ status, data }) => { + const { editId: salarySobId, saveSalarySobId } = this.props; + listAdjustmentRule({ salarySobId: salarySobId || saveSalarySobId }).then(({ status, data }) => { if (status) { this.setState({ dataSource: data @@ -46,12 +46,12 @@ class LedgerSalaryAdjustmentRules extends Component { }; handleAddAdjustRule = () => { const { adjustRuleAddModal } = this.state; - const { editId } = this.props; + const { editId, saveSalarySobId } = this.props; this.setState({ adjustRuleAddModal: { ...adjustRuleAddModal, visible: true, - salarySobId: editId + salarySobId: editId || saveSalarySobId } }); }; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js new file mode 100644 index 00000000..45bd3000 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js @@ -0,0 +1,301 @@ +/* + * Author: 黎永顺 + * name: 薪资项目 + * Description: + * Date: 2022/12/13 + */ +import React, { Component } from "react"; +import LedgerSalaryItemBaseInfo from "./ledgerSalaryItemBaseInfo"; +import LedgerSalaryItemNormal from "./ledgerSalaryItemNormal"; +import { getLedgerItemForm } from "../../../apis/ledger"; +import "./index.less"; + +class LedgerSalaryItem extends Component { + constructor(props) { + super(props); + this.state = { + empFields: [], //员工基本信息 + itemGroups: [] //正常工资薪金所得项 + }; + } + + componentDidMount() { + this.getLedgerItemForm(); + } + + /* + * Author: 黎永顺 + * Description: 薪资项目以及员工基本信息查询 + * Params: + * Date: 2022/12/14 + */ + getLedgerItemForm = () => { + const { editId: salarySobId, saveSalarySobId } = this.props; + getLedgerItemForm({ salarySobId: salarySobId || saveSalarySobId }).then(({ status, data }) => { + if (status) { + const { empFields, itemGroups, items } = data; + const obj = { + id: itemGroups.length, + itemHide: null, + items, + name: "未分类", + salarySobId, + sortedIndex: itemGroups.length + }; + this.setState({ empFields, itemGroups: [...itemGroups, obj] }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + } + }); + }; + /* + * Author: 黎永顺 + * Description: 员工基本信息排序 + * Params: + * Date: 2022/12/14 + */ + handleChangeSortableList = (empFields) => { + this.setState({ empFields }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description:编辑保存性子项目分类 + * Params: + * Date: 2022/12/13 + */ + handleSaveCateGory = (payload) => { + const { itemGroups } = this.state; + if (payload.id) { + this.setState({ + itemGroups: _.map(itemGroups, it => { + if (it.id === payload.id) { + return { ...it, name: payload.name }; + } + return { ...it }; + }) + }); + } else { + const obj = { + id: itemGroups.length, + itemHide: null, + items: [], + name: payload.name + }; + this.setState({ + itemGroups: _.map([obj, ...itemGroups], (it, idx) => ({ ...it, sortedIndex: idx })) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + } + }; + /* + * Author: 黎永顺 + * Description: 删除分类 + * Params: + * Date: 2022/12/14 + */ + handleDeleteCategroy = (id) => { + const { itemGroups } = this.state; + this.setState({ + itemGroups: _.filter(itemGroups, it => it.id !== id) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 删除分类项下的列表数据 + * Params: + * Date: 2022/12/14 + */ + handleDeleteCategroyItems = (id, selectedRowKeys) => { + const { itemGroups } = this.state; + this.setState({ + itemGroups: _.map(itemGroups, item => { + if (item.id === id) { + return { + ...item, + items: _.filter(item.items, it => !selectedRowKeys.includes(it.id)) + }; + } + return { ...item }; + }) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 修改信息项目分类的顺序-向上移动 + * Params: + * Date: 2022/12/14 + */ + handleUpgo = (index) => { + const { itemGroups } = this.state; + let newItemGroups = [...itemGroups]; + if (index !== 0) { + newItemGroups[index] = newItemGroups.splice(index - 1, 1, newItemGroups[index])[0]; + } else { + newItemGroups.push(newItemGroups.shift()); + } + this.setState({ + itemGroups: _.map(newItemGroups, (it, idx) => ({ + ...it, + sortedIndex: idx + })) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 修改信息项目分类的顺序-向下移动 + * Params: + * Date: 2022/12/14 + */ + handleDowngo = (index) => { + const { itemGroups } = this.state; + let newItemGroups = [...itemGroups]; + if (index !== newItemGroups.length - 1) { + newItemGroups[index] = newItemGroups.splice(index + 1, 1, newItemGroups[index])[0]; + } else { + newItemGroups.unshift(newItemGroups.splice(index, 1)[0]); + } + this.setState({ + itemGroups: _.map(newItemGroups, (it, idx) => ({ + ...it, + sortedIndex: idx + })) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 移動分类下的列表数据\切换薪资分类-隐藏复选框 + * Params: + * Date: 2022/12/14 + */ + handleDropCategroyItem = (filed, data) => { + const { itemGroups } = this.state; + this.setState({ + itemGroups: _.map(itemGroups, it => { + if (filed.id === it.id) { + return { ...it, items: data }; + } + return { ...it }; + }) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 薪资分类选中复选框 + * Params: + * Date: 2022/12/14 + */ + handleChangeSelectedRowKeys = (filed, data) => { + const { itemGroups } = this.state; + this.setState({ + itemGroups: _.map(itemGroups, it => { + if (filed.id === it.id) { + return { ...it, selectedRowKeys: data }; + } + return { ...it }; + }) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 薪资项目-新增项 + * Params: + * Date: 2022/12/14 + */ + handleAddSalaryItems = (id, items) => { + const { itemGroups } = this.state; + this.setState({ + itemGroups: _.map(itemGroups, it => { + if (id === it.id) { + return { ...it, items: [...it.items, ...items] }; + } + return { ...it }; + }) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + /* + * Author: 黎永顺 + * Description: 保存薪资项目公式 + * Params: + * Date: 2022/12/14 + */ + handleSaveFormnul = (id, items) => { + const { itemGroups } = this.state; + this.setState({ + itemGroups: _.map(itemGroups, it => { + if (id === it.id) { + return { ...it, items }; + } + return { ...it }; + }) + }, () => { + const { empFields, itemGroups } = this.state; + const { onSaveSalaryItem } = this.props; + onSaveSalaryItem(empFields, itemGroups); + }); + }; + + render() { + const { empFields, itemGroups } = this.state; + return ( +
+ + this.ledgerSalaryItemNormalRef = dom} + {...this.props} dataSource={itemGroups} + onSaveCategory={this.handleSaveCateGory} + onDeleteCategroy={this.handleDeleteCategroy} + onDeleteCategroyItems={this.handleDeleteCategroyItems} + onUpgo={this.handleUpgo} + onDowngo={this.handleDowngo} + onDropCategoryItem={this.handleDropCategroyItem} + onHandleItemhide={this.handleDropCategroyItem} + onChangeSelectedRowKeys={this.handleChangeSelectedRowKeys} + onAddSalaryItems={this.handleAddSalaryItems} + onSaveFormnul={this.handleSaveFormnul} + /> +
+ ); + } +} + +export default LedgerSalaryItem; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js new file mode 100644 index 00000000..0df63310 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js @@ -0,0 +1,150 @@ +import React from "react"; +import { Button, Switch } from "antd"; +import { WeaDialog, WeaInputSearch, WeaTable } from "ecCom"; +import { listSalaryItem } from "../../../apis/ledger"; + +export default class LedgerSalaryItemAddModal extends React.Component { + constructor(props) { + super(props); + this.state = { + loading: { + query: false + }, + name: "", + selectedRowKeys: [], + dataSource: [], + columns: [], + pageInfo: { + current: 1, + pageSize: 10, + total: 0 + } + }; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visivle && nextProps.visible) { + this.setState({ selectedRowKeys: [] }, () => { + this.listSalaryItem(); + }); + } + } + + listSalaryItem = () => { + const { itemGroups } = this.props; + const { name, pageInfo, loading } = this.state; + let excludeIds = []; + itemGroups.map(item => { + item.items && item.items.map(i => { + excludeIds.push(i.salaryItemId); + }); + }); + const payload = { + excludeIds, + name, + ...pageInfo + }; + this.setState({ loading: { ...loading, query: true } }); + listSalaryItem(payload).then(({ status, data }) => { + this.setState({ loading: { ...loading, query: false } }); + if (status) { + const { pageNum: current, pageSize, total, columns, list: dataSource } = data; + this.setState({ + pageInfo: { ...pageInfo, current, pageSize, total }, + dataSource, + columns + }); + } + }).catch(() => { + this.setState({ loading: { ...loading, query: false } }); + }); + }; + getSalaryItemAddColumns = () => { + const { columns } = this.state; + let newColumns = []; + newColumns = columns.map(column => { + let newColumn = column; + newColumn.render = (text, record, index) => { //前端元素转义 + let valueSpan = record[newColumn.dataIndex + "span"] !== undefined ? record[newColumn.dataIndex + "span"] : record[newColumn.dataIndex]; + switch (newColumn.dataIndex) { + case "useDefault": + case "useInEmployeeSalary": + return ; + default: + return
; + } + }; + return newColumn; + }); + return newColumns; + }; + + handleAdd = () => { + const { dataSource, selectedRowKeys } = this.state; + const { onAddSalaryItems, id, onCancel } = this.props; + let selectItems = []; + dataSource.map(item => { + item = { ...item }; + selectedRowKeys.map(key => { + if (item.id === key) { + item.salaryItemId = item.id; + item.key = item.id; + selectItems.push(item); + } + }); + }); + onCancel(); + onAddSalaryItems(id, selectItems); + }; + + render() { + const { onCancel, visible } = this.props; + const { name, selectedRowKeys, pageInfo, dataSource, loading } = this.state; + const pagination = { + ...pageInfo, + showTotal: total => `共 ${total} 条`, + showQuickJumper: true, + pageSizeOptions: ["10", "20", "50", "100"], + onChange: current => { + this.setState({ + pageInfo: { ...pageInfo, current } + }, () => { + this.listSalaryItem(); + }); + } + }; + const rowSelection = { + selectedRowKeys, + onChange: (selectedRowKeys) => { + this.setState({ selectedRowKeys }, () => { + }); + } + }; + return ( + 添加]} + > +
+ this.setState({ name })} + onSearch={() => this.listSalaryItem()} + /> +
+ +
+ ); + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js new file mode 100644 index 00000000..7d399054 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js @@ -0,0 +1,103 @@ +/* + * Author: 黎永顺 + * name: 薪资项目-员工基本信息 + * Description: + * Date: 2022/12/13 + */ +import React, { Component } from "react"; +import { WeaHelpfulTip, WeaSearchGroup, WeaSelect, WeaSortable } from "ecCom"; +import { Button, Icon } from "antd"; +import { empFieldList } from "../../../apis/ledger"; + +class LedgerSalaryItemBaseInfo extends Component { + constructor(props) { + super(props); + this.state = { + empFieldListOptions: [] + }; + } + + componentDidMount() { + this.empFieldList(); + } + + empFieldList = () => { + empFieldList().then(({ status, data }) => { + if (status) { + const dataFilter = _.filter(data, it => !["taxAgentName", "username", "departmentName"].includes(it.id)); + this.setState({ + empFieldListOptions: _.map(dataFilter, it => ({ key: it.id, showname: it.name })) + }); + } + }); + }; + + handleAddEmpList = (key, showname) => { + const { dataSource, onChangeSortableList } = this.props; + const obj = { + canDelete: true, + fieldId: key, + fieldName: showname, + id: dataSource.length, + salarySobId: "", + sortedIndex: dataSource.length + }; + onChangeSortableList([...dataSource, obj]); + }; + handleDeleteEmplist = (item) => { + const { dataSource, onChangeSortableList } = this.props; + onChangeSortableList(_.xorWith(dataSource, [item], _.isEqual)); + }; + + render() { + const { dataSource, onChangeSortableList } = this.props; + const { empFieldListOptions } = this.state; + return ( + }> +
+ { + const { fieldName, canDelete } = item; + return
+ {fieldName} + { + canDelete && + this.handleDeleteEmplist(item)} + /> + } +
; + }} + className="wea-sortable-grid-item" + /> + +
+
+ ); + } +} + +export default LedgerSalaryItemBaseInfo; +const TitleComp = () => { + return
+
+ 员工基本信息 + +
+ +
; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js new file mode 100644 index 00000000..26f9a98d --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemNormal.js @@ -0,0 +1,252 @@ +/* + * Author: 黎永顺 + * name: 薪资项目-正常薪资所得 + * Description: + * Date: 2022/12/13 + */ +import React, { Component } from "react"; +import { inject, observer } from "mobx-react"; +import { WeaButtonIcon, WeaSearchGroup } from "ecCom"; +import { Button, Modal } from "antd"; +import CategoryAddModal from "./categoryAddModal"; +import LedgerSalaryItemAddModal from "./ledgerSalaryItemAddModal"; +import LedgerSalaryItemTable from "./ledgerSalaryItemTable"; +import "./index.less"; +import FormalFormModal from "../../salaryItem/formalFormModal"; + +@inject("ledgerStore") +@observer +class LedgerSalaryItemNormal extends Component { + constructor(props) { + super(props); + this.state = { + addCategoryItemsVisible: false, + categoryModal: { + visible: false, + title: "新增分类", + name: "", + id: "" + }, + editFormulModal: { + visible: false, + formulaId: "", + valueType: "", + dataType: "" + }, + //公式保存数据 + formnulField: {}, + formnulId: "" + }; + } + + componentWillUnmount() { + this.handleResetFormnul(); + } + + handleEditFormnul = (field, record) => { + const { valueType, formulaId, dateType: dataType, id } = record; + const { editFormulModal } = this.state; + this.setState({ + editFormulModal: { + ...editFormulModal, + visible: true, + valueType, formulaId, dataType + }, + formnulField: field, + formnulId: id + }); + }; + handleSaveFormnul = (data) => { + const { onSaveFormnul } = this.props; + const { formnulField, formnulId } = this.state; + const tmpV = _.cloneDeep(formnulField.items); + const formnulData = _.map(tmpV, it => { + if (it.id === formnulId) { + return { ...it, formulaId: data.id, formulaContent: data.formula }; + } + return { ...it }; + }); + onSaveFormnul(formnulField.id, formnulData); + }; + handleAddCategory = (name = "", id = "") => { + const { categoryModal } = this.state; + this.setState({ + categoryModal: { + ...categoryModal, + visible: true, + name, + title: name ? "编辑分类" : "新增分类", + id + } + }); + }; + handleDeleteCategory = (id) => { + const { onDeleteCategroy } = this.props; + Modal.confirm({ + title: "信息确认", + content: "确认要删除吗?", + onOk: () => { + onDeleteCategroy(id); + } + }); + }; + handleDeleteCategoryItems = (id, selectedRowKeys) => { + const { onDeleteCategroyItems } = this.props; + Modal.confirm({ + title: "信息确认", + content: "确认删除所选薪资项目吗?删除后此项目下的进位规则/保留小数位/公式内容会一起被清除!", + onOk: () => { + onDeleteCategroyItems(id, selectedRowKeys); + } + }); + }; + handleUpgo = (sortedIndex) => { + const { onUpgo } = this.props; + onUpgo(sortedIndex); + }; + handleDowngo = (sortedIndex) => { + const { onDowngo } = this.props; + onDowngo(sortedIndex); + }; + handleClose = () => { + const { ledgerStore } = this.props; + const { categoryForm: form } = ledgerStore; + const { categoryModal } = this.state; + this.setState({ + categoryModal: { + ...categoryModal, + visible: false, + title: "新增分类", + name: "", + id: "" + } + }, () => form.resetForm()); + }; + handleCloseFormnul = () => { + const { editFormulModal } = this.state; + this.setState({ + editFormulModal: { + ...editFormulModal, + visible: false, + formulaId: "", + valueType: "", dataType: "" + } + }); + }; + handleResetFormnul = () => { + this.setState({ + formnulField: {}, + formnulId: "" + }); + }; + + render() { + const { + dataSource, + onSaveCategory, + onDropCategoryItem, + onHandleItemhide, + onChangeSelectedRowKeys, + onAddSalaryItems + } = this.props; + const { categoryModal, addCategoryItemsVisible, editFormulModal } = this.state; + return ( + }> +
+ { + _.map(dataSource, field => { + const { items } = field; + return this.setState({ addCategoryItemsVisible: { visible: true, id } })} + onUpgo={this.handleUpgo} + onDowngo={this.handleDowngo} + /> + } + > + onDropCategoryItem(field, data)} + onHandleItemhide={(data) => onHandleItemhide(field, data)} + onChangeSelectedRowKeys={(data) => onChangeSelectedRowKeys(field, data)} + onEditFormnul={(data) => this.handleEditFormnul(field, data)} + /> + ; + }) + } + this.setState({ addCategoryItemsVisible: { visible: false, id: "" } })} + onAddSalaryItems={onAddSalaryItems} + /> + + {/*公式编辑*/} + { + editFormulModal.visible && + + } +
+
+ ); + } +} + +export default LedgerSalaryItemNormal; +const TitleNormalComp = (props) => { + const { + name, onEditCategory, onDeleteCategory, + sortedIndex, dataSourceLen, id, onUpgo, + onDowngo, selectedRowKeys = [], onDeleteCategoryItems, + onAddCategoryItems + } = props; + return
+
+ {name} + { + name !== "未分类" && + onEditCategory(name, id)}/> + } + { + name !== "未分类" && + onDeleteCategory(id)}/> + } + { + sortedIndex !== 0 && + onUpgo(sortedIndex)}/> + } + { + sortedIndex !== dataSourceLen - 1 && + onDowngo(sortedIndex)}/> + } +
+
+ onDeleteCategoryItems(id, selectedRowKeys)}/> + onAddCategoryItems(id)}/> +
+
; +}; + +const TitleComp = (props) => { + const { onAddCategory } = props; + return
+ 正常工资薪金所得 + +
; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js new file mode 100644 index 00000000..4498a36d --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemTable.js @@ -0,0 +1,135 @@ +/* + * Author: 黎永顺 + * name: 薪资项目-列表数据 + * Description: + * Date: 2022/12/13 + */ +import React, { Component } from "react"; +import { WeaCheckbox, WeaHelpfulTip, WeaTable } from "ecCom"; + +class LedgerSalaryItemTable extends Component { + constructor(props) { + super(props); + this.state = { + selectedRowKeys: [] + }; + } + + /* + * Author: 黎永顺 + * Description: 列表操作隐藏复选框 + * Params: + * Date: 2022/12/14 + */ + handleChangeItem = (value, id) => { + const { dataSource, onHandleItemhide } = this.props; + onHandleItemhide( + _.map([...dataSource], item => { + if (id === item.id) { + return { + ...item, + itemHide: String(value) + }; + } + return { ...item }; + }) + ); + }; + handleChangeAllItem = (value) => { + const { dataSource, onHandleItemhide } = this.props; + onHandleItemhide( + _.map([...dataSource], item => { + return { + ...item, + itemHide: String(value) + }; + }) + ); + }; + + render() { + const { dataSource, onDropCategoryItem, onChangeSelectedRowKeys, onEditFormnul } = this.props; + const { selectedRowKeys } = this.state; + const rowSelection = { + selectedRowKeys, + onChange: (selectedRowKeys) => this.setState({ selectedRowKeys }, () => { + onChangeSelectedRowKeys(this.state.selectedRowKeys); + }), + getCheckboxProps: record => ({ + disabled: !record.canDelete + }) + }; + const checkValue = _.every(dataSource, it => it.itemHide && it.itemHide === "1") ? "1" : "0"; + const columns = [ + { + title: "名称", + dataIndex: "name", + key: "name" + }, + { + title: + 核算公式 + } placement="bottom" width={200}/> + , + dataIndex: "formulaContent", + key: "formulaContent", + render: (text, record) => { + if (record.canEdit) { + return ( + + onEditFormnul(record)}> {text} + + ); + } else { + return {text} ; + } + } + }, + { + title: "个税申请表对应字段", + dataIndex: "taxDeclarationColumn", + key: "taxDeclarationColumn" + }, + { + title: + this.handleChangeAllItem(value)} + /> + 隐藏 + , + dataIndex: "itemHide", + key: "itemHide", + render: (text, record) => this.handleChangeItem(value, record.id)} + /> + } + ]; + return ( + ({ + index, + moveRow: record + })} + pagination={false} + onDrop={onDropCategoryItem} + draggable={true} + /> + ); + } +} + +export default LedgerSalaryItemTable; + +const HelpContent = () => { + return + 1、新建薪资账套时,核算公式与【薪资项目管理】菜单一致;
+ 2、取值方式为公式的薪资项目,核算公式显示为具体公式;点击公式可编辑公式,核算时,按照当前薪资项目的公式进行核算;
+ 3、薪资账套内的薪资项目的公式或SQL的修改或公式的修改,都不影响【薪资项目管理】菜单的薪资项目取值方式或公式,只对当前账套生效;
+
; +}; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index 02402512..cf486f21 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -13,7 +13,8 @@ import LedgerBaseSetting from "./ledgerBaseSetting"; import LedgerAssociatedPersonnel from "./ledgerAssociatedPersonnel"; import LedgerSalaryAdjustmentRules from "./ledgerSalaryAdjustmentRules"; import LedgerBackCalculatedSalaryItem from "./ledgerBackCalculatedSalaryItem"; -import { saveAdjustmentRule, saveLedgerBasic } from "../../../apis/ledger"; +import LedgerSalaryItem from "./ledgerSalaryItem"; +import { saveAdjustmentRule, saveLedgerBasic, saveLedgerItem } from "../../../apis/ledger"; import "./index.less"; const Step = WeaSteps.Step; @@ -34,10 +35,19 @@ class LedgerSlide extends Component { current: 0, loading: false, baseSettingInfo: {}, - adjustRules: [] + adjustRules: [], + empFields: [], itemGroups: [], + saveSalarySobId: "" }; } + componentWillUnmount() { + alert(1111); + this.setState({ + saveSalarySobId: "" + }); + } + /* * Author: 黎永顺 * Description: 保存基本信息 @@ -57,13 +67,13 @@ class LedgerSlide extends Component { return false; } this.setState({ loading: true }); - saveLedgerBasic({ ...extra, description, id: editId }).then(({ status, errormsg }) => { + saveLedgerBasic({ ...extra, description, id: editId }).then(({ status, data, errormsg }) => { this.setState({ loading: false }); if (status) { const { onRefreshList } = this.props; message.success("保存成功"); onRefreshList(); - !editId && this.setState({ current: current + 1 }); + !editId && this.setState({ current: current + 1, saveSalarySobId: data }); } else { message.error(errormsg || "保存失败"); } @@ -76,9 +86,9 @@ class LedgerSlide extends Component { * Date: 2022/12/12 */ saveLedgerAdjustRule = () => { - const { adjustRules } = this.state; + const { adjustRules, saveSalarySobId } = this.state; const payload = { - salarySobId: this.props.editId, + salarySobId: this.props.editId || saveSalarySobId, ruleParams: adjustRules }; this.setState({ loading: true }); @@ -86,12 +96,37 @@ class LedgerSlide extends Component { this.setState({ loading: false }); if (status) { message.success("保存成功"); + this.handleClose(); } else { message.success(errormsg || "保存失败"); } }).catch(() => this.setState({ loading: false })); - } - ; + }; + /* + * Author: 黎永顺 + * Description: 薪资项目保存 + * Params: + * Date: 2022/12/14 + */ + saveLedgerItem = () => { + const { empFields, itemGroups, saveSalarySobId } = this.state; + const { editId: salarySobId } = this.props; + const payload = { + empFields, + itemGroups: _.filter(itemGroups, it => it.name !== "未分类"), + items: _.find(itemGroups, it => it.name === "未分类").items || [], + salarySobId: salarySobId || saveSalarySobId + }; + this.setState({ loading: true }); + saveLedgerItem(payload).then(({ status, errormsg }) => { + this.setState({ loading: false }); + if (status) { + message.success("保存成功"); + } else { + message.error(errormsg || "保存失败"); + } + }).catch(() => this.setState({ loading: false })); + }; handleChangeSlideTab = (current) => { this.setState({ current: Number(current) }); }; @@ -107,22 +142,36 @@ class LedgerSlide extends Component { handleChangeSaveParams = (baseSettingInfo) => { this.setState({ baseSettingInfo }); }; + /* + * Author: 黎永顺 + * Description: 薪资项目保存数据 + * Params: + * Date: 2022/12/14 + */ + handleSaveSalaryItemParams = (empFields, itemGroups) => { + this.setState({ empFields, itemGroups }); + }; renderChildren = () => { - const { current } = this.state; + const { current, saveSalarySobId } = this.state; let CurrentDom = null; switch (current) { case 0: CurrentDom = ; break; case 1: - CurrentDom = ; + CurrentDom = ; + break; + case 2: + CurrentDom = ; break; case 3: - CurrentDom = ; + CurrentDom = ; break; case 4: CurrentDom = - this.setState({ adjustRules })}/>; + this.setState({ adjustRules })}/>; break; default: CurrentDom = null; @@ -148,23 +197,34 @@ class LedgerSlide extends Component { break; case 1: CurrentDom = !editId ? [ - , + , ] : []; break; case 2: CurrentDom = !editId ? [ - , + , , - - ] : []; + + ] : [ + + ]; break; case 3: CurrentDom = !editId ? [ + , , - + ] : []; break; case 4: diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/config.js b/pc4mobx/hrmSalary/pages/ledgerPage/config.js index 6bd81428..b130f4f6 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/config.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/config.js @@ -27,6 +27,24 @@ export const copyConditions = [ defaultshow: true } ]; +export const categoryConditions = [ + { + items: [ + { + colSpan: 1, + conditionType: "INPUT", + domkey: ["name"], + fieldcol: 14, + rules: "required|string", + label: "名称", + labelcol: 6, + value: "", + viewAttr: 3 + } + ], + defaultshow: true + } +]; export const baseSettingFormItem = [ { key: "name", @@ -720,7 +738,7 @@ export const roundingRules = [ key: "UP_EVEN", selected: false, showname: "向上求偶" - }, + } ]; export const keepDecimalPlaces = [ { diff --git a/pc4mobx/hrmSalary/stores/ledger.js b/pc4mobx/hrmSalary/stores/ledger.js index 618cae74..848c22fb 100644 --- a/pc4mobx/hrmSalary/stores/ledger.js +++ b/pc4mobx/hrmSalary/stores/ledger.js @@ -4,12 +4,14 @@ import { WeaForm, WeaTableNew } from "comsMobx"; import * as API from "../apis/ledger"; // 引入API接口文件 import { notNull } from "../util/validate"; +import { categoryConditions } from "../pages/ledgerPage/config"; const { TableStore } = WeaTableNew; export class LedgerStore { //重构薪资账套 - @observable copyForm = new WeaForm(); // nrew 一个form + @observable copyForm = new WeaForm(); // 复制form + @observable categoryForm = new WeaForm(); // 新增分类form /*******************************************************/ From d44b5d279ddd86f7ed13973594e2ec80bf764213 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, 14 Dec 2022 19:40:05 +0800 Subject: [PATCH 25/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E9=87=8D=E6=9E=84,=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A0=B8=E7=AE=97=E9=A1=B5=E9=9D=A2=E6=B7=BB=E5=8A=A0=E5=9B=9E?= =?UTF-8?q?=E7=AE=97=E5=8A=9F=E8=83=BD=E4=BB=A5=E5=8F=8A=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=E6=B7=BB=E5=8A=A0=E8=A1=A5?= =?UTF-8?q?=E5=8F=91=E5=B7=B2=E5=8F=91tab?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/calculate.js | 11 ++ pc4mobx/hrmSalary/pages/calculate/index.js | 10 ++ .../pages/calculateDetail/editSalaryDetail.js | 143 +++++++++++------- .../calculateDetail/issuedAndReissueTable.js | 70 +++++++++ .../LedgerBackCalculatedSalaryItemTable.js | 18 ++- .../components/ledgerBackCalcEditSlide.js | 10 +- .../ledgerBackCalculatedSalaryItem.js | 2 +- .../components/ledgerBaseSetting.js | 1 + .../ledgerPage/components/ledgerSalaryItem.js | 23 ++- .../components/ledgerSalaryItemAddModal.js | 3 +- .../components/ledgerSalaryItemBaseInfo.js | 9 +- .../ledgerSalaryItemPreviewModal.js | 63 ++++++++ .../ledgerPage/components/ledgerSlide.js | 1 - .../pages/salaryItem/formalFormModal.js | 14 +- pc4mobx/hrmSalary/stores/calculate.js | 17 ++- 15 files changed, 314 insertions(+), 81 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js create mode 100644 pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js diff --git a/pc4mobx/hrmSalary/apis/calculate.js b/pc4mobx/hrmSalary/apis/calculate.js index c03ac28a..371a8763 100644 --- a/pc4mobx/hrmSalary/apis/calculate.js +++ b/pc4mobx/hrmSalary/apis/calculate.js @@ -333,6 +333,17 @@ export const fileSalaryAcct = (params) => { } }).then(res => res.json()); }; +// 薪资记录-回算 +export const backCalculate = (params) => { + return fetch("/api/bs/hrmsalary/salaryacct/backCalculate", { + method: "POST", + mode: "cors", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(params) + }).then(res => res.json()); +}; // 薪资记录-重新核算 export const reAccounting = (params) => { diff --git a/pc4mobx/hrmSalary/pages/calculate/index.js b/pc4mobx/hrmSalary/pages/calculate/index.js index ff83ab84..34bf91b0 100644 --- a/pc4mobx/hrmSalary/pages/calculate/index.js +++ b/pc4mobx/hrmSalary/pages/calculate/index.js @@ -152,6 +152,14 @@ export default class Calculate extends React.Component { }); } + // 回算 + handleBackCalculate = (record) => { + const { calculateStore: { backCalculate } } = this.props; + backCalculate(record.id).then(() => { + this.handleSearch(this.state.searchValue); + }); + }; + // 查看详情回调 handleDetail(record) { window.open( @@ -222,6 +230,8 @@ export default class Calculate extends React.Component { this.handleReaccount(record); } else if (cz.text == "查看") { this.handleDetail(record); + } else if (cz.text == "回算") { + this.handleBackCalculate(record); } }}> {cz.text} diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js index 385fa87b..e268ac5f 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js @@ -1,13 +1,22 @@ import React from "react"; -import { WeaHelpfulTip, WeaInput } from "ecCom"; +import { WeaHelpfulTip, WeaInput, WeaTab } from "ecCom"; +import IssuedAndReissueTable from "./issuedAndReissueTable"; import { Col, Row } from "antd"; import { inject, observer } from "mobx-react"; +import { toJS } from "mobx"; import cs from "classnames"; import "./index.less"; @inject("calculateStore") @observer export default class EditSalaryDetail extends React.Component { + constructor(props) { + super(props); + this.state = { + selectedKey: "0" + }; + } + componentWillMount() { const { calculateStore: { acctresultDetail } } = this.props; acctresultDetail(this.props.id); @@ -62,6 +71,17 @@ export default class EditSalaryDetail extends React.Component { render() { const { calculateStore: { acctresultDetailForm } } = this.props; + const { selectedKey } = this.state; + const topTab = [ + { + title: "正常工资薪金所得", + viewcondition: "0" + }, + { + title: "已发补发", + viewcondition: "1" + } + ]; return (
@@ -84,39 +104,45 @@ export default class EditSalaryDetail extends React.Component { }
- -
-
- 输入项 -
- - { - acctresultDetailForm.inputItems && acctresultDetailForm.inputItems.map((item, index) => { - const len = acctresultDetailForm.inputItems.length; - return ( - - - {item.salaryItemName} - { - this.handleItemValueChange(item.salaryItemName, value, true); - }}/> - - - ); - }) - } - + { + !_.isEmpty(toJS(acctresultDetailForm.issuedAndReissueItems)) && + this.setState({ selectedKey: v })} + /> + } + { + selectedKey === "0" && +
+
+ 输入项 +
+ + { + acctresultDetailForm.inputItems && acctresultDetailForm.inputItems.map((item, index) => { + const len = acctresultDetailForm.inputItems.length; + return ( + + + {item.salaryItemName} + { + this.handleItemValueChange(item.salaryItemName, value, true); + }}/> + + + ); + }) + } + +
-
-
- - -
-
+
公式项 -
- - { - acctresultDetailForm.formulaItems && acctresultDetailForm.formulaItems.map((item, index) => { - const len = acctresultDetailForm.formulaItems.length; - return ( - - - {item.salaryItemName} - { - this.handleItemValueChange(item.salaryItemName, value, false); - }}/> - - - ); - }) - } - +
+ + { + acctresultDetailForm.formulaItems && acctresultDetailForm.formulaItems.map((item, index) => { + const len = acctresultDetailForm.formulaItems.length; + return ( + + + {item.salaryItemName} + { + this.handleItemValueChange(item.salaryItemName, value, false); + }}/> + + + ); + }) + } + +
-
+ } + { + selectedKey === "1" && + + }
); } diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js new file mode 100644 index 00000000..ddeea850 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js @@ -0,0 +1,70 @@ +/* + * Author: 黎永顺 + * name: 已发补发列表 + * Description: + * Date: 2022/12/14 + */ +import React, { Component } from "react"; +import { WeaHelpfulTip, WeaInputNumber, WeaTable } from "ecCom"; + +class IssuedAndReissueTable extends Component { + render() { + const { dataSource } = this.props; + const columns = [ + { + dataIndex: "salaryItemName", + title: "薪资项目", + render: (text) => { + return {text}; + } + }, + { + dataIndex: "resultValue", + title: + 项目值 + + , + render: (text, record) => { + const { canEdit } = record; + return { + console.log(value); + }} + />; + } + }, + { + dataIndex: "salaryBackItemFormula", + title: + 核算公式 + + , + render: (text, record) => { + return {_.isNil(text) ? "输入" : text}; + } + } + ]; + return ( + + ); + } +} + +export default IssuedAndReissueTable; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js index 5fa8bfdd..3788b5f9 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/LedgerBackCalculatedSalaryItemTable.js @@ -19,20 +19,22 @@ class LedgerBackCalculatedSalaryItemTable extends Component { visible: false, title: "编辑薪资项目", id: "", - salaryItemId: "" + salaryItemId: "", + backCalcType: "" } }; } handleEditBackCalc = (record) => { - const { id, salaryItemId } = record; + const { id, salaryItemId, backCalcType } = record; const { backCalcEditSlide } = this.state; this.setState({ backCalcEditSlide: { ...backCalcEditSlide, visible: true, id, - salaryItemId + salaryItemId, + backCalcType } }); }; @@ -44,7 +46,8 @@ class LedgerBackCalculatedSalaryItemTable extends Component { ...backCalcEditSlide, visible: false, id: "", - salaryItemId: "" + salaryItemId: "", + backCalcType: "" } }, () => { isRefresh && onRefresh(); @@ -53,7 +56,7 @@ class LedgerBackCalculatedSalaryItemTable extends Component { render() { const { backCalcEditSlide } = this.state; - const { taxAgentStore: { showOperateBtn }, dataSource, editId } = this.props; + const { taxAgentStore: { showOperateBtn }, dataSource, editId, saveSalarySobId, key } = this.props; const columns = [ { dataIndex: "name", @@ -76,7 +79,8 @@ class LedgerBackCalculatedSalaryItemTable extends Component { render: (text, record, index) => { const { canEdit } = record; return (showOperateBtn && canEdit) ? - this.handleEditBackCalc(record)}>编辑 : ; + this.handleEditBackCalc(record)}>编辑 : + ; } } ]; @@ -90,7 +94,7 @@ class LedgerBackCalculatedSalaryItemTable extends Component { /> diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js index f6f13e6b..6386dbff 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js @@ -27,7 +27,8 @@ class LedgerBackCalcEditSlide extends Component { backCalcEditFormulModal: { visible: false, valueType: "", - dataType: "" + dataType: "", + backCalcType: "" } }; } @@ -72,13 +73,15 @@ class LedgerBackCalcEditSlide extends Component { }).catch(() => this.setState({ loading: false })); }; handleEditFormnul = () => { + const { backCalcType } = this.props; const { backCalcEditFormulModal, valueType, dataType } = this.state; this.setState({ backCalcEditFormulModal: { ...backCalcEditFormulModal, visible: true, valueType, - dataType: _.lowerCase(dataType) + dataType: _.lowerCase(dataType), + backCalcType } }); }; @@ -89,7 +92,8 @@ class LedgerBackCalcEditSlide extends Component { ...backCalcEditFormulModal, visible: false, valueType: "", - dataType: "" + dataType: "", + backCalcType: "" } }); }; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js index 6d39fd12..80764a70 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalculatedSalaryItem.js @@ -77,7 +77,7 @@ class LedgerBackCalculatedSalaryItem extends Component { > ); }) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js index 29f4af17..538a1b92 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js @@ -11,6 +11,7 @@ import { inject, observer } from "mobx-react"; import { baseSettingFormItem } from "../config"; import { getLedgerBasicForm } from "../../../apis/ledger"; import { getAddMonthYearMonth, getCurrentYearMonth, getSubtractMonthYearMonth } from "../../../util/date"; +import moment from "moment"; import "./index.less"; @inject("taxAgentStore") diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js index 45bd3000..6af6af3a 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js @@ -7,6 +7,7 @@ import React, { Component } from "react"; import LedgerSalaryItemBaseInfo from "./ledgerSalaryItemBaseInfo"; import LedgerSalaryItemNormal from "./ledgerSalaryItemNormal"; +import LedgerSalaryItemPreviewModal from "./ledgerSalaryItemPreviewModal"; import { getLedgerItemForm } from "../../../apis/ledger"; import "./index.less"; @@ -14,6 +15,7 @@ class LedgerSalaryItem extends Component { constructor(props) { super(props); this.state = { + previewVisible: false, //预览标识 empFields: [], //员工基本信息 itemGroups: [] //正常工资薪金所得项 }; @@ -125,7 +127,8 @@ class LedgerSalaryItem extends Component { if (item.id === id) { return { ...item, - items: _.filter(item.items, it => !selectedRowKeys.includes(it.id)) + items: _.filter(item.items, it => !selectedRowKeys.includes(it.id)), + selectedRowKeys: [] }; } return { ...item }; @@ -271,13 +274,29 @@ class LedgerSalaryItem extends Component { }); }; + /* + * Author: 黎永顺 + * Description: 员工基本信息-预览 + * Params: + * Date: 2022/12/14 + */ + handlePreview = () => { + this.setState({ previewVisible: true }); + }; + render() { - const { empFields, itemGroups } = this.state; + const { empFields, itemGroups, previewVisible } = this.state; return (
+ this.setState({ previewVisible: false })} /> this.ledgerSalaryItemNormalRef = dom} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js index 0df63310..d669d295 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemAddModal.js @@ -83,12 +83,13 @@ export default class LedgerSalaryItemAddModal extends React.Component { const { dataSource, selectedRowKeys } = this.state; const { onAddSalaryItems, id, onCancel } = this.props; let selectItems = []; - dataSource.map(item => { + dataSource.map((item, index) => { item = { ...item }; selectedRowKeys.map(key => { if (item.id === key) { item.salaryItemId = item.id; item.key = item.id; + item.sortedIndex = index; selectItems.push(item); } }); diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js index 7d399054..6961ded8 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemBaseInfo.js @@ -50,10 +50,10 @@ class LedgerSalaryItemBaseInfo extends Component { }; render() { - const { dataSource, onChangeSortableList } = this.props; + const { dataSource, onChangeSortableList, onPreview } = this.props; const { empFieldListOptions } = this.state; return ( - }> + }>
{ +const TitleComp = (props) => { + const { onPreview } = props; return
员工基本信息 @@ -98,6 +99,6 @@ const TitleComp = () => { placement="topLeft" />
- +
; }; diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js new file mode 100644 index 00000000..281d2257 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItemPreviewModal.js @@ -0,0 +1,63 @@ +import React from "react"; +import { WeaDialog, WeaTable } from "ecCom"; + +export default class LedgerSalaryItemPreviewModal extends React.Component { + getColumns = () => { + const { empFields, itemGroups } = this.props; + let columns = []; + let length = 0; + empFields.map(item => { + columns.push({ + title: item.fieldName, + key: item.fieldId, + width: 150 + }); + length++; + }); + + itemGroups.map(item => { + if (item.id !== "default") { + let columnItem = { + title: item.name, + children: item.items.map(i => { + return { + title: i.name, + key: i.id, + width: 150 + }; + length++; + }) + }; + columns.push(columnItem); + } + }); + + itemGroups.map(item => { + if (item.id === "default") { + item.items.map(i => { + columns.push({ + title: i.name, + key: i.id, + width: 150 + }); + length++; + }); + } + }); + return { columns, length }; + }; + + render() { + const { onCancel, visible } = this.props; + return ( + + + + ); + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js index cf486f21..09b1f1cc 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSlide.js @@ -42,7 +42,6 @@ class LedgerSlide extends Component { } componentWillUnmount() { - alert(1111); this.setState({ saveSalarySobId: "" }); diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js index 92de743a..5d1d327c 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js @@ -10,6 +10,8 @@ export default class FormalFormModal extends React.Component { constructor(props) { super(props); this.state = { + returnType: "", + validateType: "", value: "", extendParam: { sqlReturnKey: "", @@ -35,7 +37,9 @@ export default class FormalFormModal extends React.Component { if (this.props.formulaId) { detailFormual(this.props.formulaId).then(data => { this.setState({ - value: data.formula + value: data.formula, + returnType: data.returnType, + validateType: data.validateType }); this.parameters = data.parameters; this.referenceType = data.referenceType; @@ -68,8 +72,8 @@ export default class FormalFormModal extends React.Component { if (this.props.valueType == "3") { groupParams = { "referenceType": "sql" }; } else if (this.props.valueType === "FORMULA") { - groupParams = { "referenceType": "backCalc" }; - this.referenceType = "backCalc"; + groupParams = this.props.backCalcType === "issuedItems" ? { "referenceType": "backCalc" } : {}; + this.referenceType = "formula"; this.setState({ value: this.props.formulaContent }); @@ -191,8 +195,8 @@ export default class FormalFormModal extends React.Component { description: "备注", module: "salary", useFor: "salaryitem", - returnType: this.props.dataType, - validateType: this.props.dataType, + returnType: this.props.dataType || this.state.returnType, + validateType: this.props.dataType || this.state.returnType, extendParam: JSON.stringify(this.state.extendParam), formula: this.state.value, parameters: this.parameters, diff --git a/pc4mobx/hrmSalary/stores/calculate.js b/pc4mobx/hrmSalary/stores/calculate.js index c1f420ff..63b5b235 100644 --- a/pc4mobx/hrmSalary/stores/calculate.js +++ b/pc4mobx/hrmSalary/stores/calculate.js @@ -3,6 +3,7 @@ import { message } from "antd"; import { WeaForm, WeaTableNew } from "comsMobx"; import * as API from "../apis/calculate"; +import { backCalculate } from "../apis/calculate"; const { TableStore } = WeaTableNew; @@ -466,7 +467,21 @@ export class calculateStore { } }); }); - + }; + // 薪资记录-回算 + @action + backCalculate = (salaryAcctRecordId) => { + return new Promise((resolve, reject) => { + API.backCalculate({ salaryAcctRecordId }).then(res => { + if (res.status) { + message.success("回算成功"); + resolve(); + } else { + message.error(res.errormsg || "回算失败"); + reject(); + } + }); + }); }; // 薪资结果-编辑表单保存 From 11120294d9802f76847c0526f4a260dd0dbcd066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 15 Dec 2022 10:07:05 +0800 Subject: [PATCH 26/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- .../pages/calculateDetail/editSalaryDetail.js | 30 +++++++++++++------ .../calculateDetail/issuedAndReissueTable.js | 6 ++-- .../pages/calculateDetail/salaryDetail.js | 2 +- .../components/ledgerBackCalcEditSlide.js | 12 +++++--- .../pages/salaryItem/formalFormModal.js | 2 ++ pc4mobx/hrmSalary/stores/calculate.js | 9 +++++- 6 files changed, 42 insertions(+), 19 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js index e268ac5f..075c55a1 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/editSalaryDetail.js @@ -22,28 +22,37 @@ export default class EditSalaryDetail extends React.Component { acctresultDetail(this.props.id); } - handleItemValueChange(field, value, isInput) { + handleItemValueChange = (field, value, isInput) => { + console.log(field, value, isInput); const { calculateStore: { acctresultDetailForm, setAcctresultDetailForm } } = this.props; let form = { ...acctresultDetailForm }; - if (isInput) { + if (isInput === "inputItems") { form.inputItems = acctresultDetailForm.inputItems.map(item => { item = { ...item }; - if (item.salaryItemName == field) { + if (item.salaryItemName === field) { item.resultValue = value; } return item; }); - } else { + } else if (isInput === "formulaItems") { form.formulaItems = acctresultDetailForm.formulaItems.map(item => { item = { ...item }; - if (item.salaryItemName == field) { + if (item.salaryItemName === field) { + item.resultValue = value; + } + return item; + }); + } else if (isInput === "issuedAndReissueItems") { + form.issuedAndReissueItems = acctresultDetailForm.issuedAndReissueItems.map(item => { + item = { ...item }; + if (item.salaryItemName === field) { item.resultValue = value; } return item; }); } setAcctresultDetailForm(form); - } + }; renderTableTr = (data, isInput) => { const tables = []; @@ -132,7 +141,7 @@ export default class EditSalaryDetail extends React.Component { "borderB-none": Math.ceil((index + 1) / 3) === len / 3, "borderR-none": (index + 1) % 3 === 0 })}> { - this.handleItemValueChange(item.salaryItemName, value, true); + this.handleItemValueChange(item.salaryItemName, value, "inputItems"); }}/> @@ -166,7 +175,7 @@ export default class EditSalaryDetail extends React.Component { "borderB-none": Math.ceil((index + 1) / 3) === len / 3, "borderR-none": (index + 1) % 3 === 0 })}> { - this.handleItemValueChange(item.salaryItemName, value, false); + this.handleItemValueChange(item.salaryItemName, value, "formulaItems"); }}/> @@ -180,7 +189,10 @@ export default class EditSalaryDetail extends React.Component { } { selectedKey === "1" && - + }
); diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js index ddeea850..ff82bad7 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js @@ -9,7 +9,7 @@ import { WeaHelpfulTip, WeaInputNumber, WeaTable } from "ecCom"; class IssuedAndReissueTable extends Component { render() { - const { dataSource } = this.props; + const { dataSource, onChangeIssueReissueValue } = this.props; const columns = [ { dataIndex: "salaryItemName", @@ -35,9 +35,7 @@ class IssuedAndReissueTable extends Component { min={0} precision={2} value={text || 0} - onChange={(value) => { - console.log(value); - }} + onChange={(value) => onChangeIssueReissueValue(record.salaryItemName, value, "issuedAndReissueItems")} />; } }, diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js index a7791cba..91cf2263 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js @@ -266,7 +266,7 @@ export default class SalaryDetail extends React.Component { measure={"%"} title={ this.handleEditSlideSave()} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js index 6386dbff..b427977f 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBackCalcEditSlide.js @@ -24,11 +24,13 @@ class LedgerBackCalcEditSlide extends Component { roundingMode: "", valueType: "", salaryItem: [], + formulaId: "", backCalcEditFormulModal: { visible: false, valueType: "", dataType: "", - backCalcType: "" + backCalcType: "", + formulaId: "" } }; } @@ -74,14 +76,15 @@ class LedgerBackCalcEditSlide extends Component { }; handleEditFormnul = () => { const { backCalcType } = this.props; - const { backCalcEditFormulModal, valueType, dataType } = this.state; + const { backCalcEditFormulModal, valueType, dataType, formulaId } = this.state; this.setState({ backCalcEditFormulModal: { ...backCalcEditFormulModal, visible: true, valueType, dataType: _.lowerCase(dataType), - backCalcType + backCalcType, + formulaId } }); }; @@ -93,7 +96,8 @@ class LedgerBackCalcEditSlide extends Component { visible: false, valueType: "", dataType: "", - backCalcType: "" + backCalcType: "", + formulaId: "" } }); }; diff --git a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js index 5d1d327c..f521f909 100644 --- a/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js +++ b/pc4mobx/hrmSalary/pages/salaryItem/formalFormModal.js @@ -64,6 +64,8 @@ export default class FormalFormModal extends React.Component { let groupParams = {}; if (this.referenceType == "sql") { groupParams = { "referenceType": "sql" }; + }else{ + groupParams = this.props.backCalcType === "issuedItems" ? { "referenceType": "backCalc" } : {}; } salaryAcctImportTemplateParam(groupParams); }); diff --git a/pc4mobx/hrmSalary/stores/calculate.js b/pc4mobx/hrmSalary/stores/calculate.js index 63b5b235..3b7c9820 100644 --- a/pc4mobx/hrmSalary/stores/calculate.js +++ b/pc4mobx/hrmSalary/stores/calculate.js @@ -501,7 +501,14 @@ export class calculateStore { return record; }); - let items = inputItems.concat(formulaItems); + let issuedAndReissueItems = this.acctresultDetailForm.issuedAndReissueItems.map(item => { + let record = {}; + record.salaryItemId = item.salaryItemId; + record.resultValue = item.resultValue; + return record; + }); + + let items = inputItems.concat(formulaItems).concat(issuedAndReissueItems); let params = { salaryAcctEmpId: recordId, items From 78b8d796f069b4e52294a047218f74be3766cccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 15 Dec 2022 11:59:45 +0800 Subject: [PATCH 27/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=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 --- pc4mobx/hrmSalary/pages/calculate/index.js | 25 +++++++++++++++---- pc4mobx/hrmSalary/pages/calculate/index.less | 16 ++++++++++++ .../components/ledgerAssociatedPersonnel.js | 2 +- .../hrmSalary/pages/payroll/SalarySendList.js | 23 +++++++++++++---- 4 files changed, 55 insertions(+), 11 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculate/index.js b/pc4mobx/hrmSalary/pages/calculate/index.js index 34bf91b0..d1f23346 100644 --- a/pc4mobx/hrmSalary/pages/calculate/index.js +++ b/pc4mobx/hrmSalary/pages/calculate/index.js @@ -1,15 +1,15 @@ import React from "react"; import { inject, observer } from "mobx-react"; -import { Button, DatePicker, Dropdown, Menu, message, Modal } from "antd"; +import { Button, DatePicker, Dropdown, Menu, message, Modal, Tag } from "antd"; import { WeaInputSearch, WeaTop } from "ecCom"; import { renderNoright } from "../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 import CustomTab from "../../components/customTab"; - import { columns } from "./columns"; import moment from "moment"; import BaseFormModal from "./baseFormModal"; import CustomPaginationTable from "../../components/customPaginationTable"; import ProgressModal from "../../components/progressModal"; +import "./index.less"; const MonthPicker = DatePicker.MonthPicker; @@ -169,13 +169,28 @@ export default class Calculate extends React.Component { } // 获取列表 - getColumns() { + getColumns = () => { const { calculateStore: { salaryListColumns }, taxAgentStore: { showOperateBtn } } = this.props; - let columns = [...salaryListColumns]; + let columns = [...salaryListColumns].filter(item => item.dataIndex !== "backCalcStatus" && item.dataIndex !== "acctTimes"); columns.map(item => { + if (item.dataIndex === "salarySobName") { + item.width = 300; + item.render = (text, record) => { + return
+ {text} +
+ { + record.backCalcStatus === 1 && + + } + {`第${record.acctTimes}次`} +
+
; + }; + } if (item.title == "操作" && showOperateBtn) { item.render = (text, record) => { const accountBtn = _.filter( @@ -252,7 +267,7 @@ export default class Calculate extends React.Component { } }); return showOperateBtn ? columns : _.filter(columns, it => it.title != "操作"); - } + }; // 分页 handleDataPageChange(value) { diff --git a/pc4mobx/hrmSalary/pages/calculate/index.less b/pc4mobx/hrmSalary/pages/calculate/index.less index 1a510f08..59c90584 100644 --- a/pc4mobx/hrmSalary/pages/calculate/index.less +++ b/pc4mobx/hrmSalary/pages/calculate/index.less @@ -13,3 +13,19 @@ } } } + +.salarySobNameWrapper{ + display: flex; + align-items: center; + justify-content: space-between; + width: 100%; + .salarySobNameTagWrapper{ + display: flex; + align-items: center; + i{ + color: #5d9cec; + margin-right: 10px; + cursor: pointer; + } + } +} diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js index 5aa85886..f77d31fa 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerAssociatedPersonnel.js @@ -140,7 +140,7 @@ class LedgerAssociatedPersonnel extends Component { {...personalAddModal} APISaveFox={APISaveFox} isTaxgent={false} - saveKeyVal={{ key: "salarySobId", value: editId }} + saveKeyVal={{ key: "salarySobId", value: editId || saveSalarySobId }} onSuccess={() => this.personalScopeTableRef.getPersonalScopeList()} onCancel={() => this.setState({ diff --git a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js index 8839fdbd..060feaf6 100644 --- a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js +++ b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js @@ -1,8 +1,9 @@ import React from "react"; import { inject, observer } from "mobx-react"; -import { message } from "antd"; +import { message, Tag } from "antd"; import moment from "moment"; import CustomPaginationTable from "../../components/customPaginationTable"; +import "../calculate/index.less"; @inject("payrollStore", "taxAgentStore") @observer @@ -49,10 +50,8 @@ export default class SalarySendList extends React.Component { getColumns = () => { const { payrollStore: { salarySendTableStore }, taxAgentStore: { showOperateBtn } } = this.props; const { columns } = salarySendTableStore; - if (!columns) { - return []; - } - let result = columns.filter(item => item.hide === "false"); + if (!columns) return []; + let result = columns.filter(item => (item.hide === "false" && item.dataIndex !== "acctTimes")); result.map(item => { if (item.dataIndex === "salaryYearMonth") { item.render = (text, record) => { @@ -70,6 +69,20 @@ export default class SalarySendList extends React.Component { ); }; + } else if (item.dataIndex === "salarySob") { + item.width = 300; + item.render = (text, record) => { + return
+ {text} +
+ { + record.sendStatus === 1 && + 补发 + } + {`第${record.acctTimes}次`} +
+
; + }; } }); showOperateBtn From 47bc638cdb590e88521a0915b4a68ec356dda85a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Thu, 15 Dec 2022 16:21:56 +0800 Subject: [PATCH 28/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E6=A0=B8=E7=AE=97?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/calculate/index.js | 27 +++------- pc4mobx/hrmSalary/pages/payrollFiles/index.js | 50 ++++++++++++++++--- 2 files changed, 51 insertions(+), 26 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculate/index.js b/pc4mobx/hrmSalary/pages/calculate/index.js index d1f23346..3ac81ef4 100644 --- a/pc4mobx/hrmSalary/pages/calculate/index.js +++ b/pc4mobx/hrmSalary/pages/calculate/index.js @@ -4,7 +4,6 @@ import { Button, DatePicker, Dropdown, Menu, message, Modal, Tag } from "antd"; import { WeaInputSearch, WeaTop } from "ecCom"; import { renderNoright } from "../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中 import CustomTab from "../../components/customTab"; -import { columns } from "./columns"; import moment from "moment"; import BaseFormModal from "./baseFormModal"; import CustomPaginationTable from "../../components/customPaginationTable"; @@ -26,25 +25,7 @@ export default class Calculate extends React.Component { searchValue: "", startDate: moment(new Date()).startOf("year").format("YYYY-MM"), endDate: moment(new Date()).startOf("month").format("YYYY-MM"), - current: 1, - columns: columns.map(item => { - if (item.dataIndex == "cz") { - item.render = () => - ; - } - }) + current: 1 }; this.pageInfo = { current: 1, pageSize: 10 }; } @@ -141,6 +122,12 @@ export default class Calculate extends React.Component { message.success("归档成功"); this.handleSearch(this.state.searchValue); }); + }).catch(() => { + clearInterval(this.timer); + this.setState({ + progressVisible: false, + progress: 0 + }); }); } diff --git a/pc4mobx/hrmSalary/pages/payrollFiles/index.js b/pc4mobx/hrmSalary/pages/payrollFiles/index.js index 2d87d3da..7373b6da 100644 --- a/pc4mobx/hrmSalary/pages/payrollFiles/index.js +++ b/pc4mobx/hrmSalary/pages/payrollFiles/index.js @@ -14,13 +14,13 @@ import { WeaFormItem, WeaHelpfulTip, WeaInput, + WeaPopoverHrm, WeaSearchGroup, WeaSelect, WeaSlideModal, WeaTab, WeaTable, - WeaTop, - WeaPopoverHrm + WeaTop } from "ecCom"; import { WeaTableNew } from "comsMobx"; import { Button, Dropdown, Menu, message, Modal, Popover } from "antd"; @@ -230,8 +230,6 @@ class Index extends Component { } else { message.error(errormsg || "操作失败!"); } - }).catch(err => { - console.log(err); }); } }); @@ -289,6 +287,33 @@ class Index extends Component { } }); }; + handleClick = ({ key }) => { + const { selectedRowKeys } = this.state; + if (selectedRowKeys.length === 0) { + message.warning("请选择表格数据"); + return; + } + if (key === "batchDelete") { + this.deletePendingTodo(selectedRowKeys); + } else { + API.gotoFixed(selectedRowKeys).then(({ status, data, errormsg }) => { + if (status) { + if (data.type === "success") { + message.success("操作成功!"); + this.setState({ + selectedRowKeys: [] + }, () => { + this.query(); + }); + } else { + message.info(data.msg); + } + } else { + message.error(errormsg || "操作失败!"); + } + }); + } + }; getRightOptionBtns = () => { const { selectedKey, importType, selectedRowKeys, searchItemsValue, pageInfo } = this.state; const { taxAgentStore: { showOperateBtn } } = this.props; @@ -304,7 +329,20 @@ class Index extends Component { verticalAlign: "middle" }}/> , - + , + + 批量设为发薪员工 + 批量删除待办 + + } + > + + ]; } else if (selectedKey === "fixed" && showOperateBtn) { return [ @@ -427,7 +465,7 @@ class Index extends Component { ; } }; - }else if (item.dataIndex === "operate") { + } else if (item.dataIndex === "operate") { return { ...item, fixed: "right", From 9b6c8ed544dfd0fd93a864d444a8a7b79a0dc57b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 10:47:59 +0800 Subject: [PATCH 29/38] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=E7=9A=84?= =?UTF-8?q?=E8=A1=A5=E7=BC=B4=E6=B7=BB=E5=8A=A0=E7=BC=96=E8=BE=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/welfareArchive.js | 6 +- .../socialSecurityBenefits/archives/index.js | 23 ++- .../standingBook/index.js | 56 ++++--- .../standingBookDetail/components/index.less | 8 + .../standingBookDetail/components/normal.js | 139 +++++++++++++----- 5 files changed, 170 insertions(+), 62 deletions(-) diff --git a/pc4mobx/hrmSalary/apis/welfareArchive.js b/pc4mobx/hrmSalary/apis/welfareArchive.js index 5c1a1b48..974ed260 100644 --- a/pc4mobx/hrmSalary/apis/welfareArchive.js +++ b/pc4mobx/hrmSalary/apis/welfareArchive.js @@ -17,10 +17,14 @@ export const queryList = (params) => { export const queryInsuranceTabTotal = (params) => { return WeaTools.callApi('/api/bs/hrmsalary/archives/queryInsuranceTabTotal', params); }; -//删除待办 +//删除待办-待增员 export const updateRunStatus = (params) => { return postFetch('/api/bs/hrmsalary/archives/updateRunStatus', params); }; +//删除待办-待减员 +export const cancelStayDel = (params) => { + return postFetch('/api/bs/hrmsalary/archives/cancelStayDel', params); +}; //全量增员 export const allStayAddToPay = (params) => { return WeaTools.callApi('/api/bs/hrmsalary/archives/allStayAddToPay', 'GET', params); diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js index d574bacb..7f451cbf 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js @@ -174,17 +174,17 @@ export default class Archives extends React.Component { placement="bottomRight" content={ { if (key === "stopSalary") { - Modal.warning({ + Modal.confirm({ title: "信息确认", content: `确定要删除该条待办人员吗?`, - onOk: () => this.deleteTodoList({ runStatus: "5", ids: [record.baseInfo] }) + onOk: () => this.cancelStayDel({ runStatus: "3", ids: [record.baseInfo] }) }); } else { this.stayDelToStop([record.baseInfo]); } }}> 减员 - {/*删除待办*/} + 删除待办 } title=""> @@ -401,6 +401,8 @@ export default class Archives extends React.Component { case "suspend": if (key === "1") { this.stayDelToStop(selectedRowKeys); + } else if (key === "2") { + this.cancelStayDel({ runStatus: "3", ids: selectedRowKeys }); } break; default: @@ -454,7 +456,7 @@ export default class Archives extends React.Component { } }); }; - //删除待办 + //删除待办-待增员 deleteTodoList = (payload) => { API.updateRunStatus(payload).then(({ status, errormsg }) => { if (status) { @@ -466,6 +468,18 @@ export default class Archives extends React.Component { } }); }; + //删除待办-待减员 + cancelStayDel = (payload) => { + API.cancelStayDel(payload).then(({ status, errormsg }) => { + if (status) { + message.success("操作成功"); + this.query(); + this.onSelectChange([]); + } else { + message.error(errormsg || "操作失败"); + } + }); + }; getTipChildren = () => { const { selectedKey } = this.state; @@ -649,6 +663,7 @@ export default class Archives extends React.Component { overlay={ 批量减员 + 批量删除待办 } type="primary" diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBook/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBook/index.js index d8cb4cf3..baf15d91 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBook/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBook/index.js @@ -9,6 +9,7 @@ import CustomPaginationTable from "../../../components/customPaginationTable"; import moment from "moment"; import _ from "lodash"; import ProgressModal from "../../../components/progressModal"; +import { getCalculateProgress } from "../../../apis/calculate"; import "./index.less"; const MonthPicker = DatePicker.MonthPicker; @@ -318,39 +319,54 @@ export default class StandingBook extends React.Component { break; } }; - handleOk = (formVal) => { + handleOk = async (formVal) => { const { save } = this.props.standingBookStore; const { billMonth, ...extra } = formVal; const payload = { billMonth: moment(billMonth).format("YYYY-MM"), ...extra }; - save(payload).then(({ data }) => { - this.setState({ - progressVisible: true - }, () => { - this.timer = setInterval(() => { - if (this.state.progress !== 100) { - this.setState({ - progress: this.state.progress + 10 - }); + const { data: saveData } = await save(payload); + this.setState({ + progressVisible: true + }, () => { + this.timer = setInterval(() => { + getCalculateProgress(moment(billMonth).format("YYYY-MM")).then(({ status, data }) => { + if (status) { + if (this.state.progress !== 100) { + this.setState({ + progress: (Number(data.progress).toFixed(2)) * 100 + }); + } else { + clearInterval(this.timer); + this.setState({ + progressVisible: false, + progress: 0 + }, () => { + message.success("核算成功"); + this.handleClose(); + this.getCommonList({ + ...this.state.tableParams, + current: this.state.current + }); + this.handleGoDetail(moment(billMonth).format("YYYY-MM"), "", extra.paymentOrganization ? extra.paymentOrganization : "", saveData); + }); + } } else { clearInterval(this.timer); this.setState({ progressVisible: false, progress: 0 - }, () => { - message.success("核算成功"); - this.handleClose(); - this.getCommonList({ - ...this.state.tableParams, - current: this.state.current - }); - this.handleGoDetail(moment(billMonth).format("YYYY-MM"), "", extra.paymentOrganization ? extra.paymentOrganization : "", data); }); } - }, 1000); - }); + }).catch(() => { + clearInterval(this.timer); + this.setState({ + progressVisible: false, + progress: 0 + }); + }); + }, 600); }); }; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less index c3f0ab99..84b963f0 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less @@ -37,6 +37,14 @@ margin-right: 0px; } } + + .tdEllipsis { + display: inline-block; + width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } } //退差 diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js index 5892b500..aab96473 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js @@ -14,8 +14,10 @@ import { getQueryString } from "../../../../util/url"; import ProgressModal from "../../../../components/progressModal"; import AcctResultImportModal from "../../../calculateDetail/acctResult/importModal/acctResultImportModal"; import AdjustmentSlide from "./adjustmentSlide"; +import { getCalculateProgress } from "../../../../apis/calculate"; import _ from "lodash"; import "./index.less"; +import RegEditDetial from "./regEditDetial"; @inject("standingBookStore") @observer @@ -46,6 +48,11 @@ export default class NormalIndex extends Component { fieldData: {}, //选中的表单头信息 importParams: { //导入信息的弹框表示 visible: false + }, + returnEditPersonSlide: { + title: "", + editId: "", + visible: false } }; this.timer = null; @@ -192,7 +199,6 @@ export default class NormalIndex extends Component { ...it, width: 150, fixed: "left", - render: (text, r) => { const { userName, employeeId } = r; return ( @@ -362,40 +368,52 @@ export default class NormalIndex extends Component { handleCommonAccountClick() { const { billMonth, selectedKey, paymentOrganization } = this.props; const { commonAccount } = this.props.standingBookStore; - commonAccount({ - billMonth, - paymentOrganization, - includes: [] - }).then(() => { - this.setState({ - progressVisible: true - }, () => { - this.timer = setInterval(() => { - if (this.state.progress !== 100) { - this.setState({ - progress: this.state.progress + 10 - }); + commonAccount({ billMonth, paymentOrganization, includes: [] }); + this.setState({ + progressVisible: true + }, () => { + this.timer = setInterval(() => { + getCalculateProgress(billMonth).then(({ status, data }) => { + if (status) { + if (this.state.progress !== 100) { + this.setState({ + progress: (Number(data.progress).toFixed(2)) * 100 + }); + } else { + clearInterval(this.timer); + this.setState({ + progressVisible: false, + progress: 0 + }, () => { + message.success("核算成功"); + selectedKey === "1" + ? this.getNormalList({ + billMonth, + paymentOrganization, + current: this.state.current + }) + : this.getSupplementaryList({ + billMonth, + paymentOrganization, + current: this.state.current + }); + }); + } } else { clearInterval(this.timer); - message.success("核算成功"); this.setState({ progressVisible: false, progress: 0 }); - selectedKey === "1" - ? this.getNormalList({ - billMonth, - paymentOrganization, - current: this.state.current - }) - : this.getSupplementaryList({ - billMonth, - paymentOrganization, - current: this.state.current - }); } - }, 1000); - }); + }).catch(() => { + clearInterval(this.timer); + this.setState({ + progressVisible: false, + progress: 0 + }); + }); + }, 600); }); } @@ -410,15 +428,25 @@ export default class NormalIndex extends Component { window.open(url, "_self"); }; + handleEditNormalStandingBook = (record) => { + const { userName, id: editId } = record; + const { returnEditPersonSlide } = this.state; + this.setState({ + returnEditPersonSlide: { ...returnEditPersonSlide, visible: true, title: userName, editId } + }); + }; + handleCloseNormalStandingBookModal = () => { + const { returnPersonModal, returnEditPersonSlide } = this.state; + this.setState({ + returnEditPersonSlide: { ...returnEditPersonSlide, visible: false, title: "", editId: "" } + }, () => { + }); + }; + render() { const { remarks, billMonth, selectedKey, paymentOrganization } = this.props; - const { selectedRowKeys, addProps, adjustSlide, importParams } = this.state; - const { - loading, - form, - condition, - saveLoading - } = this.props.standingBookStore; + const { selectedRowKeys, addProps, adjustSlide, importParams, returnEditPersonSlide } = this.state; + const { loading, form, condition, saveLoading } = this.props.standingBookStore; let { list, columns, total } = this.state.tableData; const rowSelection = { selectedRowKeys, @@ -457,9 +485,43 @@ export default class NormalIndex extends Component { }); } }; + columns = _.map(toJS(columns), item => { + if (item.dataIndex === "employeeId") { + return { ...item }; + } + return { + ...item, + render: (text) => { + return {text}; + } + }; + }); + if (selectedKey === "3") { + columns = [ + ...columns, + { + title: "操作", + dataIndex: "operate", + fixed: "right", + width: "120px", + render: (text, record) => { + return ( + + ); + } + } + ]; + } return (
- {selectedKey === "1" && + { + selectedKey === "1" &&
@@ -478,7 +540,8 @@ export default class NormalIndex extends Component { {remarks}
-
} +
+ }
{this.props.type !== "detail" && this.props.selectedKey == "3" ? @@ -624,6 +687,8 @@ export default class NormalIndex extends Component { scroll={{ x: 1200, y: "calc(100vh - 233px)" }} /> + {/*编辑弹框*/} + { From 00f87ba5e5ce1fc4ee5da69e4f34f91d9587b501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 11:05:07 +0800 Subject: [PATCH 30/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E9=9D=9E=E7=A9=BA=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js index 538a1b92..9181b6d3 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerBaseSetting.js @@ -78,7 +78,7 @@ class LedgerBaseSetting extends Component { const { settingBaseInfo } = this.state; let tmpV = {}; _.map(Object.keys(settingBaseInfo), key => { - tmpV[key] = basicForm[key].toString(); + tmpV[key] = !_.isNil(basicForm[key]) ? basicForm[key].toString() : ""; }); this.setState({ settingBaseInfo: { From 26457c01e61ea05b82062d7aa49c4d39e18c9d05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 15:38:39 +0800 Subject: [PATCH 31/38] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E5=8F=B0=E8=B4=A6=E6=A0=B8=E7=AE=97=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=B7=BB=E5=8A=A0=E8=A1=A5=E5=B7=AE=E7=9A=84=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/standingBook.js | 27 ++++ .../importModal/acctResultImportModal.js | 19 ++- .../importModal/selectFieldModal.js | 17 ++- .../standingBookDetail/components/index.less | 4 +- .../components/makeupDifference.js | 136 ++++++++++++++++++ .../standingBookDetail/components/normal.js | 33 ++--- .../components/regAddEmployee.js | 27 ---- .../standingBookDetail/components/regList.js | 8 +- .../standingBookDetail/components/regTop.js | 15 +- .../components/regression.js | 3 +- .../standingBookDetail/index.js | 8 +- pc4mobx/hrmSalary/stores/StandingBook.js | 80 +++++++---- 12 files changed, 283 insertions(+), 94 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js diff --git a/pc4mobx/hrmSalary/apis/standingBook.js b/pc4mobx/hrmSalary/apis/standingBook.js index 745b3706..9f8b28b1 100644 --- a/pc4mobx/hrmSalary/apis/standingBook.js +++ b/pc4mobx/hrmSalary/apis/standingBook.js @@ -202,6 +202,14 @@ export const getWelfareList = () => { {} ); }; +// 补差表单字段对应的接口 +export const getBalanceWelfareList = () => { + return WeaTools.callApi( + "/api/bs/hrmsalary/siaccount/getBalanceWelfareList", + "get", + {} + ); +}; // 社保福利台账-导入预览 export const welfarePreview = (params) => { @@ -226,6 +234,17 @@ export const importInsuranceAcctDetail = (params) => { body: JSON.stringify(params) }).then((res) => res.json()); }; +// 社保福利台账-补差数据导入 +export const importBalanceInsuranceDetail = (params) => { + return fetch("/api/bs/hrmsalary/siaccount/welfare/importBalanceInsuranceDetail", { + method: "post", + mode: "cors", + headers: { + "Content-Type": "application/json" + }, + body: JSON.stringify(params) + }).then((res) => res.json()); +}; // 社保福利台账-线下对比数据导入 export const importExcelInsuranceDetail = (params) => { @@ -251,10 +270,18 @@ export const saveRecession = (params) => { export const recessionList = (params) => { return postFetch("/api/bs/hrmsalary/siaccount/detail/recession/list", params); }; +//查询补差列表 +export const balanceList = (params) => { + return postFetch("/api/bs/hrmsalary/siaccount/detail/balance/list", params); +}; //删除退差数据 export const delRecession = (params) => { return postFetch("/api/bs/hrmsalary/siaccount/delRecession", params); }; +//删除补差数据 +export const delBalance = (params) => { + return postFetch("/api/bs/hrmsalary/siaccount/delBalance", params); +}; //编辑社保福利缴纳数据 export const editAccount = (params) => { return postFetch("/api/bs/hrmsalary/siaccount/editAccount", params); diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/acctResultImportModal.js b/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/acctResultImportModal.js index 44d0a208..86b4be54 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/acctResultImportModal.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/acctResult/importModal/acctResultImportModal.js @@ -37,7 +37,7 @@ export default class AcctResultImportModal extends React.Component { // 获取模板 handleAccResultTemplateLink() { - const { isStandingBook, standingBookTabKey } = this.props; + const { isStandingBook, standingBookTabKey, standingBookType } = this.props; let url = ""; if (_.isEmpty(this.state.modalParam.salaryItemIds)) { message.warning("请选择表单字段"); @@ -52,6 +52,8 @@ export default class AcctResultImportModal extends React.Component { url = `${window.location.origin}/api/bs/hrmsalary/siaccount/welfare/importtemplate/export?welfareNames=${this.state.modalParam.salaryItemIds}&billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`; } else if (standingBookTabKey === "3") { url = `${window.location.origin}/api/bs/hrmsalary/siaccount/welfare/supplyimporttemplate/export?welfareNames=${this.state.modalParam.salaryItemIds}&billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`; + } else if (standingBookType === "difference") { + url = `${window.location.origin}/api/bs/hrmsalary/siaccount/welfare/balanceimporttemplate/export?welfareNames=${this.state.modalParam.salaryItemIds}&billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`; } } window.open(url, "_self"); @@ -162,8 +164,10 @@ export default class AcctResultImportModal extends React.Component { } render() { + const billMonth = getQueryString("billMonth"); //isStandingBook: 是否是社保福利台账核算的导入标识 - const { calculateStore, standingBookStore, isStandingBook, visiable } = this.props; + //standingBookType: 是否是补差的导入标识 + const { calculateStore, standingBookStore, isStandingBook, visiable, standingBookType } = this.props; const { fetchPreviewAcctResult, previewAcctResultColumns, @@ -176,7 +180,8 @@ export default class AcctResultImportModal extends React.Component { previewStandingBookAcctResultColumns, previewStandingBookAcctResultDataSource, importStandingBookAcctResult, - importInsuranceAcctDetail + importInsuranceAcctDetail, + importBalanceInsuranceDetail } = standingBookStore; const { step, selectFieldVisible, modalParam } = this.state; return ( @@ -184,6 +189,7 @@ export default class AcctResultImportModal extends React.Component { { visiable && { this.handleImportModalInit(); }} @@ -200,7 +206,11 @@ export default class AcctResultImportModal extends React.Component { !isStandingBook ? fetchPreviewAcctResult(params) : welfarePreview(params); }} importFile={(params) => { - !isStandingBook ? fetchImportAcctResult(params) : importInsuranceAcctDetail(params); + !isStandingBook ? + fetchImportAcctResult(params) : + standingBookType === "difference" ? + importBalanceInsuranceDetail({...params, billMonth}) : + importInsuranceAcctDetail(params); }} templateLink={() => { this.handleAccResultTemplateLink(); @@ -215,6 +225,7 @@ export default class AcctResultImportModal extends React.Component { { selectFieldVisible && { let fieldData = {}; @@ -43,7 +49,8 @@ export default class SelectFieldModal extends React.Component { this.fieldData = fieldData; }); } else { - getWelfareList().then(result => { + const APIFox = standingBookType === "difference" ? getBalanceWelfareList : getWelfareList; + APIFox().then(result => { let fieldData = {}; let formulaItems = []; formulaItems = _.map(result, it => ({ ...it, salaryItemId: it.salaryItemName })); @@ -146,9 +153,9 @@ export default class SelectFieldModal extends React.Component { const { isStandingBook } = this.props; return ( { this.props.onCancel(); }} @@ -161,7 +168,7 @@ export default class SelectFieldModal extends React.Component {
{ !_.isEmpty(fieldData.formulaItems) && -
+
{ this.handleTitleCheckboxChange(value, "formula"); diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less index 84b963f0..e266ce39 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/index.less @@ -47,8 +47,8 @@ } } -//退差 -.regressionWrapper { +//退差;补差 +.regressionWrapper, .differenceWrapper { height: calc(100vh - 47px); overflow: auto; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js new file mode 100644 index 00000000..0541af88 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js @@ -0,0 +1,136 @@ +/* + * Author: 黎永顺 + * name: 补差 + * Description: + * Date: 2022/12/16 + */ +import React, { Component } from "react"; +import RegTop from "./regTop"; +import { message, Modal } from "antd"; +import { getQueryString } from "../../../../util/url"; +import RegList from "./regList"; +import AcctResultImportModal from "../../../calculateDetail/acctResult/importModal/acctResultImportModal"; +import * as API from "../../../../apis/standingBook"; +import "./index.less"; +import RegEditDetial from "./regEditDetial"; + +class MakeupDifference extends Component { + constructor(props) { + super(props); + this.state = { + selectKey: [], + fieldData: {}, + returnEditPersonSlide: { + title: "", + editId: "", + visible: false + }, + importDiffModal: { + visible: false + }, + loading: { save: false } + }; + this.diffListRef = null; + this.regTopRef = null; + } + + delBalance = () => { + const { selectKey: ids } = this.state; + const billMonth = getQueryString("billMonth"); + const paymentOrganization = getQueryString("paymentOrganization"); + const payload = { ids, billMonth, paymentOrganization }; + API.delBalance(payload).then(({ status, errormsg }) => { + if (status) { + message.success("删除成功"); + this.diffListRef.recessionList(); + this.diffListRef.handleResetSelectRowKeys([]); + this.setState({ selectKey: [] }); + } else { + message.error(errormsg || "删除失败"); + } + }); + }; + handleChangeOpt = (key) => { + const { importDiffModal } = this.state; + const name = this.regTopRef.state.name; + const billMonth = getQueryString("billMonth"); + const paymentOrganization = getQueryString("paymentOrganization"); + switch (key) { + case "delete": + Modal.confirm({ + title: "信息确认", + content: "确定删除数据吗?", + onOk: () => this.delBalance() + }); + break; + case "import": + this.setState({ importDiffModal: { ...importDiffModal, visible: true } }); + break; + case "export": + const url = `${window.location.origin}/api/bs/hrmsalary/welfare/balance/export?billMonth=${billMonth}&paymentOrganization=${paymentOrganization}`; + window.open(url, "_self"); + break; + case "search": + this.diffListRef.recessionList(name); + break; + default: + break; + } + }; + handleEdit = (record) => { + const { userName, id: editId } = record; + const { returnEditPersonSlide } = this.state; + this.setState({ + returnEditPersonSlide: { ...returnEditPersonSlide, visible: true, title: userName, editId } + }); + }; + handleCloseModal = () => { + const { returnEditPersonSlide } = this.state; + this.setState({ + returnEditPersonSlide: { ...returnEditPersonSlide, visible: false, title: "", editId: "" } + }); + }; + + render() { + const billMonth = getQueryString("billMonth"); + const { selectKey, importDiffModal, fieldData, returnEditPersonSlide } = this.state; + return ( +
+ this.regTopRef = dom} + billMonth={billMonth} + onChange={this.handleChangeOpt} + selectKey={selectKey} + /> + this.diffListRef = dom} + onChangeRowkey={(selectKey) => this.setState({ selectKey })} + onEdit={this.handleEdit} + /> + {/*编辑弹框*/} + + {/*导入补差*/} + { + importDiffModal.visible && + this.setState({ fieldData })} + onCancel={() => { + this.setState({ importDiffModal: { ...importDiffModal, visible: false }, fieldData: {} }, () => { + const name = this.regTopRef.state.name; + this.diffListRef.recessionList(name); + }); + }} + isStandingBook + standingBookType="difference" + /> + } +
+ ); + } +} + +export default MakeupDifference; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js index aab96473..e3859fa6 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js @@ -496,28 +496,29 @@ export default class NormalIndex extends Component { } }; }); - if (selectedKey === "3") { - columns = [ - ...columns, - { - title: "操作", - dataIndex: "operate", - fixed: "right", - width: "120px", - render: (text, record) => { - return ( -
+ columns = [ + ...columns, + { + title: "操作", + dataIndex: "operate", + fixed: "right", + width: "120px", + render: (text, record) => { + return ( + - ); - } + } +
+ ); } - ]; - } + } + ]; return (
{ diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regAddEmployee.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regAddEmployee.js index 822cc0c7..c311d035 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regAddEmployee.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regAddEmployee.js @@ -30,33 +30,6 @@ class RegAddEmployee extends Component { }; } - componentDidMount() { - this.getEmployeeListByTaxAgent(); - } - - getEmployeeListByTaxAgent = () => { - const { returnPersonInfo, selectPersonInfo } = this.state; - const payload = { - pageNum: 1, - pageSize: 10000, - name: null - }; - API.getEmployeeListByTaxAgent(payload).then(({ status, data }) => { - if (status) { - const { list } = data; - this.setState({ - returnPersonInfo: { - ...returnPersonInfo, - employeeOptions: _.map(list || [], it => ({ key: String(it.employeeId), showname: it.username })) - }, - selectPersonInfo: { - ...selectPersonInfo, - employeeOptions: _.map(list || [], it => ({ key: String(it.employeeId), showname: it.username })) - } - }); - } - }); - }; handleReset = () => { this.setState({ baseInfo: { diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js index 2bb8d60f..787cd272 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js @@ -10,6 +10,11 @@ import { getQueryString } from "../../../../util/url"; import * as API from "../../../../apis/standingBook"; import "./index.less"; +const APIFox = { + "regression": API.recessionList, + "difference": API.balanceList +}; + class RegList extends Component { constructor(props) { super(props); @@ -42,6 +47,7 @@ class RegList extends Component { this.setState({ selectedRowKeys }); }; recessionList = (userName = "") => { + const { type } = this.props; const { loading, pageInfo } = this.state; const billMonth = getQueryString("billMonth"); const paymentOrganization = getQueryString("paymentOrganization"); @@ -54,7 +60,7 @@ class RegList extends Component { ...pageInfo }; this.setState({ loading: { ...loading, query: true } }); - API.recessionList(payload).then(({ status, data }) => { + APIFox[type](payload).then(({ status, data }) => { this.setState({ loading: { ...loading, query: false } }); if (status) { const { pageInfo: list } = data; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regTop.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regTop.js index 96107ed0..78a837b9 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regTop.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regTop.js @@ -13,7 +13,7 @@ class RegTop extends Component { renderTopBtns = () => { const { name } = this.state; - const { onChange, selectKey } = this.props; + const { onChange, selectKey, type: regtopType } = this.props; const type = getQueryString("type"); let dom = [ onChange("add")}> + + : + ; dom = [ dom1, , - , - ...extra + , domBtn, ...extra ]; } return dom; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js index 2b91f51b..33a79fb9 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js @@ -40,7 +40,6 @@ class Regression extends Component { API.delRecession(selectKey).then(({ status, errormsg }) => { if (status) { message.success("删除成功"); - this.regListRef.recessionList(); this.regListRef.handleResetSelectRowKeys([]); this.setState({ selectKey: [] }); @@ -124,12 +123,14 @@ class Regression extends Component { return (
this.regTopRef = dom} billMonth={billMonth} onChange={this.handleChangeOpt} selectKey={selectKey} /> this.regListRef = dom} visible={returnPersonModal.visible} onChangeRowkey={(selectKey) => this.setState({ selectKey })} diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js index 75b41a1b..a5ae1a93 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/index.js @@ -11,6 +11,7 @@ import NormalIndex from "./components/normal"; import OverViewIndex from "./components/overView"; import AbnormalListIndex from "./components/abnormalList"; import Regression from "./components/regression"; +import MakeupDifference from "./components/makeupDifference"; @inject("standingBookStore") @observer @@ -39,7 +40,7 @@ class StandingBookDetail extends Component { getTabList({ billMonth, paymentOrganization: this.paymentOrganization }).then(({ data }) => { const { tabList, remarks, billMonth } = data; let newTabList = tabList.filter(item => item.id != "2"); - newTabList[newTabList.length - 2] = newTabList.splice(newTabList.length - 1, 1, newTabList[newTabList.length - 2])[0] + newTabList.push(newTabList.splice(_.findIndex(newTabList, it => it.id === "4"), 1)[0]); this.setState({ selectedKey: newTabList[0].id, tabList: _.map(newTabList, it => ({ title: it.content, viewcondition: it.id })), @@ -74,7 +75,10 @@ class StandingBookDetail extends Component { } { - selectedKey === "5" && + selectedKey === "5" && + } + { + selectedKey === "6" && }
); diff --git a/pc4mobx/hrmSalary/stores/StandingBook.js b/pc4mobx/hrmSalary/stores/StandingBook.js index 083914f8..d74c1c5c 100644 --- a/pc4mobx/hrmSalary/stores/StandingBook.js +++ b/pc4mobx/hrmSalary/stores/StandingBook.js @@ -1,11 +1,8 @@ -import { observable, action, toJS } from "mobx"; +import { action, observable } from "mobx"; import { message } from "antd"; import { WeaForm, WeaTableNew } from "comsMobx"; import { removePropertyCondition } from "../util/response"; -import _ from "lodash"; - import * as API from "../apis/standingBook"; -import { importExcelInsuranceDetail } from "../apis/standingBook"; const { TableStore } = WeaTableNew; @@ -44,7 +41,7 @@ export class StandingBookStore { if (status) { // 接口请求成功/失败处理 const { - pageInfo: { list, columns, total, pageNum }, + pageInfo: { list, columns, total, pageNum } } = data; resolve({ list, columns, total, pageNum }); } else { @@ -66,7 +63,7 @@ export class StandingBookStore { if (status) { // 接口请求成功/失败处理 const { - pageInfo: { list, columns, total }, + pageInfo: { list, columns, total } } = data; resolve({ list, columns, total }); } else { @@ -88,7 +85,7 @@ export class StandingBookStore { if (status) { // 接口请求成功/失败处理 const { - pageInfo: { list, columns, total }, + pageInfo: { list, columns, total } } = data; resolve({ list, columns, total }); } else { @@ -131,7 +128,7 @@ export class StandingBookStore { // 接口请求成功/失败处理 const { dataKey: { datas }, - pageInfo: { list, total }, + pageInfo: { list, total } } = data; this.tableStore.getDatas(datas); resolve({ list, total }); @@ -229,7 +226,7 @@ export class StandingBookStore { // 接口请求成功/失败处理 const { dataKey: { datas }, - pageInfo: { list, total }, + pageInfo: { list, total } } = data; this.tableStore.getDatas(datas); resolve({ list, total }); @@ -302,7 +299,7 @@ export class StandingBookStore { action((res) => { if (res.status) { // 接口请求成功/失败处理 - let condition = removePropertyCondition(res.data.condition) + let condition = removePropertyCondition(res.data.condition); this.condition = condition; this.form.initFormFields(condition); // 渲染高级搜索form表单 } else { @@ -318,7 +315,7 @@ export class StandingBookStore { action((res) => { if (res.status) { // 接口请求成功/失败处理 - let condition = removePropertyCondition(res.data.condition) + let condition = removePropertyCondition(res.data.condition); this.condition = condition; this.form.initFormFields(condition); // 渲染高级搜索form表单 } else { @@ -361,57 +358,70 @@ export class StandingBookStore { commonAccount = (params) => { return new Promise((resolve, reject) => { API.commonAccount(params).then(res => { - if(res.status) { + if (res.status) { resolve(); } else { - message.error(res.errormsg || "接口调用失败!") + message.error(res.errormsg || "接口调用失败!"); reject(); } - }) - }) - } + }); + }); + }; @action("社保福利台账重新核算") socialSecurityBenefitsRecalculate = (params) => { return new Promise((resolve, reject) => { API.socialSecurityBenefitsRecalculate(params).then(res => { - if(res.status) { + if (res.status) { resolve(); } else { reject(res.errormsg || "接口调用失败!"); } - }) - }) - } + }); + }); + }; // 获取当前管理员下的所有个税扣缴义务人 @action getAdminTaxAgentList = () => { return new Promise((resolve, reject) => { API.getAdminTaxAgentList().then(res => { - if(res.status) { + if (res.status) { resolve(res.data); } else { - message.error(res.errormsg || "接口调用失败!") + message.error(res.errormsg || "接口调用失败!"); reject(); } - }) - }) - } + }); + }); + }; @action("社保福利台账核算导入信息表头信息列表") getWelfareList = () => { return new Promise((resolve, reject) => { API.getWelfareList().then(res => { - if(res.status) { + if (res.status) { resolve(res.data); } else { - message.error(res.errormsg || "接口调用失败!") + message.error(res.errormsg || "接口调用失败!"); reject(); } - }) - }) - } + }); + }); + }; + @action("社保福利台账补差导入信息表头信息列表") + getBalanceWelfareList = () => { + return new Promise((resolve, reject) => { + API.getBalanceWelfareList().then(res => { + if (res.status) { + resolve(res.data); + } else { + message.error(res.errormsg || "接口调用失败!"); + reject(); + } + }); + }); + }; @action setPreviewStandingBookAcctResultDataSource = previewAcctResultDataSource => { @@ -452,6 +462,16 @@ export class StandingBookStore { }); }; + @action("社保福利台账-补差数据导入") + importBalanceInsuranceDetail = (params) => { + API.importBalanceInsuranceDetail(params).then(res => { + if (res.status) { + this.importStandingBookAcctResult = res.data; + } else { + message.error(res.errormsg || "导入失败"); + } + }); + }; @action("社保福利台账-核算数据导入") importInsuranceAcctDetail = (params) => { API.importInsuranceAcctDetail(params).then(res => { From 28b34fa112fce3000138be5242748a96b022d8f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 16:07:04 +0800 Subject: [PATCH 32/38] =?UTF-8?q?=E8=96=AA=E8=B5=84=E8=B4=A6=E5=A5=97?= =?UTF-8?q?=E4=B8=AD=E8=96=AA=E8=B5=84=E9=A1=B9=E7=9B=AE=E8=B0=83=E6=8D=A2?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E4=BF=9D=E5=AD=98=E4=B8=8D=E7=94=9F=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ledgerPage/components/ledgerSalaryItem.js | 10 ++++++++- .../hrmSalary/pages/payroll/SalarySendList.js | 21 +++++++++++++------ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js index 6af6af3a..cc6444fb 100644 --- a/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js +++ b/pc4mobx/hrmSalary/pages/ledgerPage/components/ledgerSalaryItem.js @@ -200,7 +200,15 @@ class LedgerSalaryItem extends Component { this.setState({ itemGroups: _.map(itemGroups, it => { if (filed.id === it.id) { - return { ...it, items: data }; + return { + ...it, + items: _.map(data, (child, childIndex) => { + return { + ...child, + sortedIndex: childIndex + }; + }) + }; } return { ...it }; }) diff --git a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js index 060feaf6..6e7d0a52 100644 --- a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js +++ b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js @@ -76,7 +76,7 @@ export default class SalarySendList extends React.Component { {text}
{ - record.sendStatus === 1 && + record.salaryAcctType === 1 && 补发 } {`第${record.acctTimes}次`} @@ -92,15 +92,18 @@ export default class SalarySendList extends React.Component { title: "操作", key: "operate", render: (text, record) => { - const { sendNum, sendTotal } = record; + const { sendNum, sendTotal, salaryAcctType } = record; return ( this.handleGrant(record)} style={{ marginRight: 10 }}>发放 - this.handleShowDetail(record)} - style={{ marginRight: 10 }}>查看详情 { - sendNum !== sendTotal && + salaryAcctType === 0 && + this.handleShowDetail(record)} + style={{ marginRight: 10 }}>查看详情 + } + { + sendNum !== sendTotal && salaryAcctType === 0 && this.handleUpdateTemplate(record)}>更新模板 } @@ -114,8 +117,14 @@ export default class SalarySendList extends React.Component { title: "操作", key: "operate", render: (text, record) => { + const { salaryAcctType } = record; return ( - this.handleShowDetail(record)}>查看详情 + + { + salaryAcctType === 0 && + this.handleShowDetail(record)}>查看详情 + } + ); } } From 42ec1c691817ebe3d40f82f7061427d604125ea5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 16:19:30 +0800 Subject: [PATCH 33/38] =?UTF-8?q?=E8=A1=A5=E5=B7=AE=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../standingBookDetail/components/makeupDifference.js | 8 +++++--- .../standingBookDetail/components/regList.js | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js index 0541af88..266ea170 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js @@ -13,6 +13,7 @@ import AcctResultImportModal from "../../../calculateDetail/acctResult/importMod import * as API from "../../../../apis/standingBook"; import "./index.less"; import RegEditDetial from "./regEditDetial"; +import { calcPageNo } from "../../../../util"; class MakeupDifference extends Component { constructor(props) { @@ -42,7 +43,8 @@ class MakeupDifference extends Component { API.delBalance(payload).then(({ status, errormsg }) => { if (status) { message.success("删除成功"); - this.diffListRef.recessionList(); + const current = calcPageNo(this.regListRef.state.pageInfo.total, this.regListRef.state.pageInfo.current, 10, ids.length); + this.diffListRef.recessionList({ current }); this.diffListRef.handleResetSelectRowKeys([]); this.setState({ selectKey: [] }); } else { @@ -71,7 +73,7 @@ class MakeupDifference extends Component { window.open(url, "_self"); break; case "search": - this.diffListRef.recessionList(name); + this.diffListRef.recessionList({ userName: name }); break; default: break; @@ -121,7 +123,7 @@ class MakeupDifference extends Component { onCancel={() => { this.setState({ importDiffModal: { ...importDiffModal, visible: false }, fieldData: {} }, () => { const name = this.regTopRef.state.name; - this.diffListRef.recessionList(name); + this.diffListRef.recessionList({ userName: name }); }); }} isStandingBook diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js index 0aeca243..6979d48a 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regList.js @@ -46,7 +46,7 @@ class RegList extends Component { handleResetSelectRowKeys = (selectedRowKeys) => { this.setState({ selectedRowKeys }); }; - recessionList = (userName = "") => { + recessionList = (module) => { const { type } = this.props; const { loading, pageInfo } = this.state; const billMonth = getQueryString("billMonth"); From 5b66b538b838f1b2ff968994e33c2ab5a9f309d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 17:00:24 +0800 Subject: [PATCH 34/38] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/payrollFiles/index.js | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/payrollFiles/index.js b/pc4mobx/hrmSalary/pages/payrollFiles/index.js index faef8b8c..0721f5d1 100644 --- a/pc4mobx/hrmSalary/pages/payrollFiles/index.js +++ b/pc4mobx/hrmSalary/pages/payrollFiles/index.js @@ -14,13 +14,13 @@ import { WeaFormItem, WeaHelpfulTip, WeaInput, + WeaPopoverHrm, WeaSearchGroup, WeaSelect, WeaSlideModal, WeaTab, WeaTable, - WeaTop, - WeaPopoverHrm + WeaTop } from "ecCom"; import { WeaTableNew } from "comsMobx"; import { Button, Dropdown, Menu, message, Modal, Popover } from "antd"; @@ -148,8 +148,8 @@ class Index extends Component { const { taxAgentStore } = this.props; const { getTaxAgentSelectListAsAdmin } = taxAgentStore; getTaxAgentSelectListAsAdmin(); - const init = this.init(); this.queryList("/api/bs/hrmsalary/salaryArchive/pendingList"); + const init = this.init(); } init = async () => { @@ -192,7 +192,16 @@ class Index extends Component { const { loading, pageInfo, searchItemsValue } = this.state; const { payrollFilesStore: { tableStore, queryList } } = this.props; const payload = { ...pageInfo }; - this.setState({ loading: { ...loading, query: true } }); + this.setState({ + loading: { ...loading, query: true }, + dataSource: [], + tabCount: { + SUSPEND: 0, + STOP: 0, + FIXED: 0, + PENDING: 0 + } + }); queryList(payload, searchItemsValue, url).then(({ data, status }) => { this.setState({ loading: { ...loading, query: false } }); if (status) { @@ -427,7 +436,7 @@ class Index extends Component { ; } }; - }else if (item.dataIndex === "operate") { + } else if (item.dataIndex === "operate") { return { ...item, fixed: "right", @@ -487,7 +496,7 @@ class Index extends Component { ...item, width: item.oldWidth, render: (text) => { - return {text} + return {text}; } }; }); From 0894f91765bcd724bd85fdc6ce081c3f462fee9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Fri, 16 Dec 2022 17:36:56 +0800 Subject: [PATCH 35/38] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=96=AA=E8=B5=84?= =?UTF-8?q?=E6=A1=A3=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/payrollFiles/index.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pc4mobx/hrmSalary/pages/payrollFiles/index.js b/pc4mobx/hrmSalary/pages/payrollFiles/index.js index 0721f5d1..65c03aca 100644 --- a/pc4mobx/hrmSalary/pages/payrollFiles/index.js +++ b/pc4mobx/hrmSalary/pages/payrollFiles/index.js @@ -572,7 +572,13 @@ class Index extends Component { current: 1, pageSize: 10 } - }, () => this.query()); + }); + if (!this.handleChangeDebounce) { + this.handleChangeDebounce = _.debounce(() => { + this.query() + }, 500); + } + this.handleChangeDebounce(); }; //编辑保存 handleSave = () => { From 7c3af0ad5bcd30894977ff3529c9d52c80ad5274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Mon, 19 Dec 2022 14:55:46 +0800 Subject: [PATCH 36/38] =?UTF-8?q?=E9=83=A8=E5=88=86bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/calculate/index.js | 13 ++++++++++--- .../pages/calculateDetail/issuedAndReissueTable.js | 4 ++-- pc4mobx/hrmSalary/pages/payroll/SalarySendList.js | 8 +++++--- .../hrmSalary/pages/payroll/payrollGrant/index.js | 7 +++++-- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculate/index.js b/pc4mobx/hrmSalary/pages/calculate/index.js index 3ac81ef4..cf287595 100644 --- a/pc4mobx/hrmSalary/pages/calculate/index.js +++ b/pc4mobx/hrmSalary/pages/calculate/index.js @@ -9,6 +9,7 @@ import BaseFormModal from "./baseFormModal"; import CustomPaginationTable from "../../components/customPaginationTable"; import ProgressModal from "../../components/progressModal"; import "./index.less"; +import { deleteLedgerPersonRange } from "../../apis/ledger"; const MonthPicker = DatePicker.MonthPicker; @@ -141,9 +142,15 @@ export default class Calculate extends React.Component { // 回算 handleBackCalculate = (record) => { - const { calculateStore: { backCalculate } } = this.props; - backCalculate(record.id).then(() => { - this.handleSearch(this.state.searchValue); + Modal.confirm({ + title: "信息确认", + content: "确定回算吗?\n 回算后,正常核算的数据会被覆盖,正常核算的工资单不能继续发放或撤回!", + onOk: () => { + const { calculateStore: { backCalculate } } = this.props; + backCalculate(record.id).then(() => { + this.handleSearch(this.state.searchValue); + }); + } }); }; diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js index ff82bad7..f18e620f 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/issuedAndReissueTable.js @@ -23,7 +23,7 @@ class IssuedAndReissueTable extends Component { title: 项目值 @@ -44,7 +44,7 @@ class IssuedAndReissueTable extends Component { title: 核算公式 diff --git a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js index 6e7d0a52..b92a62c5 100644 --- a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js +++ b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js @@ -92,18 +92,20 @@ export default class SalarySendList extends React.Component { title: "操作", key: "operate", render: (text, record) => { - const { sendNum, sendTotal, salaryAcctType } = record; + const { sendNum, sendTotal, salaryAcctType, haveBackCalc } = record; + //显示发放 + const showGrant = haveBackCalc === 1 && salaryAcctType === 0; return ( this.handleGrant(record)} style={{ marginRight: 10 }}>发放 { - salaryAcctType === 0 && + !showGrant && this.handleShowDetail(record)} style={{ marginRight: 10 }}>查看详情 } { - sendNum !== sendTotal && salaryAcctType === 0 && + sendNum !== sendTotal && !showGrant && this.handleUpdateTemplate(record)}>更新模板 } diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js index 6bf91113..a7190a1d 100644 --- a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js @@ -243,6 +243,9 @@ export default class PayrollGrant extends React.Component { }; getSearchsAdQuick() { + const { payrollStore } = this.props; + const { salarySendDetailBaseInfo } = payrollStore; + const notShowGrantOrWithdraw = salarySendDetailBaseInfo.haveBackCalc === 1 && salarySendDetailBaseInfo.salaryAcctType === "0"; const { selectedKey } = this.state; const handleMenuClick = e => { switch (e.key) { @@ -267,7 +270,7 @@ export default class PayrollGrant extends React.Component { 更多 ]; - if (selectedKey === "0") { + if (selectedKey === "0" && !notShowGrantOrWithdraw) { btnDom = [ , ...btnDom ]; - } else { + } else if(selectedKey === "1" && !notShowGrantOrWithdraw) { btnDom = [ Date: Tue, 20 Dec 2022 10:52:24 +0800 Subject: [PATCH 37/38] =?UTF-8?q?=E7=A4=BE=E4=BF=9D=E7=A6=8F=E5=88=A9?= =?UTF-8?q?=E6=96=B9=E6=A1=88=E8=AF=A6=E6=83=85bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../standingBookDetail/components/makeupDifference.js | 6 ++++-- .../standingBookDetail/components/normal.js | 5 +++-- .../standingBookDetail/components/regEditDetial.js | 5 ++++- .../standingBookDetail/components/regression.js | 1 + 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js index 266ea170..c560bb00 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/makeupDifference.js @@ -43,7 +43,7 @@ class MakeupDifference extends Component { API.delBalance(payload).then(({ status, errormsg }) => { if (status) { message.success("删除成功"); - const current = calcPageNo(this.regListRef.state.pageInfo.total, this.regListRef.state.pageInfo.current, 10, ids.length); + const current = calcPageNo(this.diffListRef.state.pageInfo.total, this.diffListRef.state.pageInfo.current, 10, ids.length); this.diffListRef.recessionList({ current }); this.diffListRef.handleResetSelectRowKeys([]); this.setState({ selectKey: [] }); @@ -86,10 +86,12 @@ class MakeupDifference extends Component { returnEditPersonSlide: { ...returnEditPersonSlide, visible: true, title: userName, editId } }); }; - handleCloseModal = () => { + handleCloseModal = (refreshList = false) => { const { returnEditPersonSlide } = this.state; this.setState({ returnEditPersonSlide: { ...returnEditPersonSlide, visible: false, title: "", editId: "" } + }, () => { + refreshList && this.diffListRef.recessionList(); }); }; diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js index e3859fa6..afa64704 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/normal.js @@ -436,10 +436,11 @@ export default class NormalIndex extends Component { }); }; handleCloseNormalStandingBookModal = () => { - const { returnPersonModal, returnEditPersonSlide } = this.state; + const { returnEditPersonSlide } = this.state; this.setState({ returnEditPersonSlide: { ...returnEditPersonSlide, visible: false, title: "", editId: "" } }, () => { + this.getNormalList(); }); }; @@ -507,7 +508,7 @@ export default class NormalIndex extends Component { return (
{ - selectedKey === '3' && + selectedKey === "3" && { return ( this.handleChange("social", item.dataIndex, v, record)} @@ -50,6 +51,7 @@ class RegEditDetial extends Component { render: (text, record) => { return ( this.handleChange("fund", item.dataIndex, v, record)} @@ -73,6 +75,7 @@ class RegEditDetial extends Component { return ( this.handleChange("other", item.dataIndex, v, record)} /> @@ -126,7 +129,7 @@ class RegEditDetial extends Component { this.setState({ loading: false }); if (status) { message.success("保存成功"); - onCancel(); + onCancel(true); } else { message.error(errormsg || "保存成功"); } diff --git a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js index 42db2275..c3e7a95b 100644 --- a/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js +++ b/pc4mobx/hrmSalary/pages/socialSecurityBenefits/standingBookDetail/components/regression.js @@ -109,6 +109,7 @@ class Regression extends Component { returnEditPersonSlide: { ...returnEditPersonSlide, visible: false, title: "", editId: "" } }, () => { this.regEmmployeeRef.handleReset(); + this.regListRef.recessionList(); }); }; handleEdit = (record) => { From 0bb52e145a5320680f50444e253d8b3c1de46396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=8E=E6=B0=B8=E9=A1=BA?= <971387674@qq.com> Date: Tue, 20 Dec 2022 17:22:28 +0800 Subject: [PATCH 38/38] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E8=B7=B3=E8=BD=AC=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/calculateDetail/salaryDetail.js | 2 ++ .../pages/calculateDetail/userSure.js | 14 +++++---- .../pages/payroll/payrollGrant/index.js | 7 +++-- .../standingBookDetail/components/normal.js | 12 ++++++-- .../components/regEditDetial.js | 30 +++++++++++++------ .../standingBookDetail/components/regList.js | 12 +++++++- .../components/regression.js | 4 +-- 7 files changed, 58 insertions(+), 23 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js index 91cf2263..749c7be0 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/salaryDetail.js @@ -52,6 +52,8 @@ export default class SalaryDetail extends React.Component { if (type === "PR") { if (id === "EDIT") { this.handleEdit(record); + } else if (id === "COSTCENTER") { + window.open(record ? record.url : "", "_blank"); } else if (id === "COLUMNINDEX") { if (!extraId) { this.setState({ columnIndex: record }); diff --git a/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js b/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js index c6b0938a..e74a8d8a 100644 --- a/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js +++ b/pc4mobx/hrmSalary/pages/calculateDetail/userSure.js @@ -4,7 +4,6 @@ import { WeaBrowser, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSearchGroup, WeaSe import { inject, observer } from "mobx-react"; import "./index.less"; import { getQueryString } from "../../util/url"; -import { calcPageNo } from "../../util"; @inject("calculateStore", "salaryFileStore") @observer @@ -87,8 +86,8 @@ export default class UserSure extends React.Component { this.setState({ searchItemsValue: { ...this.state.searchItemsValue, [key]: val } })}/> @@ -122,6 +121,8 @@ export default class UserSure extends React.Component { childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); //window.postMessage } else if (id === "DELETE") { this.handleDeleteItem(record); + } else if (id === "COSTCENTER") { + window.open(record.url, "_blank"); } else if (id === "BATCHDELETE") { this.onSelectChange(record); } else if (id === "PAGEINFO") { @@ -144,7 +145,7 @@ export default class UserSure extends React.Component { const payload = { type: "PC", listType: "MA", - url: this.state.selectedKey === '1'?"/api/bs/hrmsalary/salaryacct/reducedemployee/list":"/api/bs/hrmsalary/salaryacct/addedemployee/list", + url: this.state.selectedKey === "1" ? "/api/bs/hrmsalary/salaryacct/reducedemployee/list" : "/api/bs/hrmsalary/salaryacct/addedemployee/list", queryParams: { salaryAcctRecordId, employeeName: this.state.userListSearchValue, @@ -223,7 +224,7 @@ export default class UserSure extends React.Component { salaryAcctRecordId, employeeName: this.state.userListSearchValue, ...this.pageInfo, - current: 1, + current: 1 } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); @@ -253,7 +254,7 @@ export default class UserSure extends React.Component { queryParams: { salaryAcctRecordId, employeeName: this.state.userListSearchValue, - ...this.pageInfo, + ...this.pageInfo } }; childFrameObj.contentWindow.postMessage(JSON.stringify(payload), "*"); @@ -570,6 +571,7 @@ export default class UserSure extends React.Component {