/* * Author: 黎永顺 * name: 工资单部分发放和撤回 * Description: * Date: 2022/12/2 */ import React, { Component } from "react"; import { inject, observer } from "mobx-react"; import { WeaBrowser, WeaDialog, WeaFormItem, WeaSearchGroup, WeaSelect } from "ecCom"; import { Button, message, Modal } from "antd"; import { commonEnumList } from "../../../apis/ruleconfig"; import { sendRangeSave } from "../../../apis/payroll"; import "./index.less"; @inject("taxAgentStore") @observer class PayrollPartModal extends Component { constructor(props) { super(props); this.state = { loading: false, targetTypeList: [], personalAddItem: [ { viewAttr: 3, key: "include", label: "对象", targetType: "1", targetTypeIds: "", targetTypeIdsNames: "" }, { viewAttr: 2, key: "exclude", label: "对象中排除", targetType: "1", targetTypeIds: "", targetTypeIdsNames: "" } ] }; } componentDidMount() { const { taxAgentStore } = this.props; const { getTaxAgentSelectListAsAdmin } = taxAgentStore; getTaxAgentSelectListAsAdmin(); } componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible) { nextProps.visible && this.orderRuleEnum(); } } orderRuleEnum = () => { const payload = { enumClass: "com.engine.salary.enums.salarysend.SalarySendRangeTargetTypeEnum" }; commonEnumList(payload).then(({ status, data }) => { if (status) { this.setState({ targetTypeList: _.map(data, item => { return { key: item.value.toString(), showname: item.defaultLabel }; }) }); } }); }; taxAgentRangeSave = () => { const { grantType, salarySendId, onCancel } = this.props; const { personalAddItem } = this.state; let excludeObjParams = [], includeObjParams = []; if ( _.find(personalAddItem, item => item.viewAttr === 3).targetType !== "0" && _.isEmpty(_.find(personalAddItem, item => item.viewAttr === 3).targetTypeIds) ) { Modal.warning({ title: "信息确认", content: "必要信息不完整,红色*为必填项!" }); return; } _.map(personalAddItem, it => { const { key, targetType, targetTypeIds } = it; if (key === "include") { if (targetType === "0") { includeObjParams = [{ targetType, targetId: "" }]; } else { if (targetTypeIds) { includeObjParams = _.map(targetTypeIds.split(","), child => ({ targetType, targetId: child })); } } } else if (key === "exclude") { if (targetType === "0") { excludeObjParams = [{ targetType, targetId: "" }]; } else { if (targetTypeIds) { excludeObjParams = _.map(targetTypeIds.split(","), child => ({ targetType, targetId: child })); } } } }); const payload = { grantType, salarySendId, excludeObjParams, includeObjParams }; this.setState({ loading: true }); sendRangeSave(payload).then(({ status, errormsg }) => { this.setState({ loading: false }); if (status) { message.success("保存成功"); this.handleReset(); onCancel(); } else { message.error(errormsg || "保存失败"); } }).catch(() => this.setState({ loading: false })); }; handleChange = (type, value) => { const { personalAddItem } = this.state; this.setState({ personalAddItem: _.map(personalAddItem, it => { if (it.key === type) { return { ...it, targetType: value, targetTypeIds: "" }; } return { ...it }; }) }); }; renderBrowser = (item) => { const { personalAddItem } = this.state; const { taxAgentStore } = this.props; const { targetType, targetTypeIds, targetTypeIdsNames, key, viewAttr } = item; let browserType = {}; if (targetType === "5") { return { this.setState({ personalAddItem: _.map(personalAddItem, it => { if (it.key === key) { return { ...it, targetTypeIds, targetTypeIdsNames }; } return { ...it }; }) }); }} />; } else if (targetType === "0") { return null; } else { switch (targetType) { case "1": browserType = { ...browserType, type: 17, title: "人员选择" }; break; case "2": browserType = { ...browserType, type: 57, title: "部门选择" }; break; case "3": browserType = { ...browserType, type: 164, title: "分部选择" }; break; case "4": browserType = { ...browserType, type: 278, title: "岗位选择" }; break; default: break; } return { this.setState({ personalAddItem: _.map(personalAddItem, it => { if (it.key === key) { return { ...it, targetTypeIds, targetTypeIdsNames }; } return { ...it }; }) }); }} />; } }; handleReset = () => { this.setState({ personalAddItem: [ { viewAttr: 3, key: "include", label: "对象", targetType: "1", targetTypeIds: "", targetTypeIdsNames: "" }, { viewAttr: 2, key: "exclude", label: "对象中排除", targetType: "1", targetTypeIds: "", targetTypeIdsNames: "" } ] }); }; render() { const { onCancel, visible } = this.props; const { targetTypeList, personalAddItem, loading } = this.state; const buttons = [ , ]; return ( { this.handleReset(); onCancel(); }} > { _.map(personalAddItem, it => { const { targetType, key, label } = it; return
this.handleChange(key, v)} /> {this.renderBrowser(it)}
; }) }
); } } export default PayrollPartModal;