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 52bb065c..8cde7da5 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,6 +328,15 @@ 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
+ }
+ })}>
+ {getLabel(111, "查看")}
+
{
salarySendDetailBaseInfo.showPdfBtn &&
this.handleGrant({ ids: [record.id] })}>
- 发放
-
+
+ this.handleGrant({ ids: [record.id] })}>
+ 发放
+
+ this.setState({
+ payrollPreviewDialog: {
+ ...payrollPreviewDialog,
+ visible: true, salaryInfoId: record.id, recipient: record.employeeId
+ }
+ })}>
+ {getLabel(111, "查看")}
+
+
);
}
}
@@ -538,9 +562,10 @@ export default class PayrollGrant extends React.Component {
grantListCondition,
setGrantListShowSearchAd,
salaryGrantPageInfo,
- getInfoList
+ getInfoList,
+ loading
} = payrollStore;
- const { selectedRowKeys, selectedKey, currentId, payrollPartModalParams } = this.state;
+ const { selectedRowKeys, selectedKey, currentId, payrollPartModalParams, payrollPreviewDialog } = this.state;
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange
@@ -569,35 +594,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 +635,7 @@ export default class PayrollGrant extends React.Component {
{
- !_.isEmpty(this.getColumns()) ?
+ !loading ?
}
+ {/*工资单预览*/}
+
this.setState({
+ payrollPreviewDialog: {
+ ...payrollPreviewDialog,
+ visible: false
+ }
+ })}/>
);
}
diff --git a/pc4mobx/hrmSalary/stores/payroll.js b/pc4mobx/hrmSalary/stores/payroll.js
index 4da841d0..ef1e46a1 100644
--- a/pc4mobx/hrmSalary/stores/payroll.js
+++ b/pc4mobx/hrmSalary/stores/payroll.js
@@ -458,7 +458,9 @@ export class payrollStore {
departmentIds: form.departmentIds ? form.departmentIds.split(",") : [],
subCompanyIds: form.subCompanyIds ? form.subCompanyIds.split(",") : []
};
+ this.loading = true;
API.getInfoList(params).then(res => {
+ 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);
};
// 工资单-工资单发放详情列表