826 lines
26 KiB
JavaScript
826 lines
26 KiB
JavaScript
import React from "react";
|
||
import { inject, observer } from "mobx-react";
|
||
import { toJS } from "mobx";
|
||
import { Button, Col, Dropdown, Menu, message, Modal, Popover, Row } from "antd";
|
||
import { WeaDatePicker, WeaHelpfulTip, WeaSelect, WeaSlideModal, WeaTab, WeaTable, WeaTop } from "ecCom";
|
||
import moment from "moment";
|
||
import { getSearchs, renderLoading } from "../../../util"; // 渲染form数据的方法:因为多个页面都会使用,所以抽的公共方法在util中
|
||
import ImportModal from "../../../components/importModal";
|
||
import { dataCollectCondition, modalColumns } from "./columns";
|
||
import AddItems from "../addItems";
|
||
import SlideModalTitle from "../../../components/slideModalTitle";
|
||
import EditSlideContent from "./editSlideContent";
|
||
import { optionAddAll } from "../../../util/options";
|
||
import * as API from "../../../apis/otherDeduct";
|
||
import "./index.less";
|
||
|
||
|
||
@inject("otherDeductStore", "taxAgentStore")
|
||
@observer
|
||
export default class OtherDeduct extends React.Component {
|
||
constructor(props) {
|
||
super(props);
|
||
this.state = {
|
||
saveLoading: false,
|
||
lastLoading: false,
|
||
addVisible: false,
|
||
editId: {},
|
||
value: "",
|
||
selectedKey: [],
|
||
slideSelectedKey: [], //详情表格的选中项
|
||
visiable: false,
|
||
monthValue: moment(new Date()).format("YYYY-MM"),
|
||
taxAgentId: "All",
|
||
inited: false,
|
||
modalParam: {
|
||
declareMonth: ""
|
||
}
|
||
};
|
||
}
|
||
|
||
componentWillMount() {
|
||
// 初始化渲染页面
|
||
const {
|
||
otherDeductStore: { doInit, addForm },
|
||
taxAgentStore: { fetchTaxAgentOption }
|
||
} = this.props;
|
||
addForm.initFormFields(dataCollectCondition);
|
||
doInit({ declareMonth: [this.state.monthValue], taxAgentId: "" });
|
||
fetchTaxAgentOption().then(() => {
|
||
this.setState({
|
||
inited: true
|
||
});
|
||
});
|
||
}
|
||
|
||
getSearchsAdQuick() {
|
||
const { monthValue, taxAgentId } = this.state;
|
||
const {
|
||
taxAgentStore: { taxAgentOption },
|
||
otherDeductStore: { form, getTableDatas }
|
||
} = this.props;
|
||
return (
|
||
<div className="searchConditionWrapper">
|
||
<div className="searchConditionItem">
|
||
<span className="conditionFormLabel">税款所属期:</span>
|
||
<WeaDatePicker
|
||
value={monthValue}
|
||
format="YYYY-MM"
|
||
width={200}
|
||
onChange={v => {
|
||
this.setState({ monthValue: v });
|
||
let params = {};
|
||
if (taxAgentId == "All") {
|
||
params.taxAgentId = "";
|
||
} else {
|
||
params.taxAgentId = taxAgentId;
|
||
}
|
||
if (v != null && v != "") {
|
||
params.declareMonth = [v];
|
||
}
|
||
getTableDatas(params);
|
||
}}
|
||
/>
|
||
</div>
|
||
|
||
<div className="helperWrapper">
|
||
<WeaHelpfulTip
|
||
title="<div>提示:默认显示当前月所有员工申报的其他免税扣除额</div>"
|
||
placement="bottom"
|
||
width={200}
|
||
/>
|
||
</div>
|
||
|
||
<div className="searchConditionItem">
|
||
<span className="conditionFormLabel">个税扣缴义务人:</span>
|
||
{this.state.inited &&
|
||
<WeaSelect
|
||
showSearch // 设置select可搜索
|
||
style={{ width: 200 }}
|
||
options={optionAddAll(taxAgentOption)}
|
||
value={taxAgentId}
|
||
onChange={v => {
|
||
let params = {};
|
||
if (v == "All") {
|
||
params.taxAgentId = "";
|
||
} else {
|
||
params.taxAgentId = v;
|
||
}
|
||
if (monthValue != null && monthValue != "") {
|
||
params.declareMonth = [monthValue];
|
||
}
|
||
getTableDatas(params);
|
||
this.setState({ taxAgentId: v });
|
||
}}
|
||
/>}
|
||
</div>
|
||
</div>
|
||
);
|
||
}
|
||
|
||
onEdit = record => {
|
||
const {
|
||
otherDeductStore: {
|
||
slideVisiable,
|
||
setSlideVisiable,
|
||
getOtherDeductDetailList,
|
||
setCurrentRecord
|
||
}
|
||
} = this.props;
|
||
setSlideVisiable(true);
|
||
setCurrentRecord(record);
|
||
getOtherDeductDetailList(record.id, { taxAgentId: record.taxAgentId });
|
||
};
|
||
|
||
// 增加编辑功能,重写columns绑定事件
|
||
getColumns = columns => {
|
||
let newColumns = "";
|
||
newColumns = columns.map(column => {
|
||
let newColumn = column;
|
||
newColumn.render = (text, record, index) => {
|
||
//前端元素转义
|
||
let valueSpan =
|
||
record[newColumn.dataIndex + "span"] !== undefined
|
||
? record[newColumn.dataIndex + "span"]
|
||
: record[newColumn.dataIndex];
|
||
switch (newColumn.dataIndex) {
|
||
case "username":
|
||
return (
|
||
<a
|
||
onClick={() => {
|
||
this.onEdit(record);
|
||
}}
|
||
dangerouslySetInnerHTML={{ __html: valueSpan }}
|
||
/>
|
||
);
|
||
case "operate":
|
||
return (
|
||
<a
|
||
onClick={() => {
|
||
this.onEdit(record);
|
||
}}>
|
||
查看明细
|
||
</a>
|
||
);
|
||
default:
|
||
return <div dangerouslySetInnerHTML={{ __html: valueSpan }}/>;
|
||
}
|
||
};
|
||
return newColumn;
|
||
});
|
||
return newColumns;
|
||
};
|
||
|
||
handleCancel() {
|
||
const { otherDeductStore } = this.props;
|
||
const { modalVisiable, setModalVisiable, setStep } = otherDeductStore;
|
||
setModalVisiable(false);
|
||
setStep(0);
|
||
}
|
||
|
||
onOperatesClick = (record, index, operate, flag) => {
|
||
switch (operate.index.toString()) {
|
||
case "0": // 查看明细
|
||
this.onEdit(record);
|
||
break;
|
||
}
|
||
};
|
||
|
||
renderFormComponent() {
|
||
const { modalParam } = this.state;
|
||
return (
|
||
<Row>
|
||
<Col span={12}>
|
||
<span
|
||
className="formLabel"
|
||
style={{ lineHeight: "30px", marginRight: "10px" }}>
|
||
税款所属期
|
||
</span>
|
||
<WeaDatePicker
|
||
format="yyyy-MM"
|
||
value={modalParam.declareMonth}
|
||
onChange={value =>
|
||
this.setState({ modalParam: { declareMonth: value } })}
|
||
/>
|
||
</Col>
|
||
</Row>
|
||
);
|
||
}
|
||
|
||
showColumn = () => {
|
||
const { otherDeductStore: { tableStore } } = this.props;
|
||
tableStore.setColSetVisible(true);
|
||
tableStore.tableColSet(true);
|
||
};
|
||
|
||
// 初始化导入参数
|
||
handleInitImport() {
|
||
const {
|
||
otherDeductStore: { setSlideDataSource, setImportResult }
|
||
} = this.props;
|
||
setSlideDataSource([]);
|
||
setImportResult({});
|
||
}
|
||
|
||
onSelectChange = val => {
|
||
this.setState({
|
||
selectedKey: val
|
||
});
|
||
};
|
||
|
||
handleSearch = () => {
|
||
const { otherDeductStore: { getTableDatas } } = this.props;
|
||
const { monthValue, taxAgentId } = this.state;
|
||
let params = {};
|
||
if (monthValue != null && monthValue !== "") {
|
||
params.declareMonth = [monthValue];
|
||
}
|
||
if (taxAgentId != null && taxAgentId !== "" && taxAgentId !== "All") {
|
||
params.taxAgentId = taxAgentId;
|
||
}
|
||
getTableDatas({...params, current: 1});
|
||
};
|
||
|
||
//新功能
|
||
handleCreateData = (payload) => {
|
||
const { editId } = this.state;
|
||
this.setState({ saveLoading: true });
|
||
if (!_.isEmpty(editId)) {
|
||
API.editData({ ...payload, id: editId.id }).then(({ status, errormsg }) => {
|
||
this.setState({ saveLoading: false });
|
||
if (status) {
|
||
message.success("编辑成功");
|
||
this.setState({
|
||
addVisible: false,
|
||
editId: {}
|
||
}, () => {
|
||
const { otherDeductStore: { doSearch, addForm } } = this.props;
|
||
const { monthValue, taxAgentId } = this.state;
|
||
doSearch({
|
||
declareMonth: [monthValue],
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
});
|
||
addForm.resetForm();
|
||
});
|
||
} else {
|
||
message.error(errormsg || "编辑失败");
|
||
}
|
||
});
|
||
} else {
|
||
API.createData(payload).then(({ status, errormsg }) => {
|
||
this.setState({ saveLoading: false });
|
||
if (status) {
|
||
message.success("新增成功");
|
||
this.setState({
|
||
addVisible: false,
|
||
editId: {}
|
||
}, () => {
|
||
const { otherDeductStore: { doSearch, addForm } } = this.props;
|
||
const { monthValue, taxAgentId } = this.state;
|
||
doSearch({
|
||
declareMonth: [monthValue],
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
});
|
||
addForm.resetForm();
|
||
});
|
||
} else {
|
||
message.error(errormsg || "新增失败");
|
||
}
|
||
});
|
||
}
|
||
};
|
||
handleOperate = ({ key }, row) => {
|
||
const { monthValue: declareMonth, taxAgentId } = this.state;
|
||
const { otherDeductStore: { doSearch } } = this.props;
|
||
if (key === "edit") {
|
||
this.setState({
|
||
addVisible: true
|
||
}, () => {
|
||
API.getData({ id: row.id }).then(({ status, data }) => {
|
||
if (status) {
|
||
this.setState({ editId: data });
|
||
}
|
||
});
|
||
});
|
||
} else if (key === "delete") {
|
||
const payload = {
|
||
declareMonth,
|
||
ids: [row.id]
|
||
};
|
||
Modal.confirm({
|
||
title: "信息确认",
|
||
content: `确定删除${row.departmentName}${row.username}(税款所属期:${declareMonth})的其他免税扣除数据吗?若数据已参与核算,已参与核算的数据不会受影响,点击核算将会按当前列表最新数据重新核算。`,
|
||
onOk: () => {
|
||
API.deleteSelectData(payload).then(({ status, errormsg }) => {
|
||
if (status) {
|
||
message.success("删除成功");
|
||
doSearch({
|
||
declareMonth: [declareMonth],
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
});
|
||
} else {
|
||
message.error(errormsg || "删除失败");
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
};
|
||
deleteSelectData = () => {
|
||
const { monthValue: declareMonth, taxAgentId, selectedKey } = this.state;
|
||
const { otherDeductStore: { doSearch } } = this.props;
|
||
if (selectedKey.length === 0) {
|
||
message.warning("未选择条目");
|
||
return;
|
||
}
|
||
const payload = {
|
||
declareMonth,
|
||
ids: selectedKey
|
||
};
|
||
Modal.confirm({
|
||
title: "信息确认",
|
||
content: "确定删除所选数据吗?若数据已参与核算,已参与核算的数据不会受影响,点击核算将会按当前列表最新数据重新核算。",
|
||
onOk: () => {
|
||
API.deleteSelectData(payload).then(({ status, errormsg }) => {
|
||
if (status) {
|
||
message.success("删除成功");
|
||
doSearch({
|
||
declareMonth: [declareMonth],
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
});
|
||
} else {
|
||
message.error(errormsg || "删除失败");
|
||
}
|
||
});
|
||
},
|
||
onCancel: () => {
|
||
}
|
||
});
|
||
|
||
};
|
||
deleteAllData = () => {
|
||
const { monthValue: declareMonth, taxAgentId } = this.state;
|
||
const { otherDeductStore: { doSearch } } = this.props;
|
||
const payload = {
|
||
declareMonth,
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
};
|
||
Modal.confirm({
|
||
title: "信息确认",
|
||
content: `确定清空税款所属期为${declareMonth}的所有其他免税扣除数据吗?若数据已参与核算,已参与核算的数据不会受影响,点击核算将会按当前列表最新数据重新核算。`,
|
||
onOk: () => {
|
||
API.deleteAllData(payload).then(({ status, errormsg }) => {
|
||
if (status) {
|
||
message.success("删除成功");
|
||
doSearch({
|
||
declareMonth: [declareMonth],
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
});
|
||
} else {
|
||
message.error(errormsg || "删除失败");
|
||
}
|
||
});
|
||
}
|
||
});
|
||
};
|
||
|
||
//沿用上月
|
||
extendToLastMonth = () => {
|
||
const { monthValue: declareMonth, taxAgentId } = this.state;
|
||
const { otherDeductStore: { doSearch } } = this.props;
|
||
const payload = {
|
||
declareMonth,
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
};
|
||
this.setState({ lastLoading: true });
|
||
API.extendToLastMonth(payload).then(({ status, data, errormsg }) => {
|
||
this.setState({ lastLoading: false });
|
||
if (status) {
|
||
message.success(data || "操作成功");
|
||
doSearch({
|
||
declareMonth: [declareMonth],
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId
|
||
});
|
||
} else {
|
||
message.error(errormsg || "操作失败");
|
||
}
|
||
}).catch(() => this.setState({ lastLoading: false }));
|
||
};
|
||
handleButtonClick = () => {
|
||
if (!this.handleChangeDebounce) {
|
||
this.handleChangeDebounce = _.debounce(this.handleChange, 500);
|
||
}
|
||
this.handleChangeDebounce();
|
||
};
|
||
|
||
handleChange = e => {
|
||
const { selectedKey } = this.state;
|
||
const url = `${window.location
|
||
.origin}/api/bs/hrmsalary/otherDeduction/export?ids=&declareMonth=${this
|
||
.state.monthValue}&taxAgentId=${this.state.taxAgentId == "All"
|
||
? ""
|
||
: this.state.taxAgentId}`;
|
||
window.open(url, "_self");
|
||
};
|
||
handleExportAllDetailClick = () => {
|
||
if (!this.handleChangeDebounce) {
|
||
const {
|
||
otherDeductStore: { currentRecord }
|
||
} = this.props;
|
||
const url = `${window.location
|
||
.origin}/api/bs/hrmsalary/otherDeduction/exportDetail?otherTaxExemptDeductionId=${currentRecord.id}&ids=&taxAgentId=${currentRecord.taxAgentId}`;
|
||
window.open(url, "_self");
|
||
}
|
||
this.handleChangeDebounce();
|
||
};
|
||
|
||
render() {
|
||
const { otherDeductStore, taxAgentStore } = this.props;
|
||
const {
|
||
loading,
|
||
dataSource,
|
||
columns,
|
||
pageObj,
|
||
hasRight,
|
||
form,
|
||
condition,
|
||
tableStore,
|
||
showSearchAd,
|
||
getTableDatas,
|
||
doSearch,
|
||
setShowSearchAd,
|
||
previewImport,
|
||
importFile,
|
||
addForm
|
||
} = otherDeductStore;
|
||
const { taxAgentOption, showOperateBtn } = taxAgentStore;
|
||
const {
|
||
slideVisiable,
|
||
setSlideVisiable,
|
||
modalVisiable,
|
||
setModalVisiable,
|
||
slideTableStore,
|
||
step,
|
||
setStep,
|
||
slideDataSource,
|
||
importResult,
|
||
setPageObj
|
||
} = otherDeductStore;
|
||
const selectedRowKeys = toJS(tableStore.selectedRowKeys) || [];
|
||
const {
|
||
modalParam,
|
||
monthValue,
|
||
taxAgentId,
|
||
slideSelectedKey,
|
||
addVisible,
|
||
editId,
|
||
saveLoading,
|
||
lastLoading
|
||
} = this.state;
|
||
|
||
const detailSelectedRowKeys = toJS(slideTableStore.selectedRowKeys) || [];
|
||
|
||
const rightMenu = [
|
||
// 右键菜单
|
||
// {
|
||
// key: "BTN_COLUMN",
|
||
// icon: <i className="icon-coms-Custom" />,
|
||
// content: "显示列定制",
|
||
// onClick: this.showColumn,
|
||
// },
|
||
];
|
||
const collectParams = {
|
||
// 收藏功能配置
|
||
favname: "其他免税扣除",
|
||
favouritetype: 1,
|
||
objid: 0,
|
||
link: "wui/index.html#/ns_demo03/index",
|
||
importantlevel: 1
|
||
};
|
||
const adBtn = [
|
||
// 高级搜索内部按钮
|
||
<Button type="primary" onClick={() => doSearch({
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId,
|
||
declareMonth: monthValue && [monthValue]
|
||
})}>
|
||
搜索
|
||
</Button>,
|
||
<Button type="ghost" onClick={() => form.resetForm()}>
|
||
重置
|
||
</Button>,
|
||
<Button type="ghost" onClick={() => setShowSearchAd(false)}>
|
||
取消
|
||
</Button>
|
||
];
|
||
|
||
const handleMenuClick = () => {
|
||
const { selectedKey } = this.state;
|
||
if (_.isEmpty(selectedKey)) {
|
||
message.warning("未选择条目");
|
||
return;
|
||
}
|
||
|
||
const url = `${window.location
|
||
.origin}/api/bs/hrmsalary/otherDeduction/export?ids=${selectedKey.join(
|
||
","
|
||
)}&declareMonth=${this.state.monthValue}&taxAgentId=${this.state
|
||
.taxAgentId == "All"
|
||
? ""
|
||
: this.state.taxAgentId}`;
|
||
window.open(url, "_self");
|
||
// const {
|
||
// otherDeductStore: { exportOtherDeductList },
|
||
// } = this.props;
|
||
// exportOtherDeductList(selectedKey.join(","));
|
||
};
|
||
|
||
const handleBtnImport = () => {
|
||
const { otherDeductStore: { setModalVisiable, setStep } } = this.props;
|
||
setStep(0);
|
||
setModalVisiable(true);
|
||
};
|
||
|
||
const btns = [
|
||
<Button
|
||
type="primary"
|
||
onClick={() => {
|
||
handleBtnImport();
|
||
}}>
|
||
导入
|
||
</Button>,
|
||
<Dropdown.Button
|
||
onClick={this.handleButtonClick}
|
||
overlay={
|
||
<Menu onClick={handleMenuClick}>
|
||
<Menu.Item key="1">导出选中</Menu.Item>
|
||
</Menu>
|
||
}
|
||
type="ghost">
|
||
导出全部
|
||
</Dropdown.Button>,
|
||
<Button
|
||
type="primary"
|
||
onClick={() => {
|
||
this.setState({
|
||
addVisible: true,
|
||
editId: {}
|
||
}, () => addForm.resetForm());
|
||
}}>
|
||
新建
|
||
</Button>,
|
||
<Dropdown.Button
|
||
onClick={this.deleteAllData}
|
||
overlay={
|
||
<Menu onClick={this.deleteSelectData}>
|
||
<Menu.Item key="1">删除所选</Menu.Item>
|
||
</Menu>
|
||
}
|
||
type="ghost">
|
||
一键清空
|
||
</Dropdown.Button>,
|
||
<Button
|
||
type="primary"
|
||
loading={lastLoading}
|
||
onClick={this.extendToLastMonth}>
|
||
沿用上月
|
||
</Button>
|
||
];
|
||
|
||
const handleExportSelectedDetailClick = () => {
|
||
if (this.state.slideSelectedKey.length === 0) {
|
||
message.warning("未选择条目");
|
||
return;
|
||
}
|
||
const {
|
||
otherDeductStore: { currentRecord }
|
||
} = this.props;
|
||
const url = `${window.location
|
||
.origin}/api/bs/hrmsalary/otherDeduction/exportDetail?otherTaxExemptDeductionId=${currentRecord.id}&ids=${this.state.slideSelectedKey.join(",")}&taxAgentId=${currentRecord.taxAgentId}`;
|
||
window.open(url, "_self");
|
||
};
|
||
|
||
const renderBtns = () => {
|
||
return [
|
||
<Dropdown.Button
|
||
onClick={this.handleExportAllDetailClick}
|
||
overlay={
|
||
<Menu onClick={handleExportSelectedDetailClick}>
|
||
<Menu.Item key="1">导出选中</Menu.Item>
|
||
</Menu>
|
||
}
|
||
type="primary">
|
||
导出全部
|
||
</Dropdown.Button>
|
||
];
|
||
};
|
||
|
||
const rowSelection = {
|
||
selectedRowKeys: this.state.selectedKey,
|
||
onChange: this.onSelectChange
|
||
};
|
||
const pagination = {
|
||
total: pageObj.total,
|
||
showTotal: total => `共 ${total} 条`,
|
||
showSizeChanger: true,
|
||
pageSizeOptions: ["10", "20", "50", "100"],
|
||
onShowSizeChange(current, pageSize) {
|
||
setPageObj({ ...pageObj, current, pageSize });
|
||
getTableDatas({
|
||
current,
|
||
pageSize,
|
||
taxAgentIdL: taxAgentId === "All" ? "" : taxAgentId,
|
||
declareMonth: monthValue && [monthValue]
|
||
});
|
||
},
|
||
onChange(current) {
|
||
setPageObj({ ...pageObj, current, pageSize: pageObj.pageSize });
|
||
getTableDatas({
|
||
current,
|
||
pageSize: pageObj.pageSize,
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId,
|
||
declareMonth: monthValue && [monthValue]
|
||
});
|
||
}
|
||
};
|
||
|
||
const newColumns = _.map([...columns], item => {
|
||
if (item.dataIndex === "username") {
|
||
return {
|
||
...item,
|
||
render: (text, record) =>
|
||
<div className="linkWapper">
|
||
<a href="javaScript:void(0);" onClick={() => this.onEdit(record)}>
|
||
{text}
|
||
</a>
|
||
</div>
|
||
};
|
||
} else if (item.dataIndex === "taxAgentName") {
|
||
return {
|
||
...item
|
||
};
|
||
} else if (item.dataIndex === "operate") {
|
||
return {
|
||
...item,
|
||
render: (text, record) =>
|
||
<div className="linkWapper">
|
||
<a href="javaScript:void(0);" onClick={() => this.onEdit(record)}>
|
||
查看明细
|
||
</a>
|
||
{
|
||
showOperateBtn &&
|
||
<Popover
|
||
overlayClassName="moreIconWrapper"
|
||
placement="bottomRight"
|
||
content={<Menu onClick={(e) => this.handleOperate(e, record)}>
|
||
<Menu.Item key="edit">编辑</Menu.Item>
|
||
<Menu.Item key="delete">删除</Menu.Item>
|
||
</Menu>} title="">
|
||
<i className="icon-coms-more"/>
|
||
</Popover>
|
||
}
|
||
</div>
|
||
};
|
||
} else {
|
||
return { ...item };
|
||
}
|
||
});
|
||
if (_.isEmpty(newColumns)) {
|
||
return renderLoading();
|
||
}
|
||
|
||
return (
|
||
<div className="cumDeductWrapper">
|
||
<WeaTop
|
||
title="其他免税扣除" // 文字
|
||
icon={<i className="icon-coms-meeting"/>} // 左侧图标
|
||
iconBgcolor="#F14A2D" // 左侧图标背景色
|
||
showDropIcon={false} // 是否显示下拉按钮
|
||
dropMenuDatas={rightMenu} // 下拉菜单(和页面的右键菜单相同)
|
||
dropMenuProps={{ collectParams }} // 收藏功能: 配置之后显示 收藏、帮助、显示页面地址 这3个功能
|
||
buttons={showOperateBtn ? btns : []}>
|
||
<div className="weaTabWrapper">
|
||
<WeaTab
|
||
searchType={["base", "advanced"]} // base:基础搜索框 advanced:显示高级搜索按钮
|
||
searchsBasePlaceHolder={"请输入姓名"}
|
||
showSearchAd={showSearchAd} // 是否展开高级搜索面板
|
||
setShowSearchAd={bool => setShowSearchAd(bool)} //高级搜索面板受控
|
||
searchsAd={getSearchs(form, toJS(condition), 2)} // 高级搜索内部数据
|
||
buttonsAd={adBtn} // 高级搜索内部按钮
|
||
onSearch={() => this.handleSearch()} // 点搜索按钮时的回调
|
||
searchsAdQuick={this.getSearchsAdQuick()}
|
||
onSearchChange={v => form.updateFields({ username: v })} // 在搜索框中输入的文字改变时的回调: 这里需要同步高级搜索和外部搜索框的值
|
||
searchsBaseValue={form.getFormParams().username} // 外部input搜索值受控: 这里和高级搜索的requestname同步
|
||
/>
|
||
</div>
|
||
<WeaTable
|
||
rowKey="id"
|
||
rowSelection={rowSelection}
|
||
columns={newColumns}
|
||
dataSource={dataSource}
|
||
pagination={pagination}
|
||
loading={loading}
|
||
/>
|
||
</WeaTop>
|
||
{modalVisiable &&
|
||
<ImportModal
|
||
needimportSelected //下载模板需要带上导入所选项
|
||
init={() => {
|
||
this.handleInitImport();
|
||
}}
|
||
templateLink={"/api/bs/hrmsalary/otherDeduction/downloadTemplate"}
|
||
params={modalParam}
|
||
columns={modalColumns}
|
||
step={step}
|
||
setStep={setStep}
|
||
onFinish={() => {
|
||
setModalVisiable(false);
|
||
setStep(0);
|
||
doSearch({
|
||
taxAgentId: taxAgentId === "All" ? "" : taxAgentId,
|
||
declareMonth: monthValue && [monthValue]
|
||
});
|
||
}}
|
||
importResult={importResult}
|
||
slideDataSource={slideDataSource}
|
||
previewImport={params => {
|
||
previewImport(params);
|
||
}}
|
||
importFile={params => {
|
||
importFile(params);
|
||
}}
|
||
renderFormComponent={() => this.renderFormComponent()}
|
||
visiable={modalVisiable}
|
||
onCancel={() => {
|
||
this.handleCancel();
|
||
}}
|
||
/>}
|
||
{(slideVisiable || addVisible) &&
|
||
<WeaSlideModal
|
||
className="slideOuterWrapper"
|
||
visible={slideVisiable || addVisible}
|
||
top={0}
|
||
width={60}
|
||
height={100}
|
||
direction="right"
|
||
measure="%"
|
||
title={
|
||
<SlideModalTitle
|
||
subtitle={addVisible ? (!_.isEmpty(editId) ? "编辑" : "新建") : "其他免税扣除记录"}
|
||
onSave={() => {
|
||
const { baseInfo } = this.addItemRef.state;
|
||
const bool = _.every(_.pick(baseInfo, ["declareMonth", "taxAgentId", "employeeId"]), v => !_.isEmpty(v));
|
||
if (!bool && _.isEmpty(editId)) {
|
||
Modal.warning({
|
||
title: "信息确认",
|
||
content: "必要信息不完整,红色*为必填项!"
|
||
});
|
||
return;
|
||
}
|
||
const payload = {
|
||
..._.pick(baseInfo, ["declareMonth", "taxAgentId", "employeeId", "taxAgentName"]),
|
||
...addForm.getFormParams()
|
||
};
|
||
this.handleCreateData(payload);
|
||
}}
|
||
loading={saveLoading}
|
||
editable={!!addVisible}
|
||
showOperateBtn={showOperateBtn}
|
||
customOperate={(showOperateBtn && !addVisible) ? renderBtns() : []}
|
||
/>
|
||
}
|
||
content={
|
||
addVisible ?
|
||
<AddItems
|
||
ref={(dom) => this.addItemRef = dom}
|
||
taxAgentOption={taxAgentOption}
|
||
form={addForm}
|
||
editId={editId}
|
||
condition={dataCollectCondition}
|
||
/> :
|
||
<EditSlideContent
|
||
slideSelectedKey={slideSelectedKey}
|
||
onChangeSlideSelectKey={val =>
|
||
this.setState({ slideSelectedKey: val })}
|
||
/>
|
||
}
|
||
onClose={() => {
|
||
setSlideVisiable(false);
|
||
this.setState({
|
||
addVisible: false,
|
||
editId: {}
|
||
});
|
||
}}
|
||
showMask={true}
|
||
closeMaskOnClick={() => {
|
||
setSlideVisiable(false);
|
||
this.setState({
|
||
addVisible: false,
|
||
editId: {}
|
||
});
|
||
}}
|
||
/>}
|
||
</div>
|
||
);
|
||
}
|
||
}
|