Browse Source

修复用户退出登录时,把 LANG、THEME、LAYOUT、IS_DARK 给清空的问题

YunaiV 1 year ago
parent
commit
560a336f8c

+ 2 - 3
src/config/axios/service.ts

@@ -13,7 +13,7 @@ import { getAccessToken, getRefreshToken, getTenantId, removeToken, setToken } f
 import errorCode from './errorCode'
 
 import { resetRouter } from '@/router'
-import { useCache } from '@/hooks/web/useCache'
+import { deleteUserCache } from '@/hooks/web/useCache'
 
 const tenantEnable = import.meta.env.VITE_APP_TENANT_ENABLE
 const { result_code, base_url, request_timeout } = config
@@ -217,9 +217,8 @@ const handleAuthorized = () => {
       confirmButtonText: t('login.relogin'),
       type: 'warning'
     }).then(() => {
-      const { wsCache } = useCache()
       resetRouter() // 重置静态路由表
-      wsCache.clear()
+      deleteUserCache() // 删除用户缓存
       removeToken()
       isRelogin.show = false
       // 干掉token后再走一次路由让它过router.beforeEach的校验

+ 6 - 0
src/hooks/web/useCache.ts

@@ -25,3 +25,9 @@ export const useCache = (type: CacheType = 'localStorage') => {
     wsCache
   }
 }
+
+export const deleteUserCache = () => {
+  const { wsCache } = useCache()
+  wsCache.delete(CACHE_KEY.USER)
+  wsCache.delete(CACHE_KEY.ROLE_ROUTERS)
+}

+ 2 - 4
src/layout/components/UserInfo/src/components/LockPage.vue

@@ -1,6 +1,6 @@
 <script lang="ts" setup>
 import { resetRouter } from '@/router'
-import { useCache } from '@/hooks/web/useCache'
+import { deleteUserCache } from '@/hooks/web/useCache'
 import { useLockStore } from '@/store/modules/lock'
 import { useNow } from '@/hooks/web/useNow'
 import { useDesign } from '@/hooks/web/useDesign'
@@ -10,8 +10,6 @@ import avatarImg from '@/assets/imgs/avatar.gif'
 
 const tagsViewStore = useTagsViewStore()
 
-const { wsCache } = useCache()
-
 const { replace } = useRouter()
 
 const userStore = useUserStore()
@@ -52,7 +50,7 @@ async function unLock() {
 async function goLogin() {
   await userStore.loginOut().catch(() => {})
   // 登出后清理
-  wsCache.clear()
+  deleteUserCache() // 清空用户缓存
   tagsViewStore.delAllViews()
   resetRouter() // 重置静态路由表
   lockStore.resetLockInfo()

+ 17 - 3
src/store/modules/user.ts

@@ -1,7 +1,7 @@
-import { store } from '../index'
+import { store } from '@/store'
 import { defineStore } from 'pinia'
 import { getAccessToken, removeToken } from '@/utils/auth'
-import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
+import { CACHE_KEY, useCache, deleteUserCache } from '@/hooks/web/useCache'
 import { getInfo, loginOut } from '@/api/login'
 
 const { wsCache } = useCache()
@@ -13,11 +13,20 @@ interface UserVO {
   deptId: number
 }
 
+interface RememberMeInfo {
+  enable: boolean // 是否记住我
+  username: string
+  password: string
+}
+
 interface UserInfoVO {
+  // USER 缓存
   permissions: string[]
   roles: string[]
   isSetUser: boolean
   user: UserVO
+  // REMEMBER_ME 缓存
+  rememberMe: RememberMeInfo
 }
 
 export const useUserStore = defineStore('admin-user', {
@@ -30,6 +39,11 @@ export const useUserStore = defineStore('admin-user', {
       avatar: '',
       nickname: '',
       deptId: 0
+    },
+    rememberMe: {
+      enable: true,
+      username: '',
+      password: ''
     }
   }),
   getters: {
@@ -80,7 +94,7 @@ export const useUserStore = defineStore('admin-user', {
     async loginOut() {
       await loginOut()
       removeToken()
-      wsCache.clear()
+      deleteUserCache() // 删除用户缓存
       this.resetState()
     },
     resetState() {