download.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import axios from 'axios'
  2. import { ElLoading, ElMessage } from 'element-plus'
  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 = import.meta.env.VITE_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 = ElLoading.service({ text: "正在下载数据,请稍候", 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. ElMessage.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. ElMessage.error(errMsg)
  75. }
  76. }