From 0aeec5e9d727fc6291fa2d6edaedb4c3e1ef0dad Mon Sep 17 00:00:00 2001 From: vben Date: Fri, 15 Jan 2021 00:10:06 +0800 Subject: [PATCH] fix(mitt): logout and clear the mitt --- package.json | 4 ++-- src/components/Table/src/hooks/useDataSource.ts | 14 ++++++++------ src/logics/mitt/tabChange.ts | 4 ++++ src/router/guard/permissionGuard.ts | 9 --------- src/router/guard/stateGuard.ts | 14 ++++++++++++++ 5 files changed, 28 insertions(+), 17 deletions(-) create mode 100644 src/router/guard/stateGuard.ts diff --git a/package.json b/package.json index 89583640ff6..7020687a89d 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "devDependencies": { "@commitlint/cli": "^11.0.0", "@commitlint/config-conventional": "^11.0.0", - "@iconify/json": "^1.1.285", + "@iconify/json": "^1.1.286", "@ls-lint/ls-lint": "^1.9.2", "@purge-icons/generated": "^0.5.1", "@types/echarts": "^4.9.3", @@ -62,7 +62,7 @@ "@types/zxcvbn": "^4.4.0", "@typescript-eslint/eslint-plugin": "^4.13.0", "@typescript-eslint/parser": "^4.13.0", - "@vitejs/plugin-legacy": "^1.2.0", + "@vitejs/plugin-legacy": "^1.2.1", "@vitejs/plugin-vue": "^1.0.5", "@vitejs/plugin-vue-jsx": "^1.0.2", "@vue/compiler-sfc": "^3.0.5", diff --git a/src/components/Table/src/hooks/useDataSource.ts b/src/components/Table/src/hooks/useDataSource.ts index d5b3259c9cd..c1f1b05b05d 100644 --- a/src/components/Table/src/hooks/useDataSource.ts +++ b/src/components/Table/src/hooks/useDataSource.ts @@ -181,12 +181,14 @@ export function useDataSource( const resultTotal: number = isArrayResult ? 0 : get(res, totalField); // 假如数据变少,导致总页数变少并小于当前选中页码,通过getPaginationRef获取到的页码是不正确的,需获取正确的页码再次执行 - const currentTotalPage = Math.ceil(resultTotal / pageSize); - if (current > currentTotalPage) { - setPagination({ - current: currentTotalPage, - }); - fetch(opt); + if (resultTotal) { + const currentTotalPage = Math.ceil(resultTotal / pageSize); + if (current > currentTotalPage) { + setPagination({ + current: currentTotalPage, + }); + fetch(opt); + } } if (afterFetch && isFunction(afterFetch)) { diff --git a/src/logics/mitt/tabChange.ts b/src/logics/mitt/tabChange.ts index 5ca7f46441d..e384bd439c2 100644 --- a/src/logics/mitt/tabChange.ts +++ b/src/logics/mitt/tabChange.ts @@ -25,3 +25,7 @@ export function listenerLastChangeTab( mitt.on(key, callback); immediate && callback(lastChangeTab); } + +export function removeTabChangeListener() { + mitt.clear(); +} diff --git a/src/router/guard/permissionGuard.ts b/src/router/guard/permissionGuard.ts index a8f3d4f85fa..0dc63d77536 100644 --- a/src/router/guard/permissionGuard.ts +++ b/src/router/guard/permissionGuard.ts @@ -1,13 +1,11 @@ import type { Router, RouteRecordRaw } from 'vue-router'; -import { appStore } from '/@/store/modules/app'; import { permissionStore } from '/@/store/modules/permission'; import { PageEnum } from '/@/enums/pageEnum'; import { getToken } from '/@/utils/auth'; import { PAGE_NOT_FOUND_ROUTE } from '/@/router/constant'; -// import { RootRoute } from '../routes/index'; const LOGIN_PATH = PageEnum.BASE_LOGIN; @@ -69,11 +67,4 @@ export function createPermissionGuard(router: Router) { permissionStore.commitDynamicAddedRouteState(true); next(nextData); }); - - router.afterEach((to) => { - // Just enter the login page and clear the authentication information - if (to.path === LOGIN_PATH) { - appStore.resumeAllState(); - } - }); } diff --git a/src/router/guard/stateGuard.ts b/src/router/guard/stateGuard.ts new file mode 100644 index 00000000000..0371790917b --- /dev/null +++ b/src/router/guard/stateGuard.ts @@ -0,0 +1,14 @@ +import type { Router } from 'vue-router'; +import { appStore } from '/@/store/modules/app'; +import { PageEnum } from '/@/enums/pageEnum'; +import { removeTabChangeListener } from '/@/logics/mitt/tabChange'; + +export function createHttpGuard(router: Router) { + router.afterEach((to) => { + // Just enter the login page and clear the authentication information + if (to.path === PageEnum.BASE_LOGIN) { + appStore.resumeAllState(); + removeTabChangeListener(); + } + }); +}