From f163877954f7f2c8457ec6abb4e82c95c90cbee0 Mon Sep 17 00:00:00 2001 From: mengyxu Date: Thu, 16 Oct 2025 14:07:30 +0800 Subject: [PATCH] 0.4.8 --- package.json | 2 +- plugs/api/base.ts | 42 ++++++++++++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index fa294a4..152ef9f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "noob-mengyxu", - "version": "0.4.7", + "version": "0.4.8", "main": "index.ts", "module": "index.ts", "keywords": [ diff --git a/plugs/api/base.ts b/plugs/api/base.ts index 048e965..673ba6c 100644 --- a/plugs/api/base.ts +++ b/plugs/api/base.ts @@ -2,9 +2,9 @@ import { get, post, put, delate } from '../http/axios'; import { PageResult } from '../constant'; const pageResult = new PageResult(); -export const queryPage = (url, example) => { +export const queryPage = (url, example, noMsg?, noLoading?) => { return new Promise((resolve, reject) => { - get(url, example).then( + get(url, example, noMsg, noLoading).then( (rsp: any) => { if (rsp) { resolve(rsp); @@ -19,9 +19,9 @@ export const queryPage = (url, example) => { }); }; -export const queryList = (url, example?) => { +export const queryList = (url, example?, noMsg?, noLoading?) => { return new Promise((resolve, reject) => { - get(url, example).then( + get(url, example, noMsg, noLoading).then( (rsp: any) => { if (rsp) { resolve(rsp); @@ -99,3 +99,37 @@ export const deleteById = (url, id) => { ); }); }; + +export const size = 10000; +export const exportCrv = (url, fileName, head, formatter, param?, content?) => { + if (!content) { + content = [head + '\r\n']; + } + if (!param) { + param = { page: 1, size: size }; + } + queryPage(url, param, true).then((rsp: any) => { + if (!rsp || rsp.length == 0) { + write(fileName, content); + return; + } + rsp.data.forEach((net) => { + content.push(formatter(net) + '\r\n'); + }); + if (rsp.data.length < size) { + write(fileName, content); + } else { + param.page = param.page + 1; + exportCrv(url, fileName, head, formatter, param, content); + } + }); +}; +const write = (name, content) => { + var element = document.createElement('a'); + element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content.join(''))); + element.setAttribute('download', name); + element.style.display = 'none'; + document.body.appendChild(element); + element.click(); + document.body.removeChild(element); +};