salary-management-front/pc4mobx/hrmSalary/pages/payrollRelease/index.js

139 lines
5.0 KiB
JavaScript

/*
* Author: 黎永顺
* name: 工资单发放-重构页面
* Description:
* Date: 2023/10/12
*/
import React, { Component } from "react";
import { inject, observer } from "mobx-react";
import { WeaLocaleProvider, WeaReqTop } from "ecCom";
import GrantQuery from "./components/reqQuery/grantQuery";
import TemplateQuery from "./components/reqQuery/templateQuery";
import GrantTableList from "./components/grantTableList";
import PayrollTemplateTableList from "./components/payrollTemplateTableList";
import TemplateBaseSettings from "../payroll/templateBaseSettings";
import { Button } from "antd";
import moment from "moment";
import "./index.less";
const getLabel = WeaLocaleProvider.getLabel;
@inject("taxAgentStore")
@observer
class Index extends Component {
constructor(props) {
super(props);
this.state = {
selectedKey: "grant", isRefresh: false, baseSetSaveLoading: false,
queryParams: {
salarySobId: "", name: "",
dateRange: [
moment(new Date()).startOf("year").format("YYYY-MM"),
moment(new Date()).endOf("year").format("YYYY-MM")
]
}
};
this.templateRef = null;
this.baseSetRef = null;
}
renderReqBtns = () => {
const { taxAgentStore: { showOperateBtn } } = this.props;
const { selectedKey, isRefresh, queryParams } = this.state;
let reqBtns = [];
switch (selectedKey) {
case "grant":
reqBtns = [
<GrantQuery queryParams={queryParams}
onChange={v => this.setState({
isRefresh: !isRefresh,
queryParams: { ...queryParams, ...v }
})}/>
];
break;
case "template":
const loading = this.templateRef ? this.templateRef.wrappedInstance.state.delLoading : false;
const delDisabled = !this.templateRef || _.isEmpty(this.templateRef.wrappedInstance.state.selectedRowKeys);
const btns = [
<Button type="primary" onClick={() => {
this.templateRef.wrappedInstance.handleOpts({ key: "edit" }, {});
}}>{getLabel(365, "新建")}</Button>,
<Button type="ghost" loading={loading} disabled={delDisabled} onClick={() => {
this.templateRef.wrappedInstance.handleOpts({ key: "del" }, {});
}}>{getLabel(32136, "批量删除")}</Button>
];
const queryBtns = [
<TemplateQuery queryParams={queryParams} onSearch={() => this.setState({ isRefresh: !isRefresh })}
onChange={v => this.setState({
isRefresh: _.keys(v)[0] === "name" ? isRefresh : !isRefresh,
queryParams: { ...queryParams, ...v }
})}/>
];
reqBtns = showOperateBtn ? [...btns, ...queryBtns] : [...queryBtns];
break;
case "watermark":
const { baseSetSaveLoading } = this.state;
reqBtns = [
<Button type="primary" loading={baseSetSaveLoading}
onClick={() => this.baseSetRef.salaryBillBaseSetSave()}>{getLabel(537558, "保存")}</Button>
];
break;
default:
break;
}
return reqBtns;
};
renderContent = () => {
const { selectedKey, queryParams, isRefresh } = this.state;
let dom = null;
switch (selectedKey) {
case "grant":
dom = <GrantTableList queryParams={queryParams} isRefresh={isRefresh}
onUpdateTemp={(id) => this.setState({ selectedKey: "template" }, () => {
this.templateRef.wrappedInstance.handleOpts({ key: "edit" }, { id });
})}
/>;
break;
case "template":
dom = <PayrollTemplateTableList ref={dom => this.templateRef = dom} queryParams={queryParams}
isRefresh={isRefresh} forceUpdate={() => this.forceUpdate()}/>;
break;
case "watermark":
dom = <TemplateBaseSettings
ref={dom => this.baseSetRef = dom}
onChangeLoading={loading => this.setState({ baseSetSaveLoading: loading })}
/>;
break;
default:
break;
}
return dom;
};
render() {
const { selectedKey, queryParams } = this.state;
const tabs = [
{ key: "grant", title: getLabel(538012, "工资单发放") },
{ key: "template", title: getLabel(543575, "工资单模板设置") },
{ key: "watermark", title: getLabel(545285, "工资单基础设置") }
];
return (
<div className="salary-payroll-main-page">
<WeaReqTop
title={getLabel(538012, "工资单发放")} tabDatas={tabs} selectedKey={selectedKey}
buttonSpace={10} icon={<i className="icon-coms-fa"/>} iconBgcolor="#F14A2D"
onChange={key => this.setState({
selectedKey: key,
queryParams: { ...queryParams, name: "", salarySobId: "" }
})}
buttons={this.renderReqBtns()}
>
<div className="salary-payroll-content">{this.renderContent()}</div>
</WeaReqTop>
</div>
);
}
}
export default Index;