/* * Author: 黎永顺 * name: 新增编辑薪资账套 * Description: * Date: 2022/12/8 */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { WeaLocaleProvider, WeaSlideModal, WeaSteps } from "ecCom"; import { Button, message, Modal } from "antd"; import LedgerBaseSetting from "./ledgerBaseSetting"; import LedgerAssociatedPersonnel from "./ledgerAssociatedPersonnel"; import LedgerSalaryAdjustmentRules from "./ledgerSalaryAdjustmentRules"; import LedgerBackCalculatedSalaryItem from "./ledgerBackCalculatedSalaryItem"; import LedgerSalaryItem from "./ledgerSalaryItem"; import LedgerAccountApprRule from "./ledgerAccountApprRule"; import WeaTopTitle from "../../../components/custom-title/weaTopTitle"; import WeaReqTitle from "../../../components/custom-title/weaReqTitle"; import { salaryApprovalSaveForm, saveAdjustmentRule, saveLedgerBasic, saveLedgerItem } from "../../../apis/ledger"; import { sysConfCodeRule } from "../../../apis/ruleconfig"; import "./index.less"; const { getLabel } = WeaLocaleProvider; const Step = WeaSteps.Step; @inject("ledgerStore") @observer class LedgerSlide extends Component { constructor(props) { super(props); this.state = { current: 0, loading: false, baseSettingInfo: {}, adjustRules: [], empFields: [], itemGroups: [], saveSalarySobId: "", salaryApprovalStatus: false }; } async componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible && nextProps.visible) { const { data } = await sysConfCodeRule({ code: "SALARY_APPROVAL_STATUS" }); this.setState({ salaryApprovalStatus: data === "1" }); } } componentWillUnmount() { this.setState({ saveSalarySobId: "" }); } /* * Author: 黎永顺 * Description: 保存基本信息 * Params: * Date: 2022/12/12 */ saveLedgerBasic = () => { const { baseSettingInfo, current } = this.state; const { editId } = this.props; const { description, canEdit, ...extra } = baseSettingInfo; const bool = _.every(Object.keys(extra), key => !!extra[key]); if (!bool || _.isEmpty(baseSettingInfo)) { Modal.warning({ title: "信息确认", content: "必要信息不完整,红色*为必填项!" }); return false; } this.setState({ loading: true }); saveLedgerBasic({ ...extra, description, id: editId, taxAgentIds: extra.taxAgentId.split(",") }) .then(({ status, data, errormsg }) => { this.setState({ loading: false }); if (status) { const { onRefreshList } = this.props; message.success("保存成功"); onRefreshList(); !editId && this.setState({ current: current + 1, saveSalarySobId: data }); } else { message.error(errormsg || "保存失败"); } }).catch(() => this.setState({ loading: false })); }; /* * Author: 黎永顺 * Description: 保存调薪计薪规则 * Params: * Date: 2022/12/12 */ saveLedgerAdjustRule = () => { const { adjustRules, saveSalarySobId, salaryApprovalStatus } = this.state; const payload = { salarySobId: this.props.editId || saveSalarySobId, ruleParams: adjustRules }; this.setState({ loading: true }); saveAdjustmentRule(payload).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { message.success("保存成功"); !salaryApprovalStatus && this.handleClose(); } else { message.success(errormsg || "保存失败"); } }).catch(() => this.setState({ loading: false })); }; /* * Author: 黎永顺 * Description: 薪资项目保存 * Params: * Date: 2022/12/14 */ saveLedgerItem = () => { const { empFields, itemGroups, saveSalarySobId } = this.state; const { editId: salarySobId } = this.props; const payload = { empFields: _.map(empFields, it => { if (!it.salarySobId) delete it.id; return { ...it }; }), itemGroups: _.map(_.filter(itemGroups, it => it.name !== "未分类"), (item, index) => { return { ...item, sortedIndex: index, items: _.map(item.items, it => { delete it.originFormulaContent; delete it.originSqlContent; // if (it.id && it.id.length > 4) delete it.id; return { ...it }; }) }; }), items: _.map(_.find(itemGroups, it => it.name === "未分类").items, child => { // if (child.id && child.id.length > 4) delete child.id; delete child.originFormulaContent; delete child.originSqlContent; return { ...child }; }) || [], salarySobId: salarySobId || saveSalarySobId }; this.setState({ loading: true }); saveLedgerItem(payload).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { message.success("保存成功"); } else { message.error(errormsg || "保存失败"); } }).catch(() => this.setState({ loading: false })); }; handleClose = () => this.setState({ current: 0, baseSettingInfo: {} }, () => this.props.onCancel()); /* * Author: 黎永顺 * Description: 基础信息字段切换 * Params: * Date: 2022/12/9 */ handleChangeSaveParams = (baseSettingInfo) => this.setState({ baseSettingInfo }); /* * Author: 黎永顺 * Description: 薪资项目保存数据 * Params: * Date: 2022/12/14 */ handleSaveSalaryItemParams = (empFields, itemGroups) => this.setState({ empFields, itemGroups }); handleDefaultSave = () => { const { saveSalarySobId } = this.state; const { state: { approvalId } } = this.approRef.wrappedInstance; const { ledgerStore: { AARForm } } = this.props; const { approvalItemGroup, isOpenApproval, ...extra } = AARForm.getFormParams(); const group = _.map(approvalItemGroup, (item, index) => ({ groupName: item.groupName, sorted: index, approvalItems: _.map(item.approvalItems, (o, oi) => ({ salaryItemId: o.salaryItemId, sorted: oi, salaryItemName: o.salaryItemName })) })); if (isOpenApproval === "1" && _.isEmpty(extra.approvalWorkflowUrl)) { AARForm.showError("approvalWorkflowUrl", getLabel(111, "\"审批流程地址\"未填写")); return; } else if (isOpenApproval === "1" && _.isEmpty(group)) { AARForm.showError("approvalItemGroup", getLabel(111, "\"审批薪资项目\"未填写")); return; } const payload = { ...extra, isOpenApproval: isOpenApproval === "1", id: approvalId, salarySobId: this.props.editId || saveSalarySobId, approvalItemGroup: group }; this.setState({ loading: true }); salaryApprovalSaveForm(payload).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { message.success(getLabel(111, "保存成功!")); saveSalarySobId && this.handleClose(); } else { message.error(errormsg); } }); }; render() { const { visible, editId, record } = this.props; const { current, saveSalarySobId, loading, salaryApprovalStatus } = this.state; let tabs = [ { key: 0, title: getLabel(82751, "基础设置"), createBtns: [ ], editBtns: [ ], children: this.setState({ taxableItems: val })} /> }, { key: 1, title: getLabel(543467, "关联人员"), createBtns: [ , ], editBtns: [], children: }, { key: 2, title: getLabel(542362, "薪资项目"), createBtns: [ , , ], editBtns: [ ], children: }, { key: 3, title: getLabel(543468, "回算薪资项目"), createBtns: [ , , ], editBtns: [], children: }, { key: 4, title: getLabel(543469, "调薪计薪规则"), createBtns: [ , , ], editBtns: [ ], children: this.setState({ adjustRules })}/> }, { key: 5, title: getLabel(111, "核算审批规则"), createBtns: [ , ], editBtns: [ ], children: this.approRef = dom} saveSalarySobId={saveSalarySobId}/> } ]; !salaryApprovalStatus && tabs.pop(); return ( current === o.key).createBtns}/> : current === o.key).editBtns : []} tabDatas={tabs} selectedKey={String(current)} onChange={cur => this.setState({ current: parseInt(cur) })}/> } content={
{ !editId && { _.map(tabs, item => { const { key, title } = item; return ; }) } } {_.find(tabs, o => current === o.key).children}
} onClose={this.handleClose} /> ); } } export default LedgerSlide;