import { observable, action, toJS } from 'mobx'; import { message } from 'antd'; import { WeaForm, WeaTableNew } from 'comsMobx'; import moment from 'moment' import * as API from '../apis/archive'; // 引入API接口文件 import { notNull } from '../util/validate' const { TableStore } = WeaTableNew; export class salaryFileStore { @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 importType = []; @observable previewColumns = []; @observable previewDataSource = []; @observable dataSource = []; @observable detailForm= {} @observable pageInfo = {}; // 分页数据 @observable salaryArchiveTaxAgentForm = {} @observable salaryItemChangeForm = {} @observable taxAgentList = [] @observable salaryItemList = [] @observable singleSalaryItemList = [] @observable singleTaxAgentList = [] @observable currentId = "" @observable editAgentVisible = false // ** 设置导入参数 start ** @action setPreviewDataSource = (previewDataSource) => { this.previewDataSource = previewDataSource } // ** 设置导入参数 end ** // 初始化操作 @action doInit = () => { // this.getCondition(); this.getTableDatas(); this.getImportTypes(); } // 获取导入类型 @action getImportTypes = () => { API.getImportTypes().then(res => { if(res.status) { this.importType = res.data } else { message.error(res.errormsg || "获取失败") } }) } // 获得高级搜索表单数据 @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数据1 @action getTableDatas = (params) => { this.loading = true; const formParams = this.form.getFormParams() || {}; params = {...formParams, ...params} API.getArchiveList(params).then(action(res => { if (res.status) { // 接口请求成功/失败处理 this.tableStore.getDatas(res.data.dataKey.datas); // table 请求数据 this.dataSource = res.data.pageInfo.list.map(item => { item.key = item.id return item; }) this.pageInfo = res.data.pageInfo } else { message.error(res.errormsg || '接口调用失败!') } this.loading = false; })); } @action setShowSearchAd = bool => this.showSearchAd = bool; // 高级搜索 - 搜索 @action doSearch = () => { this.getTableDatas(); this.showSearchAd = false; } // 导入预览 @action importPreview = (params) => { API.importPreview(params).then(res => { if(res.status) { let headers = res.data.headers this.previewColumns = headers.map((item, index) => { return { key: index, title: item, dataIndex: index } }) let list = res.data.list; this.previewDataSource = list.map(item => { let result = {} item.map((i, index) => { result[index] = i }) return result; }) } else { message.error(res.errormsg || "获取数据失败") } }) } // 导入档案 @action importSalaryArchive = (params) => { return new Promise((resolve, reject) => { API.importSalaryArchive(params).then(res => { if(res.status) { // message.success("导入成功") this.getTableDatas(); resolve(res.data) } else { message.error(res.errormsg || "接口异常") reject() } }) }) } // 导出档案 @action exportSalaryArchive = (ids = "") => { API.exportSalaryArchive(ids) } // 获取详情 @action getArchiveForm = (salaryArchiveId) => { API.getArchiveForm({salaryArchiveId}).then(res => { if(res.status) { this.detailForm = res.data } else { message.error(res.errormsg || "获取失败") } }) } // 个税义务人表单 valideTaxAgentForm(params) { if(!notNull(params.effectiveTime)) { message.warning("生效日期不能为空") return false } if(!notNull(params.adjustReason)) { message.warning("调整原因不能为空") return false } if(!notNull(params.taxAgentId)) { message.warning("调整后个税义务人不能为空") return false } return true; } // 薪资档案-保存个税扣缴义务人调整 @action saveTaxAgent = (params) => { if(!this.valideTaxAgentForm(params)) { return } return new Promise((resolve, reject) => { API.saveTaxAgent(params).then(res => { if(res.status) { message.success("保存成功"); resolve() } else { message.error(res.errormsg || "保存失败") reject() } }) }) } // 调整-义务扣缴人-调整表单 @action getTaxAgentForm = (salaryArchiveId) => { return new Promise((resolve, reject) => { API.getTaxAgentForm({salaryArchiveId}).then(res => { if(res.status) { this.salaryArchiveTaxAgentForm = res.data.salaryArchiveTaxAgentForm resolve() } else { message.error(res.errormsg || "获取失败") reject() } }) }) } convertForm = (resData) => { let salaryItemChangeForm = {} salaryItemChangeForm.adjustReasonList = resData.salaryArchiveItemForm.adjustReasonList.map(item => { item = {...item} item.key = item.id; item.showname = item.content item.selected = false return item }) salaryItemChangeForm.salaryItemList = resData.salaryArchiveItemDetail.salaryItemList.map(item => { item = {...item} item.key = item.id; item.showname = item.content item.selected = false return item }) salaryItemChangeForm.columns = resData.salaryArchiveItemDetail.columns.map(item => { let result = {} result.title = item if(item == "薪资项目") { result.dataIndex = "salaryItem" result.key = "salaryItem" } if(item == "调整前") { result.dataIndex = "salaryBefore" result.key = "salaryBefore" } if(item == "调整后") { result.dataIndex = "adjustAfter" result.key = "adjustAfter" } return result }) salaryItemChangeForm.dataSource = resData.salaryArchiveItemDetail.list.map((item, index) => { item = {...item} item.key = (index + 1).toString() return item }) let effectiveTime = resData.salaryArchiveItemForm.effectiveTime if(effectiveTime) { salaryItemChangeForm.effectiveTime = moment(new Date(effectiveTime)).format("YYYY-MM-DD") } salaryItemChangeForm.description = resData.salaryArchiveItemForm.description salaryItemChangeForm.adjustReason = resData.salaryArchiveItemForm.adjustReason return salaryItemChangeForm } // 薪资档案-获取薪资项目调整表单 @action getSalaryItemForm = (id) => { return new Promise((resolve, reject) => { API.getSalaryItemForm({salaryArchiveItemId: id}).then(res => { if(res.status) { this.salaryItemChangeForm = this.convertForm(res.data) resolve() } else { message.error(res.errormsg || "获取失败") reject() } }) }) } // 调整记录 个税义务人调整列表 @action adjustRecordTaxAgentList = (params) => { API.adjustRecordTaxAgentList(params).then(res => { if(res.status) { this.taxAgentList = res.data } else { message.error(res.errormsg || "获取失败") } }) } // 调整记录 薪资项目调整记录 @action adjustRecordSalaryItemList = (params) => { API.adjustRecordSalaryItemList(params).then(res => { if(res.status) { this.salaryItemList = res.data; } else { message.error(res.errormsg || "获取失败") } }) } // slide 薪资项目列表 @action fetchSingleSalaryItemList = (params) => { API.singleSalaryItemList(params).then(res => { if(res.status) { this.singleSalaryItemList = res.data } else { message.error(res.errormsg || "获取失败"); } }) } // slide 个税义务人列表 @action fetchSingleTaxAgentList = (params) => { API.singleTaxAgentList(params).then(res => { if(res.status) { this.singleTaxAgentList = res.data } else { message.error(res.errormsg || "获取失败") } }) } // 设置当前查看的数据id @action setCurrentId = (id) => this.currentId = id // 设置编辑个税义务人修改表modal @action setEditAgentVisible = editAgentVisible => this.editAgentVisible = editAgentVisible; // 通过个税义务人编辑进入列表 @action getTaxAgentFormByTaxAgentId = (id) => { return new Promise((resolve, reject) => { API.getTaxAgentFormBySalaryArchiveTaxAgentId({salaryArchiveTaxAgentId: id}).then(res => { if(res.status) { let form = res.data.salaryArchiveTaxAgentForm form.effectiveTime = moment(new Date(form.effectiveTime)).format("YYYY-MM-DD") this.salaryArchiveTaxAgentForm = form resolve(form) } else { message.error(res.errormsg || "获取失败") reject() } }) }) } validateSaveSalaryForm = (params) => { if(!notNull(params.salaryArchiveId)) { message.error("档案id不能为空") return false } if(!notNull(params.effectiveTime)) { message.error("生效日期不能为空") return false } if(!notNull(params.adjustReason)) { message.error("调整原因不能为空") return false } if(!params.salaryArchiveItems || params.salaryArchiveItems.length == 0 ) { message.error("调整明细不能为空") return false } for(let i = 0; i < params.salaryArchiveItems.length; i++) { if(!notNull(params.salaryArchiveItems[i].salaryItemId)) { message.error("薪资项目不能为空") return false; } if(!notNull(params.salaryArchiveItems[i].adjustValue)) { message.error("调整后不能为空") return false; } } return true; } // 保存调薪 @action saveSalaryItem = (params) => { if(!this.validateSaveSalaryForm(params)) { return } return new Promise((resolve, reject) => { API.saveSalaryItem(params).then(res => { if(res.status) { message.success("保存成功") resolve() } else { message.error(res.errormsg || "保存失败") reject() } }) }) } // 调整=薪资项目调整-获取调整前的值 @action getSalaryItemAdjustBeforeValue = (params) => { return new Promise((resolve, reject) => { API.getSalaryItemAdjustBeforeValue(params).then(res => { if(res.status) { resolve(res.data) } else { message.error(res.errormsg || "获取失败") reject(res.errormsg) } }) }) } // 调整-薪资项目-编辑获取表单 @action getSalaryItemFormByItemId = (id) => { return new Promise((resolve, reject) => { API.getSalaryItemFormByItemId({salaryArchiveItemId: id}).then(res => { if(res.status) { this.salaryItemChangeForm = this.convertForm(res.data) resolve(this.salaryItemChangeForm) } else { message.error(res.errormsg || "获取失败") reject() } }) }) } }