download.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import axios from 'axios'
  2. import {Loading, Message} from 'element-ui'
  3. import { saveAs } from 'file-saver'
  4. import { getToken } from '@/utils/auth'
  5. import errorCode from '@/utils/errorCode'
  6. import { blobValidate } from "@/utils/ruoyi";
  7. const baseURL = process.env.VUE_APP_BASE_API
  8. let downloadLoadingInstance;
  9. export default {
  10. name(name, isDelete = true) {
  11. var url = baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete
  12. axios({
  13. method: 'get',
  14. url: url,
  15. responseType: 'blob',
  16. headers: { 'Authorization': 'Bearer ' + getToken() }
  17. }).then((res) => {
  18. const isBlob = blobValidate(res.data);
  19. if (isBlob) {
  20. const blob = new Blob([res.data])
  21. this.saveAs(blob, decodeURIComponent(res.headers['download-filename']))
  22. } else {
  23. this.printErrMsg(res.data);
  24. }
  25. })
  26. },
  27. resource(resource) {
  28. var url = baseURL + "/common/download/resource?resource=" + encodeURIComponent(resource);
  29. axios({
  30. method: 'get',
  31. url: url,
  32. responseType: 'blob',
  33. headers: { 'Authorization': 'Bearer ' + getToken() }
  34. }).then((res) => {
  35. const isBlob = blobValidate(res.data);
  36. if (isBlob) {
  37. const blob = new Blob([res.data])
  38. this.saveAs(blob, decodeURIComponent(res.headers['download-filename']))
  39. } else {
  40. this.printErrMsg(res.data);
  41. }
  42. })
  43. },
  44. zip(url, name) {
  45. var url = baseURL + url
  46. downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
  47. axios({
  48. method: 'get',
  49. url: url,
  50. responseType: 'blob',
  51. headers: { 'Authorization': 'Bearer ' + getToken() }
  52. }).then((res) => {
  53. const isBlob = blobValidate(res.data);
  54. if (isBlob) {
  55. const blob = new Blob([res.data], { type: 'application/zip' })
  56. this.saveAs(blob, name)
  57. } else {
  58. this.printErrMsg(res.data);
  59. }
  60. downloadLoadingInstance.close();
  61. }).catch((r) => {
  62. console.error(r)
  63. Message.error('下载文件出现错误,请联系管理员!')
  64. downloadLoadingInstance.close();
  65. })
  66. },
  67. saveAs(text, name, opts) {
  68. saveAs(text, name, opts);
  69. },
  70. async printErrMsg(data) {
  71. const resText = await data.text();
  72. const rspObj = JSON.parse(resText);
  73. const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default']
  74. Message.error(errMsg);
  75. }
  76. }