54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
import {createRouter, createWebHistory} from "vue-router";
|
||
import routes from "./routes";
|
||
import {useBaseStore} from "@/store/pinia";
|
||
|
||
const router = createRouter({
|
||
history: createWebHistory(),
|
||
routes,
|
||
scrollBehavior(to, from, savedPosition) {
|
||
// console.log('savedPosition', savedPosition)
|
||
if (savedPosition) {
|
||
return savedPosition
|
||
} else {
|
||
return {top: 0}
|
||
}
|
||
},
|
||
})
|
||
router.beforeEach((to, from) => {
|
||
const baseStore = useBaseStore()
|
||
//footer下面的5个按钮,对跳不要用动画
|
||
let noAnimation = ['/', '/home', '/me', '/shop', '/message', '/publish', '/home/live', '/test']
|
||
if (noAnimation.indexOf(from.path) !== -1 && noAnimation.indexOf(to.path) !== -1) {
|
||
return true
|
||
}
|
||
|
||
const toDepth = routes.findIndex(v => v.path === to.path)
|
||
const fromDepth = routes.findIndex(v => v.path === from.path)
|
||
// const fromDepth = routeDeep.indexOf(from.path)
|
||
|
||
if (toDepth > fromDepth) {
|
||
if (to.matched && to.matched.length) {
|
||
let toComponentName = to.matched[0].components.default.name
|
||
// store.commit('updateExcludeRoutes', {type: 'remove', value: toComponentName})
|
||
baseStore.updateExcludeRoutes({type: 'remove', value: toComponentName})
|
||
// console.log('to', toComponentName)
|
||
// console.log('前进')
|
||
// console.log('删除', toComponentName)
|
||
}
|
||
|
||
} else {
|
||
if (from.matched && from.matched.length) {
|
||
let fromComponentName = from.matched[0].components.default.name
|
||
// store.commit('updateExcludeRoutes', {type: 'add', value: fromComponentName})
|
||
baseStore.updateExcludeRoutes({type: 'add', value: fromComponentName})
|
||
|
||
// console.log('后退')
|
||
// console.log('添加', fromComponentName)
|
||
}
|
||
}
|
||
// ...
|
||
// 返回 false 以取消导航
|
||
return true
|
||
})
|
||
|
||
export default router |