salary-management-front/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js

162 lines
6.6 KiB
JavaScript
Raw Normal View History

import React from "react";
import { Radio, Switch } from "antd";
2023-05-23 17:03:25 +08:00
import { WeaButtonIcon, WeaFormItem, WeaInput, WeaSearchGroup, WeaLocaleProvider } from "ecCom";
import { inject, observer } from "mobx-react";
import { toJS } from "mobx";
import BackgroundUpload from "../components/backgroundUpload";
import SalaryItemSettings from "./salaryItemSettings";
2022-12-07 14:15:46 +08:00
import "./index.less";
2022-03-18 14:16:52 +08:00
2023-05-23 17:03:25 +08:00
const getLabel = WeaLocaleProvider.getLabel;
@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
componentWillMount() {
const { payrollStore } = this.props;
const { initShowSettingForm } = payrollStore;
initShowSettingForm(this.props.id);
}
// form 字段变化时的回调
handleChange = (params) => {
const { payrollStore: { salaryTemplateShowSet, setSalaryTemplateShowSet } } = this.props;
let request = { ...salaryTemplateShowSet, ...params };
setSalaryTemplateShowSet(request);
2023-02-03 09:21:51 +08:00
window.localStorage.setItem("salary-showset", JSON.stringify(request));
};
// 工资单主题 插入变量
handleThemeNameCllck = (param) => {
const { payrollStore } = this.props;
const { salaryTemplateShowSet, setSalaryTemplateShowSet } = payrollStore;
let request = { ...salaryTemplateShowSet };
request.theme = (request.theme ? request.theme : "") + param;
setSalaryTemplateShowSet(request);
2023-02-03 09:21:51 +08:00
window.localStorage.setItem("salary-showset", JSON.stringify(request));
};
handleChangeSalaryItem = (resultSet) => {
const { payrollStore: { setSalaryItemSet } } = this.props;
setSalaryItemSet(resultSet);
};
handleChangeSalaryItemShowNamesetting = (itemShowNamesetting) => {
const { payrollStore: { setSalaryBillItemNameSetting, salaryBillItemNameSetting } } = this.props;
setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
if (it.salaryBillType === 0) {
return { ...it, salaryTemplateId: this.props.id, itemShowNameSetting: itemShowNamesetting };
}
return { ...it, salaryTemplateId: this.props.id };
}));
};
render() {
const { payrollStore, id } = this.props;
2023-02-03 09:21:51 +08:00
const salaryTemplateShowSetStorage = (id ? "{}" : window.localStorage.getItem("salary-showset") || "{}");
const { salaryTemplateShowSet } = payrollStore;
const { salaryItemSet, templateBaseData, salaryBillItemNameSet } = payrollStore;
const {
theme,
background,
textContent,
textContentPosition,
salaryItemNullStatus,
salaryItemZeroStatus
2022-12-07 14:15:46 +08:00
} = { ...salaryTemplateShowSet, ...JSON.parse(salaryTemplateShowSetStorage) };
return (
<div className="showSettingForm">
2023-06-09 10:38:26 +08:00
<WeaSearchGroup title={getLabel(543587, "主题及其他设置")} items={[]} needTigger showGroup>
<div className="themeSetting">
<WeaFormItem
2023-06-09 10:38:26 +08:00
label={getLabel(543588, "工资单标题")}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<WeaInput style={{ width: "200px" }} viewAttr={3} value={theme} onChange={(value) => {
this.handleChange({ theme: value });
}}/>
<span style={{ float: "right" }}>
2023-06-09 10:38:26 +08:00
<span>{getLabel(500143, "插入变量")}</span>
<a onClick={() => {
this.handleThemeNameCllck("${companyName}");
2023-06-09 10:38:26 +08:00
}} className="themeFormalStr" style={{ marginRight: "10px" }}>{getLabel(1976, "公司名称")}</a>
<a onClick={() => {
this.handleThemeNameCllck("${salaryMonth}");
2023-06-07 15:27:24 +08:00
}} className="themeFormalStr">{getLabel(542604, "薪资所属月")}</a>
</span>
</WeaFormItem>
<WeaFormItem
2023-06-09 10:38:26 +08:00
label={getLabel(543589, "工资单图片")}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
2023-03-02 17:23:23 +08:00
<BackgroundUpload imageUrl={background || null} onChange={(value) => {
this.handleChange({ background: value });
}}/>
</WeaFormItem>
<WeaFormItem
2023-06-09 10:38:26 +08:00
label={getLabel(20749, "文本内容")}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<WeaInput value={textContent} onChange={(value) => {
this.handleChange({ textContent: value });
}}/>
</WeaFormItem>
<WeaFormItem
2023-06-09 10:38:26 +08:00
label={getLabel(543590, "文本内容位置")}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<Radio.Group value={textContentPosition} onChange={(e) => {
this.handleChange({ textContentPosition: e.target.value });
}}>
2023-06-09 10:38:26 +08:00
<Radio value={"1"}>{getLabel(542697, "薪资项目前")}</Radio>
<Radio value={"2"}>{getLabel(542698, "薪资项目后")}</Radio>
</Radio.Group>
</WeaFormItem>
<WeaFormItem
2023-06-09 10:38:26 +08:00
label={getLabel(543591, "薪资项为空时不显示")}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<Switch checked={salaryItemNullStatus} onChange={(value) => {
this.handleChange({ salaryItemNullStatus: value });
}}/>
</WeaFormItem>
<WeaFormItem
2023-06-09 10:38:26 +08:00
label={getLabel(543592, "薪资项为0时不显示")}
labelCol={{ span: 6 }}
wrapperCol={{ span: 18 }}
>
<Switch checked={salaryItemZeroStatus} onChange={(value) => {
this.handleChange({ salaryItemZeroStatus: value });
}}/>
</WeaFormItem>
</div>
</WeaSearchGroup>
<WeaSearchGroup
title={
<div className="salarySetTitle">
2023-06-09 10:38:26 +08:00
<span>{getLabel(543593, "薪资项目设置")}</span>
<WeaButtonIcon buttonType="add" type="primary"
2023-06-09 11:38:20 +08:00
onClick={() => this.salaryItemSettingsRef.handleOpenModal(toJS(templateBaseData).salarySob, getLabel(543594, "添加分类"))}/>
</div>
}
items={[]} needTigger showGroup
>
<SalaryItemSettings
ref={dom => this.salaryItemSettingsRef = dom}
dataSource={salaryItemSet} salaryTemplateId={this.props.id || ""}
onChangeSalaryItem={this.handleChangeSalaryItem}
onChangeSalaryItemShowNamesetting={this.handleChangeSalaryItemShowNamesetting}
salarySobId={toJS(templateBaseData).salarySob}
isReplenish={false} salaryBillItemNameSet={salaryBillItemNameSet}
/>
</WeaSearchGroup>
</div>
);
}
}