App.vue 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <script lang="ts" name="APP" setup>
  2. import { isDark } from '@/utils/is'
  3. import { useAppStore } from '@/store/modules/app'
  4. import { useDesign } from '@/hooks/web/useDesign'
  5. import { CACHE_KEY, useCache } from '@/hooks/web/useCache'
  6. import routerSearch from '@/components/RouterSearch/index.vue'
  7. const { getPrefixCls } = useDesign()
  8. const prefixCls = getPrefixCls('app')
  9. const appStore = useAppStore()
  10. const currentSize = computed(() => appStore.getCurrentSize)
  11. const greyMode = computed(() => appStore.getGreyMode)
  12. const { wsCache } = useCache()
  13. // 根据浏览器当前主题设置系统主题色
  14. const setDefaultTheme = () => {
  15. let isDarkTheme = wsCache.get(CACHE_KEY.IS_DARK)
  16. if (isDarkTheme === null) {
  17. isDarkTheme = isDark()
  18. }
  19. appStore.setIsDark(isDarkTheme)
  20. }
  21. setDefaultTheme()
  22. </script>
  23. <template>
  24. <ConfigGlobal :size="currentSize">
  25. <RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
  26. <routerSearch />
  27. </ConfigGlobal>
  28. </template>
  29. <style lang="scss">
  30. $prefix-cls: #{$namespace}-app;
  31. .size {
  32. width: 100%;
  33. height: 100%;
  34. }
  35. html,
  36. body {
  37. padding: 0 !important;
  38. margin: 0;
  39. overflow: hidden;
  40. @extend .size;
  41. #app {
  42. @extend .size;
  43. }
  44. }
  45. .#{$prefix-cls}-grey-mode {
  46. filter: grayscale(100%);
  47. }
  48. </style>