useApp.ts 2.5 KB

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