mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	feat: 路由动画(每个路由都可添加不同动画)
This commit is contained in:
		
							parent
							
								
									a31d154806
								
							
						
					
					
						commit
						b1702ed7fe
					
				@ -1,17 +1,40 @@
 | 
				
			|||||||
<script setup lang="ts">
 | 
					<script setup lang="ts">
 | 
				
			||||||
import { ref, getCurrentInstance } from "vue";
 | 
					import { ref, computed, getCurrentInstance } from "vue";
 | 
				
			||||||
import { usePermissionStoreHook } from "/@/store/modules/permission";
 | 
					import { usePermissionStoreHook } from "/@/store/modules/permission";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const keepAlive: Boolean = ref(
 | 
					const keepAlive: Boolean = ref(
 | 
				
			||||||
  getCurrentInstance().appContext.config.globalProperties.$config?.KeepAlive
 | 
					  getCurrentInstance().appContext.config.globalProperties.$config?.KeepAlive
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const transition = computed(() => {
 | 
				
			||||||
 | 
					  return route => {
 | 
				
			||||||
 | 
					    return route.meta.transition;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <section class="app-main">
 | 
					  <section class="app-main">
 | 
				
			||||||
    <router-view>
 | 
					    <router-view>
 | 
				
			||||||
      <template #default="{ Component, route }">
 | 
					      <template #default="{ Component, route }">
 | 
				
			||||||
        <transition appear name="fade-transform" mode="out-in">
 | 
					        <transition
 | 
				
			||||||
 | 
					          :name="
 | 
				
			||||||
 | 
					            transition(route) && route.meta.transition.enterTransition
 | 
				
			||||||
 | 
					              ? 'pure-classes-transition'
 | 
				
			||||||
 | 
					              : (transition(route) && route.meta.transition.name) ||
 | 
				
			||||||
 | 
					                'fade-transform'
 | 
				
			||||||
 | 
					          "
 | 
				
			||||||
 | 
					          :enter-active-class="
 | 
				
			||||||
 | 
					            transition(route) &&
 | 
				
			||||||
 | 
					            `animate__animated ${route.meta.transition.enterTransition}`
 | 
				
			||||||
 | 
					          "
 | 
				
			||||||
 | 
					          :leave-active-class="
 | 
				
			||||||
 | 
					            transition(route) &&
 | 
				
			||||||
 | 
					            `animate__animated ${route.meta.transition.leaveTransition}`
 | 
				
			||||||
 | 
					          "
 | 
				
			||||||
 | 
					          mode="out-in"
 | 
				
			||||||
 | 
					          appear
 | 
				
			||||||
 | 
					        >
 | 
				
			||||||
          <keep-alive
 | 
					          <keep-alive
 | 
				
			||||||
            v-if="keepAlive"
 | 
					            v-if="keepAlive"
 | 
				
			||||||
            :include="usePermissionStoreHook().cachePageList"
 | 
					            :include="usePermissionStoreHook().cachePageList"
 | 
				
			||||||
 | 
				
			|||||||
@ -20,7 +20,6 @@ const componentsRouter = {
 | 
				
			|||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsvideo",
 | 
					        title: "message.hsvideo",
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        keepAlive: true,
 | 
					 | 
				
			||||||
        savedPosition: true
 | 
					        savedPosition: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@ -32,6 +31,9 @@ const componentsRouter = {
 | 
				
			|||||||
        title: "message.hsmap",
 | 
					        title: "message.hsmap",
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
        keepAlive: true,
 | 
					        keepAlive: true,
 | 
				
			||||||
 | 
					        transition: {
 | 
				
			||||||
 | 
					          name: "fade"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        savedPosition: true
 | 
					        savedPosition: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
@ -42,6 +44,10 @@ const componentsRouter = {
 | 
				
			|||||||
      meta: {
 | 
					      meta: {
 | 
				
			||||||
        title: "message.hsdraggable",
 | 
					        title: "message.hsdraggable",
 | 
				
			||||||
        showLink: true,
 | 
					        showLink: true,
 | 
				
			||||||
 | 
					        transition: {
 | 
				
			||||||
 | 
					          enterTransition: "animate__zoomIn",
 | 
				
			||||||
 | 
					          leaveTransition: "animate__zoomOut"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
        savedPosition: true
 | 
					        savedPosition: true
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user