App.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <script setup lang="ts">
  2. import { computed } from 'vue'
  3. import { useAppStore } from '@/store/modules/app'
  4. import { usePageStore } from '@/store/modules/page'
  5. import { ConfigGlobal } from '@/components/ConfigGlobal'
  6. import { isDark } from '@/utils/is'
  7. import { useDesign } from '@/hooks/web/useDesign'
  8. import { useStorage } from '@/hooks/web/useStorage'
  9. const { getPrefixCls } = useDesign()
  10. const prefixCls = getPrefixCls('app')
  11. const appStore = useAppStore()
  12. const pageStore = usePageStore()
  13. const currentSize = computed(() => appStore.getCurrentSize)
  14. const greyMode = computed(() => appStore.getGreyMode)
  15. // 根据浏览器当前主题设置系统主题色
  16. // const setDefaultTheme = () => {
  17. // const { getStorage } = useStorage()
  18. // if (getStorage('isDark') !== null) {
  19. // appStore.setIsDark(getStorage('isDark'))
  20. // return
  21. // }
  22. // const isDarkTheme = isDark()
  23. // appStore.setIsDark(isDarkTheme)
  24. // }
  25. const setPageData = () => {
  26. const { getStorage } = useStorage('localStorage')
  27. if (getStorage('pageData') !== null) {
  28. pageStore.setAllPageData(getStorage('pageData'))
  29. return
  30. }
  31. }
  32. setPageData()
  33. // setDefaultTheme()
  34. </script>
  35. <template>
  36. <ConfigGlobal :size="currentSize">
  37. <RouterView :class="greyMode ? `${prefixCls}-grey-mode` : ''" />
  38. </ConfigGlobal>
  39. </template>
  40. <style lang="less">
  41. @prefix-cls: ~'@{namespace}-app';
  42. .size {
  43. width: 100%;
  44. height: 100%;
  45. }
  46. html,
  47. body {
  48. padding: 0 !important;
  49. margin: 0;
  50. overflow: hidden;
  51. .size;
  52. #app {
  53. .size;
  54. }
  55. }
  56. .@{prefix-cls}-grey-mode {
  57. filter: grayscale(100%);
  58. }
  59. </style>