import { action, observable, toJS } from "mobx"; import { message } from "antd"; import { WeaForm, WeaTableNew } from "comsMobx"; import * as API from "../apis/payroll"; // 引入API接口文件 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 replenishSalaryTemplateSalaryItemSet = []; // 补发工资单模版基础表单 @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 setReplenishSalaryTemplateSalaryItemSet = replenishSalaryTemplateSalaryItemSet => (this.replenishSalaryTemplateSalaryItemSet = replenishSalaryTemplateSalaryItemSet); @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({ replenishRuleSetOption: res.data.replenishRuleSetOption, templateBaseData: this.templateBaseData, salarySobOptions: this.salarySobOptions }); } else { message.errro(res.errormsg || "获取失败"); reject(); } }); }); }; // 工资单模板-获取工资单模板显示设置表单 @action getPayrollShowForm = (id = "") => { const params = { id }; const salaryTemplateShowSetStorage = window.localStorage.getItem("salary-showset") || "{}"; API.getPayrollShowForm(params).then(res => { if (res.status) { if (id !== "") { this.salaryItemSet = res.data.salaryTemplateSalaryItemSet; this.replenishSalaryTemplateSalaryItemSet = res.data.salaryTemplateSalaryItemSet; } this.salaryTemplateShowSet = { ...res.data.salaryTemplateShowSet.data, ...JSON.parse(salaryTemplateShowSetStorage) }; } 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); } }; // 拼装保存参数 convertParams = () => { let params = { ...this.templateBaseData, ...this.salaryTemplateShowSet }; params.replenishRule = (!params.replenishRule || params.reissueRule === "0") ? "ALL" : params.replenishRule; 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 = toJS(this.salaryItemSet); params.replenishSalaryItemSetting = toJS(this.replenishSalaryTemplateSalaryItemSet); return params; }; // 工资单模板-新建工资单模板 @action fetchSavePayroll = () => { return new Promise((resolve, reject) => { const params = this.convertParams(); API.savePayroll(params).then(res => { if (res.status) { message.success("保存成功"); this.getPayrollTemplateList(); resolve(); } else { message.error(res.errormsg || "保存失败"); reject(); } }).catch(() => reject()); }); }; // 工资单模板-更新工资单模板 @action fetchUpdatePayroll = id => { return new Promise((resolve, reject) => { let params = this.convertParams(); params.id = id; 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(); } }); }); }; }