2022-06-22 17:14:53 +08:00
|
|
|
|
import React from "react";
|
2022-09-13 16:39:15 +08:00
|
|
|
|
import { WeaDialog, WeaHelpfulTip, WeaInputSearch, WeaTable } from "ecCom";
|
|
|
|
|
|
import { Dropdown, Menu } from "antd";
|
2022-06-22 17:14:53 +08:00
|
|
|
|
import { inject, observer } from "mobx-react";
|
2022-03-17 22:38:00 +08:00
|
|
|
|
|
2022-06-22 17:14:53 +08:00
|
|
|
|
@inject("payrollStore")
|
2022-04-16 13:13:41 +08:00
|
|
|
|
@observer
|
2022-03-18 09:41:48 +08:00
|
|
|
|
export default class PayrollWithdrawModal extends React.Component {
|
2022-06-22 17:14:53 +08:00
|
|
|
|
constructor(props) {
|
|
|
|
|
|
super(props);
|
|
|
|
|
|
this.state = {
|
|
|
|
|
|
selectedRowKeys: [],
|
|
|
|
|
|
current: 1
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
componentWillMount() {
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { batchWithdrawInfoList } = payrollStore;
|
|
|
|
|
|
batchWithdrawInfoList({ salarySendId: this.props.sendId });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 撤回
|
|
|
|
|
|
handleWithdraw(record) {
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { withdrawPayroll, batchWithdrawInfoList } = payrollStore;
|
|
|
|
|
|
withdrawPayroll({
|
|
|
|
|
|
ids: [record.id],
|
|
|
|
|
|
salarySendId: this.props.sendId
|
|
|
|
|
|
}).then(() => {
|
|
|
|
|
|
batchWithdrawInfoList({ salarySendId: this.props.sendId });
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 发送
|
|
|
|
|
|
handleGrant(record) {
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { grantPayroll, batchWithdrawInfoList } = payrollStore;
|
|
|
|
|
|
grantPayroll({
|
|
|
|
|
|
ids: [record.id],
|
|
|
|
|
|
salarySendId: this.props.sendId
|
|
|
|
|
|
}).then(() => {
|
|
|
|
|
|
batchWithdrawInfoList({ salarySendId: this.props.sendId });
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
getColumns() {
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { canWidthdrawColumns } = payrollStore;
|
|
|
|
|
|
return [
|
|
|
|
|
|
...canWidthdrawColumns,
|
|
|
|
|
|
{ title: "操作", key: "operation", dataIndex: "operation" }
|
|
|
|
|
|
].map(item => {
|
|
|
|
|
|
if (item.key == "operation") {
|
|
|
|
|
|
item.render = (text, record) => {
|
|
|
|
|
|
if (record.sendStatus == "已发放") {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<a
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleWithdraw(record);
|
|
|
|
|
|
}}>
|
|
|
|
|
|
撤回
|
|
|
|
|
|
</a>
|
|
|
|
|
|
);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
return (
|
|
|
|
|
|
<a
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleGrant(record);
|
|
|
|
|
|
}}>
|
|
|
|
|
|
发送
|
|
|
|
|
|
</a>
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
2022-05-31 18:51:23 +08:00
|
|
|
|
};
|
2022-06-22 17:14:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
return item;
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
onSelectChange = value => {
|
|
|
|
|
|
this.setState({
|
|
|
|
|
|
selectedRowKeys: value
|
|
|
|
|
|
});
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 撤回
|
|
|
|
|
|
fetchWithdrawPayroll(payload) {
|
|
|
|
|
|
const { payrollStore: { grantPayroll, withdrawPayroll } } = this.props;
|
|
|
|
|
|
withdrawPayroll(payload).then(() => {
|
|
|
|
|
|
const { payrollStore: { getInfoList } } = this.props;
|
|
|
|
|
|
getInfoList({
|
|
|
|
|
|
salarySendId: this.props.sendId
|
|
|
|
|
|
});
|
|
|
|
|
|
this.props.onCancel && this.props.onCancel();
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleMenuClick(e) {
|
|
|
|
|
|
const { selectedRowKeys } = this.state;
|
|
|
|
|
|
const { payrollStore: { grantPayroll } } = this.props;
|
|
|
|
|
|
if (selectedRowKeys.length == 0) {
|
|
|
|
|
|
message.warning("未选择条目");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
this.fetchWithdrawPayroll({
|
|
|
|
|
|
ids: selectedRowKeys,
|
|
|
|
|
|
salarySendId: this.props.sendId
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleWithdrawAll() {
|
|
|
|
|
|
this.fetchWithdrawPayroll({ salarySendId: this.props.sendId });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 分页
|
|
|
|
|
|
handleDataPageChange(value) {
|
|
|
|
|
|
this.setState({ current: value });
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const { batchWithdrawInfoList } = payrollStore;
|
|
|
|
|
|
batchWithdrawInfoList({ salarySendId: this.props.sendId, current: value });
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
handleSearch(value) {
|
|
|
|
|
|
const { payrollStore: { batchWithdrawInfoList } } = this.props;
|
|
|
|
|
|
batchWithdrawInfoList({
|
|
|
|
|
|
salarySendId: this.props.sendId,
|
|
|
|
|
|
keyword: value,
|
|
|
|
|
|
current: this.state.current
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
render() {
|
|
|
|
|
|
const menu = (
|
|
|
|
|
|
<Menu onClick={e => this.handleMenuClick(e)}>
|
|
|
|
|
|
<Menu.Item key="1">撤回所选</Menu.Item>
|
|
|
|
|
|
</Menu>
|
|
|
|
|
|
);
|
|
|
|
|
|
const { payrollStore } = this.props;
|
|
|
|
|
|
const {
|
|
|
|
|
|
salarySendDetailBaseInfo,
|
|
|
|
|
|
canWidthdrawColumns,
|
|
|
|
|
|
canWithdrawDataSource,
|
|
|
|
|
|
canWithdrawPageInfo
|
|
|
|
|
|
} = payrollStore;
|
|
|
|
|
|
const { selectedRowKeys } = this.state;
|
|
|
|
|
|
const rowSelection = {
|
|
|
|
|
|
selectedRowKeys,
|
|
|
|
|
|
onChange: this.onSelectChange.bind(this)
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
2022-09-13 16:39:15 +08:00
|
|
|
|
<WeaDialog
|
|
|
|
|
|
style={{ width: 800 }}
|
|
|
|
|
|
initLoadCss
|
|
|
|
|
|
title="批量撤回"
|
|
|
|
|
|
className="batchReleaseWrapper"
|
2022-06-22 17:14:53 +08:00
|
|
|
|
visible={this.props.visible}
|
2022-09-13 16:39:15 +08:00
|
|
|
|
buttons={[
|
|
|
|
|
|
<Dropdown.Button
|
|
|
|
|
|
type="primary"
|
|
|
|
|
|
overlay={menu}
|
|
|
|
|
|
onClick={() => {
|
|
|
|
|
|
this.handleWithdrawAll();
|
|
|
|
|
|
}}>
|
|
|
|
|
|
全部撤回
|
|
|
|
|
|
</Dropdown.Button>
|
|
|
|
|
|
]}
|
2022-06-22 17:14:53 +08:00
|
|
|
|
onCancel={() => {
|
|
|
|
|
|
this.props.onCancel();
|
|
|
|
|
|
}}>
|
2022-09-13 16:39:15 +08:00
|
|
|
|
<div style={{ padding: "16px 20px" }}>
|
|
|
|
|
|
<div className="searchWrapper">
|
|
|
|
|
|
<div className="titleBarLeft">
|
2022-06-22 17:14:53 +08:00
|
|
|
|
<span>
|
|
|
|
|
|
薪资所属月:{salarySendDetailBaseInfo.salaryMonth &&
|
2022-09-13 16:39:15 +08:00
|
|
|
|
salarySendDetailBaseInfo.salaryMonth
|
|
|
|
|
|
.year}-{salarySendDetailBaseInfo.salaryMonth &&
|
|
|
|
|
|
salarySendDetailBaseInfo.salaryMonth.monthValue}
|
2022-06-22 17:14:53 +08:00
|
|
|
|
</span>
|
2022-09-13 16:39:15 +08:00
|
|
|
|
<WeaHelpfulTip
|
|
|
|
|
|
style={{ marginLeft: "10px", marginRight: "10px" }}
|
|
|
|
|
|
width={200}
|
|
|
|
|
|
title={`薪资周期\n
|
2022-06-22 17:14:53 +08:00
|
|
|
|
${salarySendDetailBaseInfo.salarySobCycle &&
|
2022-09-13 16:39:15 +08:00
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle
|
|
|
|
|
|
.salaryCycle &&
|
|
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle
|
|
|
|
|
|
.salaryCycle
|
|
|
|
|
|
.fromDate}至 ${salarySendDetailBaseInfo.salarySobCycle &&
|
2022-06-22 17:14:53 +08:00
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle.salaryCycle &&
|
|
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle.salaryCycle.endDate}\n
|
2022-03-17 22:38:00 +08:00
|
|
|
|
税款所属期\n
|
2022-06-22 17:14:53 +08:00
|
|
|
|
${salarySendDetailBaseInfo.salarySobCycle &&
|
2022-09-13 16:39:15 +08:00
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle
|
|
|
|
|
|
.taxCycle}\n
|
2022-03-17 22:38:00 +08:00
|
|
|
|
考勤取值周期\n
|
2022-06-22 17:14:53 +08:00
|
|
|
|
${salarySendDetailBaseInfo.salarySobCycle &&
|
2022-09-13 16:39:15 +08:00
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle
|
|
|
|
|
|
.attendCycle &&
|
|
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle
|
|
|
|
|
|
.attendCycle
|
|
|
|
|
|
.fromDate}至${salarySendDetailBaseInfo.salarySobCycle &&
|
2022-06-22 17:14:53 +08:00
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle.attendCycle &&
|
|
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle.attendCycle.endDate}\n
|
2022-03-17 22:38:00 +08:00
|
|
|
|
福利台账月份\n
|
2022-06-22 17:14:53 +08:00
|
|
|
|
引用${salarySendDetailBaseInfo.salarySobCycle &&
|
2022-09-13 16:39:15 +08:00
|
|
|
|
salarySendDetailBaseInfo.salarySobCycle
|
|
|
|
|
|
.socialSecurityCycle}的福利台账数据`}
|
|
|
|
|
|
placement="topLeft"
|
|
|
|
|
|
/>
|
|
|
|
|
|
<span>
|
2022-06-22 17:14:53 +08:00
|
|
|
|
工资单模板:{salarySendDetailBaseInfo.template}
|
|
|
|
|
|
</span>
|
2022-09-13 16:39:15 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<WeaInputSearch
|
2022-09-29 15:45:23 +08:00
|
|
|
|
placeholder="请输入姓名"
|
2022-09-13 16:39:15 +08:00
|
|
|
|
value={this.state.searchValue}
|
|
|
|
|
|
onChange={value => {
|
|
|
|
|
|
this.setState({ searchValue: value });
|
|
|
|
|
|
}}
|
|
|
|
|
|
onSearch={value => {
|
|
|
|
|
|
this.handleSearch(value);
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
2022-06-22 17:14:53 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2022-09-13 16:39:15 +08:00
|
|
|
|
<div className="tableWrpper">
|
|
|
|
|
|
<WeaTable
|
|
|
|
|
|
rowKey="id"
|
|
|
|
|
|
rowSelection={rowSelection}
|
|
|
|
|
|
dataSource={canWithdrawDataSource}
|
|
|
|
|
|
columns={this.getColumns()}
|
|
|
|
|
|
pagination={{
|
|
|
|
|
|
onChange: value => {
|
|
|
|
|
|
this.handleDataPageChange(value);
|
|
|
|
|
|
},
|
|
|
|
|
|
total: canWithdrawPageInfo.total,
|
|
|
|
|
|
current: canWithdrawPageInfo.pageNum,
|
|
|
|
|
|
showTotal: total => `共 ${total} 条`
|
|
|
|
|
|
}}
|
|
|
|
|
|
/>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</WeaDialog>
|
2022-06-22 17:14:53 +08:00
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|