提交 b7a21c62 authored 作者: 钟是志's avatar 钟是志

导出文件接口需要加密 /DataObjApi/exportCurrent

上级 15360bbc
...@@ -21,6 +21,9 @@ const encryptApiList = [ ...@@ -21,6 +21,9 @@ const encryptApiList = [
{ {
api: 'DataObjApi/addFormData', api: 'DataObjApi/addFormData',
}, },
{
api: 'DataObjApi/exportCurr',
},
{ {
api: 'DataColumnApi/add', api: 'DataColumnApi/add',
}, },
......
import urlTransform from '@/webPublic/zyd_public/request/urlTransform'; import urlTransform from '@/webPublic/zyd_public/request/urlTransform';
import FormdataWrapper from '@/webPublic/zyd_public/utils/object-to-formdata-custom'; import FormdataWrapper from '@/webPublic/zyd_public/utils/object-to-formdata-custom';
import { notification } from 'antd'; import { notification } from 'antd';
import { getHeaders, getIsBei_Dian } from '@/webPublic/zyd_public/utils/utils'; import { getHeaders } from '@/webPublic/zyd_public/utils/utils';
import { proxyChangeUrl } from '@/webPublic/zyd_public/request/proxyChangeUrl';
/** /**
* 本地开发可能会存在跨域问题 * 本地开发可能会存在跨域问题
...@@ -10,55 +10,61 @@ import { proxyChangeUrl } from '@/webPublic/zyd_public/request/proxyChangeUrl'; ...@@ -10,55 +10,61 @@ import { proxyChangeUrl } from '@/webPublic/zyd_public/request/proxyChangeUrl';
* 2022年7月8日 * 2022年7月8日
* 如果ext 传空字符串 则从response.headers 中获取文件名 * 如果ext 传空字符串 则从response.headers 中获取文件名
* */ * */
export function downloadFile(url, params, fileName = '导出文件', ext = 'xlsx', method = 'POST') { export function downloadFile(
url = proxyChangeUrl(url); url,
url = urlTransform(url); params,
fileName = '导出文件',
ext = 'xlsx',
method = 'POST',
) {
url = urlTransform(url);
let responseHeadersFileName = ''; let responseHeadersFileName = '';
fetch(url, { fetch(url, {
method, method,
body: method === 'GET' ? undefined : FormdataWrapper(params), body: method === 'GET' ? undefined : FormdataWrapper(params),
...getHeaders(), ...getHeaders(),
}) })
.then((res) => { .then((res) => {
if (res.status + '' !== '200') { if (res.status + '' !== '200') {
return res.json(); return res.json();
} else { } else {
const contentDisposition = res.headers.get('content-disposition'); const contentDisposition = res.headers.get('content-disposition');
let fileNameEncode = contentDisposition && contentDisposition.split('filename='); let fileNameEncode =
if (fileNameEncode.length > 1) { contentDisposition && contentDisposition.split('filename=');
fileNameEncode = fileNameEncode[1]; if (fileNameEncode.length > 1) {
responseHeadersFileName = decodeURIComponent(escape(fileNameEncode)); fileNameEncode = fileNameEncode[1];
// https://blog.csdn.net/erdfty/article/details/106134284 responseHeadersFileName = decodeURIComponent(escape(fileNameEncode));
} // https://blog.csdn.net/erdfty/article/details/106134284
// 解码 }
return res.blob(); // 解码
} return res.blob();
}) }
.then((data) => { })
if (data instanceof Blob) { .then((data) => {
let a = document.createElement('a'); if (data instanceof Blob) {
url = window.URL.createObjectURL(data); let a = document.createElement('a');
a.href = url; url = window.URL.createObjectURL(data);
a.download = !ext ? responseHeadersFileName : fileName + '.' + ext; // 如果传入的ext 为空字符串(不等于不传) 则使用响应头中的文件作为文件名 a.href = url;
a.click(); a.download = !ext ? responseHeadersFileName : fileName + '.' + ext; // 如果传入的ext 为空字符串(不等于不传) 则使用响应头中的文件作为文件名
window.URL.revokeObjectURL(url); a.click();
a = null; window.URL.revokeObjectURL(url);
} else { a = null;
notification.error({ } else {
message: `文件导出错误`, notification.error({
description: data.errMsg, message: `文件导出错误`,
}); description: data.errMsg,
} });
}) }
.catch((err) => { })
console.log(err); .catch((err) => {
notification.error({ console.log(err);
message: `网络请求超时`, notification.error({
}); message: `网络请求超时`,
}) });
.finally(() => { })
return true; .finally(() => {
}); return true;
});
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论