App.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <script setup lang="ts">
  2. import { useDark, useWindowSize, useThrottleFn } from '@vueuse/core'
  3. import zhCn from 'element-plus/lib/locale/lang/zh-cn'
  4. import useAppStore from './stores/modules/app'
  5. import useSettingStore from './stores/modules/setting'
  6. import { ScreenEnum } from './enums/appEnums'
  7. const appStore = useAppStore()
  8. const settingStore = useSettingStore()
  9. const elConfig = {
  10. zIndex: 3000,
  11. locale: zhCn
  12. }
  13. const isDark = useDark()
  14. onMounted(async () => {
  15. //设置主题色
  16. settingStore.setTheme(isDark.value)
  17. // 获取配置
  18. const data: any = await appStore.getConfig()
  19. // 设置网站logo
  20. let favicon: HTMLLinkElement = document.querySelector('link[rel="icon"]')!
  21. if (favicon) {
  22. favicon.href = data.webFavicon
  23. return
  24. }
  25. favicon = document.createElement('link')
  26. favicon.rel = 'icon'
  27. favicon.href = data.webFavicon
  28. document.head.appendChild(favicon)
  29. })
  30. const { width } = useWindowSize()
  31. watch(
  32. width,
  33. useThrottleFn((value) => {
  34. if (value > ScreenEnum.SM) {
  35. appStore.setMobile(false)
  36. appStore.toggleCollapsed(false)
  37. } else {
  38. appStore.setMobile(true)
  39. appStore.toggleCollapsed(true)
  40. }
  41. if (value < ScreenEnum.MD) {
  42. appStore.toggleCollapsed(true)
  43. }
  44. }),
  45. {
  46. immediate: true
  47. }
  48. )
  49. </script>
  50. <template>
  51. <el-config-provider :locale="elConfig.locale" :z-index="elConfig.zIndex">
  52. <router-view />
  53. </el-config-provider>
  54. </template>
  55. <style></style>