salary-management-front/pc4mobx/hrmSalary/stores/salaryFile.js

545 lines
15 KiB
JavaScript
Raw Normal View History

2022-07-28 17:16:40 +08:00
import { action, observable } from "mobx";
import { message } from "antd";
import { WeaForm, WeaTableNew } from "comsMobx";
import moment from "moment";
2022-04-01 10:24:55 +08:00
2022-07-28 17:16:40 +08:00
import * as API from "../apis/archive"; // 引入API接口文件
import { notNull } from "../util/validate";
2022-04-01 10:24:55 +08:00
const { TableStore } = WeaTableNew;
export class salaryFileStore {
@observable adjForm = new WeaForm(); // 调薪form
2022-04-01 10:24:55 +08:00
@observable tableStore = new TableStore(); // new table
@observable form = new WeaForm(); // nrew 一个form
@observable condition = []; // 存储后台得到的form数据
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
@observable showSearchAd = false; // 高级搜索面板显示
@observable loading = true; // 数据加载状态
2022-07-28 17:16:40 +08:00
@observable userStatusList = [];
@observable archiveStatusList = [];
2022-04-01 10:24:55 +08:00
@observable importType = [];
2022-04-01 13:54:24 +08:00
@observable previewColumns = [];
@observable previewDataSource = [];
2022-04-02 17:34:40 +08:00
@observable dataSource = [];
2022-07-28 17:16:40 +08:00
@observable detailForm = {};
@observable adjustSalaryItems = []; //薪资档案项
2022-04-24 17:52:38 +08:00
@observable pageInfo = {}; // 分页数据
2022-07-28 17:16:40 +08:00
@observable salaryArchiveTaxAgentForm = {};
@observable salaryItemChangeForm = {};
@observable taxAgentList = [];
@observable salaryItemList = [];
@observable singleSalaryItemList = [];
@observable singleTaxAgentList = [];
2022-04-01 10:24:55 +08:00
2022-07-28 17:16:40 +08:00
@observable currentId = "";
2022-08-25 17:54:18 +08:00
@observable salaryIncreaseUrl = {}; //发起流程url地址 isShow:是否显示按钮url链接地址
2022-07-28 17:16:40 +08:00
@observable editAgentVisible = false;
2022-04-07 13:39:21 +08:00
2022-08-25 17:54:18 +08:00
@action("设置发起调薪地址")
setSalaryIncreaseUrl = data => (this.salaryIncreaseUrl = data);
@action("设置薪资档案项")
setAdjustSalaryItems = data => (this.adjustSalaryItems = data);
@action("调薪初始化form")
initAdjForm = () => (this.adjForm = new WeaForm());
2022-05-12 17:04:33 +08:00
// ** 设置导入参数 start **
@action
setPreviewDataSource = (previewDataSource) => {
2022-07-28 17:16:40 +08:00
this.previewDataSource = previewDataSource;
};
2022-05-12 17:04:33 +08:00
// ** 设置导入参数 end **
2022-04-01 10:24:55 +08:00
// 初始化操作
@action
2022-07-28 17:16:40 +08:00
doInit = (params) => {
2022-04-01 10:24:55 +08:00
// this.getCondition();
2022-07-28 17:16:40 +08:00
this.getTableDatas(params);
2022-04-01 10:24:55 +08:00
this.getImportTypes();
this.commonEnumList("archive", { enumClass: "com.engine.salary.enums.salaryarchive.ArchiveStatusEnum" });
2022-07-28 17:16:40 +08:00
this.commonEnumList("user", { enumClass: "com.engine.salary.enums.UserStatusEnum" });
};
2022-04-01 10:24:55 +08:00
2022-08-25 17:54:18 +08:00
// 发起调薪地址
@action
salaryAdjustmentInfo = () => {
API.salaryAdjustmentInfo().then(({ status, data }) => {
if (status) {
this.setSalaryIncreaseUrl(data);
}
});
};
2022-04-01 10:24:55 +08:00
// 获取导入类型
@action
getImportTypes = () => {
API.getImportTypes().then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
this.importType = res.data;
2022-04-01 10:24:55 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
2022-04-01 10:24:55 +08:00
}
2022-07-28 17:16:40 +08:00
});
};
@action("获取档案和人员状态类型")
commonEnumList = (type, params) => {
API.commonEnumList(params).then(res => {
if (res.status) {
const data = _.map(res.data, it => ({
key: String(it.value),
showname: it.defaultLabel
}));
type === "archive" ? this.archiveStatusList = [{
key: "",
showname: ""
2023-02-09 19:34:40 +08:00
}, ...data] : this.userStatusList = [...data];
2022-07-28 17:16:40 +08:00
} else {
message.error(res.errormsg || "获取失败");
}
});
};
2022-04-01 10:24:55 +08:00
// 获得高级搜索表单数据
@action
getCondition = () => {
API.getCondition().then(action(res => {
if (res.api_status) { // 接口请求成功/失败处理
this.condition = res.condition;
this.form.initFormFields(res.condition); // 渲染高级搜索form表单
} else {
2022-07-28 17:16:40 +08:00
message.error(res.msg || "接口调用失败!");
2022-04-01 10:24:55 +08:00
}
}));
2022-07-28 17:16:40 +08:00
};
2022-04-01 10:24:55 +08:00
2022-04-02 17:34:40 +08:00
// 渲染table数据1
2022-04-01 10:24:55 +08:00
@action
getTableDatas = (params) => {
this.loading = true;
const formParams = this.form.getFormParams() || {};
const { departmentIds = "", positionIds = "", subcompanyIds = "", ...extraParams } = params || {};
2022-07-28 17:16:40 +08:00
params = {
...formParams, ...extraParams,
departmentIds: departmentIds ? departmentIds.split(",") : "",
2022-09-01 17:52:00 +08:00
positionIds: positionIds ? positionIds.split(",") : "",
subcompanyIds: subcompanyIds ? subcompanyIds.split(",") : ""
2022-07-28 17:16:40 +08:00
};
2022-04-02 17:34:40 +08:00
API.getArchiveList(params).then(action(res => {
if (res.status) { // 接口请求成功/失败处理
this.tableStore.getDatas(res.data.dataKey.datas); // table 请求数据
this.dataSource = res.data.pageInfo.list.map(item => {
2022-07-28 17:16:40 +08:00
item.key = item.id;
2022-04-02 17:34:40 +08:00
return item;
2022-07-28 17:16:40 +08:00
});
this.pageInfo = res.data.pageInfo;
2022-04-01 10:24:55 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "接口调用失败!");
2022-04-01 10:24:55 +08:00
}
this.loading = false;
}));
2022-07-28 17:16:40 +08:00
};
2022-04-01 10:24:55 +08:00
@action
setShowSearchAd = bool => this.showSearchAd = bool;
// 高级搜索 - 搜索
2022-07-28 17:16:40 +08:00
@action doSearch = (params) => {
this.getTableDatas(params);
2022-04-01 10:24:55 +08:00
this.showSearchAd = false;
2022-07-28 17:16:40 +08:00
};
2022-04-01 10:24:55 +08:00
// 导入预览
@action
importPreview = (params) => {
API.importPreview(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
let headers = res.data.headers;
2022-04-01 13:54:24 +08:00
this.previewColumns = headers.map((item, index) => {
return {
key: index,
title: item,
dataIndex: index
2022-07-28 17:16:40 +08:00
};
});
2022-04-01 13:54:24 +08:00
let list = res.data.list;
this.previewDataSource = list.map(item => {
2022-07-28 17:16:40 +08:00
let result = {};
2022-04-01 13:54:24 +08:00
item.map((i, index) => {
2022-07-28 17:16:40 +08:00
result[index] = i;
});
2022-04-01 13:54:24 +08:00
return result;
2022-07-28 17:16:40 +08:00
});
2022-04-01 10:24:55 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取数据失败");
2022-04-01 10:24:55 +08:00
}
2022-07-28 17:16:40 +08:00
});
};
2022-04-01 10:24:55 +08:00
2022-04-01 13:54:24 +08:00
// 导入档案
@action
2022-07-28 17:16:40 +08:00
importSalaryArchive = (params, tableParams) => {
2022-04-20 19:24:14 +08:00
return new Promise((resolve, reject) => {
API.importSalaryArchive(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
2022-05-10 17:45:03 +08:00
// message.success("导入成功")
this.getTableDatas({ ...tableParams });
2022-07-28 17:16:40 +08:00
resolve(res.data);
2022-04-20 19:24:14 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "接口异常");
reject();
2022-04-20 19:24:14 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-04-01 13:54:24 +08:00
// 导出档案
@action
exportSalaryArchive = (ids = "") => {
2022-07-28 17:16:40 +08:00
API.exportSalaryArchive(ids);
};
2022-04-01 13:54:24 +08:00
2022-04-02 17:34:40 +08:00
// 获取详情
@action
getArchiveForm = (salaryArchiveId) => {
return new Promise((resolve, reject) => {
API.getArchiveForm({ salaryArchiveId }).then(res => {
if (res.status) {
this.detailForm = res.data;
this.setAdjustSalaryItems(res.data.adjustSalaryItems || []);
resolve(res.data.paySet.data);
} else {
message.error(res.errormsg || "获取失败");
reject();
}
});
});
2022-07-28 17:16:40 +08:00
};
2022-04-02 17:34:40 +08:00
2022-04-06 15:36:31 +08:00
// 个税义务人表单
valideTaxAgentForm(params) {
2022-07-28 17:16:40 +08:00
if (!notNull(params.effectiveTime)) {
message.warning("生效日期不能为空");
return false;
2022-04-06 15:36:31 +08:00
}
2022-07-28 17:16:40 +08:00
if (!notNull(params.adjustReason)) {
message.warning("调整原因不能为空");
return false;
2022-04-06 15:36:31 +08:00
}
2022-07-28 17:16:40 +08:00
if (!notNull(params.taxAgentId)) {
message.warning("调整后个税义务人不能为空");
return false;
2022-04-06 15:36:31 +08:00
}
return true;
}
2022-04-02 17:34:40 +08:00
// 薪资档案-保存个税扣缴义务人调整
@action
saveTaxAgent = (params) => {
2022-07-28 17:16:40 +08:00
if (!this.valideTaxAgentForm(params)) {
return;
2022-04-06 15:36:31 +08:00
}
return new Promise((resolve, reject) => {
API.saveTaxAgent(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
2022-04-06 15:36:31 +08:00
message.success("保存成功");
2022-07-28 17:16:40 +08:00
resolve();
2022-04-06 15:36:31 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "保存失败");
reject();
2022-04-06 15:36:31 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-04-02 17:34:40 +08:00
2022-04-06 14:26:16 +08:00
// 调整-义务扣缴人-调整表单
@action
getTaxAgentForm = (salaryArchiveId) => {
return new Promise((resolve, reject) => {
2022-07-28 17:16:40 +08:00
API.getTaxAgentForm({ salaryArchiveId }).then(res => {
if (res.status) {
this.salaryArchiveTaxAgentForm = res.data.salaryArchiveTaxAgentForm;
resolve();
2022-04-06 14:26:16 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
reject();
2022-04-06 14:26:16 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-04-06 14:26:16 +08:00
2022-04-07 18:35:09 +08:00
convertForm = (resData) => {
2022-07-28 17:16:40 +08:00
let salaryItemChangeForm = {};
2022-04-07 18:35:09 +08:00
salaryItemChangeForm.adjustReasonList = resData.salaryArchiveItemForm.adjustReasonList.map(item => {
2022-07-28 17:16:40 +08:00
item = { ...item };
2022-04-07 18:35:09 +08:00
item.key = item.id;
2022-07-28 17:16:40 +08:00
item.showname = item.content;
item.selected = false;
return item;
});
2022-04-07 18:35:09 +08:00
salaryItemChangeForm.salaryItemList = resData.salaryArchiveItemDetail.salaryItemList.map(item => {
2022-07-28 17:16:40 +08:00
item = { ...item };
2022-04-07 18:35:09 +08:00
item.key = item.id;
2022-07-28 17:16:40 +08:00
item.showname = item.content;
item.selected = false;
return item;
});
2022-04-07 18:35:09 +08:00
salaryItemChangeForm.columns = resData.salaryArchiveItemDetail.columns.map(item => {
2022-07-28 17:16:40 +08:00
let result = {};
result.title = item;
if (item == "薪资项目") {
result.dataIndex = "salaryItem";
result.key = "salaryItem";
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
if (item == "调整前") {
result.dataIndex = "salaryBefore";
result.key = "salaryBefore";
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
if (item == "调整后") {
result.dataIndex = "adjustAfter";
result.key = "adjustAfter";
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
return result;
});
2022-04-07 18:35:09 +08:00
salaryItemChangeForm.dataSource = resData.salaryArchiveItemDetail.list.map((item, index) => {
2022-07-28 17:16:40 +08:00
item = { ...item };
item.key = (index + 1).toString();
return item;
});
let effectiveTime = resData.salaryArchiveItemForm.effectiveTime;
if (effectiveTime) {
salaryItemChangeForm.effectiveTime = moment(new Date(effectiveTime)).format("YYYY-MM-DD");
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
salaryItemChangeForm.description = resData.salaryArchiveItemForm.description;
salaryItemChangeForm.adjustReason = resData.salaryArchiveItemForm.adjustReason;
salaryItemChangeForm.canOperator = resData.canOperator;
2022-07-28 17:16:40 +08:00
return salaryItemChangeForm;
};
2022-04-07 18:35:09 +08:00
2022-04-07 09:41:16 +08:00
// 薪资档案-获取薪资项目调整表单
@action
getSalaryItemForm = (id) => {
return new Promise((resolve, reject) => {
2022-07-28 17:16:40 +08:00
API.getSalaryItemForm({ salaryArchiveItemId: id }).then(res => {
if (res.status) {
this.salaryItemChangeForm = this.convertForm(res.data);
resolve();
2022-04-07 09:41:16 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
reject();
2022-04-07 09:41:16 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-04-07 09:41:16 +08:00
// 调整记录 个税义务人调整列表
@action
adjustRecordTaxAgentList = (params) => {
API.adjustRecordTaxAgentList(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
this.taxAgentList = res.data;
2022-04-07 09:41:16 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
2022-04-07 09:41:16 +08:00
}
2022-07-28 17:16:40 +08:00
});
};
2022-04-07 09:41:16 +08:00
// 调整记录 薪资项目调整记录
@action
adjustRecordSalaryItemList = (params) => {
API.adjustRecordSalaryItemList(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
2022-04-07 09:41:16 +08:00
this.salaryItemList = res.data;
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
2022-04-07 09:41:16 +08:00
}
2022-07-28 17:16:40 +08:00
});
};
2022-04-07 09:41:16 +08:00
// slide 薪资项目列表
@action
fetchSingleSalaryItemList = (params) => {
API.singleSalaryItemList(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
this.singleSalaryItemList = res.data;
2022-04-07 09:41:16 +08:00
} else {
message.error(res.errormsg || "获取失败");
}
2022-07-28 17:16:40 +08:00
});
};
2022-04-07 09:41:16 +08:00
// slide 个税义务人列表
@action
fetchSingleTaxAgentList = (params) => {
API.singleTaxAgentList(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
this.singleTaxAgentList = res.data;
2022-04-07 09:41:16 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
2022-04-07 09:41:16 +08:00
}
2022-07-28 17:16:40 +08:00
});
};
2022-04-07 09:41:16 +08:00
2022-04-07 13:39:21 +08:00
// 设置当前查看的数据id
@action
2022-07-28 17:16:40 +08:00
setCurrentId = (id) => this.currentId = id;
2022-04-07 09:41:16 +08:00
2022-04-07 13:39:21 +08:00
// 设置编辑个税义务人修改表modal
@action
setEditAgentVisible = editAgentVisible => this.editAgentVisible = editAgentVisible;
2022-04-07 09:41:16 +08:00
2022-04-07 13:39:21 +08:00
// 通过个税义务人编辑进入列表
@action
getTaxAgentFormByTaxAgentId = (id) => {
return new Promise((resolve, reject) => {
2022-07-28 17:16:40 +08:00
API.getTaxAgentFormBySalaryArchiveTaxAgentId({ salaryArchiveTaxAgentId: id }).then(res => {
if (res.status) {
let form = res.data.salaryArchiveTaxAgentForm;
form.effectiveTime = moment(new Date(form.effectiveTime)).format("YYYY-MM-DD");
this.salaryArchiveTaxAgentForm = form;
resolve(form);
2022-04-07 13:39:21 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
reject();
2022-04-07 13:39:21 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-04-07 09:41:16 +08:00
2022-04-07 18:35:09 +08:00
validateSaveSalaryForm = (params) => {
2022-07-28 17:16:40 +08:00
if (!notNull(params.salaryArchiveId)) {
message.error("档案id不能为空");
return false;
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
if (!notNull(params.effectiveTime)) {
2022-09-08 17:04:36 +08:00
message.warning("生效日期不能为空");
2022-07-28 17:16:40 +08:00
return false;
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
if (!notNull(params.adjustReason)) {
2022-09-08 17:04:36 +08:00
message.warning("调整原因不能为空");
2022-07-28 17:16:40 +08:00
return false;
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
if (!params.salaryArchiveItems || params.salaryArchiveItems.length == 0) {
2022-09-08 17:04:36 +08:00
message.warning("调整明细不能为空");
2022-07-28 17:16:40 +08:00
return false;
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
for (let i = 0; i < params.salaryArchiveItems.length; i++) {
if (!notNull(params.salaryArchiveItems[i].salaryItemId)) {
message.error("薪资项目不能为空");
2022-04-07 18:35:09 +08:00
return false;
}
2022-07-28 17:16:40 +08:00
if (!notNull(params.salaryArchiveItems[i].adjustValue)) {
message.error("调整后不能为空");
2022-04-07 18:35:09 +08:00
return false;
}
}
2022-07-28 17:16:40 +08:00
2022-04-07 18:35:09 +08:00
return true;
2022-07-28 17:16:40 +08:00
};
2022-04-07 18:35:09 +08:00
// 保存调薪
@action
saveSalaryItem = (params) => {
return new Promise((resolve, reject) => {
2022-09-08 17:04:36 +08:00
if (!this.validateSaveSalaryForm(params)) {
reject("校验失败");
return;
}
2022-04-07 18:35:09 +08:00
API.saveSalaryItem(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
message.success("保存成功");
resolve();
2022-04-07 18:35:09 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "保存失败");
reject();
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
@action("编辑调薪")
editSingleSalaryItem = (params) => {
return new Promise((resolve, reject) => {
if (!this.validateSaveSalaryForm(params)) {
reject("校验失败");
return;
}
API.editSingleSalaryItem(params).then(res => {
if (res.status) {
message.success("保存成功");
resolve();
} else {
message.error(res.errormsg || "保存失败");
reject();
}
});
});
2022-07-28 17:16:40 +08:00
};
2022-04-07 18:35:09 +08:00
// 调整=薪资项目调整-获取调整前的值
@action
getSalaryItemAdjustBeforeValue = (params) => {
return new Promise((resolve, reject) => {
API.getSalaryItemAdjustBeforeValue(params).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
resolve(res.data);
2022-04-07 18:35:09 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
reject(res.errormsg);
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-04-07 18:35:09 +08:00
// 调整-薪资项目-编辑获取表单
@action
getSalaryItemFormByItemId = (id) => {
return new Promise((resolve, reject) => {
API.getSingleSalaryItemInfo({ id: id }).then(res => {
2022-07-28 17:16:40 +08:00
if (res.status) {
this.salaryItemChangeForm = this.convertForm(res.data);
resolve(this.salaryItemChangeForm);
2022-04-07 18:35:09 +08:00
} else {
2022-07-28 17:16:40 +08:00
message.error(res.errormsg || "获取失败");
reject();
2022-04-07 18:35:09 +08:00
}
2022-07-28 17:16:40 +08:00
});
});
};
2022-09-08 17:04:36 +08:00
@action("停薪")
stopSalary = (payEndDateStr) => {
const payload = {
2022-09-08 17:04:36 +08:00
payEndDateStr,
salaryArchiveId: this.currentId
};
2022-09-08 17:04:36 +08:00
return new Promise((resolve, reject) => {
API.stopSalary(payload).then(res => {
if (res.status) {
message.success("操作成功");
resolve(res);
} else {
message.error(res.errormsg || "获取失败");
reject();
}
});
});
};
2022-07-28 17:16:40 +08:00
}