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 = new TableStore(); @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 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.getDatas(res.data.dataKey.datas) this.salaryGrantDataSource = res.data.datas this.salaryGrantPageInfo = res.data.pageInfo } 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 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) { let datas = res.data.datas || []; datas.map(item => { item.key = item.id }) this.canGrantDataSource = datas this.canGrantColumns = res.data.columns; this.canGrantPageInfo = res.data.pageInfo // alert("this.canGrantColumns:" + JSON.stringify(this.canGrantColumns)) } else { message.error(res.errormsg || "获取失败") } }) } // 工资单发放-工资单批量撤回信息列表 @action batchWithdrawInfoList = (params = {}) => { API.batchWithdrawInfoList(params).then(res => { if(res.status) { let datas = res.data.datas || []; datas.map(item => { item.key = item.id }) this.canWithdrawDataSource = datas this.canWidthdrawColumns = res.data.columns this.canWithdrawPageInfo = res.data.pageInfo } 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(); } }) }) } }