فهرست منبع

fix: 统一接口错误处理,新增登录过期拦截逻辑

1. 简化响应错误返回内容,直接使用error.message
2. 新增无response的网络错误拦截,当检测到登录态过期时返回指定错误码123
3. 在学生页面接口调用中添加对应错误码的处理,拦截重复重试
lsc 2 روز پیش
والد
کامیت
ad47fa0ec1
2فایلهای تغییر یافته به همراه13 افزوده شده و 2 حذف شده
  1. 9 2
      src/services/config.ts
  2. 4 0
      src/views/Student/index.vue

+ 9 - 2
src/services/config.ts

@@ -122,15 +122,22 @@ instance.interceptors.response.use(
 
     if (error && error.response) {
       if (error.response.status >= 400 && error.response.status < 500) {
-        return Promise.reject(error.response.data || error.message)
+        return Promise.reject(error.message)
       }
       else if (error.response.status >= 500) {
-        return Promise.reject(error.response.data || error.message)
+        return Promise.reject(error.message)
       }
       
       message.error('服务器遇到未知错误!')
       return Promise.reject(error.message)
     }
+
+    // 无 response 的 Network Error(CORS 拦截的 403 等),判定为登录态过期
+    if (error.code === 'ERR_NETWORK' && config?.withCredentials) {
+      message.error('登录已过期,请重新登录')
+      return Promise.reject(123)
+    }
+
     if (fullUrl !== 'https://r2rserver.cocorobo.cn/v3/documents') {
       message.error(fullUrl)
       message.error(error)

+ 4 - 0
src/views/Student/index.vue

@@ -3923,6 +3923,10 @@ const addOp3 = async (userTime: any, loadTime: any, object: any, status: any) =>
   }
   catch (e) {
     console.log(e)
+    if (e.code === 123) {
+      // message.error('登录已过期,请重新登录')
+      return
+    }
     setTimeout(() => {
       addOp3(userTime, loadTime, object, status)
     }, 10000)