zhaoke 2 anos atrás
pai
commit
14f32781c0
1 arquivos alterados com 70 adições e 44 exclusões
  1. 70 44
      src/utils/request.js

+ 70 - 44
src/utils/request.js

@@ -1,7 +1,8 @@
-import axios from 'axios'
-import { MessageBox, Message } from 'element-ui'
-import store from '@/store'
-import { getToken, getUserId } from '@/utils/auth'
+import axios from "axios";
+import { MessageBox, Message } from "element-ui";
+import store from "@/store";
+import router, { resetRouter } from "@/router";
+import { getToken, getUserId, removeToken } from "@/utils/auth";
 // create an axios instance
 // let baseURL
 // if (process.env.NODE_ENV === "development") {
@@ -14,12 +15,12 @@ const service = axios.create({
   //baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
   baseURL: PLATFROM_CONFIG.baseURLCA,
   // withCredentials: true, // send cookies when cross-domain requests
-  timeout: 15000 // request timeout
-})
+  timeout: 15000, // request timeout
+});
 
 // request interceptor
 service.interceptors.request.use(
-  config => {
+  (config) => {
     // do something before request is sent
     // config.headers['Content-Type'] = 'text/plain'
     if (store.getters.token) {
@@ -27,70 +28,95 @@ service.interceptors.request.use(
       // ['X-Token'] is a custom headers key
       // please modify it according to the actual situation
       // config.headers['X-Token'] = getToken()
-      config.headers['token'] = getToken()
+      config.headers["token"] = getToken();
     }
     if (config.data) {
-      config.data['OperatorId'] = getUserId()
+      config.data["OperatorId"] = getUserId();
     }
-    return config
+    return config;
   },
-  error => {
+  (error) => {
     // do something with request error
-    console.log(error) // for debug
-    return Promise.reject(error)
+    console.log(error); // for debug
+    return Promise.reject(error);
   }
-)
+);
 
 // response interceptor
 service.interceptors.response.use(
   /**
    * If you want to get http information such as headers or status
    * Please return  response => response
-  */
+   */
 
   /**
    * Determine the request status by custom code
    * Here is just an example
    * You can also judge the status by HTTP Status Code
    */
-  response => {
-    const res = response.data
+  (response) => {
+    const res = response.data;
 
     // if the custom code is not 20000, it is judged as an error.
-    if (res.code != '0') {
+    if (res.code != "0") {
       Message({
-        message: res.message || 'Error',
-        type: 'error',
-        duration: 5 * 1000
-      })
+        message: res.message || "Error",
+        type: "error",
+        duration: 5 * 1000,
+      });
 
       // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
-      if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
+      if (res.code === 500 || res.code === 50012 || res.code === 50014) {
         // to re-login
-        MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
-          confirmButtonText: 'Re-Login',
-          cancelButtonText: 'Cancel',
-          type: 'warning'
-        }).then(() => {
-          store.dispatch('user/resetToken').then(() => {
-            location.reload()
-          })
-        })
+        MessageBox.confirm(
+          "You have been logged out, you can cancel to stay on this page, or log in again",
+          "Confirm logout",
+          {
+            confirmButtonText: "Re-Login",
+            cancelButtonText: "Cancel",
+            type: "warning",
+          }
+        ).then(async () => {
+          sessionStorage.removeItem("userName");
+          store.dispatch("app/toggleOutflag", false);
+          await store.dispatch("user/logout");
+          router.push(`/login`);
+        });
       }
-      return Promise.reject(new Error(res.message || 'Error'))
+      return Promise.reject(new Error(res.message || "Error"));
     } else {
-      return res
+      return res;
     }
   },
-  error => {
-    console.log('err' + error) // for debug
-    Message({
-      message: error.message,
-      type: 'error',
-      duration: 5 * 1000
-    })
-    return Promise.reject(error)
+  (error) => {
+    const des500 = `${error}`.split(" ").includes("500");
+    if (des500) {
+      Message({
+        message: "身份令牌过期或失效,即将重新登录",
+        type: "error",
+        duration: 3 * 1000,
+        onClose: async () => {
+          sessionStorage.clear();
+          removeToken(); // must remove  token  first
+          removeToken("codeToken");
+          removeToken("systemSet");
+          removeToken("userid");
+          store.dispatch("app/toggleOutflag", false);
+          await store.dispatch("user/resetToken");
+          resetRouter();
+          router.push(`/login`);
+          location.reload();
+        },
+      });
+    } else {
+      Message({
+        message: error.message,
+        type: "error",
+        duration: 5 * 1000,
+      });
+    }
+    return Promise.reject(error);
   }
-)
+);
 
-export default service
+export default service;