App.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <template>
  2. <a-layout class="layout">
  3. <LayoutHeader />
  4. <a-layout-content>
  5. <div ref="contentRef" class="content">
  6. <div class="content-layout">
  7. <RouterView v-slot="{ Component }">
  8. <KeepAlive>
  9. <component :is="Component" />
  10. </KeepAlive>
  11. </RouterView>
  12. </div>
  13. </div>
  14. </a-layout-content>
  15. </a-layout>
  16. </template>
  17. <script lang="ts">
  18. import { defineComponent, onMounted, ref, provide } from 'vue'
  19. import LayoutHeader from '@/layout/header.vue'
  20. import { getImgSrc } from '@/utils/getImgSrc'
  21. import browser from '@/utils/browser'
  22. import { useLocale } from './locales/useLocale'
  23. import { LocaleType } from '#/config'
  24. provide('getImgSrc', getImgSrc)
  25. export const contentRef = ref<HTMLDivElement>()
  26. export default defineComponent({
  27. name: 'App',
  28. components: {
  29. LayoutHeader
  30. },
  31. setup() {
  32. onMounted(() => {
  33. const lang = browser.getURLParam('lang')
  34. console.log('lang', lang)
  35. const { changeLocale, getLocale } = useLocale()
  36. if (lang) {
  37. changeLocale(lang as LocaleType)
  38. } else {
  39. changeLocale('zh')
  40. }
  41. // localeStore.initLocale()
  42. // changeLocale('zh_CN')
  43. // console.log('getLocale', getLocale.value)
  44. })
  45. return { contentRef }
  46. }
  47. })
  48. </script>
  49. <style lang="scss" scoped>
  50. .content,
  51. .layout {
  52. height: 100%;
  53. }
  54. .content {
  55. overflow-y: auto;
  56. }
  57. </style>