545 lines
15 KiB
JavaScript
545 lines
15 KiB
JavaScript
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 adjForm = new WeaForm(); // 调薪form
|
||
|
||
|
||
@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);
|
||
@action("调薪初始化form")
|
||
initAdjForm = () => (this.adjForm = new WeaForm());
|
||
// ** 设置导入参数 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();
|
||
}
|
||
});
|
||
});
|
||
};
|
||
}
|