salary-management-front/pc4mobx/hrmSalary/pages/socialSecurityBenefits/archives/index.js

929 lines
34 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import React from "react";
import { inject, observer } from "mobx-react";
import { toJS } from "mobx";
import { Button, Dropdown, Menu, message, Modal, Popover } from "antd";
import { WeaHelpfulTip, WeaLocaleProvider, WeaNewScroll, WeaSlideModal, WeaTab, WeaTop } from "ecCom";
import { getSearchs, renderLoading } from "../../../util";
import BaseForm from "./baseForm";
import SlideModalTitle from "../../../components/slideModalTitle";
import SocialSecurityForm from "./socialSecurityForm";
import AccumulationFundForm from "./accumulationFundForm";
import OtherForm from "./otherForm";
import { tabCondition } from "./config";
import * as API from "../../../apis/welfareArchive";
import ImportModal from "../../../components/importModal";
import TipLabel from "../../../components/TipLabel";
import UnifiedTable from "../../../components/UnifiedTable";
import { convertToUrlString } from "../../../util/url";
import { salaryArchiveDelete } from "../../../apis/payrollFiles";
import "./index.less";
const getLabel = WeaLocaleProvider.getLabel;
@inject("archivesStore", "taxAgentStore")
@observer
export default class Archives extends React.Component {
constructor(props) {
super(props);
this.state = {
value: "",
selectedKey: "pending",
selectedTab: 0,
editSlideVisible: false,
employeeId: "",
importVisible: false,
runStatus: "1",//导入的tab状态
modalParam: {},
step: 0,
selectedRowKeys: [],
dataSource: [],
columns: [],
loading: {
query: false,
add: false,
update: false
},
tabCount: {
stayAdd: 0,
paying: 0,
stayDel: 0,
stopPay: 0
},
pageInfo: {
current: 1,
pageSize: 10,
total: 0
},
salaryArchiveDelete: "" //待定薪、停薪员工 是否允许删除薪资档案 0 否, 1
};
this.record = {};
}
componentDidMount() {
const { archivesStore: { doInit } } = this.props;
doInit();
this.salaryArchiveDelete();
this.queryList({ runStatuses: ["1"] });
}
queryInsuranceTabTotal = () => {
API.queryInsuranceTabTotal().then(({ data = {}, status }) => {
if (status) {
this.setState({ tabCount: { ...this.state.tabCount, ...data } });
}
});
};
queryList = (params) => {
const { loading, pageInfo } = this.state;
const { archivesStore: { form } } = this.props;
const formParams = form.getFormParams() || {};
const payload = { ...pageInfo };
this.setState({ loading: { ...loading, query: true } });
API.queryList({ ...formParams, ...payload, ...params }).then(({ data, status }) => {
this.setState({ loading: { ...loading, query: false } });
if (status) {
const { pageInfo: paganition, columns, datas: dataSource } = data;
const { total, pageNum: current, pageSize } = paganition;
this.setState({
dataSource: _.map(dataSource, it => ({ ...it, id: it.employeeId })),
columns,
pageInfo: {
...pageInfo,
total,
current,
pageSize
}
});
this.queryInsuranceTabTotal();
}
});
};
salaryArchiveDelete = () => {
salaryArchiveDelete().then(({ status, data }) => {
if (status) {
this.setState({
salaryArchiveDelete: data
});
}
});
};
handleEdit = (record) => {
this.record = record;
this.setState({ employeeId: record.employeeId, editSlideVisible: true });
};
setStep = (step) => {
this.setState({ step });
};
getColumns = () => {
const { columns, salaryArchiveDelete, selectedKey } = this.state;
const { taxAgentStore: { showOperateBtn } } = this.props;
let tmpV = _.map(columns.filter(item => item.display === "TRUE"), item => {
return {
...item,
dataIndex: item.column,
title: item.text,
render: (text) => {
return <span className="ellipsis" title={text}>{text}</span>;
}
};
});
return tmpV.length > 0 ? [
...tmpV, {
title: "操作",
width: 150,
dataIndex: "operate",
render: (text, record) => {
return (
<div className="optWrapper">
<a href="javascript:void(0);" className="mr10"
onClick={() => this.handleEdit(record)}>{(showOperateBtn && selectedKey !== "stop") ? "编辑" : "查看"}</a>
{
showOperateBtn && selectedKey === "pending" &&
<a href="javascript:void(0);" className="mr10"
onClick={() => this.stayAddToPay([record.baseInfo])}>增员</a>
}
{
showOperateBtn && selectedKey === "suspend" &&
<a href="javascript:void(0);" className="mr10"
onClick={() => this.stayDelToStop([record.baseInfo])}>减员</a>
}
{
showOperateBtn && selectedKey === "stop" && salaryArchiveDelete === "1" &&
<a href="javascript:void(0);" className="mr10"
onClick={() => this.deleteSocialArchive([record.baseInfo])}>删除档案</a>
}
{
showOperateBtn && selectedKey === "stop" && salaryArchiveDelete !== "1" &&
<a href="javascript:void(0);"
onClick={() => this.cancelStopPayment([record.baseInfo])}>取消停缴</a>
}
{
showOperateBtn && selectedKey === "pending" &&
<Popover
overlayClassName="moreIconWrapper"
placement="bottomRight"
content={
salaryArchiveDelete === "1" ?
<Menu onClick={({ key }) => {
if (key === "deleteAchives") {
this.deleteSocialArchive([record.baseInfo]);
} else {
Modal.warning({
title: "信息确认",
content: `确定要删除该条待办人员吗?`,
onOk: () => this.deleteTodoList({ runStatus: "4", ids: [record.baseInfo] })
});
}
}}>
<Menu.Item key="deleteAchives">删除档案</Menu.Item>
<Menu.Item key="stopSalary">删除待办</Menu.Item>
</Menu> :
<Menu onClick={({ key }) => {
if (key === "deleteAchives") {
this.deleteSocialArchive([record.baseInfo]);
} else {
Modal.warning({
title: "信息确认",
content: `确定要删除该条待办人员吗?`,
onOk: () => this.deleteTodoList({ runStatus: "4", ids: [record.baseInfo] })
});
}
}}>
<Menu.Item key="stopSalary">删除待办</Menu.Item>
</Menu>
} title="">
<i className="icon-coms-more"/>
</Popover>
}
{
showOperateBtn && selectedKey === "suspend" &&
<Popover
overlayClassName="moreIconWrapper"
placement="bottomRight"
content={<Menu onClick={({ key }) => {
if (key === "stopSalary") {
Modal.confirm({
title: "信息确认",
content: `确定要删除该条待办人员吗?`,
onOk: () => this.cancelStayDel({ runStatus: "3", ids: [record.baseInfo] })
});
}
}}>
<Menu.Item key="stopSalary">删除待办</Menu.Item>
</Menu>} title="">
<i className="icon-coms-more"/>
</Popover>
}
{
showOperateBtn && selectedKey === "stop" && salaryArchiveDelete === "1" &&
<Popover
overlayClassName="moreIconWrapper"
placement="bottomRight"
content={<Menu onClick={({ key }) => {
if (key === "stopPaying") this.cancelStopPayment([record.baseInfo]);
}}>
<Menu.Item key="stopPaying">取消停缴</Menu.Item>
</Menu>} title="">
<i className="icon-coms-more"/>
</Popover>
}
</div>
);
}
}] : [];
};
// 保存
handleEditSlideSave = () => {
if (!this.handleSave) {
this.handleSave = _.debounce(() => {
const { selectedTab } = this.state;
const { archivesStore: { save, socialSecurityForm, accumulationFundForm, otherForm } } = this.props;
if (selectedTab == 1) {
const { data } = socialSecurityForm;
const { socialSchemeId, socialStartTime } = data;
if (socialSchemeId && !socialStartTime) {
Modal.warning({
title: "信息确认",
content: "必要信息不完整,红色*为必填项!"
});
return;
}
save("SOCIAL_SECURITY", this.record.paymentOrganization).then(() => {
this.query();
});
} else if (selectedTab == 2) {
const { data } = accumulationFundForm;
const { fundSchemeId, fundStartTime } = data;
if (fundSchemeId && !fundStartTime) {
Modal.warning({
title: "信息确认",
content: "必要信息不完整,红色*为必填项!"
});
return;
}
save("ACCUMULATION_FUND", this.record.paymentOrganization).then(() => {
this.query();
});
} else if (selectedTab == 3) {
const { data } = otherForm;
const { otherSchemeId, otherStartTime } = data;
if (otherSchemeId && !otherStartTime) {
Modal.warning({
title: "信息确认",
content: "必要信息不完整,红色*为必填项!"
});
return;
}
save("OTHER", this.record.paymentOrganization).then(() => {
this.query();
});
}
}, 500);
}
this.handleSave();
};
// 导入
handleBtnImport = (runStatus) => {
this.setState({ importVisible: true, runStatus });
};
// 模板点击
handleTemplateLinkClick = (exportData) => {
const { selectedKey } = this.state;
let url = `/api/bs/hrmsalary/scheme/template/export?exportData=${exportData}&runStatuses=${selectedKey === "pending" ? "1" : "2,3"}`;
window.open(`${window.location.origin}${url}`);
};
// 导入预览
handlePreviewImport = (params) => {
const { archivesStore: { previewCurData } } = this.props;
previewCurData(params);
};
// 导入
handleImport = (params) => {
const { archivesStore: { importBatch } } = this.props;
const { runStatus } = this.state;
importBatch({ ...params, runStatus });
};
// 导入完成
handleFinish = () => {
const { archivesStore: { initImportParams } } = this.props;
initImportParams();
this.setState({ importVisible: false, step: 0 }, () => {
this.query();
});
};
// 初始化导入参数
handleInitModal = () => {
const { archivesStore: { setPreviewCurDataColumns, setPreviewCurDataDataSource, setImportResult } } = this.props;
setPreviewCurDataColumns([]);
setPreviewCurDataDataSource([]);
setImportResult({});
};
// 选项设置
onSelectChange = selectedRowKeys => {
this.setState({ selectedRowKeys });
};
// 关闭导入框
handleImportCancel = () => {
const { archivesStore: { initImportParams, getTableDatas } } = this.props;
initImportParams();
if (this.state.step == 2) {
getTableDatas();
}
this.setState({ importVisible: false, step: 0 });
};
//切换tab
handleChangeTab = (selectedKey) => {
const { pageInfo } = this.state;
this.setState({
selectedKey,
selectedRowKeys: [],
editSlideVisible: false,
pageInfo: {
...pageInfo,
current: 1,
pageSize: 10
}
}, () => {
this.query();
});
};
query = () => {
const { selectedKey } = this.state;
switch (selectedKey) {
case "pending":
this.queryList({ runStatuses: ["1"] });
break;
case "fixed":
this.queryList({ runStatuses: ["2", "3"] });
break;
case "suspend":
this.queryList({ runStatuses: ["3"] });
break;
default:
this.queryList({ runStatuses: ["4", "5"] });
break;
}
};
handleMenuBtnClick = () => {
const { selectedKey } = this.state;
if (selectedKey === "pending") {
// 带增员----全量增员
API.allStayAddToPay().then(({ status, data, errormsg }) => {
if (status) {
const { msg, type } = data;
if (type === "fail") {
message.error(msg || "操作失败");
} else if (type === "success") {
message.success(msg || "操作成功!");
this.query();
}
} else {
message.error(errormsg || "操作失败!");
}
});
} else if (selectedKey === "suspend") {
// 带减员----全量减员
API.allStayDelToStop().then(({ status, data, errormsg }) => {
if (status) {
const { msg, type } = data;
if (type === "fail") {
message.error(msg || "操作失败");
} else if (type === "success") {
message.success(msg || "操作成功!");
this.query();
}
} else {
message.error(errormsg || "操作失败!");
}
});
}
};
handleMenuItemClick = ({ key }) => {
const { selectedRowKeys, selectedKey } = this.state;
if (selectedRowKeys.length === 0) {
message.warning("未选择任何条目", 1);
return;
}
switch (selectedKey) {
case "pending":
if (key === "4") {
const payload = {
runStatus: key,
ids: selectedRowKeys
};
this.deleteTodoList(payload);
} else {
this.stayAddToPay(selectedRowKeys);
}
break;
case "suspend":
if (key === "1") {
this.stayDelToStop(selectedRowKeys);
} else if (key === "2") {
this.cancelStayDel({ runStatus: "3", ids: selectedRowKeys });
}
break;
default:
break;
}
};
//增员
stayAddToPay = (payload) => {
API.stayAddToPay(payload).then(({ status, data, errormsg }) => {
if (status) {
const { msg, type } = data;
if (type === "fail") {
message.error(msg || "操作失败");
} else if (type === "success") {
message.success(msg || "操作成功");
this.query();
this.onSelectChange([]);
}
} else {
message.error(errormsg || "操作失败");
}
});
};
//减员
stayDelToStop = (payload) => {
API.stayDelToStop(payload).then(({ status, data, errormsg }) => {
if (status) {
const { msg, type } = data;
if (type === "fail") {
message.error(msg || "操作失败");
} else if (type === "success") {
message.success(msg || "操作成功");
this.query();
this.onSelectChange([]);
}
} else {
message.error(errormsg || "操作失败");
}
});
};
//删除社保档案
deleteSocialArchive = (params) => {
Modal.confirm({
title: getLabel(131329, "信息确认"),
content: getLabel(388758, "确认要删除吗?"),
onOk: () => {
API.deleteArchive(params).then(({ status, errormsg }) => {
if (status) {
message.success(getLabel(30700, "操作成功"));
this.query();
} else {
message.error(errormsg || getLabel(30651, "操作失败"));
}
});
}
});
};
//取消停缴
cancelStopPayment = (payload) => {
API.cancelStopPayment(payload).then(({ status, errormsg }) => {
if (status) {
message.success("操作成功");
this.query();
this.onSelectChange([]);
} else {
message.error(errormsg || "操作失败");
}
});
};
//删除待办-待增员
deleteTodoList = (payload) => {
API.updateRunStatus(payload).then(({ status, errormsg }) => {
if (status) {
message.success("操作成功");
this.query();
this.onSelectChange([]);
} else {
message.error(errormsg || "操作失败");
}
});
};
//删除待办-待减员
cancelStayDel = (payload) => {
API.cancelStayDel(payload).then(({ status, errormsg }) => {
if (status) {
message.success("操作成功");
this.query();
this.onSelectChange([]);
} else {
message.error(errormsg || "操作失败");
}
});
};
getTipChildren = () => {
const { selectedKey } = this.state;
let dom = null;
switch (selectedKey) {
case "pending":
dom = <div>
{/*<div>1、新入职人员、返聘人员和个税扣缴义务人发生变更从【待减员】中减员操作的会进入【待增员】</div>*/}
{/*<div>2、返聘人员默认返聘前的社保福利缴纳方案、缴纳账号、缴纳组织数据其他数据会清空</div>*/}
<div>1个税扣缴义务人变更进入待增员保留所有最新版本数据若修改了数据再增员则修改的数据作为新版本保存</div>
<div>2维护好员工的社保福利档案数据后点击增员数据会进入在缴员工</div>
<div>3若不需给该员工缴纳可点击删除待办进入停缴员工进入停缴员工可以点击取消停缴再次进入待增员</div>
<div>4不管起始缴纳月维护到哪个月都可以进行增员不影响核算判断若维护了最后缴纳月且小于等于当前月则增员失败</div>
<div>5增员失败情况①终止缴纳月小于等于当前月②方案或起始缴纳月未维护</div>
{/* ②其他的个税扣缴义务人下的在缴员工中存在该员工,在缴员工未进入停缴员工;*/}
</div>;
break;
case "fixed":
dom = <div>
<div>1需缴纳社保福利的员工维护在在缴员工</div>
<div>2可使用更新导入调整档案数据</div>
<div>3若维护了最后缴纳月且小于等于当前月则自动进入待减员</div>
<div>4核算人员范围为在缴员工中的起始缴纳月和最后缴纳月区间包含当前月的人员</div>
</div>;
break;
case "suspend":
dom = <div>
{/*④某员工分权时在原个税扣缴义务人下处于【在缴员工】里但又将该员工添加到其他的个税扣缴义务人下的情况;*/}
<div>1数据进入待减员规则①员工的人事状态属性从在职变成非在职且在在缴员工在缴员工里档案维护了缴纳终止月且小于等于当前月③个税扣缴义务人发生调整</div>
<div>2待减员为是否不再缴纳的待办状态数据是从在缴员工中复制的若不处理列表中的待办数据也不影响社保福利核算待减员维护的数据和在缴员工数据是同步的</div>
<div>3点击减员前先维护最后缴纳月所有有起始缴纳月的福利项的最后缴纳月都小于等于当前月且无未归档的核算数据的档案才能减员成功减员成功后数据进入停缴员工</div>
{/*<div>4、数据进入【待减员】规则的第四种情况下若还需要在当前个税扣缴义务人下进行缴纳的话当前该员工的【待减员】数据进行【删除待办】操作即可若不在该个税扣缴义务人下继续缴纳维护好最后缴纳月后进行【减员】操作员工进入【停缴员工】</div>*/}
</div>;
break;
default:
dom = <div>
<div>1不需要缴纳社保福利的员工保存在停缴员工</div>
{/*<div>2、【停缴员工】点击取消停缴数据会回退到上次的位置从【待减员】减员到停缴员工的点击停缴返回到【在缴员工】不返回到【待减员】</div>*/}
{/*<div>3、若员工的社保福利从一个个税扣缴义务人下转到另一个个税扣缴义务人下去缴纳则在转后的个税扣缴义务人的【待增员】中进行增员操作成功后员工进入待【在缴员工】而在原个税扣缴义务人下的【停缴员工】中该员工数据将会被删除是否开启分权员工的档案数据都只保存一份</div>*/}
</div>;
break;
}
return dom;
};
render() {
const { archivesStore, taxAgentStore: { showOperateBtn } } = this.props;
const {
selectedTab,
selectedRowKeys,
selectedKey,
dataSource: dataSourceActive,
pageInfo,
tabCount,
loading
} = this.state;
const {
form, condition, showSearchAd, setShowSearchAd,
previewCurDataColumns, previewCurDataDataSource, importResult
} = archivesStore;
if (_.isEmpty(this.getColumns())) return renderLoading();
const adBtn = [ // 高级搜索内部按钮
<Button type="primary" onClick={() => {
setShowSearchAd(false);
this.setState({
pageInfo: {
...pageInfo,
current: 1,
pageSize: 10
}
}, () => {
this.query();
});
}}>搜索</Button>,
<Button type="ghost" onClick={() => form.resetForm()}>重置</Button>,
<Button type="ghost" onClick={() => setShowSearchAd(false)}>取消</Button>
];
// 导出全部
const handleButtonClick = () => {
const { selectedKey } = this.state;
let url = `${window.location.origin}/api/bs/hrmsalary/scheme/export?ids=`;
switch (selectedKey) {
case "pending":
url = `${url}&runStatuses=1&${convertToUrlString(form.getFormParams())}`;
break;
case "fixed":
url = `${url}&runStatuses=2,3&${convertToUrlString(form.getFormParams())}`;
break;
case "suspend":
url = `${url}&runStatuses=3&${convertToUrlString(form.getFormParams())}`;
break;
default:
url = `${url}&runStatuses=4,5&${convertToUrlString(form.getFormParams())}`;
break;
}
window.open(url, "_self");
};
// 导出选中
const handleMenuClick = () => {
const { selectedRowKeys } = this.state;
if (selectedRowKeys.length == 0) {
message.warning("未选择任何条目", 1);
return;
}
let ids = selectedRowKeys.join(",");
let url = `${window.location.origin}/api/bs/hrmsalary/scheme/export?ids=${ids}`;
switch (selectedKey) {
case "pending":
url = `${url}&runStatuses=1`;
break;
case "fixed":
url = `${url}&runStatuses=2,3`;
break;
case "suspend":
url = `${url}&runStatuses=3`;
break;
default:
url = `${url}&runStatuses=4,5`;
break;
}
window.open(url, "_self");
};
const btns = selectedKey === "fixed" ? [
<Button type="primary" onClick={() => {
this.handleBtnImport("2");
}}>导入</Button>,
<Dropdown.Button onClick={handleButtonClick} overlay={
<Menu onClick={handleMenuClick}>
<Menu.Item key="1">导出选中</Menu.Item>
</Menu>
} type="ghost">
导出全部
</Dropdown.Button>
] : selectedKey === "pending" ? [
<WeaHelpfulTip
width={300}
title={<div>提示缴纳月份区间包含起始缴纳月不包含最后缴纳月 若员工离职时还未增员进入在缴员工则数据会自动清除
因此若确认缴纳请及时维护档案数据并增员操作若清除后还需缴纳需先在个税扣缴义务人菜单将员工按离职状态添加回来会重新出现在待增员</div>}
placement="topLeft"
/>,
<Dropdown.Button
onClick={this.handleMenuBtnClick}
overlay={
<Menu onClick={this.handleMenuItemClick}>
<Menu.Item key="1">批量增员</Menu.Item>
<Menu.Item key="4">批量删除待办</Menu.Item>
</Menu>
} type="ghost"
>
全量增员
</Dropdown.Button>,
<Button type="primary" onClick={() => {
this.handleBtnImport("1");
}}>导入</Button>,
<Dropdown.Button onClick={handleButtonClick} overlay={
<Menu onClick={handleMenuClick}>
<Menu.Item key="1">导出选中</Menu.Item>
</Menu>
} type="ghost">
导出全部
</Dropdown.Button>
] : selectedKey === "suspend" ? [
<WeaHelpfulTip
width={300}
title={<HelpfulDiv/>}
placement="topLeft"
/>,
<Dropdown.Button
onClick={this.handleMenuBtnClick}
overlay={
<Menu onClick={this.handleMenuItemClick}>
<Menu.Item key="1">批量减员</Menu.Item>
<Menu.Item key="2">批量删除待办</Menu.Item>
</Menu>
}
type="primary"
>
全量减员
</Dropdown.Button>,
<Dropdown.Button onClick={handleButtonClick} overlay={
<Menu onClick={handleMenuClick}>
<Menu.Item key="1">导出选中</Menu.Item>
</Menu>
} type="ghost">
导出全部
</Dropdown.Button>
] : [
<WeaHelpfulTip
width={300}
title={<CancelHelpfulDiv/>}
placement="topLeft"
/>,
<Button type="primary" onClick={() => this.cancelStopPayment(selectedRowKeys)}>批量取消停缴</Button>,
<Dropdown.Button onClick={handleButtonClick} overlay={
<Menu onClick={handleMenuClick}>
<Menu.Item key="1">导出选中</Menu.Item>
</Menu>
} type="ghost">
导出全部
</Dropdown.Button>
];
const pagination = {
current: pageInfo.current,
pageSize: pageInfo.pageSize,
total: pageInfo.total,
showTotal: total => `${total}`,
showQuickJumper: true,
showSizeChanger: true,
pageSizeOptions: ["10", "20", "50", "100"],
onShowSizeChange: (current, pageSize) => {
this.setState({ pageInfo: { ...pageInfo, current, pageSize } }, () => {
this.query();
});
},
onChange: current => {
this.setState({ pageInfo: { ...pageInfo, current } }, () => {
this.query();
});
}
};
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange
};
return (
<div className="mySalaryBenefitsWrapper">
<WeaTop
title="社保福利档案" // 文字
icon={<i className="icon-coms-fa"/>} // 左侧图标
iconBgcolor="#F14A2D" // 左侧图标背景色
showDropIcon={false} // 是否显示下拉按钮
>
<WeaTab
datas={tabCondition}
buttons={showOperateBtn ? btns : []}
counts={tabCount}
countParam="groupid" //数量
keyParam="viewcondition" //主键
selectedKey={selectedKey}
onChange={this.handleChangeTab}
searchType={["base", "advanced"]} // base基础搜索框 advanced显示高级搜索按钮
showSearchAd={showSearchAd} // 是否展开高级搜索面板
setShowSearchAd={bool => setShowSearchAd(bool)} //高级搜索面板受控
searchsAd={getSearchs(form, toJS(condition), 2)} // 高级搜索内部数据
buttonsAd={adBtn} // 高级搜索内部按钮
searchsBasePlaceHolder={"请输入姓名"}
onSearch={() => {
this.setState({
pageInfo: {
...pageInfo,
current: 1,
pageSize: 10
}
}, () => {
this.query();
});
}} // 点搜索按钮时的回调
onSearchChange={v => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值
searchsBaseValue={form.getFormParams().username} // 外部input搜索值受控: 这里和高级搜索的requestname同步
/>
<div className="tableWrapper">
<WeaNewScroll height="100%">
<UnifiedTable
loading={loading.query}
rowKey="baseInfo"
columns={this.getColumns()}
dataSource={dataSourceActive}
pagination={pagination}
rowSelection={rowSelection}
xWidth={this.getColumns().length * 120}
/>
{
!_.isEmpty(this.getColumns()) &&
<TipLabel>{this.getTipChildren()}</TipLabel>
}
</WeaNewScroll>
</div>
</WeaTop>
{
this.state.editSlideVisible &&
<WeaSlideModal
className="slideOuterWrapper"
visible={this.state.editSlideVisible}
top={0}
measureT="%"
width={800}
measureX="px"
height={100}
measureY="%"
direction="right"
title={
<SlideModalTitle
subtitle={"员工福利档案"}
tabs={[
{ title: "基础设置", key: 0 }, { title: "社保", key: 1 },
{ title: "公积金", key: 2 }, { title: "企业年金及其他福利", key: 3 }]
}
editable={false}
selectedTab={selectedTab}
showOperateBtn={showOperateBtn}
customOperate={
(showOperateBtn && selectedKey !== "stop" && selectedTab != 0) ?
[<Button type="primary" onClick={() => this.handleEditSlideSave()}>保存</Button>] : []
}
subItemChange={selectedTab => this.setState({ selectedTab })}
/>
}
content={<div>
{
selectedTab == 0 && <BaseForm employeeId={this.state.employeeId} record={this.record}/>
}
{
selectedTab == 1 &&
<SocialSecurityForm employeeId={this.state.employeeId} record={this.record}
onChangeRecordSchemeId={(siSchemeId) => this.record = {
...this.record,
siSchemeId
}}/>
}
{
selectedTab == 2 &&
<AccumulationFundForm employeeId={this.state.employeeId} record={this.record}
onChangeRecordFundSchemeId={(fundSchemeId) => this.record = {
...this.record,
fundSchemeId
}}/>
}
{
selectedTab == 3 && <OtherForm employeeId={this.state.employeeId} record={this.record}
onChangeRecordOtherSchemeId={(otherSchemeId) => this.record = {
...this.record,
otherSchemeId
}}/>
}
</div>}
onClose={() => this.setState({ editSlideVisible: false }, () => {
this.setState({ selectedTab: "0" });
})}
showMask={true}
closeMaskOnClick={() => this.setState({ editSlideVisible: false }, () => {
this.setState({ selectedTab: "0" });
})}/>
}
{
this.state.importVisible && <ImportModal
init={() => {
this.handleInitModal();
}}
params={this.state.modalParam}
columns={previewCurDataColumns}
step={this.state.step}
setStep={this.setStep.bind(this)}
isInit
slideDataSource={previewCurDataDataSource}
importResult={importResult}
onFinish={() => {
this.handleFinish();
}}
previewImport={(params) => {
this.handlePreviewImport(params);
}}
importFile={(params) => {
this.handleImport(params);
}}
templateLink={(exportData) => {
this.handleTemplateLinkClick(exportData);
}}
visiable={this.state.importVisible}
onCancel={() => {
this.handleImportCancel();
}}
/>
}
</div>
);
}
}
const HelpfulDiv = () => {
return <div className="helpWrapper">
<span>1缴纳月份区间包含起始缴纳月不包含最后缴纳月;</span>
<span>2维护的所有的最后缴纳月都大于当前月则该待办数据自动清除不显示在待减员列表</span>
<span>3减员失败情况①有起始缴纳月却未维护最后缴纳月②员工存在未归档的核算数据</span>
</div>;
};
const CancelHelpfulDiv = () => {
return <div className="helpWrapper">
<span>1缴纳月份区间包含起始缴纳月不包含最后缴纳月;</span>
<span>2若员工当前不在停缴档案的个税扣缴义务人下则不可取消停缴</span>
<span>3若员工当前在其他个税扣缴义务人下正在缴纳也不可取消停缴</span>
</div>;
};