axios.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { Message } from "element-ui";
  2. export default ({ $axios, store, $cookies, redirect }) => {
  3. $axios.onRequest((config) => {
  4. const token = $cookies.get("token");
  5. if (token) {
  6. config.headers["Authorization"] = "Bearer " + token;
  7. }
  8. });
  9. $axios.onResponse((response) => {
  10. const { data, status } = response;
  11. if (data.code != 1 && data.msg != 'Error' && data.msg) {
  12. Message({
  13. message: data.msg,
  14. type: 'error',
  15. duration: 3 * 1000
  16. })
  17. return Promise.reject(new Error(data.msg || 'Error'))
  18. } else {
  19. return response.data;
  20. }
  21. }, error => {
  22. const { data, status } = error.response;
  23. Message({
  24. message: "error:" + data.msg,
  25. type: 'error',
  26. duration: 5 * 1000
  27. })
  28. return Promise.reject(error)
  29. });
  30. $axios.onError(error => {
  31. console.log('error: ', error);
  32. const { data, status } = error.response;
  33. if ([303,304,305].includes(status)) {
  34. store.dispatch("logout");
  35. return
  36. }else if (status == 500) {
  37. redirect('/layouts/error')
  38. }
  39. if (data.code != 200) {
  40. Message({
  41. message: "" + error.response.data.msg,
  42. type: "error",
  43. duration: 3 * 1000
  44. });
  45. return Promise.reject(error);
  46. }
  47. });
  48. };