App.vue 994 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <el-config-provider :locale="locale" :size="size">
  3. <router-view />
  4. </el-config-provider>
  5. </template>
  6. <script setup lang="ts">
  7. import { computed, nextTick, onMounted, ref, watch } from 'vue'
  8. import { ElConfigProvider } from 'element-plus'
  9. import { ls } from '@/utils'
  10. import useAppStore from '@/store/modules/app'
  11. import { useTheme } from '@/hooks/useTheme'
  12. // 导入 Element Plus 语言包
  13. import { messages } from '@/lang'
  14. const app = useAppStore()
  15. const language = computed(() => app.language)
  16. const size = computed(() => app.size)
  17. const locale = ref()
  18. // 初始化 主题
  19. const { initTheme } = useTheme()
  20. initTheme()
  21. /*nextTick(() => {
  22. // 尝试获取原主题样式 并做设置
  23. const node: HTMLElement = document.documentElement
  24. const styles = ls.get('style')
  25. if (styles) {
  26. node.style = styles
  27. }
  28. })*/
  29. watch(
  30. language,
  31. value => {
  32. locale.value = value == 'en' ? messages.en : messages['zh-cn']
  33. },
  34. {
  35. // 初始化立即执行
  36. immediate: true
  37. }
  38. )
  39. </script>