💥 feat: 更新路由动画

This commit is contained in:
bunny 2025-05-11 21:32:19 +08:00
parent 8ca95304c1
commit 637fc4a614
4 changed files with 47 additions and 4 deletions

View File

@ -1,11 +1,24 @@
<template>
<router-view v-slot="{ Component, route }">
<transition :name="route.meta.transition || 'fade-transform'" mode="out-in">
<transition
:enter-active-class="
route.meta.transition?.enter
? `animate__animated ${route.meta.transition.enter}`
: 'animate__animated animate__fadeInLeft animate__faster'
"
:leave-active-class="
route.meta.transition?.leave
? `animate__animated ${route.meta.transition.leave}`
: 'animate__animated animate__fadeOutLeft animate__faster'
"
mode="out-in"
>
<component :is="Component" :key="route.path" />
</transition>
</router-view>
</template>
<script lang="ts" setup></script>
<style lang="scss">
#app {
width: 100%;

View File

@ -6,7 +6,10 @@ const routes: RouteConfigsTable[] = [
path: '/welcome',
name: 'welcome',
component: () => import('@/views/welcome/index.vue'),
meta: { transition: 'fade', title: '后台管理系统标题', headerType: HeaderTypeEnum.default },
meta: {
title: '后台管理系统标题',
headerType: HeaderTypeEnum.default,
},
},
{
path: '/smart-park',
@ -16,6 +19,10 @@ const routes: RouteConfigsTable[] = [
title: '智慧智能监管中心',
subtitle: '车辆监控中心',
headerType: HeaderTypeEnum.subtitle,
transition: {
enter: 'animate__bounceInUp animate__faster',
leave: 'animate__bounceOutUp',
},
},
},
{
@ -24,8 +31,12 @@ const routes: RouteConfigsTable[] = [
component: () => import('@/views/data-analyse/index.vue'),
meta: {
title: '数据分析',
subtitle: '车辆监控中心',
subtitle: '数据分析中心',
headerType: HeaderTypeEnum.subtitle,
transition: {
enter: 'animate__bounceIn animate__faster',
leave: 'animate__bounceOut',
},
},
},
{

11
src/types/router.d.ts vendored Normal file
View File

@ -0,0 +1,11 @@
// types/router.d.ts
import 'vue-router';
declare module 'vue-router' {
interface RouteMeta {
transition?: {
enter: string;
leave: string;
};
}
}

View File

@ -1,12 +1,20 @@
import type { RouteComponent } from 'vue-router';
/**
* @description
*/
interface Transition {
enter?: string;
leave?: string;
}
/**
* @description `meta`
*/
interface CustomizeRouteMeta {
title?: string;
subtitle?: string;
transition?: string;
transition?: Transition;
hidden?: boolean;
/* 头部类型 */
headerType?: any;