request.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import axios from "axios"
  2. import { getConfig } from "@/config/config"
  3. import { getToken } from "@/utils/auth"
  4. import CryptoJS from "crypto-js"
  5. import { useUserStore } from "@/store/user.js"
  6. // 创建axios实例
  7. const request = axios.create({
  8. baseURL: getConfig("baseUrl"),
  9. timeout: 60000
  10. })
  11. request.interceptors.request.use(
  12. config => {
  13. if (getToken()) {
  14. config.headers["qdport-Auth"] = "bearer " + getToken()
  15. }
  16. config.headers["Authorization"] = `Basic ${CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(`${getConfig("clientId")}:${getConfig("clientSecret")}`))}`
  17. return config
  18. }, error => {
  19. console.log(error)
  20. return Promise.reject(error)
  21. }
  22. )
  23. // 响应拦截器
  24. request.interceptors.response.use(
  25. response => {
  26. const code = response.data.code || 200
  27. if (code == 200) {
  28. return response.data
  29. } else {
  30. ElMessage({ message: response.data.msg || response.data.error_description || "异常,请联系管理员", type: "error", duration: 5 * 1000 })
  31. return Promise.reject("error")
  32. }
  33. }, error => {
  34. let { message, response } = error
  35. if (error.response.data.code == 401 || error.response.status == 401) {
  36. ElMessageBox.confirm("登录状态已过期,请重新登录", "系统提示", { confirmButtonText: "重新登录", cancelButtonText: "取消", type: "warning" }).then(() => {
  37. useUserStore().logOut().then(() => {
  38. location.href = "/index"
  39. })
  40. })
  41. } else {
  42. if (message == "Network Error") {
  43. message = "后端接口连接异常"
  44. } else if (message.includes("timeout")) {
  45. message = "系统接口请求超时"
  46. } else if (message.includes("Request failed with status code")) {
  47. message = "系统接口" + message.substr(message.length - 3) + "异常" + response.data.msg
  48. }
  49. if (process.env.NODE_ENV != "production") {
  50. message = message + "==>" + response.config.url
  51. }
  52. ElMessage({ message: message || "异常,请联系管理员", type: "error", duration: 5 * 1000 })
  53. }
  54. return Promise.reject(error)
  55. }
  56. )
  57. export default request