diff --git a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js
index 2b98919b..947db8db 100644
--- a/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js
+++ b/pc4mobx/hrmSalary/pages/payroll/SalarySendList.js
@@ -1,6 +1,6 @@
import React from "react";
import { inject, observer } from "mobx-react";
-import { message, Tag } from "antd";
+import { Dropdown, Menu, message, Tag } from "antd";
import moment from "moment";
import CustomPaginationTable from "../../components/customPaginationTable";
import "../calculate/index.less";
@@ -91,6 +91,7 @@ export default class SalarySendList extends React.Component {
{
title: "操作",
key: "operate",
+ width: 150,
render: (text, record) => {
const { sendNum, sendTotal, salaryAcctType, haveBackCalc, canSeeDetail } = record;
//显示发放
@@ -106,7 +107,14 @@ export default class SalarySendList extends React.Component {
}
{
sendNum !== sendTotal && !showGrant &&
- this.handleUpdateTemplate(record)}>更新模板
+ this.handleUpdateTemplate(record)}>
+ 更新模板
+
+ }>
+
+
}
);
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js
index 69ebf94e..5cd3f6f1 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/baseInformForm.js
@@ -1,10 +1,13 @@
import React from "react";
-import { WeaCheckbox, WeaFormItem, WeaInput, WeaLocaleProvider, WeaSearchGroup, WeaSelect } from "ecCom";
+import { WeaCheckbox, WeaFormItem, WeaInput, WeaLocaleProvider, WeaSearchGroup, WeaSelect, WeaTimePicker } from "ecCom";
import { inject, observer } from "mobx-react";
import { getReplenishRuleSetOptions } from "../../../apis/payroll";
+import { commonEnumList } from "../../../apis/payrollFiles";
+import moment from "moment";
import { toJS } from "mobx";
import "./index.less";
+
const getLabel = WeaLocaleProvider.getLabel;
@inject("payrollStore")
@observer
@@ -15,6 +18,7 @@ export default class BaseInformForm extends React.Component {
inited: false,
options: [],
replenishRuleOptions: [],
+ salaryMonthOptions: [],
request: {}
};
}
@@ -23,6 +27,7 @@ export default class BaseInformForm extends React.Component {
const { payrollStore } = this.props;
const { getPayrollBaseForm } = payrollStore;
const templateBaseData = window.localStorage.getItem("template-basedata") || "{}";
+ this.commonEnumList();
getPayrollBaseForm(this.props.id).then(data => {
this.setState(
{
@@ -35,7 +40,9 @@ export default class BaseInformForm extends React.Component {
...data.templateBaseData,
msgStatus: !this.props.id ? "1" : data.templateBaseData.msgStatus,
reissueRule: data.templateBaseData.replenishRule ? "1" : "0",
- ...JSON.parse(templateBaseData)
+ ...JSON.parse(templateBaseData),
+ sendEmail: "",
+ autoSendStatus: !_.isNil(data.templateBaseData.autoSendStatus) ? data.templateBaseData.autoSendStatus : false
}
}, () => {
this.props.onChange && this.props.onChange(this.state.request);
@@ -48,7 +55,7 @@ export default class BaseInformForm extends React.Component {
JSON.parse(templateBaseData).salarySob && this.getReplenishRuleSetOptions({ salarySobId: JSON.parse(templateBaseData).salarySob });
}
- hanldeChange = (params) => {
+ handleChange = (params) => {
let request = { ...this.state.request, ...params };
this.setState({
request
@@ -70,10 +77,33 @@ export default class BaseInformForm extends React.Component {
}
});
};
+ commonEnumList = () => {
+ commonEnumList({ enumClass: "com.engine.salary.enums.salarysend.SalaryAutoSendCycleTypeEnum" })
+ .then(({ status, data }) => {
+ if (status && !_.isEmpty(data)) {
+ this.setState({
+ salaryMonthOptions: _.map(data, it => ({ key: it.value.toString(), showname: it.defaultLabel }))
+ });
+ }
+ });
+ };
render() {
- const { request, options, replenishRuleOptions } = this.state;
- const { salarySob, name, description, replenishName, replenishRule, reissueRule, msgStatus, emailStatus } = request;
+ const { request, options, replenishRuleOptions, salaryMonthOptions } = this.state;
+ const {
+ salarySob,
+ name,
+ description,
+ replenishName,
+ replenishRule,
+ reissueRule,
+ msgStatus,
+ emailStatus,
+ autoSendStatus,
+ autoSendDayOfMonth,
+ autoSendTimeOfDay,
+ autoSendCycleType
+ } = request;
return (
@@ -90,7 +120,7 @@ export default class BaseInformForm extends React.Component {
options={options}
value={salarySob ? salarySob : ""}
style={{ width: 200 }}
- onChange={value => this.hanldeChange({ salarySob: value })}/>
+ onChange={value => this.handleChange({ salarySob: value })}/>
}
this.hanldeChange({ name: value })}
+ onChange={value => this.handleChange({ name: value })}
/>
this.hanldeChange({ replenishName: value })}
+ onChange={value => this.handleChange({ replenishName: value })}
/>
this.hanldeChange({ reissueRule: value })}
+ onChange={value => this.handleChange({ reissueRule: value })}
/>
{
@@ -139,7 +169,7 @@ export default class BaseInformForm extends React.Component {
options={replenishRuleOptions}
value={replenishRule}
viewAttr={3}
- onChange={value => this.hanldeChange({ replenishRule: value })}
+ onChange={value => this.handleChange({ replenishRule: value })}
/>
}
@@ -150,7 +180,7 @@ export default class BaseInformForm extends React.Component {
>
this.hanldeChange({ description: value })}
+ onChange={value => this.handleChange({ description: value })}
/>
@@ -158,14 +188,80 @@ export default class BaseInformForm extends React.Component {
className="payrollBaseInfoWrapper">
this.hanldeChange({ msgStatus: value === "1" })}/>
+ onChange={value => this.handleChange({ msgStatus: value === "1" })}/>
this.hanldeChange({ emailStatus: value === "1" })}/>
+ onChange={value => this.handleChange({ emailStatus: value === "1" })}/>
+
+ {
+ this.handleChange({
+ autoSendStatus: value === "1",
+ autoSendDayOfMonth: value === "1" ? "1" : null,
+ autoSendTimeOfDay: value === "1" ? "09:00" : null,
+ autoSendCycleType: value === "1" ? 1 : null,
+ });
+ }}/>
+
+ {
+ autoSendStatus &&
+
+
+
+ }
);
}
}
+
+const SendTimeComp = (props) => {
+ const { value, onChange, salaryMonthOptions } = props;
+ const { autoSendDayOfMonth, autoSendTimeOfDay, autoSendCycleType } = value;
+
+ const handleChangeSendtime = (key, val) => {
+ onChange({ autoSendDayOfMonth, autoSendTimeOfDay, autoSendCycleType, [key]: val });
+ };
+ return
+
+ {getLabel(542604, "薪资所属月")}
+ handleChangeSendtime("autoSendCycleType", Number(v))}
+ />
+ ({ key: item, showname: item }))}
+ onChange={v => handleChangeSendtime("autoSendDayOfMonth", v)}
+ />
+ {getLabel(16992, "号")}
+
+
handleChangeSendtime("autoSendTimeOfDay", v)}/>
+ ;
+};
+
+const getDay = (num = 1) => {
+ let days = [];
+ 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);
+ return d.getDate();
+};
diff --git a/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less b/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less
index 4bfbe9d0..f30d0063 100644
--- a/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less
+++ b/pc4mobx/hrmSalary/pages/payroll/stepForm/index.less
@@ -234,4 +234,20 @@
border-bottom: 1px solid #e5e5e5;
}
}
+
+ .customTimeCompWrapper {
+ display: flex;
+ justify-content: flex-start;
+
+ & > div {
+ margin-right: 10px;
+ display: flex;
+ align-items: center;
+
+ .wea-select {
+ width: 80px;
+ margin: 0 10px;
+ }
+ }
+ }
}
diff --git a/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js b/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js
index 05d75b27..9e986510 100644
--- a/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js
+++ b/pc4mobx/hrmSalary/pages/payroll/templateSettingList.js
@@ -2,7 +2,7 @@ import React from "react";
import { inject, observer } from "mobx-react";
import { WeaLocaleProvider, WeaTable } from "ecCom";
import { toJS } from "mobx";
-import { Radio, Spin } from "antd";
+import { Dropdown, Menu, Radio, Spin } from "antd";
const getLabel = WeaLocaleProvider.getLabel;
@inject("payrollStore")
@@ -93,8 +93,14 @@ export default class TemplateSettingList extends React.Component {
onClick={() => this.onOperatesClick(record, "0")}>{getLabel(501169, "编辑")}
this.onOperatesClick(record, "1")}>{getLabel(77, "复制")}
- this.onOperatesClick(record, "2")}>{getLabel(535052, "删除")}
+ this.onOperatesClick(record, "2")}>
+ {getLabel(535052, "删除")}
+
+ }>
+
+
;
}
}