nebv
2020-10-11 5f2a927cd50a5efe4c9576528d944553c5243277
提交 | 用户 | age
2f6253 1 import type { ProjectConfig } from '/@/types/config';
2
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
20 // TODO 主题切换
21 export function useThemeMode(mode: ThemeModeEnum) {
22   const modeRef = ref(mode);
23   const html = document.documentElement;
24   const clsList = html.classList;
25
26   const change = () => {
27     clsList.contains(mode) ? clsList.remove(mode) : clsList.add(mode);
28   };
29   return {
30     runChangeThemeMode: change,
31     mode: computed(() => modeRef.value),
32   };
33 }
34
35 // 初始化项目配置
36 export function useInitAppConfigStore() {
37   let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
38   if (!projCfg) {
39     projCfg = projectSetting;
40   }
41   const { colorWeak, grayMode } = projCfg;
42   try {
43     // if (
44     //   themeColor !== primaryColor &&
45     //   themeColor &&
46     //   process.env.VUE_APP_USE_THEME_REPLACER !== 'TRUE'
47     // ) {
48     //   updateTheme(themeColor);
49     // }
50     grayMode && updateGrayMode(grayMode);
51     colorWeak && updateColorWeak(colorWeak);
52   } catch (error) {
53     console.log(error);
54   }
55   appStore.commitProjectConfigState(projCfg);
56 }
57
58 // Config Provider
59 export function useConfigProvider() {
60   function transformCellText({ text }: { text: string }) {
61     if (isNull(text) || isUnDef(text)) {
62       return ' - ';
63     }
64     return text;
65   }
66   return {
67     transformCellText,
68   };
69 }
70
71 // 初始化网络监听
72 export function useListenerNetWork() {
73   const { listenNetWork } = appStore.getProjectConfig;
74   if (!listenNetWork) return;
75   const { replace } = useRouter();
76   // 检测网络状态
77   useNetWork({
78     onLineFn: () => {
79       replace(PageEnum.BASE_HOME);
80       useTimeout(() => {
81         appStore.commitPageLoadingState(false);
82       }, 300);
83     },
84     offLineFn: () => {
85       replace({
86         path: PageEnum.ERROR_PAGE,
87         query: {
88           status: String(ExceptionEnum.NET_WORK_ERROR),
89         },
90       });
91     },
92   });
93 }