/* * Author: 黎永顺 * name: 工资单发放-重构页面编辑模板 * Description: * Date: 2023/10/13 */ import React, { Component } from "react"; import { toJS } from "mobx"; import { inject, observer } from "mobx-react"; import { WeaLocaleProvider, WeaSlideModal, WeaSteps } from "ecCom"; import { Button, message, Modal } from "antd"; import PayrollTempBaseSet from "../payrollTempBaseSet"; import PayrollTempNormalSet from "../payrollTempNormalSet"; import PayrollTempReissueSet from "../payrollTempReissueSet"; import { savePayroll, updatePayroll } from "../../../../apis/payroll"; const Step = WeaSteps.Step; const getLabel = WeaLocaleProvider.getLabel; const APIFox = { save: savePayroll, update: updatePayroll }; @inject("payrollStore") @observer class Index extends Component { constructor(props) { super(props); this.state = { current: 0, loading: false }; this.tmpBaseSetRef = null; } componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible && nextProps.visible) { document.querySelector(".salary-payroll-main-page").classList.add("zIndex0-payroll-release"); } else if (nextProps.visible !== this.props.visible && !nextProps.visible) { document.querySelector(".salary-payroll-main-page").classList.remove("zIndex0-payroll-release"); nextProps.payrollStore.setHasBeenModify(false); } } save = async () => { const { payrollStore: { payrollTempForm, payrollTempFeedbackForm, initPayrollTempForm, initPayrollTempFeedbackForm, setTmplDataSource, tmplDataSource, setHasBeenModify } } = this.props; const [tempFormm, fbForm] = await Promise.all([payrollTempForm.validateForm(), payrollTempFeedbackForm.validateForm()]); if (tempFormm.isValid && fbForm.isValid) { const { replenishRule, autoSendStatus, emailStatus, msgStatus, smsStatus, ...extraBs } = payrollTempForm.getFormParams(), { ackFeedbackStatus, feedbackStatus, autoAckDays, ...extraFb } = payrollTempFeedbackForm.getFormParams(), { formData, smsSettingDialog } = this.tmpBaseSetRef.state; const payload = { ...toJS(tmplDataSource), ...extraFb, ...formData, ...extraBs, ackFeedbackStatus: ackFeedbackStatus === "1", feedbackStatus: feedbackStatus === "1", autoSendStatus: autoSendStatus === "1", emailStatus: emailStatus === "1", msgStatus: msgStatus === "1", smsStatus: smsStatus === "1", smsSetting: { content: smsSettingDialog.content }, autoAckDays: Number(autoAckDays), replenishRule: (replenishRule === "0" || !replenishRule) ? "ALL" : replenishRule }; setTmplDataSource(payload); this.setState({ current: this.state.current + 1 }, () => { initPayrollTempForm(); initPayrollTempFeedbackForm(); setHasBeenModify(true); }); } else { tempFormm.showErrors(); fbForm.showErrors(); this.forceUpdate(); } }; normalSave = () => { const { payrollStore: { payrollTempNormalForm, setTmplDataSource, tmplDataSource } } = this.props; payrollTempNormalForm.validateForm().then(f => { if (f.isValid) { const { salaryItemNullStatus, salaryItemZeroStatus, background, ...extra } = payrollTempNormalForm.getFormParams(); const payload = { ...toJS(tmplDataSource), ...extra, salaryItemZeroStatus: salaryItemZeroStatus === "1", salaryItemNullStatus: salaryItemNullStatus === "1" }; setTmplDataSource(payload); this.setState({ current: this.state.current + 1 }); } else { f.showErrors(); this.forceUpdate(); } }); }; savePayroll = () => { const { payrollStore: { tmplDataSource, salaryBillItemNameSetting, setHasBeenModify }, tmplId: id } = this.props; const payload = { ...toJS(tmplDataSource), id, salarySobId: toJS(tmplDataSource).salarySob, salaryBillItemNameSetting: toJS(salaryBillItemNameSetting) }; this.setState({ loading: true }); const API = APIFox[id ? "update" : "save"]; API(payload).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { message.success(getLabel(30700, "操作成功!")); setHasBeenModify(false); this.handleClose("refresh"); } else { message.error(errormsg); } }).catch(() => this.setState({ loading: false })); }; renderTitle = () => { const { tmplId } = this.props, { current, loading } = this.state; const { payrollStore: { payrollTempNormalForm, setTmplDataSource, tmplDataSource } } = this.props; return