UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

641 lines (640 loc) 35.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CRUDStore = exports.DATAKEYID = void 0; var tslib_1 = require("tslib"); var file_saver_1 = require("file-saver"); var mobx_state_tree_1 = require("mobx-state-tree"); var service_1 = require("./service"); var helper_1 = require("../utils/helper"); var pick_1 = (0, tslib_1.__importDefault)(require("lodash/pick")); var tpl_builtin_1 = require("../utils/tpl-builtin"); var api_1 = require("../utils/api"); var commonTableFunction_1 = require("./utils/commonTableFunction"); var lodash_1 = require("lodash"); var ServerError = /** @class */ (function (_super) { (0, tslib_1.__extends)(ServerError, _super); function ServerError() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = 'ServerError'; return _this; } return ServerError; }(Error)); // 作为前端item唯一性标识的字段-取得复杂点方便前端处理并且后端不会识别到-如果需要做表格项唯一性判断都要从这里取 exports.DATAKEYID = 'front_data_instance_unique_mark_' + Math.floor(Math.random() * 1000); exports.CRUDStore = service_1.ServiceStore.named('CRUDStore') .props({ pristineQuery: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.frozen(), {}), query: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.frozen(), {}), prevPage: 1, page: 1, perPage: 20, total: 0, mode: 'normal', hasNext: false, selectedAction: mobx_state_tree_1.types.frozen(), columns: mobx_state_tree_1.types.frozen(), items: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.array(mobx_state_tree_1.types.frozen()), []), selectedItems: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.array(mobx_state_tree_1.types.frozen()), []), unSelectedItems: mobx_state_tree_1.types.optional(mobx_state_tree_1.types.array(mobx_state_tree_1.types.frozen()), []), filterTogggable: false, filterVisible: true, hasInnerModalOpen: false, searching: false, filterLoading: false }) .views(function (self) { return ({ get lastPage() { return Math.max(Math.ceil(self.total / (self.perPage < 1 ? 10 : self.perPage)), 1); }, get filterData() { return (0, helper_1.createObject)(self.data, (0, tslib_1.__assign)({}, self.query)); }, get mergedData() { return (0, helper_1.extendObject)(self.data, (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({ perPage: self.perPage }, self.query), self.data), { selectedItems: self.selectedItems, unSelectedItems: self.unSelectedItems })); }, get hasModalOpened() { return self.dialogOpen || self.drawerOpen || self.hasInnerModalOpen; }, get selectedItemsAsArray() { return self.selectedItems.concat(); }, fetchCtxOf: function (data, options) { var _a; return (0, helper_1.createObject)(data, (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, self.query), (_a = {}, _a[options.pageField || 'page'] = self.page, _a[options.perPageField || 'perPage'] = self.perPage, _a)), data)); } }); }) .actions(function (self) { var fetchCancel = null; var childStore = {}; // 缓存map 保存data使用 // 单次可以缓存的最大条数 -- 内存大100条 内存小就40条 var halfSingleCacheNumber = 10; var cacheData = { cacheMap: {}, curApi: '', parentDataSetId: '', openCache: false, }; function setPristineQuery() { self.pristineQuery = self.query; } function updateQuery(values, updater, pageField, perPageField, replace) { if (pageField === void 0) { pageField = 'page'; } if (perPageField === void 0) { perPageField = 'perPage'; } if (replace === void 0) { replace = false; } var originQuery = self.query; self.query = replace ? (0, tslib_1.__assign)({}, values) : (0, tslib_1.__assign)((0, tslib_1.__assign)({}, self.query), values); if (self.query[pageField || 'page']) { self.page = parseInt(self.query[pageField || 'page'], 10); } if (self.query[perPageField || 'perPage']) { self.perPage = parseInt(self.query[perPageField || 'perPage'], 10); } updater && (0, helper_1.isObjectShallowModified)(originQuery, self.query, false) && setTimeout(updater.bind(null, "?" + (0, helper_1.qsstringify)(self.query)), 4); } function recursiveDelete(obj, propertyPath) { if (obj && typeof obj === 'object' && obj[propertyPath]) { delete obj[propertyPath]; } if (obj === null || obj === void 0 ? void 0 : obj['__super']) { recursiveDelete(obj["__super"], propertyPath); } } function initStaticData(data, options) { if (!(options === null || options === void 0 ? void 0 : options.loadDataMode) && data) { var newdata = { items: data.items.slice(0, options === null || options === void 0 ? void 0 : options.perPage), total: data.items.length, itemsRaw: data.items, count: data.items.length }; self.data = newdata; self.total = data.total; } else { var newdata = self.data.itemsRaw.slice((self.page - 1) * self.perPage, self.page * self.perPage); self.reInitData((0, tslib_1.__assign)((0, tslib_1.__assign)({}, self.data), { items: newdata })); } } var fetchInitData = (0, mobx_state_tree_1.flow)(function getInitData(api, data, options) { var ctx, genrateUrl, items, dir, originData, data_1, json, result, total, count, page, hasNext, oItems, oRows, columns, rest, items, rowsData, data_2, dir, e_1, env; var _a; var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m; if (options === void 0) { options = {}; } return (0, tslib_1.__generator)(this, function (_o) { switch (_o.label) { case 0: _o.trys.push([0, 4, , 5]); self.filterLoading = true; ctx = (0, helper_1.createObject)(self.data, (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, self.query), data), (_a = {}, _a[options.pageField || 'page'] = self.page, _a[options.perPageField || 'perPage'] = self.perPage, _a))); // 一次性加载不要发送 perPage 属性 if (options.loadDataOnce) { recursiveDelete(ctx, options.perPageField || 'perPage'); } genrateUrl = (0, api_1.buildApi)(api, ctx).url; // 切换当前选中的缓存数据 if (options.openCache) { cacheData.curApi = genrateUrl; } // 缓存当前url ai-tool会用到该url cacheData.curApiForCache = genrateUrl; // 如果他不需要强制刷新但是是一次性加载的情况 // 如果不是需要缓存的表格或者是需要缓存的表格但是有缓存数据源,就走这个分支 if (!options.forceReload && options.loadDataOnce && self.total && (!options.openCache || cacheData.cacheMap[genrateUrl])) { items = void 0; if (!options.openCache) { items = options.source ? (0, tpl_builtin_1.resolveVariableAndFilter)(options.source, (0, helper_1.createObject)(self.mergedData, { items: self.data.itemsRaw, rows: self.data.itemsRaw }), '| raw') : self.items.concat(); } else { items = cacheData.cacheMap[genrateUrl].items; } if (self.query.orderBy) { dir = /desc/i.test(self.query.orderDir) ? -1 : 1; items = (0, helper_1.sortArray)(items, self.query.orderBy, dir); } if (childStore && (childStore === null || childStore === void 0 ? void 0 : childStore.modefiedMap)) { items = (0, commonTableFunction_1.handleSort)(items.slice(), Array.from((_c = (_b = childStore.orderColumns).keys) === null || _c === void 0 ? void 0 : _c.call(_b)), childStore.orderColumns, (_d = childStore === null || childStore === void 0 ? void 0 : childStore.modefiedMap) === null || _d === void 0 ? void 0 : _d.modifiedDataSet); } originData = (0, helper_1.isMobile)() ? items.slice(0, self.page * self.perPage) : items.slice((self.page - 1) * self.perPage, self.page * self.perPage); data_1 = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, (options.openCache ? cacheData.cacheMap[genrateUrl] : self.data)), { total: items.length, items: originData }); // 没有原值给他补上去原值设置-或者第一个不一样 if (options.openCache && (!data_1.itemsRaw || (((_f = (_e = data_1.itemsRaw) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f[exports.DATAKEYID]) !== ((_g = items === null || items === void 0 ? void 0 : items[0]) === null || _g === void 0 ? void 0 : _g[exports.DATAKEYID])))) { data_1.itemsRaw = originData; } self.total = parseInt((_h = data_1.total) !== null && _h !== void 0 ? _h : data_1.count, 10) || 0; self.reInitData(data_1); self.filterLoading = false; return [2 /*return*/]; } if (fetchCancel) { fetchCancel(); fetchCancel = null; self.fetching = false; self.searching = false; } options.silent || self.markFetching(true); self.searching = true; json = void 0; if (!(options.openCache && !options.forceReload && cacheData.cacheMap[genrateUrl])) return [3 /*break*/, 1]; json = { ok: true, data: cacheData.cacheMap[genrateUrl], msg: '请求成功', status: 200 }; return [3 /*break*/, 3]; case 1: return [4 /*yield*/, (0, mobx_state_tree_1.getEnv)(self).fetcher(api, ctx, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { cancelExecutor: function (executor) { return (fetchCancel = executor); } }))]; case 2: json = _o.sent(); fetchCancel = null; _o.label = 3; case 3: if (!json.ok) { self.filterLoading = false; self.updateMessage((_k = (_j = json.msg) !== null && _j !== void 0 ? _j : options.errorMessage) !== null && _k !== void 0 ? _k : self.__('CRUD.fetchFailed'), true); (0, mobx_state_tree_1.getEnv)(self).notify('error', json.msg, json.msgTimeout !== undefined ? { closeButton: true, timeout: json.msgTimeout } : undefined); } else { if (!json.data) { throw new Error(self.__('CRUD.invalidData')); } self.updatedAt = Date.now(); result = (0, api_1.normalizeApiResponseData)(json.data); // 数据标记 方便唯一性查找 如果有datakeyid不重新赋值 result.items = (0, helper_1.mapTree)(result.items, function (_) { var _a; return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, _), (_a = {}, _a[exports.DATAKEYID] = _[exports.DATAKEYID] || (0, helper_1.uuidv4)(), _a))); }); result.rows = (0, helper_1.mapTree)(result.row, function (_) { var _a; return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, _), (_a = {}, _a[exports.DATAKEYID] = _[exports.DATAKEYID] || (0, helper_1.uuidv4)(), _a))); }); total = result.total, count = result.count, page = result.page, hasNext = result.hasNext, oItems = result.items, oRows = result.rows, columns = result.columns, rest = (0, tslib_1.__rest)(result, ["total", "count", "page", "hasNext", "items", "rows", "columns"]); items = void 0; if (options.source) { items = (0, tpl_builtin_1.resolveVariableAndFilter)(options.source, (0, helper_1.createObject)(self.filterData, result), '| raw'); } else { items = result.items || result.rows; } if (!Array.isArray(items)) { throw new Error(self.__('CRUD.invalidArray')); } else { // 确保成员是对象。 items.map(function (item) { return typeof item === 'string' ? { text: item } : item; }); } rowsData = []; if (options.loadDataMode && Array.isArray(self.data.items)) { rowsData = self.data.items.concat(items); } else { // 第一次的时候就是直接加载请求的数据 rowsData = items; } data_2 = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, (api.replaceData ? {} : self.pristine)), { items: rowsData, count: count, total: total, dataSetId: (0, helper_1.uuidv4)() }), rest); // 如果需要缓存才走这里 - 把数据标记带进去 if (options.openCache) { checkcacheData(); cacheData.cacheMap[genrateUrl] = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, (0, lodash_1.cloneDeep)(data_2)), { createTime: new Date().getTime() }); } data_2.itemsRaw = oItems || oRows; if (options.loadDataOnce) { // 记录原始集合,后续可能基于原始数据做排序查找。 // data.itemsRaw = oItems || oRows; if (self.query.orderBy) { dir = /desc/i.test(self.query.orderDir) ? -1 : 1; rowsData = (0, helper_1.sortArray)(rowsData, self.query.orderBy, dir); } data_2.items = rowsData.slice((self.page - 1) * self.perPage, self.page * self.perPage); data_2.count = data_2.total = rowsData.length; } if (Array.isArray(columns)) { self.columns = columns.concat(); } else { self.columns = undefined; } self.items.replace(rowsData); self.reInitData(data_2, !!api.replaceData); options.syncResponse2Query !== false && updateQuery((0, pick_1.default)(rest, Object.keys(self.query)), undefined, options.pageField || 'page', options.perPageField || 'perPage'); self.total = parseInt((_l = data_2.total) !== null && _l !== void 0 ? _l : data_2.count, 10) || 0; typeof page !== 'undefined' && (self.page = parseInt(page, 10)); // 分页情况不清楚,只能知道有没有下一页。 if (typeof hasNext !== 'undefined') { self.mode = 'simple'; self.total = 0; self.hasNext = !!hasNext; } self.updateMessage((_m = json.msg) !== null && _m !== void 0 ? _m : options.successMessage); // 配置了获取成功提示后提示,默认是空不会提示。 options && options.successMessage && (0, mobx_state_tree_1.getEnv)(self).notify('success', self.msg); } self.markFetching(false); self.searching = false; self.filterLoading = false; return [2 /*return*/, json]; case 4: e_1 = _o.sent(); env = (0, mobx_state_tree_1.getEnv)(self); if (!(0, mobx_state_tree_1.isAlive)(self) || self.disposed) { return [2 /*return*/]; } self.markFetching(false); self.searching = false; if (env.isCancel(e_1)) { return [2 /*return*/]; } self.filterLoading = false; console.error(e_1.stack); env.notify('error', e_1.message); return [2 /*return*/]; case 5: return [2 /*return*/]; } }); }); function checkcacheData() { // 如果缓存数量超过100条 开始删除最末尾的几个条目 // if (Object.values(cacheData.cacheMap).length > (2 * halfSingleCacheNumber)) { var keyTimeMap = []; for (var key in cacheData.cacheMap) { keyTimeMap.push({ createTime: cacheData.cacheMap[key].createTime, key: key, }); } // 根据创建时间排序,越新的越前面 keyTimeMap.sort(function (pre, cur) { return cur.createTime - pre.createTime; }); // 100条之后的筛选出来 var olderData = keyTimeMap.slice(2 * halfSingleCacheNumber); // 清楚每条 olderData.map(function (_) { delete cacheData.cacheMap[_.key]; }); // } } function changePage(page, perPage) { self.page = page; perPage && (self.perPage = parseInt(perPage, 10)); } function changeTotal(total) { self.total = total; } function selectAction(action) { self.selectedAction = action; } var saveRemote = (0, mobx_state_tree_1.flow)(function saveRemote(api, data, options) { var json, infoType, e_2; var _a, _b, _c; if (options === void 0) { options = {}; } return (0, tslib_1.__generator)(this, function (_d) { switch (_d.label) { case 0: _d.trys.push([0, 2, , 3]); options = (0, tslib_1.__assign)({ method: 'post' }, options); // 需要隐藏不展示loading if (!options.shouldHideLoaing) self.markSaving(true); return [4 /*yield*/, (0, mobx_state_tree_1.getEnv)(self).fetcher(api, data, options)]; case 1: json = _d.sent(); self.markSaving(false); if (!(0, helper_1.isEmpty)(json.data) || json.ok) { self.updateData((0, api_1.normalizeApiResponseData)(json.data), { __saved: Date.now() }, !!api && api.replaceData); self.updatedAt = Date.now(); } if (!json.ok) { self.updateMessage((_b = (_a = json.msg) !== null && _a !== void 0 ? _a : options.errorMessage) !== null && _b !== void 0 ? _b : self.__('saveFailed'), true); infoType = 'info'; if (json.status == 10001) infoType = 'info'; if (json.status == 10003) infoType = 'warning'; if (json.status == 10004) infoType = 'error'; (0, mobx_state_tree_1.getEnv)(self).notify(infoType, self.msg, json.msgTimeout !== undefined ? { closeButton: true, timeout: json.msgTimeout } : undefined); throw new ServerError(self.msg); } else { self.updateMessage((_c = json.msg) !== null && _c !== void 0 ? _c : options.successMessage); self.msg && (0, mobx_state_tree_1.getEnv)(self).notify('success', self.msg, json.msgTimeout !== undefined ? { closeButton: true, timeout: json.msgTimeout } : undefined); } return [2 /*return*/, json.data]; case 2: e_2 = _d.sent(); self.markSaving(false); if (!(0, mobx_state_tree_1.isAlive)(self) || self.disposed) { return [2 /*return*/]; } e_2.type !== 'ServerError' && (0, mobx_state_tree_1.getEnv)(self).notify('error', e_2.message); throw e_2; case 3: return [2 /*return*/]; } }); }); function preFetchDataSlience(api, _ctx, options) { var _this = this; var apis = []; // 获取父级的数据集id var parentDataSetId = (_ctx.__super.hasOwnProperty('dataSetId') && _ctx.__super.dataSetId) || (_ctx.__super.__super.hasOwnProperty('dataSetId') && _ctx.__super.__super.dataSetId); // cacheData.cacheMap = {} // 更新数据集id cacheData.parentDataSetId = parentDataSetId; // 开始静默请求 // 获取super或者super中的super父级item数据 保证是父级传入的不会取到其他地方的 var parentItems = (_ctx.__super.hasOwnProperty('items') && _ctx.__super.items || (_ctx.__super.__super.hasOwnProperty('items') && _ctx.__super.__super.items)); var ctxIndex = parentItems.findIndex(function (_) { return _[exports.DATAKEYID] === _ctx[exports.DATAKEYID]; }); // 缓存的前半部分 var preParentArr = parentItems.slice(Math.max(0, ctxIndex - halfSingleCacheNumber), ctxIndex).reverse(); // 缓存的后半部分 var afterParentArr = parentItems.slice(ctxIndex, Math.min(ctxIndex + halfSingleCacheNumber, parentItems.length)); var unionArr = []; // 按顺序合并两个数组 while (preParentArr.length || afterParentArr.length) { var preItem = preParentArr.shift(); preItem && unionArr.push(preItem); var afterItem = afterParentArr.shift(); afterItem && unionArr.push(afterItem); } unionArr === null || unionArr === void 0 ? void 0 : unionArr.map(function (_) { apis.push({ api: api, data: _ }); }); var newCacheMap = {}; // 获取data var fetchData = function () { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function () { var fetchApi, fetchCancel, ctx, genrateUrl, json, result, total, count, page, hasNext, oItems, oRows, columns, rest, items, data, error_1; var _a; return (0, tslib_1.__generator)(this, function (_b) { switch (_b.label) { case 0: fetchApi = apis.shift(); if (!fetchApi) return [2 /*return*/]; _b.label = 1; case 1: _b.trys.push([1, 5, , 6]); ctx = (0, helper_1.createObject)(self.data, (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, self.query), fetchApi === null || fetchApi === void 0 ? void 0 : fetchApi.data), (_a = {}, _a[options.pageField || 'page'] = self.page, _a[options.perPageField || 'perPage'] = self.perPage, _a))); // 一次性加载不要发送 perPage 属性 if (options.loadDataOnce) { recursiveDelete(ctx, options.perPageField || 'perPage'); } genrateUrl = (fetchApi === null || fetchApi === void 0 ? void 0 : fetchApi.api) && (0, api_1.buildApi)(fetchApi === null || fetchApi === void 0 ? void 0 : fetchApi.api, ctx).url; if (!!cacheData.cacheMap[genrateUrl || '']) return [3 /*break*/, 3]; return [4 /*yield*/, (0, mobx_state_tree_1.getEnv)(self).fetcher(fetchApi === null || fetchApi === void 0 ? void 0 : fetchApi.api, ctx, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, options), { cancelExecutor: function (executor) { return (fetchCancel = executor); } }))]; case 2: json = _b.sent(); if (json.ok) { result = (0, api_1.normalizeApiResponseData)(json.data); // 数据标记 方便唯一性查找 如果有datakeyid不重新赋值 result.items = (0, helper_1.mapTree)(result.items, function (_) { var _a; return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, _), (_a = {}, _a[exports.DATAKEYID] = _[exports.DATAKEYID] || (0, helper_1.uuidv4)(), _a))); }); result.rows = (0, helper_1.mapTree)(result.row, function (_) { var _a; return ((0, tslib_1.__assign)((0, tslib_1.__assign)({}, _), (_a = {}, _a[exports.DATAKEYID] = _[exports.DATAKEYID] || (0, helper_1.uuidv4)(), _a))); }); total = result.total, count = result.count, page = result.page, hasNext = result.hasNext, oItems = result.items, oRows = result.rows, columns = result.columns, rest = (0, tslib_1.__rest)(result, ["total", "count", "page", "hasNext", "items", "rows", "columns"]); items = void 0; items = result.items || result.rows; if (!Array.isArray(items)) { throw new Error(self.__('CRUD.invalidArray')); } else { // 确保成员是对象。 items.map(function (item) { return typeof item === 'string' ? { text: item } : item; }); } data = (0, tslib_1.__assign)({ items: items, count: count, total: total, createTime: new Date().getTime(), dataSetId: (0, helper_1.uuidv4)() }, rest); // 如果需要缓存才走这里 - 把数据标记带进去 newCacheMap[genrateUrl || ''] = data; } else { throw new Error(self.__('CRUD.invalidData')); } return [3 /*break*/, 4]; case 3: // 已经有的跟新一下创建时间 newCacheMap[genrateUrl || ''] = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, cacheData.cacheMap[genrateUrl || '']), { createTime: new Date().getTime() }); _b.label = 4; case 4: // 执行完了更新缓存 if (apis.length) { fetchData(); } else { cacheData.cacheMap = newCacheMap; } return [3 /*break*/, 6]; case 5: error_1 = _b.sent(); console.error(error_1); throw new Error(self.__('CRUD.invalidData')); case 6: return [2 /*return*/]; } }); }); }; // 打开一个长度为5的请求队列 预加载数据 new Array(5).fill(1).map(function (_) { return fetchData(); }); } var setFilterTogglable = function (toggable, filterVisible) { self.filterTogggable = toggable; filterVisible !== void 0 && (self.filterVisible = filterVisible); }; var setFilterVisible = function (visible) { self.filterVisible = visible; }; var setSelectedItems = function (items) { self.selectedItems.replace(items); }; var setUnSelectedItems = function (items) { self.unSelectedItems.replace(items); }; var setInnerModalOpened = function (value) { self.hasInnerModalOpen = value; }; var initFromScope = function (scope, source) { var rowsData = (0, tpl_builtin_1.resolveVariableAndFilter)(source, scope, '| raw'); if (!Array.isArray(rowsData) && !self.items.length) { return; } rowsData = Array.isArray(rowsData) ? rowsData : []; var data = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, self.pristine), { items: rowsData, count: 0, total: 0 }); self.items.replace(rowsData); self.reInitData(data); }; // 跟新缓存数据源-- 使用这种方式调整 function updateCacheData(data) { cacheData.cacheMap[cacheData.curApi] = (0, tslib_1.__assign)({}, cacheData.cacheMap[cacheData.curApi]); cacheData.cacheMap[cacheData.curApi].items = (0, tslib_1.__spreadArray)([], data.items, true); cacheData.cacheMap[cacheData.curApi].dataSetId = data.dataSetId; } function clearCacheData() { cacheData = null; } // 获取缓存数据源 function getCacheData() { var jsonStr = JSON.stringify(cacheData); var encoder = new TextEncoder(); // TextEncoder 是 Web API 的一部分,可能不在所有环境中都可用 var bytes = encoder.encode(jsonStr).length; console.log("\u7F13\u5B58\u5927\u5C0F: " + bytes / 1024); return cacheData; } function getRawCacheData() { return cacheData; } var exportAsCSV = function (options) { if (options === void 0) { options = {}; } return (0, tslib_1.__awaiter)(void 0, void 0, void 0, function () { var items, env, res; return (0, tslib_1.__generator)(this, function (_a) { switch (_a.label) { case 0: items = options.loadDataOnce ? self.data.itemsRaw : self.data.items; if (!options.api) return [3 /*break*/, 2]; env = (0, mobx_state_tree_1.getEnv)(self); return [4 /*yield*/, env.fetcher(options.api, options.data)]; case 1: res = _a.sent(); if (!res.data) { return [2 /*return*/]; } if (Array.isArray(res.data)) { items = res.data; } else { items = res.data.rows || res.data.items; } _a.label = 2; case 2: Promise.resolve().then(function () { return new Promise(function(resolve){require(['papaparse'], function(ret) {resolve(tslib_1.__importStar(ret));})}); }).then(function (papaparse) { var csvText = papaparse.unparse(items); if (csvText) { var blob = new Blob( // 加上 BOM 这样 Excel 打开的时候就不会乱码 [new Uint8Array([0xef, 0xbb, 0xbf]), csvText], { type: 'text/plain;charset=utf-8' }); (0, file_saver_1.saveAs)(blob, 'data.csv'); } }); return [2 /*return*/]; } }); }); }; //清空数据 function clearData() { var data = { items: [], total: 0, count: undefined }; self.data = data; self.total = 0; } // 设置子store function setChildStore(store) { childStore = store; } // 设置子store function clearChildStore() { childStore = null; } return { clearCacheData: clearCacheData, preFetchDataSlience: preFetchDataSlience, getCacheData: getCacheData, updateCacheData: updateCacheData, setChildStore: setChildStore, clearChildStore: clearChildStore, setPristineQuery: setPristineQuery, updateQuery: updateQuery, fetchInitData: fetchInitData, changePage: changePage, changeTotal: changeTotal, selectAction: selectAction, saveRemote: saveRemote, setFilterTogglable: setFilterTogglable, setFilterVisible: setFilterVisible, setSelectedItems: setSelectedItems, setUnSelectedItems: setUnSelectedItems, setInnerModalOpened: setInnerModalOpened, initFromScope: initFromScope, exportAsCSV: exportAsCSV, clearData: clearData, initStaticData: initStaticData, getRawCacheData: getRawCacheData }; }); //# sourceMappingURL=./store/crud.js.map