2023-06-13 09:10:23 +08:00
|
|
|
|
/*
|
|
|
|
|
|
* Author: 黎永顺
|
|
|
|
|
|
* name: 工资单模板基础设置
|
|
|
|
|
|
* Description:
|
|
|
|
|
|
* Date: 2023/6/12
|
|
|
|
|
|
*/
|
|
|
|
|
|
import React, { Component } from "react";
|
2023-07-12 16:18:54 +08:00
|
|
|
|
import {
|
|
|
|
|
|
WeaCheckbox,
|
|
|
|
|
|
WeaFormItem,
|
2023-07-17 17:40:30 +08:00
|
|
|
|
WeaHelpfulTip,
|
2023-07-12 16:18:54 +08:00
|
|
|
|
WeaInput,
|
|
|
|
|
|
WeaInputNumber,
|
|
|
|
|
|
WeaLocaleProvider,
|
|
|
|
|
|
WeaSearchGroup,
|
|
|
|
|
|
WeaSelect
|
|
|
|
|
|
} from "ecCom";
|
|
|
|
|
|
import { message, Modal } from "antd";
|
2023-06-15 18:28:06 +08:00
|
|
|
|
import { getSalaryBillBaseSetForm, salaryBillBaseSetSave } from "../../apis/payroll";
|
|
|
|
|
|
import WaterMarkSetModal from "./components/waterMarkSetModal";
|
2023-06-13 09:10:23 +08:00
|
|
|
|
import "./index.less";
|
|
|
|
|
|
|
|
|
|
|
|
const getLabel = WeaLocaleProvider.getLabel;
|
|
|
|
|
|
|
|
|
|
|
|
class TemplateBaseSettings extends Component {
|
|
|
|
|
|
constructor(props) {
|
|
|
|
|
|
super(props);
|
|
|
|
|
|
this.state = {
|
|
|
|
|
|
watermarkStatus: "0",
|
2023-06-15 18:28:06 +08:00
|
|
|
|
watermark: "DEFAULT",
|
|
|
|
|
|
wmSetting: null,
|
|
|
|
|
|
watermarkSet: {
|
|
|
|
|
|
visible: false, watermarkSetting: null
|
2023-07-12 16:18:54 +08:00
|
|
|
|
},
|
|
|
|
|
|
ackFeedbackSetting: {
|
|
|
|
|
|
ackStatus: "0",
|
2024-01-30 16:57:21 +08:00
|
|
|
|
feedbackStatus: "0",
|
2023-07-12 16:18:54 +08:00
|
|
|
|
autoAckDays: 7,
|
2024-01-24 16:29:27 +08:00
|
|
|
|
feedBackUrl: "",
|
|
|
|
|
|
mobileFeedbackUrl: ""
|
2023-10-07 16:37:44 +08:00
|
|
|
|
},
|
|
|
|
|
|
salaryBillViewingLimitSetting: {
|
2024-03-11 17:19:20 +08:00
|
|
|
|
limitMonth: 0, burningAfterReadingMin: null
|
2023-06-15 18:28:06 +08:00
|
|
|
|
}
|
2023-06-13 09:10:23 +08:00
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-06-15 18:28:06 +08:00
|
|
|
|
componentDidMount() {
|
|
|
|
|
|
this.getSalaryBillBaseSetForm();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getSalaryBillBaseSetForm = () => {
|
|
|
|
|
|
const { watermarkSet } = this.state;
|
|
|
|
|
|
getSalaryBillBaseSetForm().then(({ status, data }) => {
|
|
|
|
|
|
if (status) {
|
2023-10-07 16:37:44 +08:00
|
|
|
|
const {
|
|
|
|
|
|
watermarkStatus, watermark = "DEFAULT", watermarkSetting,
|
|
|
|
|
|
ackFeedbackSetting, salaryBillViewingLimitSetting = {}
|
|
|
|
|
|
} = data;
|
2023-06-15 18:28:06 +08:00
|
|
|
|
this.setState({
|
2023-10-07 16:37:44 +08:00
|
|
|
|
watermark, watermarkStatus: watermarkStatus ? "1" : "0", ackFeedbackSetting, salaryBillViewingLimitSetting,
|
2023-07-12 16:18:54 +08:00
|
|
|
|
wmSetting: { wmSetting: watermarkSetting },
|
2023-06-15 18:28:06 +08:00
|
|
|
|
watermarkSet: {
|
|
|
|
|
|
...watermarkSet,
|
|
|
|
|
|
watermarkSetting
|
|
|
|
|
|
}
|
|
|
|
|
|
}, () => window.localStorage.setItem("wmSetting", JSON.stringify({ wmSetting: watermarkSetting })));
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
salaryBillBaseSetSave = () => {
|
2023-10-07 16:37:44 +08:00
|
|
|
|
const { watermark, watermarkStatus, wmSetting, ackFeedbackSetting, salaryBillViewingLimitSetting } = this.state;
|
2024-03-06 14:33:28 +08:00
|
|
|
|
const { feedBackUrl, mobileFeedbackUrl, feedbackStatus, autoAckDays, ackStatus } = ackFeedbackSetting;
|
|
|
|
|
|
if (ackStatus === "1" && _.isNil(autoAckDays)) {
|
|
|
|
|
|
Modal.warning({
|
|
|
|
|
|
title: getLabel(111, "信息确认"),
|
|
|
|
|
|
content: getLabel(111, "必要信息不完整,红色*为必填项!")
|
|
|
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (feedbackStatus === "1" && (!feedBackUrl || !mobileFeedbackUrl)) {
|
2023-07-12 16:18:54 +08:00
|
|
|
|
Modal.warning({
|
|
|
|
|
|
title: getLabel(111, "信息确认"),
|
|
|
|
|
|
content: getLabel(111, "必要信息不完整,红色*为必填项!")
|
|
|
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2023-10-07 16:37:44 +08:00
|
|
|
|
let payload = {
|
|
|
|
|
|
watermarkStatus: watermarkStatus === "1", ackFeedbackSetting: { ...ackFeedbackSetting },
|
|
|
|
|
|
salaryBillViewingLimitSetting: { ...salaryBillViewingLimitSetting }
|
|
|
|
|
|
};
|
2023-06-15 18:28:06 +08:00
|
|
|
|
if (watermarkStatus === "1") payload = { ...payload, watermark };
|
|
|
|
|
|
if (!_.isNil(wmSetting)) payload = { ...payload, watermark, ...wmSetting };
|
|
|
|
|
|
this.props.onChangeLoading(true);
|
|
|
|
|
|
salaryBillBaseSetSave(payload).then(({ status, errormsg }) => {
|
|
|
|
|
|
this.props.onChangeLoading(false);
|
|
|
|
|
|
if (status) {
|
|
|
|
|
|
message.success(getLabel(111, "保存成功"));
|
|
|
|
|
|
this.getSalaryBillBaseSetForm();
|
|
|
|
|
|
} else {
|
|
|
|
|
|
message.error(errormsg || getLabel(111, "保存失败"));
|
|
|
|
|
|
}
|
|
|
|
|
|
}).catch(() => this.props.onChangeLoading(false));
|
|
|
|
|
|
};
|
|
|
|
|
|
|
2023-06-13 09:10:23 +08:00
|
|
|
|
render() {
|
2023-10-07 16:37:44 +08:00
|
|
|
|
const { watermarkStatus, watermark, watermarkSet, ackFeedbackSetting, salaryBillViewingLimitSetting } = this.state;
|
2024-01-30 16:57:21 +08:00
|
|
|
|
const { ackStatus, feedbackStatus, autoAckDays, feedBackUrl, mobileFeedbackUrl } = ackFeedbackSetting;
|
2024-10-22 14:53:36 +08:00
|
|
|
|
const { monthType = "SALARY_DATE", limitMonth, burningAfterReadingMin } = salaryBillViewingLimitSetting;
|
2023-06-13 09:10:23 +08:00
|
|
|
|
return (
|
2023-07-12 16:18:54 +08:00
|
|
|
|
<React.Fragment>
|
|
|
|
|
|
<WeaSearchGroup title={getLabel(111, "水印设置")} showGroup needTigger className="waterMarkWrapper">
|
|
|
|
|
|
<WeaFormItem label={getLabel(111, "启用水印")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
|
|
|
|
|
<WeaCheckbox value={watermarkStatus} display="switch"
|
|
|
|
|
|
onChange={watermarkStatus => this.setState({ watermarkStatus, watermark: "DEFAULT" })}/>
|
2023-06-13 09:10:23 +08:00
|
|
|
|
</WeaFormItem>
|
2023-07-12 16:18:54 +08:00
|
|
|
|
{
|
|
|
|
|
|
watermarkStatus === "1" &&
|
|
|
|
|
|
<WeaFormItem label={getLabel(111, "水印类型")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
|
|
|
|
|
<WeaSelect
|
|
|
|
|
|
value={watermark}
|
|
|
|
|
|
options={[
|
|
|
|
|
|
{ key: "DEFAULT", showname: getLabel(111, "系统默认水印") },
|
|
|
|
|
|
{ key: "CUSTOM", showname: getLabel(111, "自定义水印") }
|
|
|
|
|
|
]}
|
|
|
|
|
|
onChange={watermark => this.setState({ watermark })}
|
|
|
|
|
|
/>
|
|
|
|
|
|
{
|
|
|
|
|
|
watermark === "CUSTOM" &&
|
|
|
|
|
|
<span className="waterMarkTitle" onClick={() => this.setState({
|
|
|
|
|
|
watermarkSet: {
|
|
|
|
|
|
...watermarkSet,
|
|
|
|
|
|
visible: true
|
|
|
|
|
|
}
|
|
|
|
|
|
})}>{getLabel(111, "水印设置")}</span>
|
|
|
|
|
|
}
|
|
|
|
|
|
<WaterMarkSetModal {...watermarkSet}
|
|
|
|
|
|
onClose={() => this.setState({ watermarkSet: { ...watermarkSet, visible: false } })}
|
|
|
|
|
|
onChange={wmSetting => this.setState({ wmSetting })}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
}
|
|
|
|
|
|
</WeaSearchGroup>
|
|
|
|
|
|
<WeaSearchGroup title={getLabel(111, "工资单确认反馈设置")} showGroup needTigger className="waterMarkWrapper">
|
|
|
|
|
|
<WeaFormItem label={getLabel(111, "启用工资单确认")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
|
|
|
|
|
<WeaCheckbox value={ackStatus} display="switch"
|
|
|
|
|
|
onChange={ackStatus => this.setState({
|
|
|
|
|
|
ackFeedbackSetting: {
|
|
|
|
|
|
...ackFeedbackSetting, ackStatus, autoAckDays: 7
|
|
|
|
|
|
}
|
|
|
|
|
|
})}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
{
|
|
|
|
|
|
ackStatus === "1" &&
|
|
|
|
|
|
<React.Fragment>
|
|
|
|
|
|
<WeaFormItem label={getLabel(111, "自动确认超时天数")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
|
|
|
|
|
<WeaInputNumber
|
|
|
|
|
|
min={1} value={autoAckDays} viewAttr={3}
|
2023-07-17 17:40:30 +08:00
|
|
|
|
style={{ width: "90%" }}
|
2023-07-12 16:18:54 +08:00
|
|
|
|
onChange={autoAckDays => this.setState({
|
|
|
|
|
|
ackFeedbackSetting: {
|
|
|
|
|
|
...ackFeedbackSetting, autoAckDays
|
|
|
|
|
|
}
|
|
|
|
|
|
})}/>
|
2023-07-17 17:40:30 +08:00
|
|
|
|
<WeaHelpfulTip
|
|
|
|
|
|
title={getLabel(111, "开启后,还需在计划任务中配置定时任务,执行自动确认任务;邮箱端查看工资单暂不支持确认及反馈;")}
|
2024-01-30 16:57:21 +08:00
|
|
|
|
style={{ marginLeft: 5 }}
|
2023-07-17 17:40:30 +08:00
|
|
|
|
placement="top" width={200}/>
|
2023-07-12 16:18:54 +08:00
|
|
|
|
</WeaFormItem>
|
2024-01-30 16:57:21 +08:00
|
|
|
|
</React.Fragment>
|
|
|
|
|
|
}
|
|
|
|
|
|
<WeaFormItem label={getLabel(111, "启用工资单反馈")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
|
|
|
|
|
<WeaCheckbox value={feedbackStatus} display="switch"
|
|
|
|
|
|
onChange={feedbackStatus => this.setState({
|
|
|
|
|
|
ackFeedbackSetting: {
|
|
|
|
|
|
...ackFeedbackSetting, feedbackStatus
|
|
|
|
|
|
}
|
|
|
|
|
|
})}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
{
|
|
|
|
|
|
feedbackStatus === "1" &&
|
|
|
|
|
|
<React.Fragment>
|
2024-01-24 16:29:27 +08:00
|
|
|
|
<WeaFormItem label={getLabel(111, "PC端反馈流程地址")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
2023-07-12 16:18:54 +08:00
|
|
|
|
<WeaInput
|
|
|
|
|
|
value={feedBackUrl} viewAttr={3}
|
|
|
|
|
|
onChange={feedBackUrl => this.setState({
|
|
|
|
|
|
ackFeedbackSetting: {
|
|
|
|
|
|
...ackFeedbackSetting, feedBackUrl
|
|
|
|
|
|
}
|
2024-01-24 16:29:27 +08:00
|
|
|
|
})}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
<WeaFormItem label={getLabel(111, "移动端反馈流程地址")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
|
|
|
|
|
|
<WeaInput
|
|
|
|
|
|
value={mobileFeedbackUrl} viewAttr={3}
|
|
|
|
|
|
onChange={mobileFeedbackUrl => this.setState({
|
|
|
|
|
|
ackFeedbackSetting: {
|
|
|
|
|
|
...ackFeedbackSetting, mobileFeedbackUrl
|
|
|
|
|
|
}
|
2023-07-12 16:18:54 +08:00
|
|
|
|
})}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
</React.Fragment>
|
|
|
|
|
|
}
|
|
|
|
|
|
</WeaSearchGroup>
|
2023-10-07 16:37:44 +08:00
|
|
|
|
<WeaSearchGroup title={getLabel(111, "工资单时效设置")} showGroup needTigger className="waterMarkWrapper">
|
|
|
|
|
|
<div className="agingBox">
|
|
|
|
|
|
<span>{getLabel(111, "仅可查看")}</span>
|
2024-10-22 14:53:36 +08:00
|
|
|
|
<WeaSelect
|
|
|
|
|
|
value={monthType} onChange={monthType => this.setState({
|
|
|
|
|
|
salaryBillViewingLimitSetting: { ...salaryBillViewingLimitSetting, monthType }
|
|
|
|
|
|
})}
|
|
|
|
|
|
options={[
|
|
|
|
|
|
{ key: "SALARY_DATE", showname: getLabel(111, "薪资所属月"), selected: true },
|
|
|
|
|
|
{ key: "SEND_DATE", showname: getLabel(111, "发放日期") }
|
|
|
|
|
|
]}/>
|
2023-10-07 16:37:44 +08:00
|
|
|
|
<WeaInputNumber min={0} value={limitMonth}
|
|
|
|
|
|
onChange={limitMonth => this.setState({
|
|
|
|
|
|
salaryBillViewingLimitSetting: {
|
|
|
|
|
|
...salaryBillViewingLimitSetting, limitMonth
|
|
|
|
|
|
}
|
|
|
|
|
|
})}/>
|
|
|
|
|
|
<span>{getLabel(111, "个月内的工资单")}</span>
|
2023-10-08 10:51:26 +08:00
|
|
|
|
<WeaHelpfulTip
|
|
|
|
|
|
title={getLabel(111, "0表示不控制!")}
|
|
|
|
|
|
style={{ marginLeft: 10 }}
|
|
|
|
|
|
placement="top"/>
|
2023-10-07 16:37:44 +08:00
|
|
|
|
</div>
|
2024-03-11 17:19:20 +08:00
|
|
|
|
<div className="agingBox">
|
|
|
|
|
|
<span>{getLabel(111, "首次查看")}</span>
|
|
|
|
|
|
<WeaInputNumber min={0} value={burningAfterReadingMin}
|
|
|
|
|
|
onChange={burningAfterReadingMin => this.setState({
|
|
|
|
|
|
salaryBillViewingLimitSetting: {
|
|
|
|
|
|
...salaryBillViewingLimitSetting, burningAfterReadingMin
|
|
|
|
|
|
}
|
|
|
|
|
|
})}/>
|
|
|
|
|
|
<span>{getLabel(111, "分钟后无法查看工资单")}</span>
|
|
|
|
|
|
<WeaHelpfulTip
|
2024-03-13 09:26:29 +08:00
|
|
|
|
title={getLabel(111, "空代表不控制,0代表只能查看一次工资单!设置后对所有工资单(包含已发工资单)立即生效!")}
|
2024-03-11 17:19:20 +08:00
|
|
|
|
style={{ marginLeft: 10 }}
|
|
|
|
|
|
placement="top"/>
|
|
|
|
|
|
</div>
|
2023-10-07 16:37:44 +08:00
|
|
|
|
</WeaSearchGroup>
|
2023-07-12 16:18:54 +08:00
|
|
|
|
</React.Fragment>
|
2023-06-13 09:10:23 +08:00
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default TemplateBaseSettings;
|