2022-10-20 17:53:26 +08:00
|
|
|
|
import React from "react";
|
|
|
|
|
|
import { Icon, Modal, Radio, Switch } from "antd";
|
|
|
|
|
|
import { WeaFormItem, WeaInput, WeaSearchGroup } from "ecCom";
|
|
|
|
|
|
import { inject, observer } from "mobx-react";
|
|
|
|
|
|
import BackgroundUpload from "../components/backgroundUpload";
|
2022-12-07 14:15:46 +08:00
|
|
|
|
import "./index.less";
|
2022-03-18 14:16:52 +08:00
|
|
|
|
|
|
|
|
|
|
|
2022-10-20 17:53:26 +08:00
|
|
|
|
@inject("payrollStore")
|
2022-04-13 16:56:31 +08:00
|
|
|
|
@observer
|
2022-03-18 14:16:52 +08:00
|
|
|
|
export default class ShowSettingForm extends React.Component {
|
2022-04-13 16:56:31 +08:00
|
|
|
|
|
2022-10-20 17:53:26 +08:00
|
|
|
|
componentWillMount() {
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { initShowSettingForm } = payrollStore;
|
|
|
|
|
|
initShowSettingForm(this.props.id);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// form 字段变化时的回调
|
2022-12-07 15:14:20 +08:00
|
|
|
|
handleChange = (params) => {
|
2022-10-20 17:53:26 +08:00
|
|
|
|
const { payrollStore: { salaryTemplateShowSet, setSalaryTemplateShowSet } } = this.props;
|
|
|
|
|
|
let request = { ...salaryTemplateShowSet, ...params };
|
|
|
|
|
|
setSalaryTemplateShowSet(request);
|
2022-12-07 15:14:20 +08:00
|
|
|
|
};
|
2022-10-20 17:53:26 +08:00
|
|
|
|
|
|
|
|
|
|
// 工资单主题 插入变量
|
2022-12-07 15:14:20 +08:00
|
|
|
|
handleThemeNameCllck = (param) => {
|
2022-10-20 17:53:26 +08:00
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { salaryTemplateShowSet, setSalaryTemplateShowSet } = payrollStore;
|
|
|
|
|
|
let request = { ...salaryTemplateShowSet };
|
|
|
|
|
|
request.theme = (request.theme ? request.theme : "") + param;
|
|
|
|
|
|
setSalaryTemplateShowSet(request);
|
2022-12-07 15:14:20 +08:00
|
|
|
|
};
|
2022-10-20 17:53:26 +08:00
|
|
|
|
|
2022-12-07 15:14:20 +08:00
|
|
|
|
handleDownClick = (index) => {
|
2022-10-20 17:53:26 +08:00
|
|
|
|
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
|
|
|
|
|
|
let downItem = salaryItemSet[index + 1];
|
|
|
|
|
|
let thisItem = salaryItemSet[index];
|
|
|
|
|
|
let resultSet = [...salaryItemSet];
|
|
|
|
|
|
resultSet[index] = downItem;
|
|
|
|
|
|
resultSet[index + 1] = thisItem;
|
|
|
|
|
|
setSalaryItemSet(resultSet);
|
2022-12-07 15:14:20 +08:00
|
|
|
|
};
|
2022-10-20 17:53:26 +08:00
|
|
|
|
|
2022-12-07 15:14:20 +08:00
|
|
|
|
handleUpClick = (index) => {
|
2022-10-20 17:53:26 +08:00
|
|
|
|
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
|
|
|
|
|
|
let upItem = salaryItemSet[index - 1];
|
|
|
|
|
|
let thisItem = salaryItemSet[index];
|
|
|
|
|
|
let resultSet = [...salaryItemSet];
|
|
|
|
|
|
resultSet[index] = upItem;
|
|
|
|
|
|
resultSet[index - 1] = thisItem;
|
|
|
|
|
|
setSalaryItemSet(resultSet);
|
2022-12-07 15:14:20 +08:00
|
|
|
|
};
|
2022-10-20 17:53:26 +08:00
|
|
|
|
|
2022-12-07 15:14:20 +08:00
|
|
|
|
handleDeleteItem = (group, item) => {
|
2022-10-20 17:53:26 +08:00
|
|
|
|
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
|
|
|
|
|
|
let resultSalaryItemSet = [...salaryItemSet];
|
|
|
|
|
|
resultSalaryItemSet.map(sourceGroup => {
|
|
|
|
|
|
if (sourceGroup.id == group.id) {
|
|
|
|
|
|
sourceGroup.items.map((sourceItem, index) => {
|
|
|
|
|
|
if (sourceItem.id == item.id) {
|
|
|
|
|
|
sourceGroup.items.splice(index, 1);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
setSalaryItemSet(resultSalaryItemSet);
|
2022-12-07 15:14:20 +08:00
|
|
|
|
};
|
2022-10-20 17:53:26 +08:00
|
|
|
|
|
2022-12-07 15:14:20 +08:00
|
|
|
|
handleDeleteClick = (index) => {
|
2022-10-20 17:53:26 +08:00
|
|
|
|
Modal.confirm({
|
|
|
|
|
|
title: "信息确认",
|
|
|
|
|
|
content: "确认删除",
|
|
|
|
|
|
onOk: () => {
|
|
|
|
|
|
const { payrollStore: { salaryItemSet, setSalaryItemSet } } = this.props;
|
|
|
|
|
|
let resultSalaryItemSet = [...salaryItemSet];
|
|
|
|
|
|
resultSalaryItemSet.splice(index, 1);
|
|
|
|
|
|
setSalaryItemSet(resultSalaryItemSet);
|
|
|
|
|
|
}
|
|
|
|
|
|
});
|
2022-12-07 15:14:20 +08:00
|
|
|
|
};
|
2022-10-20 17:53:26 +08:00
|
|
|
|
|
|
|
|
|
|
render() {
|
2022-12-07 15:14:20 +08:00
|
|
|
|
const { payrollStore, id } = this.props;
|
2023-01-09 14:04:08 +08:00
|
|
|
|
const salaryTemplateShowSetStorage = id ? "{}" : window.localStorage.getItem("salary-showset") || "{}";
|
2022-10-20 17:53:26 +08:00
|
|
|
|
const { salaryTemplateShowSet } = payrollStore;
|
|
|
|
|
|
const { salaryItemSet } = payrollStore;
|
|
|
|
|
|
const {
|
|
|
|
|
|
theme,
|
|
|
|
|
|
background,
|
|
|
|
|
|
textContent,
|
|
|
|
|
|
textContentPosition,
|
|
|
|
|
|
salaryItemNullStatus,
|
|
|
|
|
|
salaryItemZeroStatus
|
2022-12-07 14:15:46 +08:00
|
|
|
|
} = { ...salaryTemplateShowSet, ...JSON.parse(salaryTemplateShowSetStorage) };
|
2022-10-20 17:53:26 +08:00
|
|
|
|
return (
|
|
|
|
|
|
<div className="showSettingForm">
|
|
|
|
|
|
<WeaSearchGroup title="主题及其他设置" items={[]} needTigger showGroup center>
|
|
|
|
|
|
<WeaFormItem
|
|
|
|
|
|
label="工资单主题"
|
|
|
|
|
|
labelCol={{ span: 6 }}
|
|
|
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<WeaInput style={{ width: "200px" }} viewAttr={3} value={theme} onChange={(value) => {
|
|
|
|
|
|
this.handleChange({ theme: value });
|
|
|
|
|
|
}}/>
|
|
|
|
|
|
<span style={{ float: "right" }}>
|
|
|
|
|
|
<span>插入变量:</span>
|
|
|
|
|
|
<a onClick={() => {
|
|
|
|
|
|
this.handleThemeNameCllck("${companyName}");
|
|
|
|
|
|
}} className="themeFormalStr" style={{ marginRight: "10px" }}>公司名称</a>
|
|
|
|
|
|
<a onClick={() => {
|
|
|
|
|
|
this.handleThemeNameCllck("${salaryMonth}");
|
|
|
|
|
|
}} className="themeFormalStr">薪资所属月</a>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
<WeaFormItem
|
|
|
|
|
|
label="工资单背景"
|
|
|
|
|
|
labelCol={{ span: 6 }}
|
|
|
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<BackgroundUpload imageUrl={background} onChange={(value) => {
|
|
|
|
|
|
this.handleChange({ background: value });
|
|
|
|
|
|
}}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
<WeaFormItem
|
|
|
|
|
|
label="文本内容"
|
|
|
|
|
|
labelCol={{ span: 6 }}
|
|
|
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<WeaInput value={textContent} onChange={(value) => {
|
|
|
|
|
|
this.handleChange({ textContent: value });
|
|
|
|
|
|
}}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
<WeaFormItem
|
|
|
|
|
|
label="文本内容位置"
|
|
|
|
|
|
labelCol={{ span: 6 }}
|
|
|
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<Radio.Group value={textContentPosition} onChange={(e) => {
|
|
|
|
|
|
this.handleChange({ textContentPosition: e.target.value });
|
|
|
|
|
|
}}>
|
|
|
|
|
|
<Radio value={"1"}>薪资项目前</Radio>
|
|
|
|
|
|
<Radio value={"2"}>薪资项目后</Radio>
|
|
|
|
|
|
</Radio.Group>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
<WeaFormItem
|
|
|
|
|
|
label="薪资项为空时不显示"
|
|
|
|
|
|
labelCol={{ span: 6 }}
|
|
|
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<Switch checked={salaryItemNullStatus} onChange={(value) => {
|
|
|
|
|
|
this.handleChange({ salaryItemNullStatus: value });
|
|
|
|
|
|
}}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
<WeaFormItem
|
|
|
|
|
|
label="薪资项为0时不显示"
|
|
|
|
|
|
labelCol={{ span: 6 }}
|
|
|
|
|
|
wrapperCol={{ span: 18 }}
|
|
|
|
|
|
>
|
|
|
|
|
|
<Switch checked={salaryItemZeroStatus} onChange={(value) => {
|
|
|
|
|
|
this.handleChange({ salaryItemZeroStatus: value });
|
|
|
|
|
|
}}/>
|
|
|
|
|
|
</WeaFormItem>
|
|
|
|
|
|
</WeaSearchGroup>
|
|
|
|
|
|
|
|
|
|
|
|
<WeaSearchGroup title="薪资项目设置" items={[]} needTigger showGroup>
|
|
|
|
|
|
{
|
|
|
|
|
|
salaryItemSet.map((group, index) => (
|
|
|
|
|
|
<div className="configItemWrapper">
|
|
|
|
|
|
<div className="configTitle">{group.groupName}
|
|
|
|
|
|
{
|
|
|
|
|
|
index < salaryItemSet.length - 1 &&
|
|
|
|
|
|
<Icon
|
|
|
|
|
|
type="caret-down"
|
|
|
|
|
|
style={{ marginLeft: "10px", cursor: "pointer", color: "#666" }}
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleDownClick(index);
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
}
|
|
|
|
|
|
{
|
|
|
|
|
|
index > 0 &&
|
|
|
|
|
|
<Icon
|
|
|
|
|
|
type="caret-up"
|
|
|
|
|
|
style={{ marginLeft: "10px", cursor: "pointer", color: "#666" }}
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleUpClick(index);
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
}
|
|
|
|
|
|
<i
|
|
|
|
|
|
className="icon-coms-Delete"
|
|
|
|
|
|
style={{ cursor: "pointer", color: "#666", marginLeft: "10px" }}
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleDeleteClick(index);
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
2022-03-18 14:16:52 +08:00
|
|
|
|
</div>
|
2022-10-20 17:53:26 +08:00
|
|
|
|
<div className="configContent">
|
|
|
|
|
|
{group.items.map(item => (
|
|
|
|
|
|
<span className="editItem">{item.name}
|
|
|
|
|
|
<Icon
|
|
|
|
|
|
type="cross" style={{ cursor: "pointer" }}
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleDeleteItem(group, item);
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</span>
|
|
|
|
|
|
))}
|
2022-03-18 14:16:52 +08:00
|
|
|
|
</div>
|
2022-10-20 17:53:26 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
))
|
|
|
|
|
|
}
|
|
|
|
|
|
</WeaSearchGroup>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|