/* * Author: 黎永顺 * name: 薪资档案-调薪 * Description: * Date: 2023/9/4 */ import React, { Component } from "react"; import { WeaDialog, WeaLocaleProvider, WeaSearchGroup, WeaTableEdit, WeaTools } from "ecCom"; import { Button, message, Spin } from "antd"; import { editSingleSalaryItem, getSalaryItemAdjustBeforeValue, getSalaryItemForm, getSingleSalaryItemInfo, saveSalaryItem } from "../../apis/archive"; import { inject, observer } from "mobx-react"; import { adjCondition } from "./columns"; import { getDomkes, getSearchs } from "../../util"; import moment from "moment"; const { getLabel } = WeaLocaleProvider; const getKey = WeaTools.getKey; const APIFox = { save: saveSalaryItem, edit: editSingleSalaryItem, saveForm: getSalaryItemForm, editForm: getSingleSalaryItemInfo }; @inject("salaryFileStore") @observer class SalaryArchiveEditAdjLogRecordDialog extends Component { constructor(props) { super(props); this.state = { conditions: [], loading: false, saveLoading: false, salaryArchiveItemDetail: {}, canOperator: false }; } componentWillReceiveProps(nextProps, nextContext) { const { id, visible, salaryFileStore: { adjForm, initAdjForm } } = nextProps; if (nextProps.visible !== this.props.visible && visible) { this.getSingleSalaryItemInfo(nextProps); } else { adjForm.resetForm(); initAdjForm(); } } getSingleSalaryItemInfo = (props) => { const { salaryFileStore: { adjForm }, id, salaryArchiveId: salaryArchiveItemId } = props; this.setState({ loading: true }); APIFox[id ? "editForm" : "saveForm"](id ? { id } : { salaryArchiveItemId }) .then(({ status, data }) => { this.setState({ loading: false }); if (status) { const { salaryArchiveItemForm, salaryArchiveItemDetail, canOperator } = data; const { adjustReasonList } = salaryArchiveItemForm; this.setState({ canOperator, salaryArchiveItemDetail, conditions: _.map(adjCondition, item => { return { ...item, title: getLabel(111, "调薪信息"), items: _.map(item.items, o => { if (getKey(o) === "adjustReason") { return { ...o, options: _.map(adjustReasonList, it => ({ key: it.id, showname: it.content })) }; } return { ...o }; }) }; }) }, () => { adjForm.initFormFields(this.state.conditions); _.map(getDomkes(this.state.conditions), domkey => { adjForm.updateFields({ [domkey]: salaryArchiveItemForm[domkey] || "" }); }); }); } }).catch(() => this.setState({ loading: false })); }; getSalaryItemAdjustBeforeValue = (salaryItemId) => { const payload = { salaryArchiveId: this.props.salaryArchiveId, salaryItemId }; getSalaryItemAdjustBeforeValue(payload).then(({ status, data }) => { if (status) { const { salaryArchiveItemDetail } = this.state; const { list } = salaryArchiveItemDetail; this.setState({ salaryArchiveItemDetail: { ...salaryArchiveItemDetail, list: _.map(list, o => { if (o.salaryItem === salaryItemId) { return { ...o, salaryBefore: data }; } return { ...o }; }) } }); } }); }; save = () => { const { salaryFileStore: { adjForm, fetchSingleSalaryItemList, getArchiveForm } } = this.props; const { pass } = this.tableEdit.refs.edit.doRequiredCheck(); adjForm.validateForm().then(f => { if (f.isValid) { if (!pass) return; const { salaryArchiveId, id: salaryArchiveItemId } = this.props; const { salaryArchiveItemDetail, canOperator } = this.state; const { list } = salaryArchiveItemDetail; let payload = { ...adjForm.getFormParams(), salaryArchiveId, effectiveTime: moment(new Date(adjForm.getFormParams().effectiveTime)).format("YYYY-MM-DD"), salaryArchiveItems: _.map(list, o => ({ salaryItemId: o.salaryItem, adjustValue: o.adjustAfter })) }; if (salaryArchiveItemId) { payload = { ...payload, canOperator, salaryArchiveItemId }; } this.setState({ saveLoading: true }); APIFox[salaryArchiveItemId ? "edit" : "save"](payload).then(({ status, errormsg }) => { this.setState({ saveLoading: false }); if (status) { message.success(getLabel(22619, "保存成功!")); this.props.onCancel(); fetchSingleSalaryItemList({ salaryArchiveId }); getArchiveForm(salaryArchiveId); } else { message.error(errormsg); } }).catch(() => this.setState({ saveLoading: false })); } else { f.showErrors(); } }); }; render() { const { salaryFileStore: { adjForm }, id } = this.props; const { loading, saveLoading, salaryArchiveItemDetail, conditions } = this.state; const { salaryItemList, list } = salaryArchiveItemDetail; const adjColumns = [ { title: "薪资项目", dataIndex: "salaryItem", key: "salaryItem", com: [{ options: _.map(salaryItemList, o => ({ key: o.id, showname: o.content })), type: "SELECT", viewAttr: id ? 1 : 3, key: "salaryItem", onChange: (v) => this.getSalaryItemAdjustBeforeValue(v) }], colSpan: 1, width: "40%" }, { title: getLabel(111, "调整前"), dataIndex: "salaryBefore", key: "salaryBefore", com: [{ label: "", type: "INPUT", viewAttr: 1, key: "salaryBefore" }], colSpan: 1, width: "30%" }, { title: getLabel(111, "调整后"), dataIndex: "adjustAfter", key: "adjustAfter", com: [{ label: "", type: "INPUTNUMBER", otherParams: { precision: 3 }, viewAttr: 3, key: "adjustAfter" }], colSpan: 1, width: "30%" } ]; return ( {getLabel(537558, "保存")}]} >
{ !loading ? {getSearchs(adjForm, conditions, 1)} this.tableEdit = dom} deleteConfirm columns={adjColumns} datas={list} showCopy={false} showAdd={!id} showDelete={!id} onChange={o => this.setState({ salaryArchiveItemDetail: { ...salaryArchiveItemDetail, list: o } })} /> :
}
); } } export default SalaryArchiveEditAdjLogRecordDialog;