From 89cca8af078ad110dbe20a81b2850de98b6f78d0 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 03 八月 2021 19:29:15 +0800 Subject: [PATCH] update 重构 统一使用 zip 工具下载 --- /dev/null | 41 -------------------- ruoyi-ui/src/utils/zipdownload.js | 54 ++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 43 deletions(-) diff --git a/ruoyi-ui/src/utils/ossdownload.js b/ruoyi-ui/src/utils/ossdownload.js deleted file mode 100644 index 6da52bb..0000000 --- a/ruoyi-ui/src/utils/ossdownload.js +++ /dev/null @@ -1,41 +0,0 @@ -import axios from 'axios' -import { getToken } from '@/utils/auth' - -const mimeMap = { - oss: 'application/octet-stream' -} - -const baseUrl = process.env.VUE_APP_BASE_API -export function downLoadOss(ossId) { - var url = baseUrl + '/system/oss/download/' + ossId - axios({ - method: 'get', - url: url, - responseType: 'blob', - headers: { 'Authorization': 'Bearer ' + getToken() } - }).then(res => { - resolveBlob(res, mimeMap.oss) - }) -} -/** - * 瑙f瀽blob鍝嶅簲鍐呭骞朵笅杞� - * @param {*} res blob鍝嶅簲鍐呭 - * @param {String} mimeType MIME绫诲瀷 - */ -export function resolveBlob(res, mimeType) { - const aLink = document.createElement('a') - var blob = new Blob([res.data], { type: mimeType }) - // 浠巖esponse鐨刪eaders涓幏鍙杅ilename, 鍚庣response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 璁剧疆鐨勬枃浠跺悕; - var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*') - var contentDisposition = decodeURI(res.headers['content-disposition']) - var result = patt.exec(contentDisposition) - var fileName = result[1] - fileName = fileName.replace(/\"/g, '') - aLink.style.display = 'none' - aLink.href = URL.createObjectURL(blob) - aLink.setAttribute('download', decodeURI(fileName)) // 璁剧疆涓嬭浇鏂囦欢鍚嶇О - document.body.appendChild(aLink) - aLink.click() - URL.revokeObjectURL(aLink.href);//娓呴櫎寮曠敤 - document.body.removeChild(aLink); -} diff --git a/ruoyi-ui/src/utils/zipdownload.js b/ruoyi-ui/src/utils/zipdownload.js index 52afcc6..aa92603 100644 --- a/ruoyi-ui/src/utils/zipdownload.js +++ b/ruoyi-ui/src/utils/zipdownload.js @@ -3,7 +3,9 @@ const mimeMap = { xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', - zip: 'application/zip' + zip: 'application/zip', + excel: 'application/vnd.ms-excel', + oss: 'application/octet-stream' } const baseUrl = process.env.VUE_APP_BASE_API @@ -18,6 +20,54 @@ resolveBlob(res, mimeMap.zip) }) } + +export function downLoadOss(ossId) { + var url = baseUrl + '/system/oss/download/' + ossId + axios({ + method: 'get', + url: url, + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + }).then(res => { + resolveBlob(res, mimeMap.oss) + }) +} + +export function downLoadExcel(url, params) { + // get璇锋眰鏄犲皠params鍙傛暟 + if (params) { + let urlparams = url + '?'; + for (const propName of Object.keys(params)) { + const value = params[propName]; + var part = encodeURIComponent(propName) + "="; + if (value !== null && typeof(value) !== "undefined") { + if (typeof value === 'object') { + for (const key of Object.keys(value)) { + let params = propName + '[' + key + ']'; + var subPart = encodeURIComponent(params) + "="; + urlparams += subPart + encodeURIComponent(value[key]) + "&"; + } + } else { + urlparams += part + encodeURIComponent(value) + "&"; + } + } + } + urlparams = urlparams.slice(0, -1); + params = {}; + url = urlparams; + } + url = baseUrl + url + axios({ + method: 'get', + url: url, + params: params, + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + }).then(res => { + resolveBlob(res, mimeMap.excel) + }) +} + /** * 瑙f瀽blob鍝嶅簲鍐呭骞朵笅杞� * @param {*} res blob鍝嶅簲鍐呭 @@ -34,7 +84,7 @@ fileName = fileName.replace(/\"/g, '') aLink.style.display = 'none' aLink.href = URL.createObjectURL(blob) - aLink.setAttribute('download', fileName) // 璁剧疆涓嬭浇鏂囦欢鍚嶇О + aLink.setAttribute('download', decodeURI(fileName)) // 璁剧疆涓嬭浇鏂囦欢鍚嶇О document.body.appendChild(aLink) aLink.click() URL.revokeObjectURL(aLink.href);//娓呴櫎寮曠敤 -- Gitblit v1.9.3