572 lines
16 KiB
JavaScript
572 lines
16 KiB
JavaScript
import { observable, action, toJS } from "mobx";
|
|
import { message } from "antd";
|
|
import { WeaForm, WeaTableNew } from "comsMobx";
|
|
|
|
import * as API from "../apis/payroll"; // 引入API接口文件
|
|
import { notNull } from "../util/validate";
|
|
import { removePropertyCondition } from "../util/response";
|
|
|
|
const { TableStore } = WeaTableNew;
|
|
|
|
export class payrollStore {
|
|
@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 templateStore = new TableStore(); // 模板设置列表
|
|
// 基础设置表单
|
|
@observable templateBaseData = {}; // 基础信息表单数据
|
|
@observable salarySobOptions = []; // 账套列表
|
|
// 显示设置表单
|
|
@observable salaryTemplateShowSet = {}; // 显示设置基础表单
|
|
@observable salaryItemSet = []; // 显示设置薪资项
|
|
|
|
// **** 工资单页面 ****
|
|
@observable salarySendTableStore = new TableStore(); // 工资单列表
|
|
@observable salarySendDataSource = [];
|
|
@observable pageInfo = {};
|
|
|
|
// **** 工资单详情页 ****
|
|
@observable salarySendDetailBaseInfo = {}; // 工资单详情基础信息
|
|
@observable salarySendDetailDataSource = []; // 详情列表DataSource
|
|
@observable salarySendDetailTableStore = new TableStore(); // 详情列表store
|
|
@observable detailListConditionForm = new WeaForm(); // 详情页搜索条件
|
|
@observable detailListShowSearchAd = false; // 详情页是否展开搜索面板
|
|
@observable detailListCondition = []; // 详情页搜索条件
|
|
@observable salarySendDetailPageInfo = {};
|
|
|
|
// **** 工资单发放页 ****
|
|
@observable salaryGrantDataSource = [];
|
|
@observable salaryGrantPageInfo = {};
|
|
@observable salaryGrantTableStore = [];
|
|
@observable grantListConditionForm = new WeaForm(); // 详情页搜索条件
|
|
@observable grantListShowSearchAd = false; // 详情页是否展开搜索面板
|
|
@observable grantListCondition = []; // 详情页搜索条件
|
|
@observable canGrantDataSource = []; // 可以发送的列表
|
|
@observable canGrantColumns = []; // 可以发送的列名
|
|
@observable canGrantPageInfo = {}; // 可以发送列表分页对象
|
|
@observable canWithdrawDataSource = []; // 可以撤回的列表
|
|
@observable canWidthdrawColumns = []; // 可以撤回的列表列名
|
|
@observable canWithdrawPageInfo = {}; // 可以撤回列表分页对象
|
|
|
|
@action
|
|
setGrantListShowSearchAd = grantListShowSearchAd =>
|
|
(this.grantListShowSearchAd = grantListShowSearchAd);
|
|
|
|
// 详情页是否展开搜索面板
|
|
@action
|
|
setDetailListShowSearchAd = detailListShowSearchAd =>
|
|
(this.detailListShowSearchAd = detailListShowSearchAd);
|
|
|
|
// 基础信息表单数据
|
|
@action
|
|
setTemplateBaseData = templateBaseData =>
|
|
(this.templateBaseData = templateBaseData);
|
|
|
|
// 显示设置基础表单
|
|
@action
|
|
setSalaryTemplateShowSet = salaryTemplateShowSet =>
|
|
(this.salaryTemplateShowSet = salaryTemplateShowSet);
|
|
|
|
@action
|
|
setSalaryItemSet = salaryItemSet => (this.salaryItemSet = salaryItemSet);
|
|
|
|
// 初始化操作
|
|
@action
|
|
doInit = () => {
|
|
// this.getCondition();
|
|
// this.getTableDatas();
|
|
};
|
|
|
|
// 获得高级搜索表单数据
|
|
@action
|
|
getCondition = () => {
|
|
API.getCondition().then(
|
|
action(res => {
|
|
if (res.api_status) {
|
|
// 接口请求成功/失败处理
|
|
let condition = removePropertyCondition(res.condition);
|
|
this.form.initFormFields(condition); // 渲染高级搜索form表单
|
|
} else {
|
|
message.error(res.msg || "接口调用失败!");
|
|
}
|
|
})
|
|
);
|
|
};
|
|
|
|
// 渲染table数据
|
|
@action
|
|
getTableDatas = params => {
|
|
this.loading = true;
|
|
const formParams = this.form.getFormParams() || {};
|
|
params = params || formParams;
|
|
API.getTableDatas(params).then(
|
|
action(res => {
|
|
if (res.api_status) {
|
|
// 接口请求成功/失败处理
|
|
this.tableStore.getDatas(res.datas); // table 请求数据
|
|
this.hasRight = res.hasRight;
|
|
} else {
|
|
message.error(res.msg || "接口调用失败!");
|
|
}
|
|
this.loading = false;
|
|
})
|
|
);
|
|
};
|
|
|
|
@action setShowSearchAd = bool => (this.showSearchAd = bool);
|
|
|
|
// 高级搜索 - 搜索
|
|
@action
|
|
doSearch = () => {
|
|
this.getTableDatas();
|
|
this.showSearchAd = false;
|
|
};
|
|
|
|
// 工资单模板-工资单模板列表
|
|
@action
|
|
getPayrollTemplateList = (params = {}) => {
|
|
this.loading = true;
|
|
API.getPayrollTemplateList(params).then(res => {
|
|
if (res.status) {
|
|
this.templateStore.getDatas(res.data.datas);
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
this.loading = false;
|
|
});
|
|
};
|
|
|
|
// 工资单模板-获取工资单模板基础设置表单
|
|
@action
|
|
getPayrollBaseForm = (id = "") => {
|
|
let params = {
|
|
id
|
|
};
|
|
return new Promise((resolve, reject) => {
|
|
API.getPayrollBaseForm(params).then(res => {
|
|
if (res.status) {
|
|
let response = res.data.salaryTemplateBaseSet;
|
|
let templateBaseData = response.data;
|
|
templateBaseData.salarySob =
|
|
templateBaseData.salarySob != undefined
|
|
? templateBaseData.salarySob + ""
|
|
: null;
|
|
this.templateBaseData = templateBaseData; // 基础信息表单数据
|
|
|
|
this.salarySobOptions = response.salarySobOptions
|
|
? response.salarySobOptions.map(item => {
|
|
let result = {};
|
|
result.showname = item.name;
|
|
result.key = item.id + "";
|
|
result.selected = false;
|
|
return result;
|
|
})
|
|
: [];
|
|
resolve({
|
|
templateBaseData: this.templateBaseData,
|
|
salarySobOptions: this.salarySobOptions
|
|
});
|
|
} else {
|
|
message.errro(res.errormsg || "获取失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// 工资单模板-获取工资单模板显示设置表单
|
|
@action
|
|
getPayrollShowForm = (id = "") => {
|
|
let params = {
|
|
id
|
|
};
|
|
API.getPayrollShowForm(params).then(res => {
|
|
if (res.status) {
|
|
if (id !== "") {
|
|
this.salaryItemSet = res.data.salaryTemplateSalaryItemSet;
|
|
}
|
|
this.salaryTemplateShowSet = res.data.salaryTemplateShowSet.data;
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单模板-获取薪资项目设置
|
|
@action
|
|
getPayrollItemList = (salarySobId = "") => {
|
|
let params = {
|
|
salarySobId
|
|
};
|
|
API.getPayrollItemList(params).then(res => {
|
|
if (res.status) {
|
|
this.salaryItemSet = res.data;
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 初始化显示设置表单
|
|
@action
|
|
initShowSettingForm = (id = "") => {
|
|
this.getPayrollShowForm(id);
|
|
if (id == "") {
|
|
this.getPayrollItemList(this.templateBaseData.salarySob);
|
|
}
|
|
};
|
|
|
|
// 校验显示设置表单
|
|
validateSalaryTemplateShowSet = () => {
|
|
if (!notNull(this.salaryTemplateShowSet.theme)) {
|
|
message.warning("工资单主题不能为空");
|
|
return false;
|
|
}
|
|
return true;
|
|
};
|
|
|
|
// 拼装保存参数
|
|
convertParams = () => {
|
|
let params = { ...this.templateBaseData, ...this.salaryTemplateShowSet };
|
|
params.salarySobId = params.salarySob;
|
|
params.emailStatus = params.emailStatus ? params.emailStatus : false;
|
|
params.msgStatus = params.msgStatus ? params.msgStatus : false;
|
|
params.salaryItemNullStatus = params.salaryItemNullStatus
|
|
? params.salaryItemNullStatus
|
|
: false;
|
|
params.salaryItemZeroStatus = params.salaryItemZeroStatus
|
|
? params.salaryItemZeroStatus
|
|
: false;
|
|
params.salaryItemSetting = this.salaryItemSet;
|
|
return params;
|
|
};
|
|
|
|
// 工资单模板-新建工资单模板
|
|
@action
|
|
fetchSavePayroll = () => {
|
|
if (!this.validateSalaryTemplateShowSet()) {
|
|
return false;
|
|
}
|
|
let params = this.convertParams();
|
|
return new Promise((resolve, reject) => {
|
|
API.savePayroll(params).then(res => {
|
|
if (res.status) {
|
|
message.success("保存成功");
|
|
this.getPayrollTemplateList();
|
|
resolve();
|
|
} else {
|
|
message.error(res.errormsg || "保存失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// 工资单模板-更新工资单模板
|
|
@action
|
|
fetchUpdatePayroll = id => {
|
|
if (!this.validateSalaryTemplateShowSet()) {
|
|
return false;
|
|
}
|
|
let params = this.convertParams();
|
|
params.id = id;
|
|
return new Promise((resolve, reject) => {
|
|
API.updatePayroll(params).then(res => {
|
|
if (res.status) {
|
|
message.success("保存成功");
|
|
this.getPayrollTemplateList();
|
|
resolve();
|
|
} else {
|
|
message.error(res.errormsg || "保存失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
//工资单-获取薪资账套下拉列表
|
|
@action
|
|
getPayrollTemplateLedgerList = () => {
|
|
return new Promise((resolve, reject) => {
|
|
API.getPayrollTemplateLedgerList().then(res => {
|
|
if (res.status) {
|
|
this.payrollTemplateLedgerList = res.data.map(item => {
|
|
let result = {};
|
|
result.showname = item.content;
|
|
result.selected = false;
|
|
result.key = item.id;
|
|
return result;
|
|
});
|
|
resolve(this.payrollTemplateLedgerList);
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// 工资单模板-工资单模板默认使用
|
|
@action
|
|
changePayrollDefaultUse(id = "") {
|
|
if (id == "") {
|
|
message.warning("id必填");
|
|
return;
|
|
}
|
|
let params = {
|
|
id
|
|
};
|
|
return new Promise((resolve, reject) => {
|
|
API.changePayrollDefaultUse(params).then(res => {
|
|
if (res.status) {
|
|
message.success("设置成功");
|
|
resolve();
|
|
} else {
|
|
message.success(res.errormsg || "设置失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// 工资单模板-复制工资单模板
|
|
@action
|
|
duplicatePayroll = (id, name) => {
|
|
let params = {
|
|
id,
|
|
name
|
|
};
|
|
return new Promise((resolve, reject) => {
|
|
API.duplicatePayroll(params).then(res => {
|
|
if (res.status) {
|
|
message.success("复制成功");
|
|
this.getPayrollTemplateList();
|
|
resolve();
|
|
} else {
|
|
message.error(res.errormsg || "复制失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// 工资单模板-删除工资单模板
|
|
@action
|
|
deletePayroll = ids => {
|
|
API.deletePayroll(ids).then(res => {
|
|
if (res.status) {
|
|
message.success("删除成功");
|
|
this.getPayrollTemplateList();
|
|
} else {
|
|
message.error(res.errormsg || "删除失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单-工资单发放列表
|
|
@action
|
|
getPayrollList = (parmas = { salaryYearMonth: [] }) => {
|
|
this.loading = true;
|
|
API.getPayrollList(parmas).then(res => {
|
|
if (res.status) {
|
|
this.salarySendDataSource = res.data.datas;
|
|
this.salarySendTableStore.getDatas(res.data.dataKey.datas);
|
|
this.pageInfo = res.data.pageInfo;
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
this.loading = false;
|
|
});
|
|
};
|
|
|
|
// 工资单发放-工资单发放基本信息
|
|
@action
|
|
getPayrollInfo = id => {
|
|
API.getPayrollInfo({ id }).then(res => {
|
|
if (res.status) {
|
|
this.salarySendDetailBaseInfo = res.data;
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单发放-工资单发放信息列表
|
|
@action
|
|
getInfoList = (params = {}) => {
|
|
let form = this.grantListConditionForm.getFormParams();
|
|
params = { ...form, ...params };
|
|
API.getInfoList(params).then(res => {
|
|
if (res.status) {
|
|
this.salaryGrantTableStore = res.data.columns;
|
|
this.salaryGrantDataSource = res.data.list;
|
|
this.salaryGrantPageInfo = {
|
|
total: res.data.total,
|
|
pageNum: res.data.pageNum
|
|
};
|
|
this.getPayrollInfo(params.salarySendId);
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单-工资单发放详情列表
|
|
@action
|
|
getPayrollDetailList = params => {
|
|
let form = this.detailListConditionForm.getFormParams() || {};
|
|
params = { ...form, ...params };
|
|
API.getPayrollDetailList(params).then(res => {
|
|
if (res.status) {
|
|
this.salarySendDetailTableStore.getDatas(res.data.dataKey.datas);
|
|
this.salarySendDetailDataSource = res.data.datas;
|
|
this.salarySendDetailPageInfo = res.data.pageInfo;
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单详情页 - 获得高级搜索表单数据
|
|
@action
|
|
getPayrollDetailSa = (params = {}) => {
|
|
API.getPayrollDetailSa(params).then(res => {
|
|
if (res.status) {
|
|
// 接口请求成功/失败处理
|
|
let condition = removePropertyCondition(res.data.condition);
|
|
this.detailListCondition = condition;
|
|
this.detailListConditionForm.initFormFields(condition); // 渲染高级搜索form表单
|
|
} else {
|
|
message.error(res.errormsg || "接口调用失败!");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单发放-导出-工资单发放详情列表
|
|
@action
|
|
exportDetailList = (params = {}) => {
|
|
API.exportDetailList(params);
|
|
};
|
|
// 工资单发放-导出-工资单发放列表
|
|
|
|
@action
|
|
exportPayroll = (params = {}) => {
|
|
API.exportPayroll(params);
|
|
};
|
|
|
|
// 工资单-获取工资单发放高级搜索
|
|
@action
|
|
getPaySa = (params = {}) => {
|
|
API.getPaySa(params).then(res => {
|
|
if (res.status) {
|
|
let condition = removePropertyCondition(res.data.condition);
|
|
this.grantListCondition = condition;
|
|
this.grantListConditionForm.initFormFields(condition);
|
|
} else {
|
|
message.error(res.errormsg || "接口调用失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单发放-工资单批量发放信息列表
|
|
@action
|
|
batchSendInfoList = (params = {}) => {
|
|
API.batchSendInfoList(params).then(res => {
|
|
if (res.status) {
|
|
this.canGrantDataSource = res.data.list;
|
|
this.canGrantColumns = res.data.columns;
|
|
this.canGrantPageInfo = {
|
|
total: res.data.total,
|
|
pageNum: res.data.pageNum
|
|
};
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
// 工资单发放-工资单批量撤回信息列表
|
|
@action
|
|
batchWithdrawInfoList = (params = {}) => {
|
|
API.batchWithdrawInfoList(params).then(res => {
|
|
if (res.status) {
|
|
let datas = res.data.list || [];
|
|
datas.map(item => {
|
|
item.key = item.id;
|
|
});
|
|
this.canWithdrawDataSource = datas;
|
|
this.canWidthdrawColumns = res.data.columns;
|
|
this.canWithdrawPageInfo = {
|
|
total: res.data.total,
|
|
pageNum: res.data.pageNum
|
|
};
|
|
} else {
|
|
message.error(res.errormsg || "获取失败");
|
|
}
|
|
});
|
|
};
|
|
|
|
//工资单-工资单发放
|
|
@action
|
|
grantPayroll = (params = {}) => {
|
|
return new Promise((resolve, reject) => {
|
|
API.grantPayroll(params).then(res => {
|
|
if (res.status) {
|
|
message.success("发送成功");
|
|
resolve();
|
|
} else {
|
|
message.error(res.errormsg || "发送失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
|
|
// 工资单-工资单撤回
|
|
@action
|
|
withdrawPayroll = (params = {}) => {
|
|
return new Promise((resolve, reject) => {
|
|
API.withdrawPayroll(params).then(res => {
|
|
if (res.status) {
|
|
message.success("撤回成功");
|
|
resolve();
|
|
} else {
|
|
message.error(res.errormsg || "撤回失败");
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
// 工资单-工资单撤回
|
|
@action
|
|
getSendBtnStatus = (params = {}) => {
|
|
return new Promise((resolve, reject) => {
|
|
API.getSendBtnStatus(params).then(res => {
|
|
if (res.status) {
|
|
resolve(res.data);
|
|
} else {
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
// 工资单-流程发起
|
|
@action
|
|
grantProxy = (params = {}) => {
|
|
return new Promise((resolve, reject) => {
|
|
API.grantProxy(params).then(res => {
|
|
if (res.status) {
|
|
resolve(res.data);
|
|
} else {
|
|
reject();
|
|
}
|
|
});
|
|
});
|
|
};
|
|
}
|