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

462 lines
14 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';
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 salarySendDetailBaseInfo = {}; // 工资单详情基础信息
@observable salarySendDetailDataSource = []; // 详情列表DataSource
@observable salarySendDetailTableStore = new TableStore(); // 详情列表store
@observable detailListConditionForm = new WeaForm(); // 详情页搜索条件
@observable detailListShowSearchAd = false; // 详情页是否展开搜索面板
@observable detailListCondition = []; // 详情页搜索条件
// **** 工资单发放页 ****
@observable salaryGrantDataSource = [];
@observable salaryGrantTableStore = new TableStore();
@observable grantListConditionForm = new WeaForm(); // 详情页搜索条件
@observable grantListShowSearchAd = false; // 详情页是否展开搜索面板
@observable grantListCondition = []; // 详情页搜索条件
@observable canGrantDataSource = []; // 可以发送的列表
@observable canGrantColumns = []; // 可以发送的列名
@observable canWithdrawDataSource = []; // 可以撤回的列表
@observable canWidthdrawColumns = []; // 可以撤回的列表列名
@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
doInit = () => {
// this.getCondition();
// this.getTableDatas();
}
// 获得高级搜索表单数据
@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数据
@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 = {}) => {
API.getPayrollTemplateList(params).then(res => {
if(res.status) {
this.templateStore.getDatas(res.data.datas);
} else {
message.error(res.errormsg || "获取失败");
}
})
}
// 工资单模板-获取工资单模板基础设置表单
@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
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
}
API.changePayrollDefaultUse(params).then(res => {
if(res.status) {
message.success("设置成功");
} else {
message.success(res.errormsg || "设置失败")
}
})
}
// 工资单模板-复制工资单模板
@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: []}) => {
API.getPayrollList(parmas).then(res => {
if(res.status) {
this.salarySendDataSource = res.data.datas
this.salarySendTableStore.getDatas(res.data.dataKey.datas)
} else {
message.error(res.errormsg || "获取失败");
}
})
}
// 工资单发放-工资单发放基本信息
@action
getPayrollInfo = (id) => {
API.getPayrollInfo({id}).then(res => {
if(res.status) {
this.salarySendDetailBaseInfo = res.data
} else {
message.error(res.errormsg || "获取失败")
}
})
}
// 工资单发放-工资单发放信息列表
@action
getInfoList = (params = {}) => {
API.getInfoList(params).then(res => {
if(res.status) {
this.salaryGrantTableStore.getDatas(res.data.dataKey.datas)
this.salaryGrantDataSource = res.data.datas
} else {
message.error(res.errormsg || "获取失败")
}
})
}
// 工资单-工资单发放详情列表
@action
getPayrollDetailList = (params) => {
API.getPayrollDetailList(params).then(res => {
if(res.status) {
this.salarySendDetailTableStore.getDatas(res.data.dataKey.datas)
this.salarySendDetailDataSource = res.data.datas
} else {
message.error(res.errormsg || "获取失败")
}
})
}
// 工资单详情页 - 获得高级搜索表单数据
@action
getPayrollDetailSa = (params = {}) => {
API.getPayrollDetailSa(params).then(res => {
if (res.status) { // 接口请求成功/失败处理
this.detailListCondition = res.data.condition;
this.detailListConditionForm.initFormFields(res.data.condition); // 渲染高级搜索form表单
} else {
message.error(res.errormsg || '接口调用失败!')
}
});
}
// 工资单发放-导出-工资单发放详情列表
@action
exportDetailList = (params = {}) => {
API.exportDetailList(params)
}
// 工资单-获取工资单发放高级搜索
@action
getPaySa = (params = {}) => {
API.getPaySa(params).then(res => {
if(res.status) {
this.grantListCondition = res.data.condition;
this.grantListConditionForm.initFormFields(res.data.condition);
} else {
message.error(res.errormsg || "接口调用失败")
}
})
}
// 工资单发放-工资单批量发放信息列表
@action
batchSendInfoList = (params = {}) => {
API.batchSendInfoList(params).then(res => {
if(res.status) {
this.canGrantDataSource = res.data.datas;
this.canGrantColumns = res.data.columns;
// alert("this.canGrantColumns:" + JSON.stringify(this.canGrantColumns))
} else {
message.error(res.errormsg || "获取失败")
}
})
}
// 工资单发放-工资单批量撤回信息列表
@action
batchWithdrawInfoList = (params = {}) => {
API.batchWithdrawInfoList(params).then(res => {
if(res.status) {
this.canWithdrawDataSource = res.data.datas
this.canWidthdrawColumns = res.data.columns
} 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();
}
})
})
}
}