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

540 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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