fix: 修复退出登录后定时器依然执行的问题
This commit is contained in:
parent
dd47265e97
commit
bc4d7e0dc1
@ -190,7 +190,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, inject, watchEffect } from 'vue';
|
import { computed, ref, inject } from 'vue';
|
||||||
import { useDark, useToggle, useFullscreen } from '@vueuse/core';
|
import { useDark, useToggle, useFullscreen } from '@vueuse/core';
|
||||||
import { useAppStore, useUserStore } from '@/store';
|
import { useAppStore, useUserStore } from '@/store';
|
||||||
import { countUnread } from '@/api/system/message';
|
import { countUnread } from '@/api/system/message';
|
||||||
@ -200,6 +200,7 @@
|
|||||||
import Menu from '@/components/menu/index.vue';
|
import Menu from '@/components/menu/index.vue';
|
||||||
import getAvatar from '@/utils/avatar';
|
import getAvatar from '@/utils/avatar';
|
||||||
import getFile from '@/utils/file';
|
import getFile from '@/utils/file';
|
||||||
|
import { setTimer } from '@/utils/auth';
|
||||||
import MessageBox from '../message-box/index.vue';
|
import MessageBox from '../message-box/index.vue';
|
||||||
|
|
||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
@ -234,7 +235,7 @@
|
|||||||
unReadMessageCount.value = res.data.total;
|
unReadMessageCount.value = res.data.total;
|
||||||
}
|
}
|
||||||
getUnreadCount();
|
getUnreadCount();
|
||||||
setInterval(getUnreadCount, 10000);
|
setTimer(setInterval(getUnreadCount, 10000));
|
||||||
|
|
||||||
const handleToggleTheme = () => {
|
const handleToggleTheme = () => {
|
||||||
toggleTheme();
|
toggleTheme();
|
||||||
|
@ -11,7 +11,7 @@ import {
|
|||||||
getUserInfo,
|
getUserInfo,
|
||||||
} from '@/api/auth';
|
} from '@/api/auth';
|
||||||
import { getImageCaptcha as getCaptcha } from '@/api/common/captcha';
|
import { getImageCaptcha as getCaptcha } from '@/api/common/captcha';
|
||||||
import { setToken, clearToken } from '@/utils/auth';
|
import { setToken, clearToken, clearTimer } from '@/utils/auth';
|
||||||
import { removeRouteListener } from '@/utils/route-listener';
|
import { removeRouteListener } from '@/utils/route-listener';
|
||||||
import { UserState } from './types';
|
import { UserState } from './types';
|
||||||
import useAppStore from '../app';
|
import useAppStore from '../app';
|
||||||
@ -102,6 +102,7 @@ const useUserStore = defineStore('user', {
|
|||||||
const appStore = useAppStore();
|
const appStore = useAppStore();
|
||||||
this.resetInfo();
|
this.resetInfo();
|
||||||
clearToken();
|
clearToken();
|
||||||
|
clearTimer();
|
||||||
removeRouteListener();
|
removeRouteListener();
|
||||||
appStore.clearServerMenu();
|
appStore.clearServerMenu();
|
||||||
},
|
},
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
const TIMER_KEY = 'timer';
|
||||||
const TOKEN_KEY = 'token';
|
const TOKEN_KEY = 'token';
|
||||||
|
|
||||||
const isLogin = () => {
|
const isLogin = () => {
|
||||||
@ -16,4 +17,13 @@ const clearToken = () => {
|
|||||||
localStorage.removeItem(TOKEN_KEY);
|
localStorage.removeItem(TOKEN_KEY);
|
||||||
};
|
};
|
||||||
|
|
||||||
export { isLogin, getToken, setToken, clearToken };
|
const setTimer = (timer: number) => {
|
||||||
|
localStorage.setItem(TIMER_KEY, String(timer));
|
||||||
|
};
|
||||||
|
|
||||||
|
const clearTimer = () => {
|
||||||
|
clearInterval(Number(localStorage.getItem(TIMER_KEY)));
|
||||||
|
localStorage.removeItem(TIMER_KEY);
|
||||||
|
};
|
||||||
|
|
||||||
|
export { isLogin, getToken, setToken, clearToken, setTimer, clearTimer };
|
||||||
|
@ -51,6 +51,8 @@ axios.interceptors.response.use(
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
if ([401].includes(res.code) && response.config.url !== '/auth/user/info') {
|
if ([401].includes(res.code) && response.config.url !== '/auth/user/info') {
|
||||||
|
const userStore = useUserStore();
|
||||||
|
userStore.logout();
|
||||||
modalErrorWrapper({
|
modalErrorWrapper({
|
||||||
title: '确认退出',
|
title: '确认退出',
|
||||||
content: res.msg,
|
content: res.msg,
|
||||||
@ -58,8 +60,6 @@ axios.interceptors.response.use(
|
|||||||
escToClose: false,
|
escToClose: false,
|
||||||
okText: '重新登录',
|
okText: '重新登录',
|
||||||
async onOk() {
|
async onOk() {
|
||||||
const userStore = useUserStore();
|
|
||||||
await userStore.logout();
|
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user