refactor: refactor store

This commit is contained in:
Vben
2021-04-10 19:25:49 +08:00
parent 700306bb45
commit 215d8bab38
80 changed files with 1628 additions and 1579 deletions

View File

@@ -20,13 +20,3 @@ export const getParentLayout = (_name?: string) => {
});
});
};
// export const getParentLayout = (name: string) => {
// return () =>
// new Promise((resolve) => {
// resolve({
// ...ParentLayout,
// name,
// });
// });
// };

View File

@@ -9,11 +9,13 @@ import { createHttpGuard } from './httpGuard';
import { createPageGuard } from './pageGuard';
import { createStateGuard } from './stateGuard';
createPageGuard(router);
createPageLoadingGuard(router);
createHttpGuard(router);
createScrollGuard(router);
createMessageGuard(router);
createProgressGuard(router);
createPermissionGuard(router);
createStateGuard(router);
export function setupRouterGuard() {
createPageGuard(router);
createPageLoadingGuard(router);
createHttpGuard(router);
createScrollGuard(router);
createMessageGuard(router);
createProgressGuard(router);
createPermissionGuard(router);
createStateGuard(router);
}

View File

@@ -1,13 +1,15 @@
import type { Router } from 'vue-router';
import { appStore } from '/@/store/modules/app';
import { userStore } from '/@/store/modules/user';
import { useAppStoreWidthOut } from '/@/store/modules/app';
import { useUserStoreWidthOut } from '/@/store/modules/user';
import { useTransitionSetting } from '/@/hooks/setting/useTransitionSetting';
import { unref } from 'vue';
const { getOpenPageLoading } = useTransitionSetting();
export function createPageLoadingGuard(router: Router) {
const userStore = useUserStoreWidthOut();
const appStore = useAppStoreWidthOut();
const { getOpenPageLoading } = useTransitionSetting();
router.beforeEach(async (to) => {
if (!userStore.getTokenState) {
if (!userStore.getToken) {
return true;
}
if (to.meta.loaded) {
@@ -24,7 +26,7 @@ export function createPageLoadingGuard(router: Router) {
router.afterEach(async () => {
if (unref(getOpenPageLoading)) {
setTimeout(() => {
appStore.commitPageLoadingState(false);
appStore.setPageLoading(false);
}, 220);
}
return true;

View File

@@ -1,9 +1,9 @@
import type { Router, RouteRecordRaw } from 'vue-router';
import { permissionStore } from '/@/store/modules/permission';
import { usePermissionStoreWidthOut } from '/@/store/modules/permission';
import { PageEnum } from '/@/enums/pageEnum';
import { userStore } from '/@/store/modules/user';
import { useUserStoreWidthOut } from '/@/store/modules/user';
import { PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic';
@@ -12,6 +12,8 @@ const LOGIN_PATH = PageEnum.BASE_LOGIN;
const whitePathList: PageEnum[] = [LOGIN_PATH];
export function createPermissionGuard(router: Router) {
const userStore = useUserStoreWidthOut();
const permissionStore = usePermissionStoreWidthOut();
router.beforeEach(async (to, from, next) => {
// Jump to the 404 page after processing the login
if (from.path === LOGIN_PATH && to.name === PAGE_NOT_FOUND_ROUTE.name) {
@@ -25,7 +27,7 @@ export function createPermissionGuard(router: Router) {
return;
}
const token = userStore.getTokenState;
const token = userStore.getToken;
// token does not exist
if (!token) {
@@ -51,7 +53,7 @@ export function createPermissionGuard(router: Router) {
next(redirectData);
return;
}
if (permissionStore.getIsDynamicAddedRouteState) {
if (permissionStore.getIsDynamicAddedRoute) {
next();
return;
}
@@ -64,7 +66,7 @@ export function createPermissionGuard(router: Router) {
const redirectPath = (from.query.redirect || to.path) as string;
const redirect = decodeURIComponent(redirectPath);
const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect };
permissionStore.commitDynamicAddedRouteState(true);
permissionStore.setDynamicAddedRoute(true);
next(nextData);
});
}

View File

@@ -6,9 +6,8 @@ import nProgress from 'nprogress';
import { unref } from 'vue';
const { getOpenNProgress } = useTransitionSetting();
export function createProgressGuard(router: Router) {
const { getOpenNProgress } = useTransitionSetting();
router.beforeEach(async (to) => {
if (to.meta.loaded) return true;
unref(getOpenNProgress) && nProgress.start();

View File

@@ -1,19 +1,23 @@
import type { Router } from 'vue-router';
import { appStore } from '/@/store/modules/app';
import { tabStore } from '/@/store/modules/tab';
import { userStore } from '/@/store/modules/user';
import { permissionStore } from '/@/store/modules/permission';
import { useAppStore } from '/@/store/modules/app';
import { useMultipleTabStore } from '/@/store/modules/multipleTab';
import { useUserStore } from '/@/store/modules/user';
import { usePermissionStore } from '/@/store/modules/permission';
import { PageEnum } from '/@/enums/pageEnum';
import { removeTabChangeListener } from '/@/logics/mitt/routeChange';
export function createStateGuard(router: Router) {
router.afterEach((to) => {
const tabStore = useMultipleTabStore();
const userStore = useUserStore();
const appStore = useAppStore();
const permissionStore = usePermissionStore();
// Just enter the login page and clear the authentication information
if (to.path === PageEnum.BASE_LOGIN) {
appStore.resumeAllState();
permissionStore.commitResetState();
tabStore.commitResetState();
userStore.commitResetState();
appStore.resetAllState();
permissionStore.resetState();
tabStore.resetState();
userStore.resetState();
removeTabChangeListener();
}
});

View File

@@ -1,8 +1,8 @@
import type { Menu, MenuModule } from '/@/router/types';
import type { RouteRecordNormalized } from 'vue-router';
import { appStore } from '/@/store/modules/app';
import { permissionStore } from '/@/store/modules/permission';
import { useAppStoreWidthOut } from '/@/store/modules/app';
import { usePermissionStore } from '/@/store/modules/permission';
import { transformMenuModule, getAllParentPath } from '/@/router/helper/menuHelper';
import { filter } from '/@/utils/helper/treeHelper';
import { isUrl } from '/@/utils/is';
@@ -24,6 +24,7 @@ Object.keys(modules).forEach((key) => {
// ==========Helper===========
// ===========================
const isBackMode = () => {
const appStore = useAppStoreWidthOut();
return appStore.getProjectConfig.permissionMode === PermissionModeEnum.BACK;
};
@@ -39,7 +40,8 @@ const staticMenus: Menu[] = [];
})();
async function getAsyncMenus() {
return !isBackMode() ? staticMenus : permissionStore.getBackMenuListState;
const permissionStore = usePermissionStore();
return !isBackMode() ? staticMenus : permissionStore.getBackMenuList;
}
export const getMenus = async (): Promise<Menu[]> => {