download.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import axios from 'axios';
  2. import FileSaver from 'file-saver';
  3. import { getToken } from '@/utils/auth';
  4. import errorCode from '@/utils/errorCode';
  5. import { blobValidate } from '@/utils/ruoyi';
  6. import { LoadingInstance } from 'element-plus/es/components/loading/src/loading';
  7. const baseURL = import.meta.env.VITE_APP_BASE_API;
  8. let downloadLoadingInstance: LoadingInstance;
  9. export default {
  10. async oss(ossId: string | number) {
  11. const url = baseURL + '/resource/oss/download/' + ossId;
  12. downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' });
  13. try {
  14. const res = await axios({
  15. method: 'get',
  16. url: url,
  17. responseType: 'blob',
  18. headers: {
  19. Authorization: 'Bearer ' + getToken(),
  20. clientid: import.meta.env.VITE_APP_CLIENT_ID
  21. }
  22. });
  23. const isBlob = blobValidate(res.data);
  24. if (isBlob) {
  25. const blob = new Blob([res.data], { type: 'application/octet-stream' });
  26. FileSaver.saveAs(blob, decodeURIComponent(res.headers['download-filename'] as string));
  27. } else {
  28. this.printErrMsg(res.data);
  29. }
  30. downloadLoadingInstance.close();
  31. } catch (r) {
  32. console.error(r);
  33. ElMessage.error('下载文件出现错误,请联系管理员!');
  34. downloadLoadingInstance.close();
  35. }
  36. },
  37. async zip(url: string, name: string) {
  38. url = baseURL + url;
  39. downloadLoadingInstance = ElLoading.service({ text: '正在下载数据,请稍候', background: 'rgba(0, 0, 0, 0.7)' });
  40. try {
  41. const res = await axios({
  42. method: 'get',
  43. url: url,
  44. responseType: 'blob',
  45. headers: {
  46. Authorization: 'Bearer ' + getToken(),
  47. datasource: localStorage.getItem('dataName'),
  48. clientid: import.meta.env.VITE_APP_CLIENT_ID
  49. }
  50. });
  51. const isBlob = blobValidate(res.data);
  52. if (isBlob) {
  53. const blob = new Blob([res.data], { type: 'application/zip' });
  54. FileSaver.saveAs(blob, name);
  55. } else {
  56. this.printErrMsg(res.data);
  57. }
  58. downloadLoadingInstance.close();
  59. } catch (r) {
  60. console.error(r);
  61. ElMessage.error('下载文件出现错误,请联系管理员!');
  62. downloadLoadingInstance.close();
  63. }
  64. },
  65. async printErrMsg(data: any) {
  66. const resText = await data.text();
  67. const rspObj = JSON.parse(resText);
  68. const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'];
  69. ElMessage.error(errMsg);
  70. }
  71. };