From e0b6dc4585dc87b362536921296c11c169c8f60f 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, 17 Jun 2024 16:47:08 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feature/2.14.4.2406.02-=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E5=8F=91=E6=94=BE=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/payroll/payrollGrant/index.js | 45 +++++++------------ pc4mobx/hrmSalary/stores/payroll.js | 4 +- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js index 52bb065c..95141435 100644 --- a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js @@ -538,7 +538,8 @@ export default class PayrollGrant extends React.Component { grantListCondition, setGrantListShowSearchAd, salaryGrantPageInfo, - getInfoList + getInfoList, + loading } = payrollStore; const { selectedRowKeys, selectedKey, currentId, payrollPartModalParams } = this.state; const rowSelection = { @@ -569,35 +570,19 @@ export default class PayrollGrant extends React.Component { ]; return (
- } // 左侧图标 - iconBgcolor="#F14A2D" // 左侧图标背景色 - showDropIcon={true} // 是否显示下拉按钮 - buttons={this.getSearchsAdQuick()} - /> - + } iconBgcolor="#F14A2D" + showDropIcon={true} buttons={this.getSearchsAdQuick()}/> - this.setState({ selectedKey: v }, () => { - getInfoList({ - salarySendId: currentId, - isGranted: v !== "0" - }); - }) - } - searchType={["base", "advanced"]} // base:基础搜索框 advanced:显示高级搜索按钮 - searchsBasePlaceHolder="请输入姓名" - showSearchAd={grantListShowSearchAd} // 是否展开高级搜索面板 - setShowSearchAd={bool => setGrantListShowSearchAd(bool)} //高级搜索面板受控 - searchsAd={getSearchs(grantListConditionForm, toJS(grantListCondition), 2)} // 高级搜索内部数据 - buttonsAd={adBtn} // 高级搜索内部按钮 - onSearch={() => this.handleSearch()} // 点搜索按钮时的回调 - onSearchChange={v => grantListConditionForm.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值 - searchsBaseValue={grantListConditionForm.getFormParams().username} // 外部input搜索值受控: 这里和高级搜索的requestname同步 + datas={topTab} keyParam="viewcondition" selectedKey={selectedKey} searchType={["base", "advanced"]} + onChange={v => this.setState({ selectedKey: v }, () => { + getInfoList({ salarySendId: currentId, isGranted: v !== "0" }); + })} + searchsBasePlaceHolder="请输入姓名" showSearchAd={grantListShowSearchAd} buttonsAd={adBtn} + setShowSearchAd={bool => setGrantListShowSearchAd(bool)} + searchsAd={getSearchs(grantListConditionForm, toJS(grantListCondition), 2)} + onSearch={() => this.handleSearch()} + onSearchChange={v => grantListConditionForm.updateFields({ username: v })} + searchsBaseValue={grantListConditionForm.getFormParams().username} />
@@ -626,7 +611,7 @@ export default class PayrollGrant extends React.Component {
{ - !_.isEmpty(this.getColumns()) ? + !loading ? { + this.loading = false; if (res.status) { this.salaryGrantTableStore = res.data.columns; this.salaryGrantDataSource = res.data.list; @@ -470,7 +472,7 @@ export class payrollStore { } else { message.error(res.errormsg || "获取失败"); } - }); + }).catch(() => this.loading = false); }; // 工资单-工资单发放详情列表 From 4ebb3a422e76f188064188b651ee47679af3409f 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, 17 Jun 2024 17:20:01 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feature/2.14.4.2406.02-=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E5=8F=91=E6=94=BE=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/payroll/payrollGrant/index.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js index 95141435..16043fcd 100644 --- a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js @@ -323,6 +323,9 @@ export default class PayrollGrant extends React.Component { onClick={() => this.handleWithdraw({ ids: [record.id] })}> 撤回 + + 预览 + { salarySendDetailBaseInfo.showPdfBtn && this.handleGrant({ ids: [record.id] })}> - 发放 - + + this.handleGrant({ ids: [record.id] })}> + 发放 + + + 预览 + + ); } } From 2e775eb20578b36ae74b8edea503901c8173bd81 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, 18 Jun 2024 09:07:43 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feature/2.14.4.2406.02-=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E5=8F=91=E6=94=BE=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/apis/payroll.js | 4 ++ .../payrollGrant/components/index.less | 6 ++ .../components/payrollPreviewDialog.js | 62 +++++++++++++++++++ .../pages/payroll/payrollGrant/index.js | 32 ++++++++-- 4 files changed, 100 insertions(+), 4 deletions(-) create mode 100644 pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/index.less create mode 100644 pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/payrollPreviewDialog.js diff --git a/pc4mobx/hrmSalary/apis/payroll.js b/pc4mobx/hrmSalary/apis/payroll.js index b78fac43..8ca9fab7 100644 --- a/pc4mobx/hrmSalary/apis/payroll.js +++ b/pc4mobx/hrmSalary/apis/payroll.js @@ -244,3 +244,7 @@ export const getSmsSalaryItemSet = (params) => { export const genPdfBeforeExport = (params) => { return WeaTools.callApi("/api/bs/hrmsalary/salaryBill/genPdfBeforeExport", "GET", params); }; +//工资单预览 +export const salaryBillPreview = (params) => { + return postFetch("/api/bs/hrmsalary/salaryBill/preview", params); +}; diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/index.less b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/index.less new file mode 100644 index 00000000..6c2c71f7 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/index.less @@ -0,0 +1,6 @@ +.payPreBox { + .pay-preview-layout { + width: 100%; + height: 100%; + } +} diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/payrollPreviewDialog.js b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/payrollPreviewDialog.js new file mode 100644 index 00000000..763a45a6 --- /dev/null +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/components/payrollPreviewDialog.js @@ -0,0 +1,62 @@ +/* + * + * 工资单预览 + * @Author: 黎永顺 + * @Date: 2024/6/17 + * @Wechat: + * @Email: 971387674@qq.com + * @description: +*/ +import React, { Component } from "react"; +import { WeaDialog, WeaLocaleProvider } from "ecCom"; +import { salaryBillPreview } from "../../../../apis/payroll"; +import Content from "../../../../components/pcTemplate/content"; +import "./index.less"; + +const getLabel = WeaLocaleProvider.getLabel; + +class PayrollPreviewDialog extends Component { + constructor(props) { + super(props); + this.state = { + salaryBillData: { salaryTemplate: {}, salaryGroups: [], employeeInformation: {} } + }; + this.preRef = null; + } + + componentWillReceiveProps(nextProps, nextContext) { + if (nextProps.visible !== this.props.visible && nextProps.visible) { + const { salaryInfoId, recipient } = nextProps; + salaryBillPreview({ salaryInfoId, recipient }).then(({ status, data }) => { + if (status) { + this.setState({ salaryBillData: data }); + } + }); + } + } + + + render() { + const { + salaryTemplate, salaryGroups, employeeInformation, sendTime + } = this.state.salaryBillData; + const salaryProps = { + theme: salaryTemplate.theme, tip: salaryTemplate.textContent, sendTime, + background: salaryTemplate.background, tipPosi: salaryTemplate.textContentPosition || "", + itemTypeList: [employeeInformation, ...salaryGroups] + }; + return ( + this.preRef = dom} scalable hasScroll className="payPreBox" initLoadCss + style={{ + width: 998, height: window.innerHeight - 40, minHeight: 200, minWidth: 380, maxHeight: "90%", + maxWidth: "90%", overflow: "hidden", transform: "translate(0px, 0px)" + }} + > +
{!_.isEmpty(salaryGroups) && }
+
+ ); + } +} + +export default PayrollPreviewDialog; diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js index 16043fcd..acc6bfd1 100644 --- a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js @@ -10,6 +10,7 @@ import CustomPaginationTable from "../../../components/customPaginationTable"; import PayrollPartTable from "./payrollPartTable"; import { genPdfBeforeExport, getPayrollIssuanceProgressBar } from "../../../apis/payroll"; import ProgressModal from "../../../components/progressModal"; +import PayrollPreviewDialog from "./components/payrollPreviewDialog"; const getLabel = WeaLocaleProvider.getLabel; const { ButtonSelect } = WeaDropdown; @@ -31,6 +32,10 @@ export default class PayrollGrant extends React.Component { title: "工资单发放", grantType: "", salarySendId: "" + }, + payrollPreviewDialog: { + visible: false, title: getLabel(111, "工资单预览"), + salaryInfoId: "", recipient: "" } }; this.pageInfo = { current: 1, pageSize: 10 }; @@ -303,7 +308,7 @@ export default class PayrollGrant extends React.Component { }; getColumns = () => { - const { selectedKey, showFeedbackColumn } = this.state; + const { selectedKey, showFeedbackColumn, payrollPreviewDialog } = this.state; const { payrollStore } = this.props; const { salaryGrantTableStore: columns, salarySendDetailBaseInfo } = payrollStore; return _.map([ @@ -323,7 +328,13 @@ export default class PayrollGrant extends React.Component { onClick={() => this.handleWithdraw({ ids: [record.id] })}> 撤回 - + this.setState({ + payrollPreviewDialog: { + ...payrollPreviewDialog, + visible: true, salaryInfoId: record.id, recipient: record.employeeId + } + })}> 预览 { @@ -376,7 +387,12 @@ export default class PayrollGrant extends React.Component { onClick={() => this.handleGrant({ ids: [record.id] })}> 发放 - + this.setState({ + payrollPreviewDialog: { + ...payrollPreviewDialog, + visible: true, salaryInfoId: record.id, recipient: record.employeeId + } + })}> 预览 @@ -549,7 +565,7 @@ export default class PayrollGrant extends React.Component { getInfoList, loading } = payrollStore; - const { selectedRowKeys, selectedKey, currentId, payrollPartModalParams } = this.state; + const { selectedRowKeys, selectedKey, currentId, payrollPartModalParams, payrollPreviewDialog } = this.state; const rowSelection = { selectedRowKeys, onChange: this.onSelectChange @@ -659,6 +675,14 @@ export default class PayrollGrant extends React.Component { progress={this.state.progress} /> } + {/*工资单预览*/} + this.setState({ + payrollPreviewDialog: { + ...payrollPreviewDialog, + visible: false + } + })}/>
); } From 1c67adbd25fb5c86b1b8d1e02f4c807b37c729f2 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, 18 Jun 2024 15:30:46 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feature/2.14.4.2406.02-=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E5=8D=95=E5=8F=91=E6=94=BE=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js index acc6bfd1..8cde7da5 100644 --- a/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js +++ b/pc4mobx/hrmSalary/pages/payroll/payrollGrant/index.js @@ -335,7 +335,7 @@ export default class PayrollGrant extends React.Component { visible: true, salaryInfoId: record.id, recipient: record.employeeId } })}> - 预览 + {getLabel(111, "查看")} { salarySendDetailBaseInfo.showPdfBtn && @@ -393,7 +393,7 @@ export default class PayrollGrant extends React.Component { visible: true, salaryInfoId: record.id, recipient: record.employeeId } })}> - 预览 + {getLabel(111, "查看")} );