lrf 5 months ago
parent
commit
30e5b954cf
3 changed files with 14 additions and 34 deletions
  1. 1 1
      src/components/index.js
  2. 1 25
      src/router/guard.js
  3. 12 8
      src/utils/axios-wrapper.js

+ 1 - 1
src/components/index.js

@@ -2,6 +2,6 @@ export default function globalComponents(app) {
   const components = import.meta.glob('./**/**.{vue,tsx}', { eager: true }) //获取文件夹及其嵌套的多级子文件夹
   for (let [key, value] of Object.entries(components)) {
     const name = key.replace('./', '').split('/')[0]
-    app.component(value.default.name || name, value.default)
+    app.component(value.default.__name || name, value.default)
   }
 }

+ 1 - 25
src/router/guard.js

@@ -3,8 +3,6 @@ import { UserStore } from '@/store/user'
 import { cloneDeep, isArray, omit } from 'lodash-es'
 import NProgress from 'nprogress'
 import 'nprogress/nprogress.css'
-import { ElMessageBox } from 'element-plus'
-import i18n from '@/lang'
 const whiteList = ['/redirect', '/login', '/401', '/404']
 NProgress.configure({ showSpinner: false }) // 进度条
 // 获取用户信息,返回菜单
@@ -55,29 +53,7 @@ export const registerBeforeRouter = async (router) => {
       NProgress.inc()
       if (to.path === '/login') next()
       NProgress.inc()
-      const { menus, errcode, errmsg } = await getUserMeta(token)
-      // 登录信息有问题
-      if (errcode != 0) {
-        if (errcode.includes('401')) {
-          await ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
-            confirmButtonText: i18n.global.t('common.re_login'),
-            type: 'error'
-          })
-          next('/login')
-          return
-        } else {
-          await ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
-            confirmButtonText: i18n.global.t('common.re_login'),
-            type: 'error'
-          })
-          location.reload()
-        }
-      }
-      // 菜单格式不正确
-      if (!menus) {
-        next('/401')
-        return
-      }
+      await getUserMeta(token)
       NProgress.inc()
       // 注册了直接进入
       next()

+ 12 - 8
src/utils/axios-wrapper.js

@@ -7,7 +7,7 @@ import { trimData, isNullOrUndefined } from './util-methods'
 import router from '@/router'
 import i18n from '@/lang'
 let currentRequests = 0
-
+let msgDialog = null
 export class AxiosWrapper {
   constructor({ baseUrl = import.meta.env.VITE_APP_BASE_API, unwrap = true } = {}) {
     this.baseUrl = baseUrl
@@ -49,6 +49,7 @@ export class AxiosWrapper {
     return this.$request(uri, data, query, options)
   }
   async $request(uri, data, query, options) {
+    if (msgDialog) return
     if (query && isObject(query)) {
       const keys = Object.keys(query)
       for (const key of keys) {
@@ -97,13 +98,16 @@ export class AxiosWrapper {
         console.warn(`[${uri}] fail: ${errcode}-${errmsg} ${details}`)
         if (errcode != 0) {
           if (errcode.includes('401')) {
-            ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
-              confirmButtonText: i18n.global.t('common.re_login'),
-              type: 'error',
-              callback: (act) => {
-                router.replace('/login')
-              }
-            })
+            if (!msgDialog) {
+              msgDialog = ElMessageBox.alert(errmsg, i18n.global.t('common.user_confirm'), {
+                confirmButtonText: i18n.global.t('common.re_login'),
+                type: 'error',
+                callback: (act) => {
+                  router.replace('/login')
+                  msgDialog = null;
+                }
+              })
+            }
           }
         }
         return returnRes