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

400 lines
10 KiB
JavaScript

import { action, observable, toJS } from "mobx";
import { message } from "antd";
import { WeaForm, WeaTableNew } from "comsMobx";
import * as API from "../apis/item"; // 引入API接口文件
import { notNull } from "../util/validate";
const { TableStore } = WeaTableNew;
export class SalaryItemStore {
@observable tableStore = new TableStore(); // new table
@observable sysListTableStore = new TableStore();
@observable form = new WeaForm(); // nrew 一个form
@observable condition = []; // 存储后台得到的form数据
@observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据
@observable showSearchAd = false; // 高级搜索面板显示
@observable loading = true; // 数据加载状态
@observable saveLoading = false; // 数据保存状态
@observable systemItemVisible = false;
@observable deleteTableStore = new TableStore(); // 批量删除
@observable deleteItemVisible = false; // 删除Modal
@observable editSlideVisible = false; // 新建修改设置
@observable request = {
name: "",
useDefault: 0,
hideDefault: 0,
useInEmployeeSalary: 0,
systemType: 0,
roundingMode: "1",
pattern: "2",
valueType: 1,
dataType: "number",
description: "",
sharedType: "0",
taxAgentIds: ""
};
@observable tableDataSource = []; // 主列表
@observable tableColumns = []; // 主列表列
@observable pageInfo = {}; // 分页数据
// 可以删除的项目
@observable canDeleteList = [];
// ** 公式 **
// 类型列表
@observable searchGroup = [];
// 字段列表
@observable searchFields = [];
// 公式详情
@observable formulaDetail = {};
// Modal
@observable modalLoading = true;
// 设置字段列表
@action
setSearchFields = (searchFields) => {
this.searchFields = searchFields;
};
@action
initRequest = () => this.request = {
name: "",
useDefault: 0,
hideDefault: 0,
useInEmployeeSalary: 0,
systemType: 0,
roundingMode: "1",
pattern: "2",
valueType: "1",
dataType: "number",
description: "",
sharedType: "0",
taxAgentIds: ""
};
@action
setRequest = request => this.request = request;
@action
setEditSlideVisible = editSlideVisible => this.editSlideVisible = editSlideVisible;
@action
setDeleteItemVisible = deleteItemVisible => this.deleteItemVisible = deleteItemVisible;
@action
setSystemItemVisible = systemItemVisible => {
this.systemItemVisible = systemItemVisible;
this.sysListTableStore = new TableStore();
};
// 存储分页以及关键字信息
@action
setPageInfo = (pageInfo) => this.pageInfo = { ...this.pageInfo, ...pageInfo };
// 渲染table数据
@action
getTableDatas = (params) => {
this.loading = true;
return new Promise((resolve, reject) => {
API.getItemList({ ...params, ...this.pageInfo }).then(action(res => {
this.loading = false;
if (res.status) { // 接口请求成功/失败处理
this.tableDataSource = res.data.list;
this.tableColumns = res.data.columns;
resolve(res.data);
} else {
message.error(res.errormsg || "接口调用失败!");
reject();
}
})).catch(() => this.loading = false);
}).catch(() => this.loading = false);
};
@action
setShowSearchAd = bool => this.showSearchAd = bool;
// 高级搜索 - 搜索
@action doSearch = () => {
this.getTableDatas();
this.showSearchAd = false;
};
// 薪资项目-系统薪资项目列表
@action
formulaDatasourceList = () => {
return API.formulaDatasourceList();
};
// 薪资项目-系统薪资项目列表
@action
getSysItemList = (params) => {
API.getSysItemList(params).then(res => {
if (res.status) { // 接口请求成功/失败处理
this.sysListTableStore.getDatas(res.data.datas); // table 请求数据
} else {
message.error(res.errormsg || "接口调用失败!");
}
});
};
//薪资项目-添加系统薪资项目
@action
saveSysItem = () => {
let ids = toJS(this.sysListTableStore.selectedRowKeys);
if (ids.length == 0) {
message.warning("未选择任何条目");
return;
}
this.saveLoading = true;
API.saveSysItem(ids).then(res => {
this.saveLoading = false;
if (res.status) {
this.setSystemItemVisible(false);
this.getTableDatas({});
message.success("添加成功");
} else {
message.error(res.errormsg || "添加失败");
}
});
};
//薪资项目-薪资项目详情
@action
getItemForm = (id) => {
return new Promise((resolve, reject) => {
API.getItemForm({ id }).then(res => {
if (res.status) {
let data = res.data;
Object.keys(data).map(key => {
if (!_.isNil(data[key])) {
data[key] = data[key].toString();
}
});
this.setRequest(data);
resolve();
} else {
message.error(res.errormsg || "获取失败");
reject(res);
}
});
});
};
// 对象值转string
convertToString(data) {
Object.keys(data).map(k => {
if (typeof (data[k]) == "number") {
data[k] = data[k].toString();
}
});
return data;
}
//薪资项目-批量删除列表
@action
deleteItemList = (params) => {
API.deleteItemList(params).then(res => {
if (res.status) {
this.deleteTableStore.getDatas(res.data.datas);
} else {
message.error(res.errormsg || "获取失败");
}
});
};
//薪资项目-批量删除薪资项目
@action
deleteItem = (ids) => {
if (ids.length == 0) {
message.warning("未选择任何条目");
return;
}
this.deleteItemRequest(ids);
};
@action
deleteItemRequest = (ids) => {
return new Promise((resolve, reject) => {
API.deleteItem(ids).then(res => {
if (res.status) {
this.deleteItemVisible = false;
message.success("删除成功");
resolve();
} else {
message.error(res.errormsg || "删除失败");
reject();
}
});
});
};
validateForm(params) {
if (!notNull(params.name)) {
message.warning("名称不能为空");
return false;
}
if (!notNull(params.dataType)) {
message.warning("字段类型不能为空");
return false;
}
if (!notNull(params.roundingMode)) {
message.warning("舍入规则不能为空");
return false;
}
if (!notNull(params.pattern)) {
message.warning("保留小数位不能为空");
return false;
}
if (!notNull(params.valueType)) {
message.warning("取值方式不能为空");
return false;
}
if ((params.valueType == 2 || params.valueType == 3) && !notNull(params.formulaId)) {
message.warning("公式不能为空");
return false;
}
if (params.sharedType == 1 && !notNull(params.taxAgentIds)) {
message.warning("可见性范围不能为空");
return false;
}
return true;
}
//薪资项目-新增薪资项目
@action
saveItem = (params, continueFlag) => {
return new Promise((resolve, reject) => {
const { valueType, formulaId, originFormulaContent, originSqlContent, ...extra } = params;
let payload = { ...extra, valueType };
if (valueType === "1") {
payload = {
...payload,
formulaContent: "",
formulaId: "",
originSqlContent: "",
originFormulaContent: ""
};
} else if (valueType === "2") {
payload = {
...payload,
formulaContent: originFormulaContent ? originFormulaContent : "",
formulaId: originFormulaContent ? formulaId : "",
originSqlContent: "",
originFormulaContent
};
} else if (valueType === "3") {
payload = {
...payload,
formulaContent: originSqlContent ? originSqlContent : "",
formulaId: originSqlContent ? formulaId : "",
originFormulaContent: "",
originSqlContent
};
}
if (!this.validateForm(payload)) return;
API.saveItem(params).then(res => {
if (res.status) {
if (!continueFlag) {
this.editSlideVisible = false;
}
this.initRequest();
message.success("保存成功");
resolve();
} else {
message.error(res.errormsg || "保存失败");
reject();
}
});
});
};
// 获取公式变量类型
@action
salaryAcctImportTemplateParam = (params = {}) => {
API.formualSearchGroup(params).then(res => {
if (res.status) {
this.searchGroup = res.data;
} else {
message.error(res.errormsg || "获取失败");
}
});
};
// 获取公式变量字段
@action
formualSearchField = (sourceId, params = {}) => {
API.formualSearchField({ sourceId, ...params }).then(res => {
if (res.status) {
this.searchFields = res.data;
} else {
message.error(res.errormsg || "获取失败");
}
});
};
// 保存公式
@action
saveFormual = (params) => {
return new Promise((resolve, reject) => {
API.saveFormual(params).then(res => {
if (res.status) {
message.success("保存成功");
resolve(res.data);
} else {
message.error(res.errormsg || "保存失败");
reject();
}
});
});
};
// 根据id获取formual
@action
detailFormual = (params) => {
return new Promise((resolve, reject) => {
API.detailFormual(params).then(res => {
if (res.status) {
this.formulaDetail = res.data;
resolve(res.data);
} else {
message.error(res.errormsg || "获取失败");
reject();
}
});
});
};
// 获取可以删除的列表
@action
listCanDelete = (params = {}) => {
this.modalLoading = true;
API.listCanDelete(params).then(res => {
if (res.status) {
let data = res.data;
if (res.data.list && res.data.list.length > 0) {
data.list = res.data.list.map(item => {
item = { ...item };
item.key = item.id;
return item;
});
}
this.canDeleteList = data;
} else {
message.error(res.errormsg || "获取失败");
}
this.modalLoading = false;
});
};
}