/* * Author: 黎永顺 * name: 薪资档案页面-重构 * Description: * Date: 2024/1/8 */ import React, { Component } from "react"; import { WeaLoadingGlobal, WeaLocaleProvider, WeaReqTop, WeaTab } from "ecCom"; import { message, Modal } from "antd"; import { inject, observer } from "mobx-react"; import { renderDropMenuDatas, renderReqBtns, tabList } from "./config"; import SalaryFileAdvanceSearchPannel from "./components/salaryFileAdvanceSearchPannel"; import SalaryFileImportDialog from "./components/salaryFileImportDialog"; import SalaryFileList from "./components/salaryFileList"; import * as API from "../../apis/payrollFiles"; import { sysinfo } from "../../apis/ruleconfig"; import { convertToUrlString } from "../../util/url"; import cs from "classnames"; import "./index.less"; const getLabel = WeaLocaleProvider.getLabel; @inject("payrollFilesStore", "taxAgentStore") @observer class SalaryFiles extends Component { constructor(props) { super(props); this.state = { selectedKey: "pending", showSearchAd: false, isQuery: false, showDelSalaryFileBtn: false, topTabCount: { PENDING: 0, FIXED: 0, SUSPEND: 0, STOP: 0, EXT: 0 }, showExtEmpsWitch: false, salaryFileImpDialog: { visible: false, title: getLabel(24023, "数据导入"), importType: "", isExtEmp: false }, salaryImportTypes: [] }; this.salaryFileListRef = null; } async componentDidMount() { // salaryArchiveDelete, //待定薪、停薪员工 是否允许删除薪资档案 0: 否, 1: 是, // extEmpsWitch //非系统人员开关, 1: 开启, 0:关闭 const [{ data: salaryFileDelFlag }, { data: { extEmpsWitch } }, { data: salaryImportTypes }] = await Promise.all([API.salaryArchiveDelete(), sysinfo(), API.getImportTypes()]); this.setState({ showDelSalaryFileBtn: salaryFileDelFlag === "1", showExtEmpsWitch: extEmpsWitch === "1", salaryImportTypes: _.filter(salaryImportTypes, it => it.id !== "taxAgentAdjust") }); } handleOpenAdvanceSearch = () => this.setState({ showSearchAd: true }); handleAdvanceSearch = () => this.setState({ isQuery: !this.state.isQuery }); onAdSearch = () => this.setState({ showSearchAd: false, isQuery: !this.state.isQuery }); onDropMenuClick = (key) => { const { state, handleSalaryOpts } = this.salaryFileListRef.wrappedInstance || {}; switch (key) { case "custom_cols": const { payrollFilesStore: { tableStore } } = this.props; tableStore.setColSetVisible(true); tableStore.tableColSet(true); break; case "FULL-SALARY-SUSPENSION": this.allGotoStop(); break; case "ADD-TO-SALARYPAYMENT": case "DEL-PENDITNG-TO-DO": case "SALARY-SUSPENSION": case "DEL-SUSPEND-TO-DO": const { selectedRowKeys = [] } = state; if (_.isEmpty(selectedRowKeys)) { message.warning(getLabel(543303, "请选择表格数据!")); return; } handleSalaryOpts && handleSalaryOpts(_.camelCase(key), selectedRowKeys); break; case "exportAll": case "exportSelected": this.handleExport(key); break; default: break; } }; queryInsuranceTabTotal = (active, total) => { API.queryTabTotal().then(({ status, data }) => { if (status) { const key = _.find(tabList, o => o.viewcondition === active).groupid; this.setState({ topTabCount: { ...this.state.topTabCount, ...data, [key]: total } }); } }); }; handleReqBtnsCLick = (type, importType) => { const { state, handleSalaryOpts } = this.salaryFileListRef.wrappedInstance || {}; switch (type) { case "OPEN": this.handleOpenAdvanceSearch(); break; case "SEARCH": this.handleAdvanceSearch(); break; case "IMPORT": this.setState({ salaryFileImpDialog: { ...this.state.salaryFileImpDialog, visible: true, importType: importType || _.upperCase(this.state.selectedKey), isExtEmp: this.state.selectedKey === "ext" } }); break; case "ALL-GO-TO-FIXED": this.allGotoFixed(); break; case "CANCEL-SALARY-SUSPENSION": const { selectedRowKeys = [] } = state; if (_.isEmpty(selectedRowKeys)) { message.warning(getLabel(543303, "请选择表格数据!")); return; } handleSalaryOpts && handleSalaryOpts(_.camelCase(type), selectedRowKeys); break; default: break; } }; /* * Author: 黎永顺 * Description: 全部设为发薪员工 * Params: * Date: 2024/1/9 */ allGotoFixed = () => { const { state } = this.salaryFileListRef.wrappedInstance || {}; const { pageInfo } = state; if (pageInfo && pageInfo.total === 0) { message.warning(getLabel(543300, "您没有需要处理的待定薪人员!")); return; } Modal.warning({ title: getLabel(131329, "信息确认"), content: `${getLabel(543301, "确定要将所有待定薪人员")}(${getLabel(18609, "共")}${pageInfo.total}${getLabel(30690, "条数据")})${getLabel(543302, "设为发薪人员吗")}?`, onOk: () => { WeaLoadingGlobal.start(); API.allGotoFixed({}).then(({ status, data, errormsg }) => { WeaLoadingGlobal.destroy(); if (status) { const { msg } = data; message.info(msg || getLabel(30700, "操作成功!")); this.handleAdvanceSearch(); } else { message.error(errormsg || getLabel(30651, "操作失败!")); } }); } }); }; /* * Author: 黎永顺 * Description: 全部停薪 * Params: * Date: 2024/1/9 */ allGotoStop = () => { const { state } = this.salaryFileListRef.wrappedInstance || {}; const { pageInfo } = state; if (pageInfo && pageInfo.total === 0) { message.warning(getLabel(543325, "您没有需要处理的待停薪人员!")); return; } Modal.warning({ title: getLabel(131329, "信息确认"), content: `${getLabel(543723, "确定要将所有待停薪人员")}(${getLabel(18609, "共")}${pageInfo.total}${getLabel(30690, "条数据")})${getLabel(543327, "设为停薪人员吗")}?`, onOk: () => { WeaLoadingGlobal.start(); API.allGotoStop({}).then(({ status, data, errormsg }) => { WeaLoadingGlobal.destroy(); if (status) { const { msg } = data; message.info(msg || getLabel(30700, "操作成功!")); this.handleAdvanceSearch(); } else { message.error(errormsg || getLabel(30651, "操作失败!")); } }); } }); }; /* * Author: 黎永顺 * Description: 导出薪资档案文件 * Params: * Date: 2024/1/9 */ handleExport = (type) => { const { payrollFilesStore: { salaryFileQueryForm } } = this.props; const { selectedKey } = this.state; let url = `${window.location.origin}/api/bs/hrmsalary/salaryArchive/exportList`; let payload = {}, runStatusList = _.upperCase(selectedKey); const { state } = this.salaryFileListRef.wrappedInstance || {}; const { selectedRowKeys = [] } = state; switch (selectedKey) { case "pending": case "suspend": runStatusList = _.upperCase(selectedKey); break; case "fixed": runStatusList = "FIXED,SUSPEND"; break; case "stop": runStatusList = "STOP_FROM_PENDING,STOP_FROM_SUSPEND"; break; default: break; } if (type === "exportAll") { payload = { ids: "", runStatusList, ...salaryFileQueryForm.getFormParams() }; } else { if (selectedRowKeys.length === 0) { message.warning(getLabel(543345, "请选择需要导出的数据!")); return; } payload = { ids: selectedRowKeys.join(",") }; } window.open(`${url}?${convertToUrlString(payload)}`, "_blank"); }; render() { const { selectedKey, topTabCount, showSearchAd, isQuery, showDelSalaryFileBtn, showExtEmpsWitch, salaryFileImpDialog, salaryImportTypes } = this.state; const { taxAgentStore: { showOperateBtn } } = this.props; return (
} iconBgcolor="#F14A2D" showDropIcon dropMenuDatas={renderDropMenuDatas(selectedKey, showOperateBtn)} onDropMenuClick={this.onDropMenuClick} buttons={renderReqBtns(selectedKey, salaryImportTypes, this.handleReqBtnsCLick, showOperateBtn)} replaceTab={ this.setState({ selectedKey: key })} /> } >
this.setState({ showSearchAd: false })} onAdSearch={this.onAdSearch} />
{/*列表*/} this.salaryFileListRef = dom} selectedKey={selectedKey} showOperateBtn={showOperateBtn} showDelSalaryFileBtn={showDelSalaryFileBtn} onChangeTopTabCount={this.queryInsuranceTabTotal} /> {/* 导入*/} { this.setState({ isQuery: isFresh ? !isQuery : isQuery, salaryFileImpDialog: { ...salaryFileImpDialog, visible: false, importType: "", isExtEmp: false } }); }}/>
); } } export default SalaryFiles;