Bläddra i källkod

优化:修复登录失效,多次弹窗提现问题

haiyang 1 vecka sedan
förälder
incheckning
e2fcf347f3
2 ändrade filer med 29 tillägg och 17 borttagningar
  1. 29 17
      src/http/alova.ts
  2. 0 0
      src/service/coupon.ts

+ 29 - 17
src/http/alova.ts

@@ -14,6 +14,9 @@ export const API_DOMAINS = {
     SECONDARY: import.meta.env.VITE_SERVER_BASEURL_SECONDARY,
 }
 
+// 添加全局标志,防止重复弹窗
+let loginModalShown = false
+
 /**
  * 创建请求实例
  */
@@ -109,24 +112,33 @@ const alovaInstance = createAlova({
             if (statusCode !== 200) {
                 // 直接处理401错误,跳转到登录页面
                 if (statusCode === 401) {
-                    uni.showModal({
-                        title: '提示',
-                        content: '登录已过期,请重新登录',
-                        confirmText: '去登录',
-                        cancelText: '回首页',
-                        success: ({ confirm, cancel }) => {
-                            if (confirm) {
-                                toLoginPage({ mode: 'reLaunch' })
-                            }
-                            else if (cancel) {
-                                uni.reLaunch({ url: '/pages/home/home' })
+                    if (!loginModalShown) {
+                        loginModalShown = true
+
+                        uni.showModal({
+                            title: '提示',
+                            content: '登录已过期,请重新登录',
+                            confirmText: '去登录',
+                            cancelText: '回首页',
+                            success: ({ confirm, cancel }) => {
+                                loginModalShown = false // 重置标志
+
+                                if (confirm) {
+                                    toLoginPage({ mode: 'reLaunch' })
+                                }
+                                else if (cancel) {
+                                    uni.reLaunch({ url: '/pages/home/home' })
+                                }
+                            },
+                            fail: () => {
+                                loginModalShown = false // 重置标志
                             }
-                        }
-                    })
-                    useTokenStore().cleanToken()
-                    setTimeout(() => {
-                        toLoginPage({ mode: 'reLaunch' })
-                    }, 1500)
+                        })
+                        useTokenStore().cleanToken()
+                    }
+                    // setTimeout(() => {
+                    //     toLoginPage({ mode: 'reLaunch' })
+                    // }, 1500)
                     throw new Error('登录已过期')
                 }
 

+ 0 - 0
src/service/coupon.ts