12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <template>
- <el-config-provider :locale="locale">
- <NuxtLayout>
- <NuxtLoadingIndicator />
- <NuxtPage />
- </NuxtLayout>
- </el-config-provider>
- </template>
- <script lang="ts" setup>
- import { reactive, ref,computed,watch } from 'vue'
- import useConfigStore from '@/stores/config'
- import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
- import en from 'element-plus/dist/locale/en.mjs'
- import useSystemStore from '@/stores/system'
- import useAppStore from '@/stores/app'
- import useMemberStore from '@/stores/member'
- import '@/assets/styles/index.scss'
- const systemStore = useSystemStore()
- const locale = computed(() => (systemStore.lang === 'zh-cn' ? zhCn : en))
- const configStore = useConfigStore()
- configStore.getLoginConfig()
- getToken() && useMemberStore().setToken(getToken())
- const route = useRoute()
- watch(route, (nval, oval) => {
- useAppStore().$patch(state => {
- state.route = route.path
- })
-
- let path = route.path == '/' ? '/index' : route.path
-
- if (path.slice(-1) == '/') path = path.slice(0, -1)
- path = !path.lastIndexOf('/') ? `${path}/index` : path
- let key = path.replace('/', '').replaceAll('/', '.')
- setTimeout(() => {
- useHead({
- title: t(`pages.${key}`)
- })
- }, !oval ? 500 : 0)
- }, { immediate: true })
- watch(() => systemStore.site, () => {
- useHead({
- titleTemplate: (title) => {
- const siteTitle = systemStore.site.front_end_name || systemStore.site.site_name
- return title ? `${title} - ${siteTitle}` : siteTitle
- }
- })
- }, { deep: true, immediate: true })
- </script>
|