/** * 数据集操作工具类 * @author cls * @date 2021-03-12 */ import axios from "@birt/funclib/AxiosUtil"; import { $CONST } from "@birt/funclib/ConstUtil" export const StoreUtil = { /** * showdoc * @catalog JS工具类/StoreUtil * @title loadMethodEap5 * @description eap5 数据集加载远程数据方法 * @method static * @url import { StoreUtil } from '@birt/funclib/StoreUtil.js' * @param store 必选 当前数据集实例 * @param cdion 必选 查询条件 * @param option.url 必选 数据请求路径 * @param resolveLoadData 必选 查询结果回调 * @return {status:200,dataPack:{rows:[]}} 标准数据包返回 */ loadMethodEap5(store, cdion, option, resolveLoadData) { let param = {}; let __body = {}; // 附加数据集模型路径 param[$CONST.MODELFILEPATH] = option[$CONST.MODELFILEPATH]; // 附加分页条件 if (store._isPagging()) { param[$CONST.PAGESIZE] = store.getPageSize(); param[$CONST.PAGENUM] = store.getPageNum(); if (option[$CONST.RETURNCOUNT] == undefined) { param[$CONST.RETURNCOUNT] = option.loadCdionChange && store.getReturnCount(); } else { param[$CONST.RETURNCOUNT] = option[$CONST.RETURNCOUNT] && (param[$CONST.PAGENUM] == 1); } } // 附加查询条件 if (cdion) { __body[$CONST.QUERYCDIONS] = cdion; } // 附加排序 let orderBy = store.getSort(); if (orderBy.length > 0) { __body[$CONST.ORDERBY] = orderBy; } // 附加__body参数包 param[$CONST.__BODY] = JSON.stringify(__body); // 执行查询 axios.post(option.url, param) .then(response => { if (response[$CONST.OUTPARAMETER]) { option.recordCount = response[$CONST.OUTPARAMETER][$CONST.TOTALRECORDCOUNT]; } resolveLoadData.call(store, response[$CONST.DATAPACK][$CONST.ROWS], option); }) .catch(error => { console.log(error); }); }, // 获取单个数据集保存包 _getSaveDataItem(store) { let mpath = store.getModelFilePath(); let data = store.getDirtyData(); if (mpath && data.length > 0) { return { modelFilePath: mpath, data: data }; } }, // 获取保存数据包 getSaveData(store) { let saveData = []; if (Array.isArray(store)) { store.forEach(ds => { let saveItem = this._getSaveDataItem(ds); if (saveItem) { saveData.push(saveItem); } }) } else { let saveItem = this._getSaveDataItem(store); if (saveItem) { saveData.push(saveItem); } } return saveData; }, /** * showdoc * @catalog JS工具类/StoreUtil * @title saveDataEap5 * @description eap5 数据集保存数据 * @method static * @url import { StoreUtil } from '@birt/funclib/StoreUtil.js' * @param store 必选 当前数据集实例,或数据集组 * @param option.url 必选 数据请求路径 * @param saveSucc 可选 保存成功回调 */ saveDataEap5(store, option, saveSucc) { let saveData = this.getSaveData(store); axios.post(option.url, { __body: JSON.stringify(saveData), __version: "1.0.0" }).then((res) => { // 保存成功回调 saveSucc && saveSucc.call(store, saveData, res); }); } };