316 lines
12 KiB
JavaScript
316 lines
12 KiB
JavaScript
/*
|
|
* Author: 黎永顺
|
|
* name: 报送信息-编辑、新增弹框
|
|
* Description:
|
|
* Date: 2023/8/14
|
|
*/
|
|
import React, { Component } from "react";
|
|
import { WeaLocaleProvider, WeaSlideModal, WeaTools } from "ecCom";
|
|
import { Button, Col, message, Row } from "antd";
|
|
import { inject, observer } from "mobx-react";
|
|
import { declareConditions } from "../constants";
|
|
import { getSearchs } from "../../../util";
|
|
import { getQueryString } from "../../../util/url";
|
|
import { employeedeclareGetForm, getEmployeeSave } from "../../../apis/declare";
|
|
import { commonEnumList } from "../../../apis/archive";
|
|
|
|
const getKey = WeaTools.getKey;
|
|
const { getLabel } = WeaLocaleProvider;
|
|
|
|
@inject("employeeDeclareStore")
|
|
@observer
|
|
class EmployeeDeclareDetailSchemaEditDialog extends Component {
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {
|
|
loading: false,
|
|
eConditions: [],
|
|
employeeInfo: {}
|
|
};
|
|
this.employeeChangeInfo = {};
|
|
}
|
|
|
|
componentWillReceiveProps(nextProps, nextContext) {
|
|
if (nextProps.visible !== this.props.visible && nextProps.visible) this.employeedeclareGetForm(nextProps);
|
|
if (nextProps.visible !== this.props.visible && !nextProps.visible) this.employeeChangeInfo = {};
|
|
}
|
|
|
|
employeedeclareGetForm = async (props) => {
|
|
const { data: cardTypeEnum } = await commonEnumList({ enumClass: `com.engine.salary.enums.employeedeclare.CardTypeEnum` });
|
|
employeedeclareGetForm(_.pick(props, ["id"])).then(({ status, data }) => {
|
|
if (status) {
|
|
this.setState({
|
|
eConditions: _.map(declareConditions, it => {
|
|
return {
|
|
...it,
|
|
items: _.map(it.items, child => {
|
|
if (getKey(child) === "employmentStatus") {
|
|
return {
|
|
...child,
|
|
value: _.take(props.employmentStatusList)[0].enum,
|
|
options: _.map(props.employmentStatusList, it => ({
|
|
key: it.enum,
|
|
showname: getLabel(it.labelId, it.defaultLabel)
|
|
}))
|
|
};
|
|
} else if (getKey(child) === "employmentType") {
|
|
return {
|
|
...child,
|
|
value: _.take(props.employmentTypeList)[0].enum,
|
|
options: _.map(props.employmentTypeList, it => ({
|
|
key: it.enum,
|
|
showname: getLabel(it.labelId, it.defaultLabel)
|
|
}))
|
|
};
|
|
} else if (getKey(child) === "gender") {
|
|
return {
|
|
...child,
|
|
value: "MALE",
|
|
options: [
|
|
{ key: "MALE", showname: getLabel(111, "男") },
|
|
{ key: "FEMALE", showname: getLabel(111, "女") }
|
|
]
|
|
};
|
|
} else if (getKey(child) === "cardType") {
|
|
return {
|
|
...child, options: _.map(cardTypeEnum, o => ({ key: o.enum, showname: o.defaultLabel }))
|
|
};
|
|
} else if (getKey(child) === "employeeType") {
|
|
return {
|
|
...child,
|
|
viewAttr: props.id ? 1 : 3,
|
|
options: [
|
|
{ key: "ORGANIZATION", showname: getLabel(30042, "人员") }
|
|
]
|
|
};
|
|
}
|
|
if (child.conditionType === "SELECT" && getKey(child) !== "gender" && getKey(child) !== "employmentStatus" && getKey(child) !== "employmentType") {
|
|
return {
|
|
...child,
|
|
options: [
|
|
{ key: "ON", showname: getLabel(538048, "是") },
|
|
{ key: "OFF", showname: getLabel(111, "否") }
|
|
]
|
|
};
|
|
}
|
|
return { ...child };
|
|
})
|
|
};
|
|
}),
|
|
employeeInfo: data.data
|
|
}, () => {
|
|
const { data: result, columns } = data;
|
|
const { employeeDeclareStore: { declareForm }, id } = props;
|
|
declareForm.initFormFields(this.state.eConditions);
|
|
if (id) {
|
|
const filedKes = _.map(columns, it => it.dataIndex);
|
|
_.map(filedKes, item => {
|
|
if (item === "disability" || item === "lonelyOld" || item === "martyrDependents") {
|
|
declareForm.updateFields({ [item]: result[item] || "OFF" });
|
|
} else if (item === "deductExpenses") {
|
|
declareForm.updateFields({ [item]: result[item] || "ON" });
|
|
} else if (item === "gender") {
|
|
declareForm.updateFields({ [item]: result[item] || "MALE" });
|
|
} else if (item === "employmentStatus") {
|
|
declareForm.updateFields({ [item]: result[item] || _.take(props.employmentStatusList)[0].enum });
|
|
} else if (item === "employmentType") {
|
|
declareForm.updateFields({ [item]: result[item] || _.take(props.employmentTypeList)[0].enum });
|
|
} else if (item === "employee") {
|
|
const [employeeData] = result[item] || [];
|
|
!_.isEmpty(employeeData) && declareForm.updateFields({
|
|
employeeType: {
|
|
value: [employeeData._entityType, [employeeData.id, employeeData.name, [{
|
|
id: employeeData.id,
|
|
lastname: employeeData.name
|
|
}]]],
|
|
valueSpan: ["employeeId"]
|
|
}
|
|
});
|
|
} else {
|
|
declareForm.updateFields({ [item]: result[item] || "" });
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
onChange = (res) => {
|
|
const { eConditions } = this.state;
|
|
const { employeeDeclareStore: { declareForm } } = this.props;
|
|
const key = Object.keys(res)[0];
|
|
const value = res[key].value;
|
|
if (key === "employeeType") {
|
|
const [v1, v2] = value;
|
|
this.employeeChangeInfo = {
|
|
employee: [{ _entityType: v1, name: v2[1], id: v2[0] }]
|
|
};
|
|
}
|
|
switch (key) {
|
|
case "employmentStatus":
|
|
this.setState({
|
|
eConditions: _.map(eConditions, it => {
|
|
return {
|
|
...it,
|
|
items: _.map(it.items, child => {
|
|
if (getKey(child) === "dismissDate") {
|
|
return {
|
|
...child,
|
|
viewAttr: value === "ABNORMAL" ? 3 : 2
|
|
};
|
|
}
|
|
return { ...child };
|
|
})
|
|
};
|
|
})
|
|
}, () => {
|
|
declareForm.initFormFields(this.state.eConditions);
|
|
const [employeeData] = this.state.employeeInfo["employee"] || this.employeeChangeInfo["employee"] || [];
|
|
!_.isEmpty(employeeData) && declareForm.updateFields({
|
|
employeeType: {
|
|
value: [employeeData._entityType, [employeeData.id, employeeData.name, [{
|
|
id: employeeData.id,
|
|
lastname: employeeData.name
|
|
}]]],
|
|
valueSpan: ["employeeId"]
|
|
}
|
|
});
|
|
});
|
|
break;
|
|
case "employmentType":
|
|
this.setState({
|
|
eConditions: _.map(eConditions, it => {
|
|
return {
|
|
...it,
|
|
items: _.map(it.items, child => {
|
|
if (getKey(child) === "employmentDate") {
|
|
return {
|
|
...child,
|
|
viewAttr: value !== "OTHER" ? 3 : 2
|
|
};
|
|
}
|
|
return { ...child };
|
|
})
|
|
};
|
|
})
|
|
}, () => {
|
|
declareForm.initFormFields(this.state.eConditions);
|
|
const [employeeData] = this.state.employeeInfo["employee"] || this.employeeChangeInfo["employee"] || [];
|
|
!_.isEmpty(employeeData) && declareForm.updateFields({
|
|
employeeType: {
|
|
value: [employeeData._entityType, [employeeData.id, employeeData.name, [{
|
|
id: employeeData.id,
|
|
lastname: employeeData.name
|
|
}]]],
|
|
valueSpan: ["employeeId"]
|
|
}
|
|
});
|
|
});
|
|
break;
|
|
case "cardType":
|
|
this.setState({
|
|
eConditions: _.map(eConditions, it => {
|
|
return {
|
|
...it,
|
|
items: _.map(it.items, child => {
|
|
if (getKey(child) === "entryDate" || getKey(child) === "departureDate") {
|
|
return {
|
|
...child,
|
|
viewAttr: value !== "RESIDENT_IDENTITY_CARDS" ? 3 : 2
|
|
};
|
|
}
|
|
return { ...child };
|
|
})
|
|
};
|
|
})
|
|
}, () => {
|
|
declareForm.initFormFields(this.state.eConditions);
|
|
const [employeeData] = this.state.employeeInfo["employee"] || this.employeeChangeInfo["employee"] || [];
|
|
!_.isEmpty(employeeData) && declareForm.updateFields({
|
|
employeeType: {
|
|
value: [employeeData._entityType, [employeeData.id, employeeData.name, [{
|
|
id: employeeData.id,
|
|
lastname: employeeData.name
|
|
}]]],
|
|
valueSpan: ["employeeId"]
|
|
}
|
|
});
|
|
});
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
};
|
|
|
|
handleSubmit = () => {
|
|
const { employeeDeclareStore: { declareForm: form } } = this.props;
|
|
form.validateForm().then(f => {
|
|
if (f.isValid) {
|
|
const {
|
|
employmentType, employmentDate, employmentStatus, dismissDate, cardType, entryDate, departureDate, ...params
|
|
} = form.getFormParams();
|
|
if ((employmentType !== "OTHER" && !employmentDate) || (employmentStatus === "ABNORMAL" && !dismissDate)) {
|
|
form.showError("dismissDate", getLabel(111, "\"离职日期\"未填写"));
|
|
return;
|
|
}
|
|
if ((cardType !== "RESIDENT_IDENTITY_CARDS" && !entryDate && !departureDate)) {
|
|
form.showError("entryDate", getLabel(111, "\"首次入境时间\"未填写"));
|
|
form.showError("departureDate", getLabel(111, "\"预计离境时间\"未填写"));
|
|
return;
|
|
}
|
|
if ((cardType !== "RESIDENT_IDENTITY_CARDS" && !entryDate)) {
|
|
form.showError("entryDate", getLabel(111, "\"首次入境时间\"未填写"));
|
|
return;
|
|
}
|
|
if ((cardType !== "RESIDENT_IDENTITY_CARDS" && !departureDate)) {
|
|
form.showError("departureDate", getLabel(111, "\"预计离境时间\"未填写"));
|
|
return;
|
|
}
|
|
const payload = {
|
|
...form.getFormParams(), id: this.props.id,
|
|
taxAgentId: getQueryString("id"),
|
|
taxCycle: this.props.taxCycle
|
|
};
|
|
this.setState({ loading: true });
|
|
getEmployeeSave(payload).then(({ status, errormsg }) => {
|
|
this.setState({ loading: false });
|
|
if (status) {
|
|
message.success(getLabel(22619, "保存成功!"));
|
|
this.props.onClose("true");
|
|
} else {
|
|
message.error(errormsg || getLabel(22620, "保存失败!"));
|
|
}
|
|
}).catch(() => this.setState({ loading: false }));
|
|
} else {
|
|
f.showErrors();
|
|
}
|
|
});
|
|
};
|
|
|
|
render() {
|
|
const { eConditions, loading } = this.state;
|
|
const { employeeDeclareStore: { declareForm: form }, title = "" } = this.props;
|
|
return (
|
|
<WeaSlideModal
|
|
{...this.props}
|
|
top={0} measureT="%"
|
|
width={800} measureX="px"
|
|
height={100} measureY="%"
|
|
direction="right"
|
|
title={(<Row className="declareSchemeDialogTitle" type="flex">
|
|
<Col span={12} className="declareSchemeDialogTitle-left">
|
|
<div className="icon-circle-base"><i className="icon-coms-fa"/></div>
|
|
<span className="title">{title || getLabel(111, "本月新增数据")}</span>
|
|
</Col>
|
|
<Col span={12} className="declareSchemeDialogTitle-right">
|
|
<Button type="primary" onClick={this.handleSubmit} loading={loading}>{getLabel(537558, "保存")}</Button>
|
|
</Col>
|
|
</Row>)}
|
|
content={(<div className="declareSchemeDialog">{getSearchs(form, eConditions, 1, false, this.onChange)}</div>)}
|
|
/>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default EmployeeDeclareDetailSchemaEditDialog;
|