123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import type { ProjectConfig } from '/@/types/config';
- import { VuexModule, getModule, Module, Mutation, Action } from 'vuex-module-decorators';
- import store from '/@/store';
- import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
- import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
- import { setLocal, getLocal, clearSession, clearLocal } from '/@/utils/cache/persistent';
- import { deepMerge } from '/@/utils';
- import { resetRouter } from '/@/router';
- import { permissionStore } from './permission';
- import { tabStore } from './tab';
- import { userStore } from './user';
- export interface LockInfo {
- pwd: string | undefined;
- isLock: boolean;
- }
- let timeId: TimeoutHandle;
- const NAME = 'app';
- hotModuleUnregisterModule(NAME);
- @Module({ dynamic: true, namespaced: true, store, name: NAME })
- class App extends VuexModule {
- // Page loading status
- private pageLoadingState = false;
- // project config
- private projectConfigState: ProjectConfig | null = getLocal(PROJ_CFG_KEY);
- // set main overflow hidden
- private lockMainScrollState = false;
- get getPageLoading() {
- return this.pageLoadingState;
- }
- get getLockMainScrollState() {
- return this.lockMainScrollState;
- }
- get getProjectConfig(): ProjectConfig {
- return this.projectConfigState || ({} as ProjectConfig);
- }
- @Mutation
- commitPageLoadingState(loading: boolean): void {
- this.pageLoadingState = loading;
- }
- @Mutation
- commitLockMainScrollState(lock: boolean): void {
- this.lockMainScrollState = lock;
- }
- @Mutation
- commitProjectConfigState(proCfg: DeepPartial<ProjectConfig>): void {
- this.projectConfigState = deepMerge(this.projectConfigState || {}, proCfg);
- setLocal(PROJ_CFG_KEY, this.projectConfigState);
- }
- @Action
- async resumeAllState() {
- resetRouter();
- clearSession();
- clearLocal();
- permissionStore.commitResetState();
- tabStore.commitResetState();
- userStore.commitResetState();
- }
- @Action
- public async setPageLoadingAction(loading: boolean): Promise<void> {
- if (loading) {
- clearTimeout(timeId);
- // Prevent flicker
- timeId = setTimeout(() => {
- this.commitPageLoadingState(loading);
- }, 50);
- } else {
- this.commitPageLoadingState(loading);
- clearTimeout(timeId);
- }
- }
- }
- export const appStore = getModule<App>(App);
|