vben
2020-10-27 9ee0a561ae3d4b11164a65d8d6813a5315065422
提交 | 用户 | age
2f6253 1 import type { ProjectConfig } from '/@/types/config';
968f79 2 import type { App } from 'vue';
2f6253 3 import { computed, ref } from 'vue';
4
5 import { ThemeModeEnum } from '/@/enums/appEnum';
6 import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
7
8 import projectSetting from '/@/settings/projectSetting';
9 import { getLocal } from '/@/utils/helper/persistent';
10 import { isUnDef, isNull } from '/@/utils/is';
11 import { updateGrayMode, updateColorWeak } from '/@/setup/theme';
12
13 import { appStore } from '/@/store/modules/app';
14 import { useNetWork } from '/@/hooks/web/useNetWork';
15 import { useRouter } from 'vue-router';
16 import { PageEnum } from '/@/enums/pageEnum';
17 import { useTimeout } from '/@/hooks/core/useTimeout';
18 import { ExceptionEnum } from '/@/enums/exceptionEnum';
19
968f79 20 let app: App;
V 21 export function setApp(_app: App): void {
22   app = _app;
23 }
24
25 export function getApp(): App {
26   return app;
27 }
28
2f6253 29 // TODO 主题切换
30 export function useThemeMode(mode: ThemeModeEnum) {
31   const modeRef = ref(mode);
32   const html = document.documentElement;
33   const clsList = html.classList;
34
35   const change = () => {
36     clsList.contains(mode) ? clsList.remove(mode) : clsList.add(mode);
37   };
38   return {
39     runChangeThemeMode: change,
40     mode: computed(() => modeRef.value),
41   };
42 }
43
44 // 初始化项目配置
45 export function useInitAppConfigStore() {
46   let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
47   if (!projCfg) {
48     projCfg = projectSetting;
49   }
50   const { colorWeak, grayMode } = projCfg;
51   try {
52     // if (
53     //   themeColor !== primaryColor &&
54     //   themeColor &&
55     //   process.env.VUE_APP_USE_THEME_REPLACER !== 'TRUE'
56     // ) {
57     //   updateTheme(themeColor);
58     // }
59     grayMode && updateGrayMode(grayMode);
60     colorWeak && updateColorWeak(colorWeak);
61   } catch (error) {
62     console.log(error);
63   }
64   appStore.commitProjectConfigState(projCfg);
65 }
66
67 // Config Provider
68 export function useConfigProvider() {
69   function transformCellText({ text }: { text: string }) {
70     if (isNull(text) || isUnDef(text)) {
71       return ' - ';
72     }
73     return text;
74   }
75   return {
76     transformCellText,
77   };
78 }
79
80 // 初始化网络监听
81 export function useListenerNetWork() {
82   const { listenNetWork } = appStore.getProjectConfig;
83   if (!listenNetWork) return;
84   const { replace } = useRouter();
85   // 检测网络状态
86   useNetWork({
87     onLineFn: () => {
88       replace(PageEnum.BASE_HOME);
89       useTimeout(() => {
90         appStore.commitPageLoadingState(false);
91       }, 300);
92     },
93     offLineFn: () => {
94       replace({
95         path: PageEnum.ERROR_PAGE,
96         query: {
97           status: String(ExceptionEnum.NET_WORK_ERROR),
98         },
99       });
100     },
101   });
102 }