salary-management-front/pc4mobx/hrmSalary/pages/payroll/templateBaseSettings.js

163 lines
6.1 KiB
JavaScript

/*
* Author: 黎永顺
* name: 工资单模板基础设置
* Description:
* Date: 2023/6/12
*/
import React, { Component } from "react";
import {
WeaCheckbox,
WeaFormItem,
WeaInput,
WeaInputNumber,
WeaLocaleProvider,
WeaSearchGroup,
WeaSelect
} from "ecCom";
import { message, Modal } from "antd";
import { getSalaryBillBaseSetForm, salaryBillBaseSetSave } from "../../apis/payroll";
import WaterMarkSetModal from "./components/waterMarkSetModal";
import "./index.less";
const getLabel = WeaLocaleProvider.getLabel;
class TemplateBaseSettings extends Component {
constructor(props) {
super(props);
this.state = {
watermarkStatus: "0",
watermark: "DEFAULT",
wmSetting: null,
watermarkSet: {
visible: false, watermarkSetting: null
},
ackFeedbackSetting: {
ackStatus: "0",
autoAckDays: 7,
feedBackUrl: ""
}
};
}
componentDidMount() {
this.getSalaryBillBaseSetForm();
}
getSalaryBillBaseSetForm = () => {
const { watermarkSet } = this.state;
getSalaryBillBaseSetForm().then(({ status, data }) => {
if (status) {
const { watermarkStatus, watermark = "DEFAULT", watermarkSetting, ackFeedbackSetting } = data;
this.setState({
watermark, watermarkStatus: watermarkStatus ? "1" : "0", ackFeedbackSetting,
wmSetting: { wmSetting: watermarkSetting },
watermarkSet: {
...watermarkSet,
watermarkSetting
}
}, () => window.localStorage.setItem("wmSetting", JSON.stringify({ wmSetting: watermarkSetting })));
}
});
};
salaryBillBaseSetSave = () => {
const { watermark, watermarkStatus, wmSetting, ackFeedbackSetting } = this.state;
const { feedBackUrl } = ackFeedbackSetting;
if (!feedBackUrl) {
Modal.warning({
title: getLabel(111, "信息确认"),
content: getLabel(111, "必要信息不完整,红色*为必填项!")
});
return;
}
let payload = { watermarkStatus: watermarkStatus === "1", ackFeedbackSetting: { ...ackFeedbackSetting } };
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));
};
render() {
const { watermarkStatus, watermark, watermarkSet, ackFeedbackSetting } = this.state;
const { ackStatus, autoAckDays, feedBackUrl } = ackFeedbackSetting;
return (
<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" })}/>
</WeaFormItem>
{
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}
onChange={autoAckDays => this.setState({
ackFeedbackSetting: {
...ackFeedbackSetting, autoAckDays
}
})}/>
</WeaFormItem>
<WeaFormItem label={getLabel(111, "反馈流程地址")} labelCol={{ span: 2 }} wrapperCol={{ span: 4 }}>
<WeaInput
value={feedBackUrl} viewAttr={3}
onChange={feedBackUrl => this.setState({
ackFeedbackSetting: {
...ackFeedbackSetting, feedBackUrl
}
})}/>
</WeaFormItem>
</React.Fragment>
}
</WeaSearchGroup>
</React.Fragment>
);
}
}
export default TemplateBaseSettings;