import axios from 'axios' import { Message } from 'element-ui' import { saveAs } from 'file-saver' import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' import { blobValidate } from "@/utils/ruoyi"; import md5 from 'js-md5' const baseURL = process.env.VUE_APP_BASE_API export default { name(name, query) { var url = baseURL + "/caserecord/DownloadFile?fileName=" + encodeURIComponent(name) + "&fileId=" + query; axios({ method: 'get', url: url, responseType: 'blob', headers: { 'Authorization': 'Bearer ' + getToken() } }).then((res) => { this.readFileAsync(res.data).then((fileContent) => { const md5Hash = md5(fileContent); if(md5Hash == res.headers["x-file-md5"]){ const isBlob = blobValidate(res.data); if (isBlob) { const blob = new Blob([res.data]) this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) } else { this.printErrMsg(res.data); } }else{ this.$message.warning('文件下载失败,MD5KEY校验错误'); } }).catch((error) => { console.error(error); }); }); }, readFileAsync(file) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = (event) => { resolve(event.target.result); }; reader.onerror = (event) => { reject(event.target.error); }; reader.readAsArrayBuffer(file); }); }, resource(value) { var url = baseURL + "/casedownload/download"; axios({ method: 'post', url: url, data:value, responseType: 'blob', headers: { 'Authorization': 'Bearer ' + getToken() } }).then((res) => { const isBlob = blobValidate(res.data); if (isBlob) { const blob = new Blob([res.data]) this.saveAs(blob, decodeURIComponent(res.headers['download-filename'])) } else { this.printErrMsg(res.data); } }) }, zip(url, name) { var url = baseURL + url axios({ method: 'get', url: url, responseType: 'blob', headers: { 'Authorization': 'Bearer ' + getToken() } }).then((res) => { const isBlob = blobValidate(res.data); if (isBlob) { const blob = new Blob([res.data], { type: 'application/zip' }) this.saveAs(blob, name) } else { this.printErrMsg(res.data); } }) }, saveAs(text, name, opts) { saveAs(text, name, opts); }, async printErrMsg(data) { const resText = await data.text(); const rspObj = JSON.parse(resText); const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] Message.error(errMsg); } }