Industrial-image-management.../src/layout/LayoutDefault.vue

65 lines
1.5 KiB
Vue
Raw Normal View History

2025-07-30 09:13:52 +08:00
<template>
<a-layout class="layout layout-default" :class="{ mobile: isMobile }">
<Asider></Asider>
<a-layout class="layout-default-right">
<Header></Header>
<Tabs></Tabs>
<Main></Main>
<!-- <GiFooter v-if="appStore.copyrightDisplay" /> -->
</a-layout>
<!-- 公告弹窗 -->
<NoticePopup ref="noticePopupRef" />
</a-layout>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue'
import Asider from './components/Asider/index.vue'
import Header from './components/Header/index.vue'
import Main from './components/Main.vue'
import Tabs from './components/Tabs/index.vue'
import GiFooter from '@/components/GiFooter/index.vue'
2025-07-30 09:13:52 +08:00
import NoticePopup from '@/views/user/message/components/NoticePopup.vue'
import { useAppStore } from '@/stores'
import { useDevice } from '@/hooks'
import { getToken } from '@/utils/auth'
defineOptions({ name: 'LayoutDefault' })
const appStore = useAppStore()
const { isMobile } = useDevice()
// 公告弹窗引用
const noticePopupRef = ref<InstanceType<typeof NoticePopup>>()
// 检查并显示未读公告
const checkAndShowNotices = () => {
const token = getToken()
// 如果有token检查未读公告
if (token) {
setTimeout(() => {
noticePopupRef.value?.open()
}, 1000) // 延迟1秒显示让页面先加载完成
}
}
onMounted(() => {
checkAndShowNotices()
})
</script>
<style scoped lang="scss">
.layout {
height: 100%;
}
.layout-default {
flex-direction: row;
&-right {
overflow: hidden;
}
}
</style>