字段管理
This commit is contained in:
parent
cd897394b6
commit
73e8357e22
|
|
@ -1,11 +1,20 @@
|
|||
import { WeaTools } from "ecCom";
|
||||
import { postFetch } from "../util/request";
|
||||
|
||||
//获取薪资档案各tab的人数
|
||||
export const queryTabTotal = (params) => {
|
||||
return WeaTools.callApi("/api/bs/hrmsalary/salaryArchive/queryTabTotal", "GET", params);
|
||||
//获取编辑详情
|
||||
export const getSalaryFieldForm = (params) => {
|
||||
return WeaTools.callApi("/api/bs/hrmsalary/salaryField/getSalaryForm", "GET", params);
|
||||
};
|
||||
// 导入档案
|
||||
// 字段管理查询
|
||||
export const salaryFieldList = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryField/list', params);
|
||||
}
|
||||
|
||||
// 字段管理查询
|
||||
export const saveSalaryField = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryField/save', params);
|
||||
}
|
||||
// 删除字段管理
|
||||
export const deleteSalaryField = (params) => {
|
||||
return postFetch('/api/bs/hrmsalary/salaryField/delete', params);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
*/
|
||||
import React, { Component } from "react";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { WeaFormItem, WeaHelpfulTip, WeaInput, WeaSelect, WeaSlideModal, WeaTextarea } from "ecCom";
|
||||
import { message, Modal, Switch } from "antd";
|
||||
import { WeaCheckbox, WeaFormItem, WeaHelpfulTip, WeaInput, WeaSelect, WeaSlideModal, WeaTextarea } from "ecCom";
|
||||
import { message, Modal } from "antd";
|
||||
import SlideModalTitle from "../../../components/slideModalTitle";
|
||||
import { saveAdjustmentRule, saveLedgerBasic, saveLedgerItem } from "../../../apis/ledger";
|
||||
import { getSalaryFieldForm, saveSalaryField } from "../../../apis/fieldManage";
|
||||
import { commonEnumList } from "../../../apis/payrollFiles";
|
||||
import { dataTypeOptions, patternOptions, roundingModeOptions } from "../../salaryItem/options";
|
||||
|
||||
|
|
@ -19,15 +19,16 @@ class FieldSlide extends Component {
|
|||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
current: 0,
|
||||
loading: false,
|
||||
name: "",
|
||||
useDefault: "",
|
||||
sharedType: "",
|
||||
shareTypeList: [],
|
||||
taxAgentIds: "",
|
||||
dataType: "number",
|
||||
roundingMode: "",
|
||||
pattern: "",
|
||||
description: "",
|
||||
description: ""
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -38,6 +39,30 @@ class FieldSlide extends Component {
|
|||
getTaxAgentSelectListAsAdmin();
|
||||
}
|
||||
|
||||
componentWillReceiveProps(nextProps, nextContext) {
|
||||
if (nextProps.editId !== this.props.editId && nextProps.editId) {
|
||||
this.getSalaryFieldForm(nextProps.editId);
|
||||
}
|
||||
}
|
||||
|
||||
getSalaryFieldForm = (id) => {
|
||||
getSalaryFieldForm({ id }).then(({ status, data }) => {
|
||||
if (status) {
|
||||
const { name, useDefault, dataType, description, sharedType, roundingMode, taxAgentIds, pattern } = data;
|
||||
this.setState({
|
||||
name,
|
||||
useDefault: useDefault ? useDefault.toString() : "0",
|
||||
dataType,
|
||||
description,
|
||||
sharedType: sharedType ? sharedType.toString() : "0",
|
||||
roundingMode: roundingMode ? roundingMode.toString() : "0",
|
||||
taxAgentIds,
|
||||
pattern: pattern ? pattern.toString() : "0"
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/*
|
||||
* Author: 黎永顺
|
||||
* Description: 获取可见性列表
|
||||
|
|
@ -47,7 +72,7 @@ class FieldSlide extends Component {
|
|||
commonEnumList = () => {
|
||||
const payload = {
|
||||
enumClass: "com.engine.salary.enums.sicategory.SharedTypeEnum"
|
||||
}
|
||||
};
|
||||
commonEnumList(payload).then(({ status, data }) => {
|
||||
if (status) {
|
||||
const result = _.map(data, it => ({
|
||||
|
|
@ -65,108 +90,79 @@ class FieldSlide extends Component {
|
|||
};
|
||||
/*
|
||||
* Author: 黎永顺
|
||||
* Description: 保存基本信息
|
||||
* 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)) {
|
||||
saveFieldInfo = () => {
|
||||
if (_.isEmpty(this.state.name)) {
|
||||
Modal.warning({
|
||||
title: "信息确认",
|
||||
content: "必要信息不完整,红色*为必填项!"
|
||||
});
|
||||
return false;
|
||||
}
|
||||
const { onRefreshList, onCancel, editId } = this.props;
|
||||
const { name, useDefault, dataType, description, sharedType, roundingMode, taxAgentIds, pattern } = this.state;
|
||||
const payload = {
|
||||
name,
|
||||
useDefault: Number(useDefault),
|
||||
dataType,
|
||||
description,
|
||||
sharedType,
|
||||
roundingMode: Number(roundingMode),
|
||||
taxAgentIds,
|
||||
pattern: Number(pattern)
|
||||
};
|
||||
this.setState({ loading: true });
|
||||
saveLedgerBasic({ ...extra, description, id: editId }).then(({ status, data, errormsg }) => {
|
||||
saveSalaryField({ ...payload, id: editId }).then(({ status, 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 } = 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("保存成功");
|
||||
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,
|
||||
itemGroups: _.filter(itemGroups, it => it.name !== "未分类"),
|
||||
items: _.find(itemGroups, it => it.name === "未分类").items || [],
|
||||
salarySobId: salarySobId || saveSalarySobId
|
||||
};
|
||||
this.setState({ loading: true });
|
||||
saveLedgerItem(payload).then(({ status, errormsg }) => {
|
||||
this.setState({ loading: false });
|
||||
if (status) {
|
||||
onCancel();
|
||||
this.handleReset();
|
||||
message.success("保存成功");
|
||||
} else {
|
||||
message.error(errormsg || "保存失败");
|
||||
}
|
||||
}).catch(() => this.setState({ loading: false }));
|
||||
};
|
||||
handleChangeSlideTab = (current) => {
|
||||
this.setState({ current: Number(current) });
|
||||
};
|
||||
/*
|
||||
* Author: 黎永顺
|
||||
* Description: 基础信息字段切换
|
||||
* Params:
|
||||
* Date: 2022/12/9
|
||||
*/
|
||||
handleChangeSaveParams = (baseSettingInfo) => {
|
||||
this.setState({ baseSettingInfo });
|
||||
};
|
||||
/*
|
||||
* Author: 黎永顺
|
||||
* Description: 薪资项目保存数据
|
||||
* Description: 字段项修改
|
||||
* Params:
|
||||
* Date: 2022/12/14
|
||||
*/
|
||||
handleSaveSalaryItemParams = (empFields, itemGroups) => {
|
||||
this.setState({ empFields, itemGroups });
|
||||
handleChangeFields = (type, value) => {
|
||||
this.setState({ [type]: value });
|
||||
};
|
||||
handleReset = () => {
|
||||
this.setState({
|
||||
name: "",
|
||||
useDefault: "",
|
||||
sharedType: "",
|
||||
taxAgentIds: "",
|
||||
dataType: "number",
|
||||
roundingMode: "",
|
||||
pattern: "",
|
||||
description: ""
|
||||
});
|
||||
};
|
||||
|
||||
render() {
|
||||
const { title, visible, editId, taxAgentStore: { showOperateBtn, taxAgentAdminOption }, onCancel } = this.props;
|
||||
const { shareTypeList, sharedType, taxAgentIds, dataType, roundingMode, pattern, description } = this.state;
|
||||
const { title, visible, taxAgentStore: { showOperateBtn, taxAgentAdminOption }, onCancel } = this.props;
|
||||
const {
|
||||
loading,
|
||||
name,
|
||||
useDefault,
|
||||
shareTypeList,
|
||||
sharedType,
|
||||
taxAgentIds,
|
||||
dataType,
|
||||
roundingMode,
|
||||
pattern,
|
||||
description
|
||||
} = this.state;
|
||||
return (
|
||||
<WeaSlideModal
|
||||
className="slideOuterWrapper"
|
||||
|
|
@ -180,24 +176,23 @@ class FieldSlide extends Component {
|
|||
<SlideModalTitle
|
||||
subtitle={title}
|
||||
tabs={[]}
|
||||
loading={false}
|
||||
loading={loading}
|
||||
showOperateBtn={showOperateBtn}
|
||||
editable={true}
|
||||
onSave={() => {
|
||||
console.log(11111);
|
||||
}}
|
||||
onSave={this.saveFieldInfo}
|
||||
/>
|
||||
}
|
||||
content={
|
||||
<div className="fieldSlideContent">
|
||||
<div className="wea-form-item-group">
|
||||
<WeaFormItem label="名称" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaInput viewAttr={3}/>
|
||||
<WeaInput viewAttr={3} value={name}
|
||||
onChange={value => this.handleChangeFields("name", value)}/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="默认使用" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<Switch
|
||||
// checked={useDefault == 1}
|
||||
onChange={value => {
|
||||
}}
|
||||
<WeaCheckbox
|
||||
value={useDefault}
|
||||
display="switch"
|
||||
onChange={value => this.handleChangeFields("useDefault", value)}
|
||||
/>
|
||||
<WeaHelpfulTip style={{ marginLeft: "10px" }} width={200}
|
||||
title="提示:开启后,每个薪资方案都有该薪资项目,可在具体薪资方案中删除"
|
||||
|
|
@ -208,8 +203,7 @@ class FieldSlide extends Component {
|
|||
<WeaSelect
|
||||
value={sharedType}
|
||||
options={shareTypeList}
|
||||
onChange={value => {
|
||||
}}
|
||||
onChange={value => this.handleChangeFields("sharedType", value)}
|
||||
style={{ width: 200 }}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
|
|
@ -222,8 +216,7 @@ class FieldSlide extends Component {
|
|||
style={{ width: 200 }}
|
||||
value={taxAgentIds}
|
||||
options={taxAgentAdminOption}
|
||||
onChange={(value) => {
|
||||
}}
|
||||
onChange={value => this.handleChangeFields("taxAgentIds", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
}
|
||||
|
|
@ -231,37 +224,36 @@ class FieldSlide extends Component {
|
|||
<WeaSelect
|
||||
value={dataType}
|
||||
options={dataTypeOptions}
|
||||
onChange={value => {
|
||||
}}
|
||||
onChange={value => this.handleChangeFields("dataType", value)}
|
||||
style={{ width: 200 }}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="舍入规则" ratio1to2 labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaFormItem label="舍入规则" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaSelect
|
||||
value={roundingMode}
|
||||
options={roundingModeOptions}
|
||||
onChange={value => {
|
||||
}}
|
||||
onChange={value => this.handleChangeFields("roundingMode", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="保留小数位" ratio1to2 labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaFormItem label="保留小数位" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaSelect
|
||||
value={pattern}
|
||||
options={patternOptions}
|
||||
onChange={value => {
|
||||
}}
|
||||
onChange={value => this.handleChangeFields("pattern", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
<WeaFormItem label="备注" labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}>
|
||||
<WeaTextarea
|
||||
value={description}
|
||||
onChange={value => {
|
||||
}}
|
||||
onChange={value => this.handleChangeFields("description", value)}
|
||||
/>
|
||||
</WeaFormItem>
|
||||
</div>
|
||||
}
|
||||
onClose={onCancel}
|
||||
onClose={() => {
|
||||
this.handleReset();
|
||||
onCancel();
|
||||
}}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ class FieldTable extends Component {
|
|||
};
|
||||
getColumns = () => {
|
||||
const { columns } = this.state;
|
||||
const { taxAgentStore, onEditLedger } = this.props;
|
||||
const { taxAgentStore, onEditLedger, onDeleteLedger } = this.props;
|
||||
const { showOperateBtn } = taxAgentStore;
|
||||
return _.map([...columns, {
|
||||
dataIndex: "operate",
|
||||
|
|
@ -73,7 +73,7 @@ class FieldTable extends Component {
|
|||
onClick={() => onEditLedger(record)}>{showOperateBtn ? "编辑" : "查看"}</a>
|
||||
{
|
||||
showOperateBtn &&
|
||||
<a href="javascript:void(0);" className="mr10" onClick={() => onEditLedger(record)}>删除</a>
|
||||
<a href="javascript:void(0);" className="mr10" onClick={() => onDeleteLedger(record)}>删除</a>
|
||||
}
|
||||
</div>;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -6,10 +6,11 @@
|
|||
*/
|
||||
import React, { Component } from "react";
|
||||
import { inject, observer } from "mobx-react";
|
||||
import { Button } from "antd";
|
||||
import { Button, message, Modal } from "antd";
|
||||
import { WeaInputSearch, WeaTop } from "ecCom";
|
||||
import FieldTable from "./components/fieldTable";
|
||||
import FieldSlide from "./components/fieldSlide";
|
||||
import { deleteSalaryField } from "../../apis/fieldManage";
|
||||
import "./index.less";
|
||||
|
||||
@inject("taxAgentStore")
|
||||
|
|
@ -33,6 +34,22 @@ class FieldManagement extends Component {
|
|||
const { id } = record;
|
||||
this.setState({ slideparams: { ...slideparams, visible: true, title: "编辑字段", editId: id } });
|
||||
};
|
||||
handleDeleteField = (filedIds) => {
|
||||
Modal.confirm({
|
||||
title: "信息确认",
|
||||
content: "确认要删除吗?",
|
||||
onOk: () => {
|
||||
deleteSalaryField(filedIds).then((status, errormsg) => {
|
||||
if (status) {
|
||||
message.success("删除成功");
|
||||
this.setState({ doSearch: !this.state.doSearch })
|
||||
} else {
|
||||
message.error(errormsg || "删除失败");
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
handleResetField = () => {
|
||||
const { slideparams } = this.state;
|
||||
this.setState({
|
||||
|
|
@ -69,7 +86,8 @@ class FieldManagement extends Component {
|
|||
buttons={showOperateBtn ? btns : btns.slice(-1)}
|
||||
>
|
||||
<div className="fieldManageWrapper">
|
||||
<FieldTable name={searchVal} doSearch={doSearch} onEditLedger={this.handleEditField}/>
|
||||
<FieldTable name={searchVal} doSearch={doSearch} onEditLedger={this.handleEditField}
|
||||
onDeleteLedger={(record) => this.handleDeleteField([record.id])}/>
|
||||
<FieldSlide
|
||||
{...slideparams}
|
||||
onCancel={this.handleResetField}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,7 @@
|
|||
.slideOuterWrapper {
|
||||
.wea-form-item-group{
|
||||
padding: 56px 80px;
|
||||
}
|
||||
.wea-slide-modal-title {
|
||||
height: initial;
|
||||
line-height: initial;
|
||||
|
|
|
|||
Loading…
Reference in New Issue