专项附加扣除模块页面接口联调完成
This commit is contained in:
parent
fad63cc781
commit
cf315eb608
|
|
@ -25,55 +25,19 @@ export const specialAddDeductionGetDetailList = (params) => {
|
|||
export const specialAddDeductionDeleteSelectData = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/specialAddDeduction/deleteSelectData', params);
|
||||
}
|
||||
// 导入档案
|
||||
export const importSalaryArchive = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/importSalaryArchive', params);
|
||||
// 一键清空
|
||||
export const specialAddDeductionDeleteAllData = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/specialAddDeduction/deleteAllData', params);
|
||||
}
|
||||
// 薪资档案预览
|
||||
export const salaryArchivePreview = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/preview', params);
|
||||
// 查看单条信息
|
||||
export const getSpecialAddDeduction = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/specialAddDeduction/getSpecialAddDeduction', params);
|
||||
}
|
||||
// 公共枚举接口
|
||||
export const commonEnumList = (params) => {
|
||||
return WeaTools.callApi('/api/bs/hrmsalary/common/enum/list', 'GET', params);
|
||||
// 导入预览
|
||||
export const specialAddDeductionPreview = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/specialAddDeduction/preview', params);
|
||||
}
|
||||
// 获取导入类型
|
||||
export const getImportTypes = () => {
|
||||
return WeaTools.callApi('/api/bs/hrmsalary/salaryArchive/getImportTypes', 'GET', {});
|
||||
}
|
||||
// 发起调薪地址
|
||||
export const salaryAdjustmentInfo = (params) => {
|
||||
return WeaTools.callApi('/api/bs/hrmsalary/process/salaryAdjustmentInfo', 'GET', params);
|
||||
}
|
||||
// 一键全部设为定薪员工
|
||||
export const allGotoFixed = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/allGotoFixed', params);
|
||||
}
|
||||
// 设为定薪员工
|
||||
export const gotoFixed = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/gotoFixed', params);
|
||||
}
|
||||
// 停薪
|
||||
export const gotoStop = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/gotoStop', params);
|
||||
}
|
||||
//全部停薪
|
||||
export const allGotoStop = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/allGotoStop', params);
|
||||
}
|
||||
// 取消停薪
|
||||
export const cancelStop = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/cancelStop', params);
|
||||
}
|
||||
// 保存发薪设置
|
||||
export const savePaySet = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/savePaySet', params);
|
||||
}
|
||||
// 待定薪删除待办
|
||||
export const deletePendingTodo = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/deletePendingTodo', params);
|
||||
}
|
||||
// 待停薪删除待办
|
||||
export const deleteSuspendTodo = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryArchive/deleteSuspendTodo', params);
|
||||
// 导入预览结果
|
||||
export const specialAddDeductionImportData = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/specialAddDeduction/importData', params);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,85 @@
|
|||
import React, { Component } from "react";
|
||||
import { WeaTable } from "ecCom";
|
||||
import * as API from "../../../../apis/special";
|
||||
|
||||
class SpecialAddContent extends Component {
|
||||
render() {
|
||||
return (
|
||||
<div>
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
dataSource: [],
|
||||
columns: [],
|
||||
loading: {
|
||||
query: false
|
||||
},
|
||||
selectedRowKeys: [],
|
||||
pageInfo: {
|
||||
current: 1,
|
||||
pageSize: 10,
|
||||
total: 0
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
</div>
|
||||
componentWillReceiveProps(nextProps, nextContext) {
|
||||
if (nextProps.specialId !== this.props.specialId) {
|
||||
nextProps.specialId && this.specialAddDeductionGetDetailList({ specialAddDeductionId: nextProps.specialId });
|
||||
}
|
||||
}
|
||||
|
||||
specialAddDeductionGetDetailList = (payload) => {
|
||||
this.setState({ loading: { ...this.state.loading, query: true } });
|
||||
API.specialAddDeductionGetDetailList(payload).then(({ status, data }) => {
|
||||
this.setState({ loading: { ...this.state.loading, query: false } });
|
||||
if (status) {
|
||||
const { columns, list: dataSource, pageSize, pageNum, total } = data;
|
||||
this.setState({
|
||||
columns, dataSource,
|
||||
pageInfo: {
|
||||
...this.pageInfo,
|
||||
pageSize, pageNum, total
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const { columns, dataSource, pageInfo, selectedRowKeys, loading } = this.state;
|
||||
const { specialId } = this.props;
|
||||
const pagination = {
|
||||
...pageInfo,
|
||||
showTotal: (total) => `共 ${total} 条`,
|
||||
pageSizeOptions: ["10", "20", "50", "100"],
|
||||
showSizeChanger: true,
|
||||
showQuickJumper: true,
|
||||
onShowSizeChange: (current, pageSize) => {
|
||||
this.setState({
|
||||
pageInfo: { ...pageInfo, current, pageSize }
|
||||
}, () => {
|
||||
this.specialAddDeductionGetDetailList({ specialAddDeductionId: specialId, current, pageSize });
|
||||
});
|
||||
},
|
||||
onChange: (current) => {
|
||||
this.setState({
|
||||
pageInfo: { ...pageInfo, current }
|
||||
}, () => {
|
||||
this.specialAddDeductionGetDetailList({ specialAddDeductionId: specialId, current });
|
||||
});
|
||||
}
|
||||
};
|
||||
const rowSelection = {
|
||||
selectedRowKeys,
|
||||
onChange: (selectedRowKeys) => this.setState({ selectedRowKeys })
|
||||
};
|
||||
return (
|
||||
<WeaTable
|
||||
rowKey="id"
|
||||
rowSelection={rowSelection}
|
||||
columns={columns}
|
||||
dataSource={dataSource}
|
||||
pagination={pagination}
|
||||
loading={loading.query}
|
||||
/>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import React, { Component } from "react";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { Button, Dropdown, Menu, message, Modal, Popover } from "antd";
|
||||
import { WeaPopoverHrm, WeaSlideModal, WeaTab, WeaTable, WeaTop } from "ecCom";
|
||||
import { Button, Col, Dropdown, Menu, message, Modal, Popover, Row } from "antd";
|
||||
import { WeaPopoverHrm, WeaSelect, WeaSlideModal, WeaTab, WeaTable, WeaTop } from "ecCom";
|
||||
import InlineForm from "./components/inlineForm";
|
||||
import { getSearchs, renderLoading } from "../../../util";
|
||||
import * as API from "../../../apis/special";
|
||||
|
|
@ -9,6 +9,8 @@ import SlideModalTitle from "../../../components/slideModalTitle";
|
|||
import AddItems from "../addItems";
|
||||
import SpecialAddContent from "./components/specialAddContent";
|
||||
import { condition } from "./components/condition";
|
||||
import ImportModal from "../../../components/importModal";
|
||||
import { modalColumns } from "../cumDeduct/columns";
|
||||
import "./index.less";
|
||||
|
||||
@inject("specialAddStore", "taxAgentStore")
|
||||
|
|
@ -29,6 +31,11 @@ class SpecialAddDeduction extends Component {
|
|||
loading: false, isView: true,
|
||||
editId: {}
|
||||
},
|
||||
importParams: { //导入弹框参数
|
||||
visible: false, step: 0,
|
||||
importResult: [],
|
||||
payload: { taxAgentId: "" }
|
||||
},
|
||||
dataSource: [],
|
||||
columns: [],
|
||||
selectedRowKeys: [],
|
||||
|
|
@ -38,6 +45,7 @@ class SpecialAddDeduction extends Component {
|
|||
};
|
||||
this.inlineForm = null;
|
||||
this.addItemRef = null;
|
||||
this.specialContentRef = null;
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
|
|
@ -104,6 +112,15 @@ class SpecialAddDeduction extends Component {
|
|||
render: (text, record) => (
|
||||
<div className="linkWapper">
|
||||
<a href="javaScript:void(0);" onClick={() => {
|
||||
this.setState({
|
||||
drawerParams: {
|
||||
...this.state.drawerParams,
|
||||
visible: true,
|
||||
isView: true,
|
||||
title: "专项附加扣除记录",
|
||||
editId: record
|
||||
}
|
||||
});
|
||||
}}>
|
||||
查看明细
|
||||
</a>
|
||||
|
|
@ -142,6 +159,7 @@ class SpecialAddDeduction extends Component {
|
|||
drawerParams: {
|
||||
...drawerParams,
|
||||
visible: false,
|
||||
isView: true,
|
||||
editId: {}
|
||||
}
|
||||
}, () => {
|
||||
|
|
@ -162,6 +180,7 @@ class SpecialAddDeduction extends Component {
|
|||
drawerParams: {
|
||||
...drawerParams,
|
||||
visible: false,
|
||||
isView: true,
|
||||
editId: {}
|
||||
}
|
||||
}, () => {
|
||||
|
|
@ -187,7 +206,7 @@ class SpecialAddDeduction extends Component {
|
|||
}
|
||||
}, () => {
|
||||
const { drawerParams: params } = this.state;
|
||||
API.specialAddDeductionGetDetailList({ specialAddDeductionId: row.id }).then(({ status, data }) => {
|
||||
API.getSpecialAddDeduction({ id: row.id }).then(({ status, data }) => {
|
||||
if (status) {
|
||||
this.setState({
|
||||
drawerParams: {
|
||||
|
|
@ -219,13 +238,13 @@ class SpecialAddDeduction extends Component {
|
|||
}
|
||||
};
|
||||
deleteSelectAddUpDeduction = () => {
|
||||
const { selectedRowKeysKey } = this.state;
|
||||
if (selectedRowKeysKey.length === 0) {
|
||||
const { selectedRowKeys } = this.state;
|
||||
if (selectedRowKeys.length === 0) {
|
||||
message.warning("未选择条目");
|
||||
return;
|
||||
}
|
||||
const payload = {
|
||||
ids: selectedRowKeysKey
|
||||
ids: selectedRowKeys
|
||||
};
|
||||
Modal.confirm({
|
||||
title: "信息确认",
|
||||
|
|
@ -245,6 +264,80 @@ class SpecialAddDeduction extends Component {
|
|||
});
|
||||
|
||||
};
|
||||
specialAddDeductionDeleteAllData = () => {
|
||||
const extraParams = this.inlineForm ? this.inlineForm.getFieldsValue() : {};
|
||||
const payload = {
|
||||
...extraParams
|
||||
};
|
||||
Modal.confirm({
|
||||
title: "信息确认",
|
||||
content: `确定清空所有专项附加扣除数据吗?若数据已参与核算,已参与核算的数据不会受影响,点击核算将会按当前列表最新数据重新核算。`,
|
||||
onOk: () => {
|
||||
API.specialAddDeductionDeleteAllData(payload).then(({ status, errormsg }) => {
|
||||
if (status) {
|
||||
message.success("删除成功");
|
||||
this.specialAddDeductionList();
|
||||
} else {
|
||||
message.error(errormsg || "删除失败");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
specialAddDeductionPreview = (payload) => {
|
||||
const { importParams } = this.state;
|
||||
API.specialAddDeductionPreview(payload).then(({ status, data }) => {
|
||||
if (status) {
|
||||
const { preview: slideDataSource } = data;
|
||||
this.setState({
|
||||
importParams: {
|
||||
...importParams,
|
||||
slideDataSource
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
specialAddDeductionImportData = (payload) => {
|
||||
const { importParams } = this.state;
|
||||
API.specialAddDeductionImportData(payload).then(({ status, data: importResult }) => {
|
||||
if (status) {
|
||||
this.setState({
|
||||
importParams: {
|
||||
...importParams,
|
||||
step: 2,
|
||||
importResult
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
specialAddDeductionExport = () => {
|
||||
const url = `${window.location.origin}/api/bs/hrmsalary/specialAddDeduction/export?ids=&taxAgentId=${this.inlineForm.getFieldsValue().taxAgentId}`;
|
||||
window.open(url, "_self");
|
||||
};
|
||||
specialAddDeductionExportSelect = () => {
|
||||
const { selectedRowKeys } = this.state;
|
||||
if (selectedRowKeys.length === 0) {
|
||||
message.warning("未选择条目");
|
||||
return;
|
||||
}
|
||||
const url = `${window.location.origin}/api/bs/hrmsalary/specialAddDeduction/export?ids=${selectedRowKeys.join(",")}&taxAgentId=${this.inlineForm.getFieldsValue().taxAgentId}`;
|
||||
window.open(url, "_self");
|
||||
};
|
||||
handleExportAllSpecialDetail = () => {
|
||||
const url = `${window.location.origin}/api/bs/hrmsalary/specialAddDeduction/export`;
|
||||
window.open(url, "_self");
|
||||
};
|
||||
handleExportSelectSpecialDetail = () => {
|
||||
const { state: { selectedRowKeys } } = this.specialContentRef;
|
||||
if (selectedRowKeys.length === 0) {
|
||||
message.warning("未选择条目");
|
||||
return;
|
||||
}
|
||||
const url = `${window.location.origin}/api/bs/hrmsalary/specialAddDeduction/export?ids=${selectedRowKeys.join(",")}`;
|
||||
window.open(url, "_self");
|
||||
};
|
||||
getSearchsAdQuick = (isAd) => {
|
||||
const { advanceParams } = this.state;
|
||||
const { taxAgentStore: { taxAgentAdminOption }, specialAddStore: { advanceForm } } = this.props;
|
||||
|
|
@ -255,9 +348,42 @@ class SpecialAddDeduction extends Component {
|
|||
onChange={this.specialAddDeductionList}
|
||||
/>;
|
||||
};
|
||||
renderImportormComponent = () => {
|
||||
const { importParams } = this.state;
|
||||
const { taxAgentStore: { taxAgentAdminOption } } = this.props;
|
||||
return (
|
||||
<Row>
|
||||
<Col span={12}>
|
||||
<span
|
||||
className="formLabel"
|
||||
style={{ lineHeight: "30px", marginRight: "10px" }}>
|
||||
个税扣缴义务人
|
||||
</span>
|
||||
<WeaSelect
|
||||
showSearch // 设置select可搜索
|
||||
style={{ width: 200, display: "inline-block" }}
|
||||
options={taxAgentAdminOption}
|
||||
value={importParams.payload.taxAgentId}
|
||||
onChange={(v) => {
|
||||
this.setState({ importParams: { ...importParams, payload: { taxAgentId: v } } });
|
||||
}}
|
||||
/>
|
||||
</Col>
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
|
||||
render() {
|
||||
const { advanceParams, dataSource, columns, loading, selectedRowKeys, pageInfo, drawerParams } = this.state;
|
||||
const {
|
||||
advanceParams,
|
||||
dataSource,
|
||||
columns,
|
||||
loading,
|
||||
selectedRowKeys,
|
||||
pageInfo,
|
||||
drawerParams,
|
||||
importParams
|
||||
} = this.state;
|
||||
const { taxAgentStore, specialAddStore: { advanceForm, addForm } } = this.props;
|
||||
const { showOperateBtn, taxAgentAdminOption } = taxAgentStore;
|
||||
const rowSelection = {
|
||||
|
|
@ -266,11 +392,9 @@ class SpecialAddDeduction extends Component {
|
|||
};
|
||||
const customBtns = [
|
||||
<Dropdown.Button
|
||||
onClick={() => {
|
||||
}}
|
||||
onClick={this.handleExportAllSpecialDetail}
|
||||
overlay={
|
||||
<Menu onClick={() => {
|
||||
}}>
|
||||
<Menu onClick={this.handleExportSelectSpecialDetail}>
|
||||
<Menu.Item key="select">导出选中</Menu.Item>
|
||||
</Menu>
|
||||
}
|
||||
|
|
@ -280,13 +404,19 @@ class SpecialAddDeduction extends Component {
|
|||
</Dropdown.Button>
|
||||
];
|
||||
const btns = [
|
||||
<Button type="primary">导入</Button>,
|
||||
<Button type="primary" onClick={() => {
|
||||
this.setState({
|
||||
importParams: {
|
||||
...importParams,
|
||||
step: 0, visible: true,
|
||||
slideDataSource: [], importResult: []
|
||||
}
|
||||
});
|
||||
}}>导入</Button>,
|
||||
<Dropdown.Button
|
||||
onClick={() => {
|
||||
}}
|
||||
onClick={this.specialAddDeductionExport}
|
||||
overlay={
|
||||
<Menu onClick={() => {
|
||||
}}>
|
||||
<Menu onClick={this.specialAddDeductionExportSelect}>
|
||||
<Menu.Item key="select">导出选中</Menu.Item>
|
||||
</Menu>
|
||||
}
|
||||
|
|
@ -303,8 +433,7 @@ class SpecialAddDeduction extends Component {
|
|||
}
|
||||
})}>新建</Button>,
|
||||
<Dropdown.Button
|
||||
onClick={() => {
|
||||
}}
|
||||
onClick={this.specialAddDeductionDeleteAllData}
|
||||
overlay={
|
||||
<Menu onClick={this.deleteSelectAddUpDeduction}>
|
||||
<Menu.Item key="select">删除所选</Menu.Item>
|
||||
|
|
@ -404,9 +533,9 @@ class SpecialAddDeduction extends Component {
|
|||
};
|
||||
this.handleSaveSpecialList(payload);
|
||||
}}
|
||||
editable={!drawerParams.isView}
|
||||
editable={showOperateBtn && !drawerParams.isView}
|
||||
showOperateBtn={showOperateBtn}
|
||||
customOperate={(showOperateBtn && !drawerParams.isView) ? customBtns : []}
|
||||
customOperate={(showOperateBtn && drawerParams.isView) ? customBtns : []}
|
||||
/>
|
||||
}
|
||||
content={
|
||||
|
|
@ -419,7 +548,7 @@ class SpecialAddDeduction extends Component {
|
|||
editId={drawerParams.editId}
|
||||
condition={condition}
|
||||
/> :
|
||||
<SpecialAddContent/>
|
||||
<SpecialAddContent ref={dom => this.specialContentRef = dom} specialId={drawerParams.editId.id}/>
|
||||
}
|
||||
onClose={() => this.setState({
|
||||
drawerParams: {
|
||||
|
|
@ -441,6 +570,41 @@ class SpecialAddDeduction extends Component {
|
|||
/>
|
||||
{/*人员卡片*/}
|
||||
<WeaPopoverHrm/>
|
||||
{/* 导入模板*/}
|
||||
{
|
||||
importParams.visible &&
|
||||
<ImportModal
|
||||
needimportSelected //下载模板需要带上导入所选项
|
||||
params={importParams.payload}
|
||||
columns={modalColumns}
|
||||
step={importParams.step}
|
||||
setStep={(step) => this.setState({ importParams: { ...importParams, step } })}
|
||||
slideDataSource={importParams.slideDataSource}
|
||||
importResult={importParams.importResult}
|
||||
onFinish={() => {
|
||||
this.setState({ importParams: { ...importParams, step: 0, visible: false } }, () => {
|
||||
this.specialAddDeductionList();
|
||||
localStorage.removeItem("fileList");
|
||||
});
|
||||
}}
|
||||
previewImport={this.specialAddDeductionPreview}
|
||||
importFile={this.specialAddDeductionImportData}
|
||||
templateLink="/api/bs/hrmsalary/specialAddDeduction/downloadTemplate"
|
||||
renderFormComponent={this.renderImportormComponent}
|
||||
visiable={importParams.visible}
|
||||
onCancel={() => {
|
||||
localStorage.removeItem("fileList");
|
||||
this.setState({
|
||||
importParams: {
|
||||
...importParams,
|
||||
step: 0, visible: false,
|
||||
slideDataSource: [], importResult: [],
|
||||
payload: { taxAgentId: "" }
|
||||
}
|
||||
});
|
||||
}}
|
||||
/>
|
||||
}
|
||||
</div>
|
||||
</WeaTop>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue