| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- <template>
- <router-view v-slot="{ Component }">
- <keep-alive :include="keepAliveIncludes">
- <component :is="Component" />
- </keep-alive>
- </router-view>
- <Login v-if="useUserInfoStore.loginShow" v-model:dialogVisible="useUserInfoStore.loginShow" />
- </template>
- <script setup lang="ts">
- import { useRoute, useRouter } from 'vue-router'
- import { onMounted, onUnmounted } from 'vue'
- import Login from '@/components/login/index.vue';
- import useUserInfo from "@/stores/modules/user";
- const useUserInfoStore = useUserInfo();
- import { listenerOnline } from '@/composables/online';
- listenerOnline();
- const router = useRouter()
- const route = useRoute()
- /* keep alive 的路由名称 */
- const keepAliveIncludes = router
- .getRoutes()
- .filter((router) => router.meta?.keepAlive)
- .map((router) => router.name as string)
- /* 监听企业过期事件 */
- const handleCompanyExpired = (event: CustomEvent) => {
- const { message } = event.detail
- console.log('企业过期事件触发:', message)
- // 如果当前不在过期页面,进行跳转
- if (route.path !== '/photography/expired') {
- console.log('跳转到过期页面')
- router.replace('/photography/expired')
- }
- }
- onMounted(() => {
- window.addEventListener('companyExpired', handleCompanyExpired as EventListener)
- })
- onUnmounted(() => {
- window.removeEventListener('companyExpired', handleCompanyExpired as EventListener)
- })
- </script>
- <style scoped>
- .logo {
- height: 6em;
- padding: 1.5em;
- will-change: filter;
- transition: filter 300ms;
- }
- .logo:hover {
- filter: drop-shadow(0 0 2em #646cffaa);
- }
- .logo.vue:hover {
- filter: drop-shadow(0 0 2em #42b883aa);
- }
- </style>
|