salary-management-front/pc4mobx/hrmSalary/pages/taxAgent/index.js

487 lines
15 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 { Button, Col, message, Modal, Row, Switch } from "antd";
import { WeaFormItem, WeaRightMenu, WeaSearchGroup, WeaTable, WeaTop, WeaInputSearch } from "ecCom";
import { renderNoright } from "../../util"; // 渲染form数据的方法因为多个页面都会使用所以抽的公共方法在util中
import EditModal from "./editModal";
import TipLabel from "../../components/TipLabel";
import { decentralizationConditions, editConditions } from "./editConditions";
import "./index.less";
@inject("taxAgentStore")
@observer
export default class TaxAgent extends React.Component {
constructor(props) {
super(props);
this.state = {
name: '',
editModalProps: {
title: "新增个税扣缴义务人",
visible: false,
current: 0,
btnType: "save", //save: 添加, edit: 编辑, prev: '上一步'
editId: "",
editType: "save"
},
editModalLoading: {
saveloading: false
},
devolutionStatus: 0,
conditions: editConditions,
decentralizationConditions: decentralizationConditions,
permission: {},
syncLoading: false
};
}
componentWillMount() {
const { taxAgentStore } = this.props;
const { doInit } = taxAgentStore;
doInit();
this.getPermission();
// window.setLayoutWindow=window;
}
getPermission = () => {
const { getPermission } = this.props.taxAgentStore;
getPermission().then(({ status, data }) => {
if (status) {
this.setState({ permission: data }, () => {
this.getTaxAgentBaseForm();
});
}
});
};
getTaxAgentBaseForm = () => {
const { taxAgentStore } = this.props;
const { getTaxAgentBaseForm } = taxAgentStore;
getTaxAgentBaseForm().then(({ status, data }) => {
if (status && !_.isEmpty(data)) {
const { devolutionStatus } = data;
this.setState({ devolutionStatus });
}
});
};
taxAgentBaseSave = devolutionStatus => {
Modal.confirm({
title: "信息确认",
content: `确认${!devolutionStatus ? "停用" : "启用"}分权?`,
onOk: () => {
const paylaod = { devolutionStatus };
const { taxAgentStore } = this.props;
const { taxAgentBaseSave, doInit, pageObj } = taxAgentStore;
taxAgentBaseSave(paylaod).then(({ status, errormsg }) => {
if (status) {
message.success(`${!devolutionStatus ? "停用" : "启用"}分权成功`);
this.getTaxAgentBaseForm();
doInit({ current: pageObj.current, pageSize: pageObj.pageSize });
} else {
message.error(errormsg || `${!devolutionStatus ? "停用" : "启用"}分权失败`);
}
});
},
onCancel() {
}
});
};
getTaxAgentForm = (id, current) => {
const { conditions, devolutionStatus, decentralizationConditions } = this.state;
const { taxAgentStore } = this.props;
const { getTaxAgentForm, getCondition, getFormDecentralizationCondition } = taxAgentStore;
getTaxAgentForm({ id }).then(({ status, data }) => {
if (status && !_.isEmpty(data)) {
const [conditionItem] = devolutionStatus === 1 ? conditions : decentralizationConditions;
const conditionMap = _.map(conditionItem.items, it => {
const key = it.domkey.join("");
if (it.conditionType === "BROWSER") {
return {
...it,
browserConditionParam: {
...it.browserConditionParam,
replaceDatas: _.map(data[key], b => ({
id: b.id,
name: b.content
}))
},
viewAttr: (current == 1 || !this.state.permission.isChief) ? 1 : it.viewAttr
};
} else {
if (data[key]) {
return {
...it,
value: data[key],
viewAttr: (current == 1 || !this.state.permission.isChief) ? 1 : it.viewAttr
};
}
}
return { ...it, viewAttr: (current == 1 || !this.state.permission.isChief) ? 1 : it.viewAttr };
});
this.setState(
{
conditions: [{ defaultshow: true, items: conditionMap }],
decentralizationConditions: [{ defaultshow: true, items: conditionMap }]
},
() => {
devolutionStatus === 1 ? getCondition(this.state.conditions) : getFormDecentralizationCondition(this.state.decentralizationConditions);
}
);
}
});
};
showEditModal = (editId, current) => {
this.setState(
{
editModalProps: {
...this.state.editModalProps,
visible: true,
title: editId ? "编辑个税扣缴义务人" : "新增个税扣缴义务人",
btnType: editId ? "edit" : "save",
editId: editId,
editType: current ? "set" : editId && !current ? "edit" : "save",
current: current ? current : 0
}
},
() => {
editId && this.getTaxAgentForm(editId, current);
}
);
};
closeModal = () => {
const { devolutionStatus } = this.state;
const { taxAgentStore } = this.props;
const { form, formDecentralization, getCondition } = taxAgentStore;
this.setState(
{
editModalProps: {
...this.state.editModalProps,
title: "新增个税扣缴义务人",
current: 0,
btnType: "save",
editId: "",
editType: "save",
visible: false
},
conditions: editConditions,
decentralizationConditions: decentralizationConditions
},
() => {
devolutionStatus === 1 ? form.resetForm() : formDecentralization.resetForm();
devolutionStatus === 1 ? getCondition(this.state.conditions) : getCondition(this.state.decentralizationConditions);
}
);
};
/**
* name:表单提交
* return {*}
*/
handleSubmit = module => {
const { taxAgentStore } = this.props;
const { editModalProps } = this.state;
const { doInit, saveTaxAgent, updateTaxAgent, pageObj } = taxAgentStore;
const { btnType, editId, editType } = editModalProps;
if (btnType === "save") {
// 新增
this.setState({
editModalLoading: {
saveloading: true
}
});
const payload = { ...module };
saveTaxAgent(payload).then(({ status, errormsg, data }) => {
this.setState({
editModalLoading: {
saveloading: false
}
});
if (status) {
message.success("新增成功");
this.setState({
editModalProps: {
...editModalProps,
editId: data,
current: 1,
btnType: "prev"
}
});
doInit({ current: pageObj.current, pageSize: pageObj.pageSize });
} else {
message.error(errormsg || "新增失败");
}
});
} else if (btnType === "edit") {
// 编辑
this.setState({
editModalLoading: {
saveloading: true
}
});
const payload = { ...module, id: editId };
updateTaxAgent(payload).then(({ status, errormsg }) => {
this.setState({
editModalLoading: {
saveloading: false
}
});
if (status) {
message.success("更新成功");
if (editType === "edit") {
this.closeModal();
} else {
this.setState({
editModalProps: {
...editModalProps,
current: 1,
btnType: "prev"
}
});
}
doInit({ current: pageObj.current, pageSize: pageObj.pageSize });
} else {
message.error(errormsg || "更新失败");
}
});
}
};
/**
* name: 删除个税扣缴义务人
* param {*} agentId
* return {*}
*/
deleteTaxAgent = agentId => {
const { taxAgentStore } = this.props;
const { deleteTaxAgent, pageObj, doInit } = taxAgentStore;
Modal.confirm({
title: "信息确认",
content: `确认要删除吗?`,
onOk: () => {
deleteTaxAgent([agentId]).then(({ status, errormsg }) => {
if (status) {
message.success("删除成功");
doInit({ current: pageObj.current, pageSize: pageObj.pageSize });
} else {
message.error(errormsg || "删除失败");
}
});
}
});
};
taxAgentRangeSync = () => {
const { taxAgentStore } = this.props;
const { taxAgentRangeSync, getTaxAgentList } = taxAgentStore;
this.setState({ syncLoading: true });
taxAgentRangeSync({}).then(({ status, data }) => {
this.setState({ syncLoading: false });
if (status) {
message.success(data || "操作成功");
getTaxAgentList();
}
});
};
render() {
const { taxAgentStore } = this.props;
const {
editModalProps,
editModalLoading,
devolutionStatus,
conditions,
decentralizationConditions,
permission,
syncLoading,
name
} = this.state;
const {
loading,
pageObj,
dataSource,
columns,
doInit,
hasRight,
getTaxAgentList
} = taxAgentStore;
if (!hasRight && !loading) {
// 无权限处理
return renderNoright();
}
const btns = [
<Button type="primary" onClick={this.taxAgentRangeSync} loading={syncLoading}>同步人员范围</Button>,
<WeaInputSearch
value={name}
style={{ width: 250 }}
placeholder="请输入个税扣缴义务人名称"
onChange={name => this.setState({ name })}
onSearch={() => getTaxAgentList({name})}
/>
];
const renderTipsLabel = () => {
const tipList = [
"1、个税扣缴义务人与档案中的个税扣缴义务人匹配修改个税扣缴义务人名称薪资档案的个税扣缴义务人数据同步更新",
"2、删除个税扣缴义务人需先确认档案里无人员使用该个税扣缴义务人否则不予删除",
"3、只有薪酬总管理员能够操作个税扣缴义务人的增减和开启/关闭分权;",
"4、总管理员通过后台设置“薪酬管理权限”权限项进行配置"
];
return <TipLabel tipList={tipList}/>;
};
const pagination = {
total: pageObj.total,
showTotal: total => `${total}`,
showSizeChanger: true,
pageSizeOptions: ["10", "20", "50", "100"],
onShowSizeChange(current, pageSize) {
doInit({ current, pageSize });
},
onChange(current) {
doInit({ current, pageSize: pageObj.pageSize });
}
};
const newColumns = _.map(
[
...columns,
{
title: "操作",
key: "operation",
render: (text, record) =>
<div className="operationWapper">
<a
href="javaScript:void(0);"
onClick={() => this.showEditModal(record.id)}>
编辑
</a>
{/*<Dropdown*/}
{/* overlay={*/}
{/* <Menu>*/}
{/* <Menu.Item key="0">*/}
{/* <a*/}
{/* href="javaScript:void(0);"*/}
{/* onClick={() => this.deleteTaxAgent(record.id)}>*/}
{/* 删除*/}
{/* </a>*/}
{/* </Menu.Item>*/}
{/* </Menu>*/}
{/* }>*/}
{/* <a className="ant-dropdown-link" href="javaScript:void(0);">*/}
{/* <i className="icon-coms-more" />*/}
{/* </a>*/}
{/*</Dropdown>*/}
</div>
}
],
item => {
if (item.dataIndex === "employeeRange") {
return {
...item,
render: (text, record) => {
return (
<div className="employeeRangeWapper">
<a
href="javaScript:void(0);"
onClick={() => this.showEditModal(record.id, 1)}>
{text}
</a>
</div>
);
}
};
} else {
return { ...item };
}
}
);
return (
<div className="mySalaryBenefitsWrapper">
<WeaRightMenu>
<WeaTop
title="个税扣缴义务人" // 文字
icon={<i className="icon-coms-fa"/>} // 左侧图标
iconBgcolor="#F14A2D" // 左侧图标背景色
buttons={btns}
showDropIcon={true}>
<Row
gutter={16}
style={{ overflow: "hidden", width: "100%", marginTop: 8 }}>
<Col sm={24} md={24} lg={18} xl={18}>
<div className="mySalaryTableWrapper">
{permission.isChief &&
<WeaSearchGroup title={"基础信息"} showGroup>
<WeaFormItem
label="启用分权"
labelCol={{ span: 4 }}
wrapperCol={{ span: 20 }}>
<Switch
checked={devolutionStatus === 1}
onChange={this.taxAgentBaseSave}
/>
</WeaFormItem>
</WeaSearchGroup>}
<WeaSearchGroup
title={
<div className="titleWrapper">
<div className="title">个税扣缴义务人</div>
{/* 总管理员开启新增功能 */}
{permission.isChief &&
<i
className="icon-coms-Add-to"
title="新增"
onClick={() => this.showEditModal()}
/>}
</div>
}
showGroup>
<WeaTable
columns={newColumns}
dataSource={dataSource}
pagination={pagination}
loading={loading}
/>
</WeaSearchGroup>
</div>
</Col>
<Col sm={24} md={24} lg={6} xl={6}>
{renderTipsLabel()}
</Col>
</Row>
</WeaTop>
</WeaRightMenu>
{editModalProps.visible &&
<EditModal
{...editModalProps}
{...editModalLoading}
devolutionStatus={devolutionStatus}
editConditions={devolutionStatus === 1 ? conditions : decentralizationConditions}
taxAgentStore={taxAgentStore}
isChief={permission.isChief}
onPrev={() =>
this.setState({
editModalProps: {
...editModalProps,
current: 0,
btnType: "edit"
}
})}
onChangeTab={current => {
this.setState({
editModalProps: {
...editModalProps,
current
}
});
}}
onClose={this.closeModal}
onSubmit={this.handleSubmit}
/>}
</div>
);
}
}