useApp.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Application related functions
  2. import type { ProjectConfig } from '/@/types/config';
  3. import type { App } from 'vue';
  4. import { computed, ref } from 'vue';
  5. import { ThemeModeEnum } from '/@/enums/appEnum';
  6. import { PROJ_CFG_KEY } from '/@/enums/cacheEnum';
  7. import projectSetting from '/@/settings/projectSetting';
  8. import { getLocal } from '/@/utils/helper/persistent';
  9. import { isUnDef, isNull } from '/@/utils/is';
  10. import {
  11. updateGrayMode,
  12. updateColorWeak,
  13. updateHeaderBgColor,
  14. updateSidebarBgColor,
  15. } from '/@/setup/theme';
  16. import { appStore } from '/@/store/modules/app';
  17. let app: App;
  18. export function setApp(_app: App): void {
  19. app = _app;
  20. }
  21. export function getApp(): App {
  22. return app;
  23. }
  24. // TODO 主题切换
  25. export function useThemeMode(mode: ThemeModeEnum) {
  26. const modeRef = ref(mode);
  27. const html = document.documentElement;
  28. const clsList = html.classList;
  29. const change = () => {
  30. clsList.contains(mode) ? clsList.remove(mode) : clsList.add(mode);
  31. };
  32. return {
  33. runChangeThemeMode: change,
  34. mode: computed(() => modeRef.value),
  35. };
  36. }
  37. // Initial project configuration
  38. export function useInitAppConfigStore() {
  39. let projCfg: ProjectConfig = getLocal(PROJ_CFG_KEY) as ProjectConfig;
  40. if (!projCfg) {
  41. projCfg = projectSetting;
  42. }
  43. const { colorWeak, grayMode, headerBgColor, menuBgColor } = projCfg;
  44. try {
  45. // if (
  46. // themeColor !== primaryColor &&
  47. // themeColor &&
  48. // process.env.VUE_APP_USE_THEME_REPLACER !== 'TRUE'
  49. // ) {
  50. // updateTheme(themeColor);
  51. // }
  52. headerBgColor && updateHeaderBgColor(headerBgColor);
  53. menuBgColor && updateSidebarBgColor(menuBgColor);
  54. grayMode && updateGrayMode(grayMode);
  55. colorWeak && updateColorWeak(colorWeak);
  56. } catch (error) {
  57. console.log(error);
  58. }
  59. appStore.commitProjectConfigState(projCfg);
  60. }
  61. // Config Provider
  62. export function useConfigProvider() {
  63. function transformCellText({ text }: { text: string }) {
  64. if (isNull(text) || isUnDef(text)) {
  65. return ' - ';
  66. }
  67. return text;
  68. }
  69. return {
  70. transformCellText,
  71. };
  72. }