2024-02-02 15:04:47 +08:00
|
|
|
/**
|
|
|
|
|
* 全站路由配置
|
|
|
|
|
*
|
|
|
|
|
* meta参数说明
|
|
|
|
|
* keepAlive是否缓冲页面
|
|
|
|
|
* isTab是否加入到tag导航
|
|
|
|
|
* isAuth是否需要授权
|
|
|
|
|
*/
|
2024-02-21 15:02:40 +08:00
|
|
|
import Vue from "vue";
|
|
|
|
|
import VueRouter from "vue-router";
|
|
|
|
|
import PageRouter from "./page/"; // 页面路由
|
|
|
|
|
import ViewsRouter from "./views/"; // 页面路由
|
|
|
|
|
import AvueRouter from "./avue-router"; //封装的路由控制方法
|
|
|
|
|
import i18n from "@/lang"; // Internationalization 国际化 多语言
|
|
|
|
|
import Store from "../store/"; // vuex
|
|
|
|
|
Vue.use(VueRouter);
|
2024-02-02 15:04:47 +08:00
|
|
|
//创建路由
|
2024-02-21 15:02:40 +08:00
|
|
|
export const createRouter = () =>
|
|
|
|
|
new VueRouter({
|
2024-04-17 09:58:09 +08:00
|
|
|
// mode: 'history',
|
2024-04-17 16:59:33 +08:00
|
|
|
// base: 'manage',
|
2024-04-17 09:58:09 +08:00
|
|
|
// https://router.vquejs.org/zh/guide/advanced/scroll-behavior.html#%E5%BC%82%E6%AD%A5%E6%BB%9A%E5%8A%A8
|
2024-02-21 15:02:40 +08:00
|
|
|
// 这个方法 是控制滚动条
|
|
|
|
|
// 如果 retuen falsy || {} ,则不发生滚动
|
|
|
|
|
scrollBehavior(to, from, savedPosition) {
|
|
|
|
|
// savedPosition 这个参数当且仅当导航 (通过浏览器的 前进/后退 按钮触发) 时才可用 效果和 router.go() 或 router.back()
|
|
|
|
|
if (savedPosition) {
|
|
|
|
|
// 返回savedPosition 其实就是 当用户点击 返回的话,保持之前游览的高度
|
|
|
|
|
return savedPosition;
|
|
|
|
|
} else {
|
|
|
|
|
if (from.meta.keepAlive) {
|
|
|
|
|
from.meta.savedPosition = document.body.scrollTop;
|
|
|
|
|
}
|
|
|
|
|
return {
|
|
|
|
|
x: 0,
|
|
|
|
|
y: to.meta.savedPosition || 0
|
|
|
|
|
};
|
2024-02-02 15:04:47 +08:00
|
|
|
}
|
2024-02-21 15:02:40 +08:00
|
|
|
},
|
|
|
|
|
routes: [...PageRouter, ...ViewsRouter]
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const Router = createRouter(); // 获得 route 实例
|
|
|
|
|
AvueRouter.install(Vue, Router, Store, i18n); // 初始化和注册 AvueRouter
|
2024-02-02 15:04:47 +08:00
|
|
|
Router.$avueRouter.formatRoutes(Store.state.user.menuAll, true); // 动态路由核心方法
|
|
|
|
|
Router.addRoutes([...PageRouter, ...ViewsRouter]);
|
2024-02-21 15:02:40 +08:00
|
|
|
|
|
|
|
|
export function resetRouter() {
|
|
|
|
|
// 重置路由 比如用于身份验证失败,需要重新登录时 先清空当前的路有权限
|
|
|
|
|
const newRouter = createRouter();
|
|
|
|
|
Router.matcher = newRouter.matcher; // reset router
|
2024-02-02 15:04:47 +08:00
|
|
|
AvueRouter.install(Vue, Router, Store, i18n);
|
|
|
|
|
}
|
2024-02-21 15:02:40 +08:00
|
|
|
|
|
|
|
|
Router.beforeEach(async (to, from, next) => {
|
|
|
|
|
console.log(to, from, "router-------------------");
|
|
|
|
|
// debugger
|
|
|
|
|
next();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export default Router;
|