- {getLabel(111, "每月")}
+ {getLabel(542604, "薪资所属月")}
+ handleChangeSendtime("autoSendCycleType", Number(v))}
+ />
({ key: item, showname: item }))}
+ options={_.map(getDay(autoSendCycleType), item => ({ key: item, showname: item }))}
onChange={v => handleChangeSendtime("autoSendDayOfMonth", v)}
/>
{getLabel(16992, "号")}
@@ -222,15 +288,14 @@ const SendTimeComp = (props) => {
;
};
-const getDay = () => {
+const getDay = (num = 1) => {
let days = [];
- let day = getDaysInMonth(moment().year(), moment().month() + 1);
+ let day = getDaysInMonth(moment().year(), moment().month() + num);
for (let i = 1; i <= day; i++) {
days.push(i);
}
return days;
};
-
const getDaysInMonth = (year, month) => {
month = parseInt(month, 10);
let d = new Date(year, month, 0);
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less b/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less
index f30d0063..ebcbbe4c 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less
@@ -192,9 +192,11 @@
.salaryItemName {
width: 100%;
+ min-height: 18px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
+ cursor: pointer;
}
i.anticon-cross {
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js
index d597de4f..bc589087 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/salaryItemSettings.js
@@ -17,13 +17,16 @@ class SalaryItemSettings extends Component {
super(props);
this.state = {
dataList: [],
+ itemShowNamesetting: [], //名称修改集合
checkedValue: "",
modalPayload: {
visible: false,
title: "",
groupId: "",
groupName: "",
- options: []
+ options: [],
+ salaryItemName: "",
+ salaryItemId: ""
}
};
}
@@ -99,7 +102,9 @@ class SalaryItemSettings extends Component {
title: "",
groupId: "",
groupName: "",
- options: []
+ options: [],
+ salaryItemName: "",
+ salaryItemId: ""
}
});
};
@@ -212,9 +217,63 @@ class SalaryItemSettings extends Component {
});
}
};
+ handleEditSalaryItemName = (item, field, viewAttr) => {
+ const { groupId } = item, { salaryItemId } = field, { dataList } = this.state;
+ if (groupId === "111111111111111111") return;
+ this.setState({
+ dataList: _.map(dataList, item => {
+ if (item.groupId === groupId) {
+ return {
+ ...item,
+ items: _.map(item.items, child => {
+ if (child.salaryItemId === salaryItemId) {
+ return {
+ ...child,
+ viewAttr
+ };
+ }
+ return { ...child, viewAttr: 1 };
+ })
+ };
+ }
+ return {
+ ...item,
+ items: _.map(item.items, child => {
+ return { ...child, viewAttr: 1 };
+ })
+ };
+ })
+ }, () => document.getElementById("salaryItemInput") && document.getElementById("salaryItemInput").focus());
+ };
+ handleChangeSalaryItemShowName = (item, field, name) => {
+ const { groupId } = item, { salaryItemId, originName } = field, { dataList, itemShowNamesetting } = this.state;
+ this.setState({
+ dataList: _.map(dataList, item => {
+ if (item.groupId === groupId) {
+ return {
+ ...item,
+ items: _.map(item.items, child => {
+ if (child.salaryItemId === salaryItemId) {
+ return { ...child, salaryItemShowName: name, name };
+ }
+ return { ...child };
+ })
+ };
+ }
+ return { ...item };
+ }),
+ itemShowNamesetting: _.unionBy([{
+ salaryItemId,
+ salaryItemShowName: originName === name ? "" : name
+ }], itemShowNamesetting, "salaryItemId")
+ }, () => {
+ this.props.onChangeSalaryItem(this.state.dataList);
+ this.props.onChangeSalaryItemShowNamesetting(this.state.itemShowNamesetting);
+ });
+ };
render() {
- const { onChangeSalaryItem } = this.props;
+ const { onChangeSalaryItem, salaryBillItemNameSet } = this.props;
const { dataList, modalPayload, checkedValue } = this.state;
return (
@@ -247,9 +306,36 @@ class SalaryItemSettings extends Component {
})
)}
renderNodeItem={(filed) => {
+ const salaryBillItemNameObj = salaryBillItemNameSet[filed.id] || {};
return
-
-
{filed.name}
+
+ {
+ filed.viewAttr === 2 ?
+
this.handleEditSalaryItemName(item, filed, 1)}
+ onChange={(val) => this.handleChangeSalaryItemShowName(item, filed, val)}
+ /> :
+ this.handleEditSalaryItemName(item, filed, 2)}>
+ {
+ (item.groupId !== "111111111111111111" && (!_.isEmpty(salaryBillItemNameObj) || (filed.salaryItemShowName !== filed.originName))) ?
+ `${filed.salaryItemShowName}(${filed.originName})` :
+ filed.name
+ }
+
+ }
this.handleDeleteSalaryItem(item, filed)}/>
;
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js
index 41edaa1a..527f1269 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/showSettingForm.js
@@ -40,12 +40,21 @@ export default class ShowSettingForm extends React.Component {
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;
const salaryTemplateShowSetStorage = (id ? "{}" : window.localStorage.getItem("salary-showset") || "{}");
const { salaryTemplateShowSet } = payrollStore;
- const { salaryItemSet, templateBaseData } = payrollStore;
+ const { salaryItemSet, templateBaseData, salaryBillItemNameSet } = payrollStore;
const {
theme,
background,
@@ -141,8 +150,9 @@ export default class ShowSettingForm extends React.Component {
ref={dom => this.salaryItemSettingsRef = dom}
dataSource={salaryItemSet}
onChangeSalaryItem={this.handleChangeSalaryItem}
+ onChangeSalaryItemShowNamesetting={this.handleChangeSalaryItemShowNamesetting}
salarySobId={toJS(templateBaseData).salarySob}
- isReplenish={false}
+ isReplenish={false} salaryBillItemNameSet={salaryBillItemNameSet}
/>
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js
index 2ad0d075..5e964c7b 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/tmplateSettingForm.js
@@ -14,9 +14,19 @@ export default class TemplateSettingForm extends React.Component {
setReplenishSalaryTemplateSalaryItemSet(resultSet);
};
+ handleChangeSalaryItemShowNamesetting = (itemShowNamesetting) => {
+ const { payrollStore: { setSalaryBillItemNameSetting, salaryBillItemNameSetting } } = this.props;
+ setSalaryBillItemNameSetting(_.map(salaryBillItemNameSetting, it => {
+ if (it.salaryBillType === 1) {
+ return { ...it, salaryTemplateId: this.props.id, itemShowNameSetting: itemShowNamesetting };
+ }
+ return { ...it, salaryTemplateId: this.props.id };
+ }));
+ };
+
render() {
const { payrollStore } = this.props;
- const { replenishSalaryTemplateSalaryItemSet, templateBaseData } = payrollStore;
+ const { replenishSalaryTemplateSalaryItemSet, templateBaseData, salaryBillItemNameSet } = payrollStore;
return (
this.salaryItemSettingsRef = dom}
dataSource={replenishSalaryTemplateSalaryItemSet}
onChangeSalaryItem={this.handleChangeSalaryItem}
+ onChangeSalaryItemShowNamesetting={this.handleChangeSalaryItemShowNamesetting}
salarySobId={toJS(templateBaseData).salarySob}
- isReplenish={true}
+ isReplenish={true} salaryBillItemNameSet={salaryBillItemNameSet}
/>
diff --git a/pc4mobx/hrmSalary/pages/payroll/templateBaseSettings.js b/pc4mobx/hrmSalary/pages/payroll/templateBaseSettings.js
index 8cb7e4fd..a2433be1 100644
--- a/pc4mobx/hrmSalary/pages/payroll/templateBaseSettings.js
+++ b/pc4mobx/hrmSalary/pages/payroll/templateBaseSettings.js
@@ -5,8 +5,17 @@
* Date: 2023/6/12
*/
import React, { Component } from "react";
-import { WeaCheckbox, WeaFormItem, WeaLocaleProvider, WeaSearchGroup, WeaSelect } from "ecCom";
-import { message } from "antd";
+import {
+ WeaCheckbox,
+ WeaFormItem,
+ WeaHelpfulTip,
+ 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";
@@ -22,6 +31,11 @@ class TemplateBaseSettings extends Component {
wmSetting: null,
watermarkSet: {
visible: false, watermarkSetting: null
+ },
+ ackFeedbackSetting: {
+ ackStatus: "0",
+ autoAckDays: 7,
+ feedBackUrl: ""
}
};
}
@@ -34,9 +48,10 @@ class TemplateBaseSettings extends Component {
const { watermarkSet } = this.state;
getSalaryBillBaseSetForm().then(({ status, data }) => {
if (status) {
- const { watermarkStatus, watermark = "DEFAULT", watermarkSetting } = data;
+ const { watermarkStatus, watermark = "DEFAULT", watermarkSetting, ackFeedbackSetting } = data;
this.setState({
- watermark, watermarkStatus: watermarkStatus ? "1" : "0",
+ watermark, watermarkStatus: watermarkStatus ? "1" : "0", ackFeedbackSetting,
+ wmSetting: { wmSetting: watermarkSetting },
watermarkSet: {
...watermarkSet,
watermarkSetting
@@ -46,8 +61,16 @@ class TemplateBaseSettings extends Component {
});
};
salaryBillBaseSetSave = () => {
- const { watermark, watermarkStatus, wmSetting } = this.state;
- let payload = { watermarkStatus: watermarkStatus === "1" };
+ 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);
@@ -63,40 +86,81 @@ class TemplateBaseSettings extends Component {
};
render() {
- const { watermarkStatus, watermark, watermarkSet } = this.state;
+ const { watermarkStatus, watermark, watermarkSet, ackFeedbackSetting } = this.state;
+ const { ackStatus, autoAckDays, feedBackUrl } = ackFeedbackSetting;
return (
-
-
- this.setState({ watermarkStatus, watermark: "DEFAULT" })}/>
-
- {
- watermarkStatus === "1" &&
-
- this.setState({ watermark })}
- />
- {
- watermark === "CUSTOM" &&
- this.setState({
- watermarkSet: {
- ...watermarkSet,
- visible: true
- }
- })}>{getLabel(538702, "水印设置")}
- }
- this.setState({ watermarkSet: { ...watermarkSet, visible: false } })}
- onChange={wmSetting => this.setState({ wmSetting })}
- />
+
+
+
+ this.setState({ watermarkStatus, watermark: "DEFAULT" })}/>
- }
-
+ {
+ watermarkStatus === "1" &&
+
+ this.setState({ watermark })}
+ />
+ {
+ watermark === "CUSTOM" &&
+ this.setState({
+ watermarkSet: {
+ ...watermarkSet,
+ visible: true
+ }
+ })}>{getLabel(538702, "水印设置")}
+ }
+ this.setState({ watermarkSet: { ...watermarkSet, visible: false } })}
+ onChange={wmSetting => this.setState({ wmSetting })}
+ />
+
+ }
+
+
+
+ this.setState({
+ ackFeedbackSetting: {
+ ...ackFeedbackSetting, ackStatus, autoAckDays: 7
+ }
+ })}/>
+
+ {
+ ackStatus === "1" &&
+
+
+ this.setState({
+ ackFeedbackSetting: {
+ ...ackFeedbackSetting, autoAckDays
+ }
+ })}/>
+
+
+
+ this.setState({
+ ackFeedbackSetting: {
+ ...ackFeedbackSetting, feedBackUrl
+ }
+ })}/>
+
+
+ }
+
+
);
}
}
diff --git a/pc4mobx/hrmSalary/pages/payroll/templatePreview/computerTemplate/index.js b/pc4mobx/hrmSalary/pages/payroll/templatePreview/computerTemplate/index.js
index 6f2e68c2..8bcb6aa8 100644
--- a/pc4mobx/hrmSalary/pages/payroll/templatePreview/computerTemplate/index.js
+++ b/pc4mobx/hrmSalary/pages/payroll/templatePreview/computerTemplate/index.js
@@ -49,7 +49,7 @@ export default class ComputerTemplate extends React.Component {
}
- renderTableTr = (data) => {
+ renderTableTr = (data, groupId) => {
const tables = [];
const len = data.length;
const rowNum = 3;
@@ -61,8 +61,9 @@ export default class ComputerTemplate extends React.Component {
iLen = iLen > len ? len : iLen;
tables.push("
");
for (let i = j * rowNum; i < iLen; i++) {
+ const key = (!this.props.isPreview && groupId !== "111111111111111111") ? data[i].salaryItemShowName : data[i].name;
const value = data[i].salaryItemValue || "-";
- tables.push("| " + data[i].name + " | " + "" + value + " | ");
+ tables.push("" + key + " | " + "" + value + " | ");
}
tables.push("
");
}
@@ -98,7 +99,7 @@ export default class ComputerTemplate extends React.Component {
{group.groupName}
+ dangerouslySetInnerHTML={{ __html: this.renderTableTr(group.items, group.groupId).join(",").replace(/,/g, "") }}/>
;
})
@@ -109,6 +110,7 @@ export default class ComputerTemplate extends React.Component {
salaryTemplateShowSet.textContentPosition == 2 && salaryTemplateShowSet.textContent
}
+ {this.props.children}
);
}
diff --git a/pc4mobx/hrmSalary/pages/payroll/templatePreview/index.less b/pc4mobx/hrmSalary/pages/payroll/templatePreview/index.less
index 52517511..0d2d5dda 100644
--- a/pc4mobx/hrmSalary/pages/payroll/templatePreview/index.less
+++ b/pc4mobx/hrmSalary/pages/payroll/templatePreview/index.less
@@ -85,7 +85,8 @@
margin: 10px;
background-color: #FFF;
padding: 10px;
- .descript-title{
+
+ .descript-title {
display: flex;
align-items: center;
margin-bottom: 10px;
@@ -100,15 +101,18 @@
border: 1px solid #fafafa;
border-bottom: none;
}
- .descriptions-view{
+
+ .descriptions-view {
width: 100%;
- table{
+
+ table {
table-layout: fixed;
border-collapse: collapse;
width: 100%;
- border: 1px solid rgba(0,0,0,.06);
- .descriptions-row{
- .descriptions-item-label{
+ border: 1px solid rgba(0, 0, 0, .06);
+
+ .descriptions-row {
+ .descriptions-item-label {
background-color: #fafafa;
padding: 16px 24px;
color: #000000d9;
@@ -116,11 +120,12 @@
font-size: 12px;
line-height: 1.5715;
text-align: start;
- border: 1px solid rgba(0,0,0,.06);
+ border: 1px solid rgba(0, 0, 0, .06);
min-width: 100px;
max-width: 100px;
}
- .descriptions-item-content{
+
+ .descriptions-item-content {
padding: 16px 24px;
display: table-cell;
flex: 1;
@@ -130,10 +135,20 @@
word-break: break-word;
overflow-wrap: break-word;
border-collapse: collapse;
- border: 1px solid rgba(0,0,0,.06);
+ border: 1px solid rgba(0, 0, 0, .06);
}
}
}
}
}
+
+ .space {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+
+ .ant-btn {
+ margin-right: 10px;
+ }
+ }
}
diff --git a/pc4mobx/hrmSalary/pages/payroll/templatePreview/phoneTemplate/index.js b/pc4mobx/hrmSalary/pages/payroll/templatePreview/phoneTemplate/index.js
index 0f85d51d..01730ef7 100644
--- a/pc4mobx/hrmSalary/pages/payroll/templatePreview/phoneTemplate/index.js
+++ b/pc4mobx/hrmSalary/pages/payroll/templatePreview/phoneTemplate/index.js
@@ -83,7 +83,8 @@ export default class PhoneTemplate extends React.Component {
{
_.map(group.items, item => {
return