462 lines
14 KiB
JavaScript
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();
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
|
|
} |