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

307 lines
9.7 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 { Button, message } from "antd";
import { WeaButtonIcon, WeaFormItem, WeaInput, WeaSearchGroup, WeaTab, WeaTable } from "ecCom";
import AddTaxAgentModal from "./addTaxAgentModal";
import ImportModal from "../../components/importModal";
import { taxAgentRangeImportData, taxAgentRangePreview } from "../../apis/taxAgent";
import { sysinfo } from "../../apis/ruleconfig";
import { importEmployColumns } from "./columns";
import ExternalPersonModal from "../../components/externalPersonModal";
export default class SlideTaxagentUser extends React.Component {
constructor(props) {
super(props);
this.state = {
showSearchAd: false,
externalPersonModalVisible: false, //外部人员关联弹框
addTaxagentModalVisible: false,
scopeRecord: {},
includeType: "1",
selectedRowKeys: [],
searchValue: "",
targetWorkcode: "",
previewDataSource: [],
importParams: {
visible: false,
step: 0,
importResult: {}
},
extEmpsWitch: "1" //非系统人员开关, 1 开启, 0关闭
};
}
componentDidMount() {
this.getSysinfo();
}
/*
* Author: 黎永顺
* Description: 非系统人员开关查询
* Params:
* Date: 2023/7/14
*/
getSysinfo = () => {
sysinfo().then(({ status, data }) => {
if (status) this.setState({ extEmpsWitch: data.extEmpsWitch });
});
};
onSelectChange = selectedRowKeys => {
this.setState({ selectedRowKeys });
};
handleTabDelete = () => {
const { onDeleteTaxAgent } = this.props;
const { includeType, selectedRowKeys } = this.state;
if (selectedRowKeys.length === 0) {
message.warning("未选择条目");
return;
}
onDeleteTaxAgent({ ids: this.state.selectedRowKeys, tab: includeType });
};
handleSearch = () => {
const { includeType, searchValue, targetWorkcode } = this.state;
const { onTaxAngetSearch } = this.props;
onTaxAngetSearch({
tab: includeType,
targetName: searchValue,
targetWorkcode
});
};
closeModal = () => {
this.setState({
addTaxagentModalVisible: false,
externalPersonModalVisible: false,
scopeRecord: {}
}, () => {
this.addTaxRef && this.addTaxRef.handleReset();
});
};
handleInitModal = () => {
// 清空导入弹框列表数据
this.setState({
previewDataSource: [],
importParams: {
...this.state.importParams,
importResult: {}
}
});
};
// 导入档案
handleImportFile = (params) => {
const { taxAgentId } = this.props;
taxAgentRangeImportData({ ...params, taxAgentId }).then(({ status, data }) => {
if (status) {
this.setState({
importParams: {
...this.state.importParams,
importResult: data
}
});
}
});
};
salaryArchivePreview = (params) => {
taxAgentRangePreview(params).then(({ status, data }) => {
if (status) {
const { preview } = data;
this.setState({
previewDataSource: preview
});
}
});
};
getSearchs = () => {
return <WeaSearchGroup center needTigger showGroup title="其他条件">
<WeaFormItem label="工号" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
<WeaInput
value={this.state.targetWorkcode}
onChange={v => this.setState({ targetWorkcode: v })}
/>
</WeaFormItem>
</WeaSearchGroup>;
};
render() {
const {
includeType,
selectedRowKeys,
searchValue,
addTaxagentModalVisible,
externalPersonModalVisible,
importParams,
previewDataSource,
showSearchAd, extEmpsWitch,
scopeRecord
} = this.state;
const {
submitLoading,
queryLoading,
dataSource,
columns: taxAgentColumns,
pageObj,
setPageObj,
employeeStatus,
targetTypeList,
onTaxAgentSave,
hideIconInTax,
showSalaryItemBtn,
onTaxAngetSearch,
taxAgentId,
onChangeTab
} = this.props;
const rowSelection = {
selectedRowKeys,
onChange: this.onSelectChange
};
const pagination = {
...pageObj,
total: pageObj.total,
showTotal: total => `${total}`,
pageSizeOptions: ["10", "20", "50", "100"],
showQuickJumper: true,
showSizeChanger: true,
onShowSizeChange: (current, pageSize) => {
setPageObj &&
setPageObj({
current,
pageSize,
tab: includeType,
targetName: searchValue
});
},
onChange: current => {
setPageObj &&
setPageObj({
current,
tab: includeType,
targetName: searchValue
});
}
};
let btns = [
<Button type="primary" size="small"
onClick={() => {
this.setState({ importParams: { ...importParams, visible: true, step: 0 } });
}}
><span className="icon-coms-leading-in" title="导入"></span></Button>,
<WeaButtonIcon buttonType="del" type="primary" disabled={_.isEmpty(selectedRowKeys)}
onClick={this.handleTabDelete}/>,
<WeaButtonIcon
buttonType="add" type="primary"
onClick={() => {
const key = includeType === "2" ? "externalPersonModalVisible" : "addTaxagentModalVisible";
this.setState({ [key]: true });
}}
/>
];
(includeType === "0" || includeType === "2") && btns.shift();
return (
<div className="slideRefereUser">
<WeaTab
datas={
(extEmpsWitch === "0" || !extEmpsWitch) ?
[
{ title: "人员范围", viewcondition: "1" },
{ title: "从范围中排除", viewcondition: "0" }
] :
[
{ title: "人员范围", viewcondition: "1" },
{ title: "从范围中排除", viewcondition: "0" },
{ title: "非系统人员范围", viewcondition: "2" }
]
}
keyParam="viewcondition" selectedKey={includeType}
searchType={["base"]} advanceHeight={200}
showSearchAd={showSearchAd} searchsAd={this.getSearchs()}
setShowSearchAd={showSearchAd => {
this.setState({ showSearchAd });
}}
buttons={(hideIconInTax || showSalaryItemBtn) ? btns : []}
onAdReset={() => this.setState({ targetWorkcode: "" })}
onAdSearch={this.handleSearch}
onSearch={this.handleSearch}
onSearchChange={searchValue => this.setState({ searchValue })}
onChange={v => this.setState({ includeType: v }, () => onChangeTab && onChangeTab(this.state.includeType))}
/>
<div style={{ maxHeight: "500px", scrollY: "scroll" }}>
<WeaTable rowKey="id" loading={queryLoading} rowSelection={rowSelection} dataSource={dataSource}
pagination={pagination}
columns={_.map(taxAgentColumns, o => {
return {
...o, render: (text, record) => {
if (o.dataIndex === "targetName") {
return <a href="javascript:void(0);" onClick={() => {
const key = includeType === "2" ? "externalPersonModalVisible" : "addTaxagentModalVisible";
this.setState({ [key]: true, scopeRecord: record });
}}>{text}</a>;
}
return <span>{text}</span>;
}
};
})}/>
</div>
<ExternalPersonModal
visible={externalPersonModalVisible}
loading={submitLoading}
onCancel={() => this.setState({ externalPersonModalVisible: false, scopeRecord: {} })}
onExternalPersonSave={val => onTaxAgentSave({ ...val, includeType: includeType })}
/>
<AddTaxAgentModal
ref={(ref) => this.addTaxRef = ref}
scopeRecord={scopeRecord}
loading={submitLoading}
employeeStatus={employeeStatus}
targetTypeList={targetTypeList}
onTaxAgentSave={val =>
onTaxAgentSave &&
onTaxAgentSave({ ...val, includeType: includeType })}
visible={addTaxagentModalVisible}
onCancel={() => {
this.setState({ addTaxagentModalVisible: false, scopeRecord: {} });
}}
/>
{importParams.visible && (
<ImportModal
init={() => {
this.handleInitModal();
}}
isInit={false}
columns={importEmployColumns}
slideDataSource={previewDataSource}
step={importParams.step}
setStep={(step) => {
this.setState({ importParams: { ...this.state.importParams, step } });
}}
importResult={importParams.importResult}
onFinish={() => {
this.setState({
importParams: {
...this.state.importParams,
visible: false
}
}, () => {
onTaxAngetSearch({
tab: includeType,
targetName: searchValue
});
});
}}
previewImport={(params) => this.salaryArchivePreview(params)}
importFile={(params) => this.handleImportFile(params)}
templateLink={`/api/bs/hrmsalary/taxAgent/range/downloadTemplate?taxAgentId=${taxAgentId}`}
visiable={importParams.visible}
onCancel={() => {
this.setState({ importParams: { ...this.state.importParams, visible: false } });
}}
/>
)}
</div>
);
}
}