/*
* Author: 黎永顺
* name: 薪资账套关联人员
* Description:
* Date: 2022/12/12
*/
import React, { Component } from "react";
import { inject, observer } from "mobx-react";
import { Button, message, Modal } from "antd";
import { WeaButtonIcon, WeaInputSearch, WeaTab } from "ecCom";
import PersonalScopeTable from "../../../components/PersonalScopeTable";
import PersonalScopeModal from "../../../components/PersonalScopeModal";
import {
deleteLedgerPersonExtRange,
deleteLedgerPersonRange,
getLedgerPersonRangeExclude,
getLedgerPersonRangeExtList,
getLedgerPersonRangeInclude,
salarysobRangeImportData,
salarysobRangePreview,
saveLedgerPersonExtRange,
saveLedgerPersonRange
} from "../../../apis/ledger";
import ImportModal from "../../../components/importModal";
import { importEmployColumns } from "../../taxAgent/columns";
import ExternalPersonModal from "../../../components/externalPersonModal";
import { sysinfo } from "../../../apis/ruleconfig";
const APIFox = {
listInclude: getLedgerPersonRangeInclude,
listExclude: getLedgerPersonRangeExclude,
externalList: getLedgerPersonRangeExtList
};
const APISaveFox = {
save: saveLedgerPersonRange
};
@inject("taxAgentStore")
@observer
class LedgerAssociatedPersonnel extends Component {
constructor(props) {
super(props);
this.state = {
searchValue: "",
selectedKey: "listInclude",
rowKeys: [],
previewDataSource: [],
externalPersonModalVisible: false,
loading: false,
importParams: {
visible: false,
step: 0,
importResult: {}
},
personalAddModal: {
visible: false,
title: "关联人员",
includeType: ""
},
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 });
});
};
/*
* Author: 黎永顺
* Description:外部人员保存
* Params:
* Date: 2023/3/14
*/
handleSaveExternalPerson = (val) => {
const { editId: salarySobId, saveSalarySobId } = this.props;
saveLedgerPersonExtRange({ ...val, salarySobId: salarySobId || saveSalarySobId }).then(({ status, errormsg }) => {
this.setState({ loading: false });
if (status) {
message.success("保存成功");
this.setState({ externalPersonModalVisible: false });
this.personalScopeTableRef.getPersonalScopeList();
} else {
message.error(errormsg || "保存失败");
}
}).catch(() => this.setState({ loading: true }));
};
/*
* Author: 黎永顺
* Description: 删除人员范围
* Params:
* Date: 2022/11/30
*/
taxAgentRangeDelete = () => {
const { selectedKey } = this.state;
Modal.confirm({
title: "信息确认",
content: "确认要删除吗?",
onOk: () => {
return new Promise((resolve, reject) => {
return selectedKey === "externalList" ? this.deleteLedgerPersonExtRange(resolve, reject) : this.deleteLedgerPersonRange(resolve, reject);
}).catch(() => console.log("出错!"));
}
});
};
deleteLedgerPersonExtRange = (resolve, reject) => {
message.destroy();
message.loading("正在删除中...", 0);
deleteLedgerPersonExtRange(this.state.rowKeys).then(({ status, errormsg }) => {
message.destroy();
resolve();
if (status) {
message.success("删除成功");
this.setState({ rowKeys: [] }, () => {
this.personalScopeTableRef.clearRowkeys();
});
} else {
message.error(errormsg || "删除失败");
}
}).catch(() => {
message.destroy();
reject();
});
};
deleteLedgerPersonRange = (resolve, reject) => {
message.destroy();
message.loading("正在删除中...", 0);
deleteLedgerPersonRange(this.state.rowKeys).then(({ status, errormsg }) => {
message.destroy();
resolve();
if (status) {
message.success("删除成功");
this.setState({ rowKeys: [] }, () => {
this.personalScopeTableRef.clearRowkeys();
});
} else {
message.error(errormsg || "删除失败");
}
}).catch(() => {
message.destroy();
reject();
});
};
/*
* Author: 黎永顺
* Description:新增人员范围
* Params:
* Date: 2022/11/30
*/
handleAddPersonal = () => {
const { personalAddModal, selectedKey } = this.state;
if (selectedKey === "externalList") {
this.setState({ externalPersonModalVisible: true });
} else {
this.setState({
personalAddModal: {
...personalAddModal,
visible: true,
includeType: selectedKey === "listInclude" ? 1 : 0
}
});
}
};
/*
* Author: 黎永顺
* Description:清空导入弹框列表数据
* Params:
* Date: 2023/1/9
*/
handleInitModal = () => {
this.setState({
previewDataSource: [],
importParams: {
...this.state.importParams,
importResult: {}
}
});
};
handleImportFile = (params) => {
const { editId: salarySobId } = this.props;
salarysobRangeImportData({ ...params, salarySobId }).then(({ status, data }) => {
if (status) {
this.setState({
importParams: {
...this.state.importParams,
importResult: data
}
});
}
});
};
salarysobRangePreview = (params) => {
salarysobRangePreview(params).then(({ status, data }) => {
if (status) {
const { preview } = data;
this.setState({
previewDataSource: preview
});
}
});
};
render() {
const {
selectedKey,
searchValue,
rowKeys,
personalAddModal,
importParams,
previewDataSource,
externalPersonModalVisible,
loading, extEmpsWitch
} = this.state;
const { taxAgentStore: { showOperateBtn }, editId, saveSalarySobId } = this.props;
const topTab = [
{
title: "关联人员范围",
viewcondition: "listInclude"
},
{
title: "从范围中排除",
viewcondition: "listExclude"
},
{
title: "非系统人员范围",
viewcondition: "externalList"
}
];
const btns = showOperateBtn ? [
,
,
,
this.setState({ searchValue })}
placeholder="请输入对象"
onSearch={() => this.personalScopeTableRef.getPersonalScopeList()}
/>
] : [ this.setState({ searchValue })}
placeholder="请输入对象"
onSearch={() => this.personalScopeTableRef.getPersonalScopeList()}
/>];
return (
this.setState({ selectedKey })}
/>
this.personalScopeTableRef = dom}
searchKeyVal={{ key: "salarySobId", value: editId || saveSalarySobId }}
APIFox={APIFox}
tabActive={selectedKey}
searchValue={searchValue}
onChangeSelectKey={rowKeys => this.setState({ rowKeys })}
/>
{/*关联人员范围导入*/}
{importParams.visible && (
{
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
}
}, () => this.personalScopeTableRef.getPersonalScopeList());
}}
previewImport={(params) => this.salarysobRangePreview(params)}
importFile={(params) => this.handleImportFile(params)}
templateLink={`/api/bs/hrmsalary/salarysob/range/downloadTemplate?salarySobId=${editId}`}
visiable={importParams.visible}
onCancel={() => {
this.setState({ importParams: { ...this.state.importParams, visible: false } });
}}
/>
)}
{/*非系统人员添加*/}
this.setState({ externalPersonModalVisible: false })}
onExternalPersonSave={this.handleSaveExternalPerson}
/>
{/*新增人员范围*/}
this.personalScopeTableRef.getPersonalScopeList()}
onCancel={() =>
this.setState({
personalAddModal: {
...personalAddModal,
visible: false,
includeType: ""
}
})
}
/>
);
}
}
export default LedgerAssociatedPersonnel;