DownloadService.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import Common from './Common.js';
  2. import Notify from './Notify.js';
  3. /**
  4. * 报表下载服务
  5. */
  6. export default {
  7. /**
  8. * GET 方式下载文件
  9. * @param {*} url
  10. * @param {*} fileName
  11. */
  12. downloadFile: function (url, fileName) {
  13. fetch(url, {
  14. method: 'GET',
  15. headers: {
  16. 'token': localStorage.getItem('#token'),
  17. },
  18. })
  19. .then(res => res.blob())
  20. .then(data => {
  21. const blobUrl = window.URL.createObjectURL(data);
  22. var a = document.createElement('a');
  23. a.download = fileName;
  24. a.href = blobUrl;
  25. $('body').append(a); // 修复firefox中无法触发click
  26. a.click();
  27. $(a).remove();
  28. }).catch(err => {
  29. Notify.error(err.code, err.responseText, true);
  30. });
  31. },
  32. /**
  33. * 报表下载
  34. * @param {Object} fileName
  35. * @author GuoZhiBo 20200410
  36. */
  37. reportDownload: function (fileName) {
  38. var downloadUrl = Common.getApiURL('file/reportDownload') + '?fileName=' + window.encodeURIComponent(fileName);
  39. this.downloadFile(downloadUrl, fileName);
  40. },
  41. /**
  42. * 文件下载
  43. * @param {Object} className 类名称
  44. * @param {Object} fileName 文件名称
  45. * @author GuoZhiBo 20211008
  46. */
  47. fileDownload:function(className, fileName){
  48. var downloadUrl = Common.getApiURL('file/fileDownload') + '?className=' + className
  49. + '&fileName=' + window.encodeURIComponent(fileName);
  50. this.downloadFile(downloadUrl, fileName);
  51. },
  52. /**
  53. * POST 方式下载文件
  54. * @param {http请求的地址} url
  55. * @param {post请求需要的参数} params
  56. */
  57. postDownloadFile: function (url, params) {
  58. var form = document.createElement('form');
  59. form.style.display = 'none';
  60. form.action = url;
  61. form.method = 'post';
  62. document.body.appendChild(form);
  63. // 动态创建input并给value赋值
  64. for (var key in params) {
  65. var input = document.createElement('input');
  66. input.type = 'hidden';
  67. input.name = key;
  68. input.value = params[key];
  69. form.appendChild(input);
  70. }
  71. form.submit();
  72. form.remove();
  73. },
  74. };