Merge branch 'feature/230701-工资单定时发送任务' into release/2.8.3.2307.01
This commit is contained in:
commit
448bde008f
|
|
@ -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 &&
|
||||
<a href="javascript:void(0);" onClick={() => this.handleUpdateTemplate(record)}>更新模板</a>
|
||||
<Dropdown
|
||||
overlay={
|
||||
<Menu onClick={() => this.handleUpdateTemplate(record)}>
|
||||
<Menu.Item key="delete">更新模板</Menu.Item>
|
||||
</Menu>
|
||||
}>
|
||||
<i className="icon-coms-more more"/>
|
||||
</Dropdown>
|
||||
}
|
||||
</React.Fragment>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
<React.Fragment>
|
||||
|
|
@ -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 })}/>
|
||||
}
|
||||
</WeaFormItem>
|
||||
<WeaFormItem
|
||||
|
|
@ -101,7 +131,7 @@ export default class BaseInformForm extends React.Component {
|
|||
<WeaInput
|
||||
value={name}
|
||||
viewAttr={3}
|
||||
onChange={value => this.hanldeChange({ name: value })}
|
||||
onChange={value => this.handleChange({ name: value })}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem
|
||||
|
|
@ -112,7 +142,7 @@ export default class BaseInformForm extends React.Component {
|
|||
<WeaInput
|
||||
value={replenishName}
|
||||
viewAttr={3}
|
||||
onChange={value => this.hanldeChange({ replenishName: value })}
|
||||
onChange={value => this.handleChange({ replenishName: value })}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem
|
||||
|
|
@ -125,7 +155,7 @@ export default class BaseInformForm extends React.Component {
|
|||
value={reissueRule}
|
||||
detailtype={3}
|
||||
viewAttr={3}
|
||||
onChange={value => this.hanldeChange({ reissueRule: value })}
|
||||
onChange={value => this.handleChange({ reissueRule: value })}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
{
|
||||
|
|
@ -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 })}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
}
|
||||
|
|
@ -150,7 +180,7 @@ export default class BaseInformForm extends React.Component {
|
|||
>
|
||||
<WeaInput
|
||||
value={description}
|
||||
onChange={value => this.hanldeChange({ description: value })}
|
||||
onChange={value => this.handleChange({ description: value })}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
</WeaSearchGroup>
|
||||
|
|
@ -158,14 +188,80 @@ export default class BaseInformForm extends React.Component {
|
|||
className="payrollBaseInfoWrapper">
|
||||
<WeaFormItem label={getLabel(111, "系统消息")} labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaCheckbox value={msgStatus ? "1" : "0"} display="switch"
|
||||
onChange={value => this.hanldeChange({ msgStatus: value === "1" })}/>
|
||||
onChange={value => this.handleChange({ msgStatus: value === "1" })}/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label={getLabel(111, "邮件")} labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaCheckbox value={emailStatus ? "1" : "0"} display="switch"
|
||||
onChange={value => this.hanldeChange({ emailStatus: value === "1" })}/>
|
||||
onChange={value => this.handleChange({ emailStatus: value === "1" })}/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label={getLabel(111, "定时发送")} labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaCheckbox value={autoSendStatus ? "1" : "0"} display="switch"
|
||||
onChange={value => {
|
||||
this.handleChange({
|
||||
autoSendStatus: value === "1",
|
||||
autoSendDayOfMonth: value === "1" ? "1" : null,
|
||||
autoSendTimeOfDay: value === "1" ? "09:00" : null,
|
||||
autoSendCycleType: value === "1" ? 1 : null,
|
||||
});
|
||||
}}/>
|
||||
</WeaFormItem>
|
||||
{
|
||||
autoSendStatus &&
|
||||
<WeaFormItem label={getLabel(111, "发送时间")} labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<SendTimeComp
|
||||
salaryMonthOptions={salaryMonthOptions}
|
||||
value={{
|
||||
autoSendDayOfMonth,
|
||||
autoSendTimeOfDay,
|
||||
autoSendCycleType
|
||||
}}
|
||||
onChange={this.handleChange}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
}
|
||||
</WeaSearchGroup>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const SendTimeComp = (props) => {
|
||||
const { value, onChange, salaryMonthOptions } = props;
|
||||
const { autoSendDayOfMonth, autoSendTimeOfDay, autoSendCycleType } = value;
|
||||
|
||||
const handleChangeSendtime = (key, val) => {
|
||||
onChange({ autoSendDayOfMonth, autoSendTimeOfDay, autoSendCycleType, [key]: val });
|
||||
};
|
||||
return <div className="customTimeCompWrapper">
|
||||
<div>
|
||||
<span>{getLabel(542604, "薪资所属月")}</span>
|
||||
<WeaSelect
|
||||
value={autoSendCycleType.toString()}
|
||||
options={salaryMonthOptions}
|
||||
onChange={v => handleChangeSendtime("autoSendCycleType", Number(v))}
|
||||
/>
|
||||
<WeaSelect
|
||||
value={!_.isNil(autoSendDayOfMonth) ? autoSendDayOfMonth : "1"}
|
||||
options={_.map(getDay(autoSendCycleType), item => ({ key: item, showname: item }))}
|
||||
onChange={v => handleChangeSendtime("autoSendDayOfMonth", v)}
|
||||
/>
|
||||
<span>{getLabel(16992, "号")}</span>
|
||||
</div>
|
||||
<WeaTimePicker value={!_.isNil(autoSendTimeOfDay) ? autoSendTimeOfDay : "09:00"} size="small"
|
||||
onChange={v => handleChangeSendtime("autoSendTimeOfDay", v)}/>
|
||||
</div>;
|
||||
};
|
||||
|
||||
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();
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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, "编辑")}</a>
|
||||
<a href="javascript:void(0);" style={{ marginRight: 10 }}
|
||||
onClick={() => this.onOperatesClick(record, "1")}>{getLabel(77, "复制")}</a>
|
||||
<a href="javascript:void(0);"
|
||||
onClick={() => this.onOperatesClick(record, "2")}>{getLabel(535052, "删除")}</a>
|
||||
<Dropdown
|
||||
overlay={
|
||||
<Menu onClick={() => this.onOperatesClick(record, "2")}>
|
||||
<Menu.Item key="delete">{getLabel(535052, "删除")}</Menu.Item>
|
||||
</Menu>
|
||||
}>
|
||||
<i className="icon-coms-more more"/>
|
||||
</Dropdown>
|
||||
</React.Fragment>;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue