download.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import axios from "axios";
  2. import { 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. export default {
  9. zip(url, name) {
  10. var seperator = !baseURL.endsWith("/") && !url.startsWith("/") ? "/" : "";
  11. var url = baseURL + seperator + url;
  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], { type: "application/zip" });
  21. this.saveAs(blob, name);
  22. } else {
  23. this.printErrMsg(res.data);
  24. }
  25. });
  26. },
  27. saveAs(text, name, opts) {
  28. saveAs(text, name, opts);
  29. },
  30. async printErrMsg(data) {
  31. const resText = await data.text();
  32. const rspObj = JSON.parse(resText);
  33. const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode["default"];
  34. Message.error(errMsg);
  35. },
  36. };