import { action, observable, toJS } from "mobx"; import { message } from "antd"; import { WeaForm, WeaTableNew } from "comsMobx"; import { removePropertyCondition } from "../util/response"; import * as API from "../apis/welfareArchive"; // 引入API接口文件 const { TableStore } = WeaTableNew; export class ArchivesStore { @observable tableStore = new TableStore( // {dataHandle: (datas) => { // return dataSource; // }} ); @observable form = new WeaForm(); // nrew 一个form @observable condition = []; // 存储后台得到的form数据 @observable hasRight = true; // 判断用户是有权限查看当前页面: 没有权限渲染无权限页面,有权限渲染数据 @observable showSearchAd = false; // 高级搜索面板显示 @observable loading = true; // 数据加载状态 @observable dataSource = []; // Slide 表单 @observable baseFormData = {}; @observable socialSecurityForm = {}; // 社保表单 @observable accumulationFundForm = {}; // 公积金表单 @observable otherForm = {}; // 其他福利表单 // 基数表单 @observable socialSecurityPaymentForm = {}; // 社保表单 @observable accumulationFundPaymentForm = {}; // 公积金表单 @observable otherPaymentForm = {}; // 其他福利表单 @observable pageInfo = {}; // 导入预览 @observable previewCurDataList = {}; @observable previewCurDataColumns = []; @observable previewCurDataDataSource = []; @observable importResult = {}; @action initImportParams = () => { this.previewCurDataList = {}; this.previewCurDataColumns = []; this.previewCurDataDataSource = []; this.importResult = {}; }; // ** 设置导入参数 start ** @action setPreviewCurDataColumns = (previewCurDataColumns) => { this.previewCurDataColumns = previewCurDataColumns; }; @action setPreviewCurDataDataSource = (previewCurDataDataSource) => { this.previewCurDataDataSource = previewCurDataDataSource; }; @action setImportResult = (importResult) => { this.importResult = importResult; }; // ** 设置导入参数 end ** // 社保表单 @action setSocialSecurityForm = socialSecurityForm => this.socialSecurityForm = socialSecurityForm; // 公积金表单 @action setAccumulationFundForm = accumulationFundForm => this.accumulationFundForm = accumulationFundForm; // 其他福利表单 @action setOtherForm = otherForm => this.otherForm = otherForm; // 社保表单 @action setSocialSecurityPaymentForm = socialSecurityPaymentForm => this.socialSecurityPaymentForm = socialSecurityPaymentForm; // 公积金表单 @action setAccumulationFundPaymentForm = accumulationFundPaymentForm => this.accumulationFundPaymentForm = accumulationFundPaymentForm; // 其他福利基数表单 @action setOtherPaymentForm = otherPaymentForm => this.otherPaymentForm = otherPaymentForm; // 初始化操作 @action doInit = () => { this.getCondition(); // this.getTableDatas(); }; // 获得高级搜索表单数据 @action getCondition = () => { API.getCondition().then(action(res => { if (res.status) { // 接口请求成功/失败处理 let condition = removePropertyCondition(res.data.condition); this.condition = condition; this.form.initFormFields(condition); // 渲染高级搜索form表单 } else { message.error(res.msg || "接口调用失败!"); } })); }; // 渲染table数据 @action getTableDatas = (params = {}) => { this.loading = true; const formParams = this.form.getFormParams() || {}; params = { ...formParams, ...params }; API.getTable(params).then(action(res => { if (res.status) { // 接口请求成功/失败处理 this.dataSource = res.data.datas.map(item => { item = { ...item }; item.key = item.employeeId; return item; }); // this.columns = res.data.columns; this.tableStore.getDatas(res.data.dataKey.datas); this.pageInfo = res.data.pageInfo; } else { message.error(res.msg || "接口调用失败!"); } this.loading = false; })); }; @action setShowSearchAd = bool => this.showSearchAd = bool; // 高级搜索 - 搜索 @action doSearch = () => { this.getTableDatas(); this.showSearchAd = false; }; // 查询档案基本信息表单 @action getBaseForm = (employeeId, welfareTypeEnum = "", paymentOrganization = "") => { API.getBaseForm({ employeeId, welfareTypeEnum, paymentOrganization }).then(action(res => { if (res.status) { if (welfareTypeEnum == "") { this.baseFormData = res.data.data; } else if (welfareTypeEnum == "SOCIAL_SECURITY") { this.socialSecurityForm = res.data; } else if (welfareTypeEnum == "ACCUMULATION_FUND") { this.accumulationFundForm = res.data; } else if (welfareTypeEnum == "OTHER") { this.otherForm = res.data; } // if(res.data && res.data.data && res.data.data.id) { // this.getPaymentForm(employeeId, welfareTypeEnum, res.data.data.id) // } } else { message.error(res.errormsg || "获取失败"); } })); }; // 查询档案缴纳基数表单 @action getPaymentForm = (employeeId, welfareTypeEnum, schemeId, paymentOrganization = "", isChange = false) => { API.getPaymentForm({ employeeId, welfareTypeEnum, schemeId, paymentOrganization }).then(res => { if (res.status) { let obj = {}; const { items } = res.data; const [baseList] = items; if (!_.isEmpty(baseList.items)) { _.map(baseList.items, item => { obj = { ...obj, [item["domkey"][0]]: "" }; }); } if (welfareTypeEnum === "SOCIAL_SECURITY") { this.socialSecurityPaymentForm = res.data.data ? { ...res.data, data: { ...obj, ...res.data.data } } : { ...res.data, data: obj }; if (isChange) { const socialSecurityPaymentData = toJS(this.socialSecurityPaymentForm).data; const socialSecurityPaymentItems = toJS(this.socialSecurityPaymentForm).items[0].items; const tmpV = socialSecurityPaymentItems.reduce((pre, cur) => { const { domkey, max, min } = cur; const minNum = !_.isNil(min) ? Number(min) : 0, maxNum = !_.isNil(max) ? Number(max) : 0; const val = socialSecurityPaymentData[domkey[0]]; return Object.assign(pre, { [domkey[0]]: (val < minNum && !!minNum) ? minNum : (val > maxNum && !!maxNum) ? maxNum : val }); }, {}); this.setSocialSecurityPaymentForm({ ...toJS(this.socialSecurityPaymentForm), data: { ...socialSecurityPaymentData, ...tmpV } }); } } else if (welfareTypeEnum === "ACCUMULATION_FUND") { this.accumulationFundPaymentForm = res.data.data ? { ...res.data, data: { ...obj, ...res.data.data } } : { ...res.data, data: obj }; if (isChange) { const accumulationFundPaymentData = toJS(this.accumulationFundPaymentForm).data; const accumulationFundPaymentItems = toJS(this.accumulationFundPaymentForm).items[0].items; const tmpV = accumulationFundPaymentItems.reduce((pre, cur) => { const { domkey, max, min } = cur; const minNum = !_.isNil(min) ? Number(min) : 0, maxNum = !_.isNil(max) ? Number(max) : 0; const val = accumulationFundPaymentData[domkey[0]]; return Object.assign(pre, { [domkey[0]]: (val < minNum && !!minNum) ? minNum : (val > maxNum && !!maxNum) ? maxNum : val }); }, {}); this.setAccumulationFundPaymentForm({ ...toJS(this.accumulationFundPaymentForm), data: { ...accumulationFundPaymentData, ...tmpV } }); } } else if (welfareTypeEnum === "OTHER") { this.otherPaymentForm = res.data.data ? { ...res.data, data: { ...obj, ...res.data.data } } : { ...res.data, data: obj }; if (isChange) { const otherPaymentData = toJS(this.otherPaymentForm).data; const otherPaymentItems = toJS(this.otherPaymentForm).items[0].items; const tmpV = otherPaymentItems.reduce((pre, cur) => { const { domkey, max, min } = cur; const minNum = !_.isNil(min) ? Number(min) : 0, maxNum = !_.isNil(max) ? Number(max) : 0; const val = otherPaymentData[domkey[0]]; return Object.assign(pre, { [domkey[0]]: (val < minNum && !!minNum) ? minNum : (val > maxNum && !!maxNum) ? maxNum : val }); }, {}); this.setOtherPaymentForm({ ...toJS(this.otherPaymentForm), data: { ...otherPaymentData, ...tmpV } }); } } } }); }; // 保存表单 @action save = (welfareType, paymentOrganization) => { let baseForm = ""; let paymentForm = ""; if (welfareType === "SOCIAL_SECURITY") { baseForm = JSON.stringify({ ...this.socialSecurityForm.data, paymentOrganization }); if (this.socialSecurityForm.data.socialSchemeId) { const socialSecurityPaymentData = toJS(this.socialSecurityPaymentForm).data; const socialSecurityPaymentItems = toJS(this.socialSecurityPaymentForm).items[0].items; const payload = socialSecurityPaymentItems.reduce((pre, cur) => { const { domkey } = cur; return Object.assign(pre, { [domkey[0]]: socialSecurityPaymentData[domkey[0]] ? socialSecurityPaymentData[domkey[0]].toString() : "0" }); }, {}); paymentForm = JSON.stringify(payload); } } else if (welfareType === "ACCUMULATION_FUND") { baseForm = JSON.stringify({ ...this.accumulationFundForm.data, paymentOrganization }); if (this.accumulationFundForm.data.fundSchemeId) { const accumulationFundPaymentData = toJS(this.accumulationFundPaymentForm).data; const accumulationFundPaymentItems = toJS(this.accumulationFundPaymentForm).items[0].items; const payload = accumulationFundPaymentItems.reduce((pre, cur) => { const { domkey } = cur; return Object.assign(pre, { [domkey[0]]: accumulationFundPaymentData[domkey[0]] ? accumulationFundPaymentData[domkey[0]].toString() : "0" }); }, {}); paymentForm = JSON.stringify(payload); } } else if (welfareType === "OTHER") { baseForm = JSON.stringify({ ...this.otherForm.data, paymentOrganization }); if (this.otherForm.data.otherSchemeId) { const otherPaymentData = toJS(this.otherPaymentForm).data; const otherPaymentItems = toJS(this.otherPaymentForm).items[0].items; const payload = otherPaymentItems.reduce((pre, cur) => { const { domkey } = cur; return Object.assign(pre, { [domkey[0]]: otherPaymentData[domkey[0]] ? otherPaymentData[domkey[0]].toString() : "0" }); }, {}); paymentForm = JSON.stringify(payload); } } return new Promise((resolve, reject) => { API.save({ welfareType, baseForm, paymentForm }).then(res => { if (res.status) { message.success("保存成功", 1); resolve(); // this.getTableDatas() } else { message.error(res.errormsg || "保存失败", 1); reject(); } }); }); }; // 导入模板下载 @action exportTempateDownload = (params = {}) => { API.exportCurData(params); }; // 导入预览 @action previewCurData = (params) => { API.previewCurData(params).then(res => { if (res.status) { this.previewCurDataList = res.data; this.previewCurDataColumns = res.data.headers.map((item, index) => { let column = {}; column.title = item; column.dataIndex = "" + index; column.key = index + ""; return column; }); this.previewCurDataDataSource = res.data.list.map((item) => { let data = {}; item.map((i, index) => { data[index + ""] = i; }); return data; }); } else { message.error(res.errormsg || "获取失败", 1); } }); }; // 导入 @action importBatch = (params) => { return new Promise((resolve, reject) => { API.importBatch(params).then(res => { if (res.status) { this.importResult = res.data; resolve(); } else { message.error(res.errormsg || "导入失败", 1); reject(); } }); }); }; // 导出档案 @action exportArchives = (ids = "") => { API.exportArchives(ids); }; }