mirror of
https://github.com/fantastic-admin/basic.git
synced 2026-10-07 15:11:29 +08:00
61 lines
1.6 KiB
Vue
Executable File
61 lines
1.6 KiB
Vue
Executable File
<script setup lang="ts">
|
|
import dayjs from '@/utils/dayjs'
|
|
import { ua } from '@/utils/ua'
|
|
import Provider from './ui/provider/index.vue'
|
|
import 'dayjs/locale/zh-cn'
|
|
|
|
const route = useRoute()
|
|
|
|
const appSettingsStore = useAppSettingsStore()
|
|
|
|
const { auth } = useAppAuth()
|
|
const { generateTitle } = useAppMenu()
|
|
|
|
document.body.setAttribute('data-os', ua.getOS().name || '')
|
|
|
|
const isAuth = computed(() => {
|
|
return route.matched.every((item) => {
|
|
return auth(item.meta.auth ?? '')
|
|
})
|
|
})
|
|
|
|
// 设置网页 title
|
|
watch([
|
|
() => appSettingsStore.settings.app.dynamicTitle,
|
|
() => appSettingsStore.title,
|
|
], () => {
|
|
nextTick(() => {
|
|
if (appSettingsStore.settings.app.dynamicTitle && appSettingsStore.title) {
|
|
document.title = `${generateTitle(appSettingsStore.title)} - ${import.meta.env.VITE_APP_TITLE}`
|
|
}
|
|
else {
|
|
document.title = import.meta.env.VITE_APP_TITLE
|
|
}
|
|
})
|
|
}, {
|
|
immediate: true,
|
|
deep: true,
|
|
})
|
|
|
|
onMounted(() => {
|
|
appSettingsStore.setMode(document.documentElement.clientWidth)
|
|
dayjs.locale('zh-cn')
|
|
window.addEventListener('resize', () => {
|
|
appSettingsStore.setMode(document.documentElement.clientWidth)
|
|
})
|
|
})
|
|
</script>
|
|
|
|
<template>
|
|
<Provider>
|
|
<RouterView v-slot="{ Component }">
|
|
<AppNotSupportedMobile v-if="!appSettingsStore.settings.app.mobile && appSettingsStore.mode === 'mobile'" />
|
|
<Component :is="Component" v-else-if="isAuth" />
|
|
<AppNotAllowed v-else />
|
|
</RouterView>
|
|
<AppBackToTop />
|
|
<FaToast :theme="appSettingsStore.currentColorScheme" />
|
|
<AppSystemInfo />
|
|
</Provider>
|
|
</template>
|