diff --git a/package.json b/package.json index 152ef9f..beb00c7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "noob-mengyxu", - "version": "0.4.8", + "version": "0.4.9", "main": "index.ts", "module": "index.ts", "keywords": [ diff --git a/plugs/api/base.ts b/plugs/api/base.ts index 673ba6c..871e08d 100644 --- a/plugs/api/base.ts +++ b/plugs/api/base.ts @@ -101,32 +101,42 @@ 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; +export const exportCsv = (url, head, formatter, param?, content?) => { + return new Promise((resolve) => { + if (!content) { + content = []; + head && content.push(head); } - 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); + if (!param) { + param = { page: 1, size: size }; } + queryPage(url, param, true, true).then((rsp: any) => { + debugger; + if (!rsp || rsp.data.length == 0) { + resolve(content.join('\r\n')); + return; + } + rsp.data.forEach((net) => { + content.push(formatter(net)); + }); + if (rsp.data.length < param.size) { + resolve(content.join('\r\n')); + } else { + param.page = param.page + 1; + exportCsv(url, head, formatter, param, content).then(resolve); + } + }); }); }; -const write = (name, content) => { +export const downloadText = (name, text) => { + downloadFile(name, 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); +}; +export const downloadBlob = (name, blob) => { + downloadFile(name, URL.createObjectURL(blob)); +}; +export const downloadFile = (name, href) => { var element = document.createElement('a'); - element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(content.join(''))); + element.setAttribute('href', href); element.setAttribute('download', name); element.style.display = 'none'; document.body.appendChild(element); diff --git a/plugs/http/axios.ts b/plugs/http/axios.ts index a4d30f2..65f60bc 100644 --- a/plugs/http/axios.ts +++ b/plugs/http/axios.ts @@ -12,7 +12,7 @@ const config = { withCredentials: true, // Check cross-site Access-Control }; -const _axios = axios.create(config); +export const _axios = axios.create(config); _axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; _axios.defaults.headers.put['Content-Type'] = 'application/json;charset=UTF-8'; _axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=UTF-8'; diff --git a/plugs/http/axios2.ts b/plugs/http/axios2.ts index 5c3e417..297aae2 100644 --- a/plugs/http/axios2.ts +++ b/plugs/http/axios2.ts @@ -10,7 +10,7 @@ const config = { withCredentials: true, // Check cross-site Access-Control }; -const _axios = axios.create(config); +export const _axios = axios.create(config); _axios.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8'; _axios.defaults.headers.put['Content-Type'] = 'application/json;charset=UTF-8'; _axios.defaults.headers.delete['Content-Type'] = 'application/json;charset=UTF-8';