前端-导出excel优化封装

pull/1/head
李强 2021-02-28 11:22:25 +08:00
parent 5de0213cf5
commit 17559ed11b
2 changed files with 49 additions and 52 deletions

View File

@ -95,10 +95,54 @@ export function selectDictLabels(datas, value, separator) {
}) })
return actions.join('').substring(0, actions.join('').length - 1); return actions.join('').substring(0, actions.join('').length - 1);
} }
/**
* 保存
* @param {Blob} blob
* @param {String} filename 想要保存的文件名称
*/
function saveAs(blob, filename) {
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, filename);
} else {
var link = document.createElement('a');
var body = document.querySelector('body');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
// fix Firefox
link.style.display = 'none';
body.appendChild(link);
link.click();
body.removeChild(link);
window.URL.revokeObjectURL(link.href);
};
}
/**
* 获取 blob
* @param {String} url 目标文件地址
* @return {cb}
*/
function getBlob(url, cb) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function () {
if (xhr.status === 200) {
cb(xhr.response);
}
};
xhr.send();
}
// 通用下载方法 // 通用下载方法
export function download(fileName) { export function download(file_url,fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true; getBlob(process.env.VUE_APP_BASE_API + file_url, function (blob) {
saveAs(blob, fileName);
});
} }
// 字符串格式化(%s ) // 字符串格式化(%s )

View File

@ -118,53 +118,8 @@
</template> </template>
<script> <script>
import {clearSaveFile, listSaveFile} from "@/api/system/savefile"; import {clearSaveFile, delSaveFile, listSaveFile} from "@/api/system/savefile";
import {delSaveFile} from "../../../api/system/savefile"; import FileUpload from "@/components/FileUpload/index";
import FileUpload from "../../../components/FileUpload/index";
/**
* 保存
* @param {Blob} blob
* @param {String} filename 想要保存的文件名称
*/
function saveAs(blob, filename) {
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, filename);
} else {
var link = document.createElement('a');
var body = document.querySelector('body');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
// fix Firefox
link.style.display = 'none';
body.appendChild(link);
link.click();
body.removeChild(link);
window.URL.revokeObjectURL(link.href);
}
;
}
/**
* 获取 blob
* @param {String} url 目标文件地址
* @return {cb}
*/
function getBlob(url, cb) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onload = function () {
if (xhr.status === 200) {
cb(xhr.response);
}
};
xhr.send();
}
export default { export default {
name: "Savefile", name: "Savefile",
@ -225,9 +180,7 @@
}, },
/** 文件下载 **/ /** 文件下载 **/
handleDownload(row) { handleDownload(row) {
getBlob(process.env.VUE_APP_BASE_API + row.file_url, function (blob) { this.download(row.file_url, row.name)
saveAs(blob, row.name);
});
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {