mirror of
https://gitee.com/chu1204505056/vue-admin-beautiful.git
synced 2025-04-29 12:06:33 +08:00
441 lines
11 KiB
JavaScript
441 lines
11 KiB
JavaScript
/**
|
||
* @copyright chuzhixin 1204505056@qq.com
|
||
* @description router全局配置,如有必要可分文件抽离,其中asyncRoutes只有在intelligence模式下才会用到,vip文档中已提供路由的基础图标与小清新图标的配置方案,请仔细阅读
|
||
*/
|
||
|
||
import Vue from "vue";
|
||
import VueRouter from "vue-router";
|
||
import Layout from "@/layouts";
|
||
import EmptyLayout from "@/layouts/EmptyLayout";
|
||
import { publicPath, routerMode } from "@/config/settings";
|
||
|
||
Vue.use(VueRouter);
|
||
export const constantRoutes = [
|
||
{
|
||
path: "/login",
|
||
component: () => import("@/views/login/index"),
|
||
hidden: true,
|
||
},
|
||
{
|
||
path: "/register",
|
||
component: () => import("@/views/register/index"),
|
||
hidden: true,
|
||
},
|
||
{
|
||
path: "/401",
|
||
name: "401",
|
||
component: () => import("@/views/401"),
|
||
hidden: true,
|
||
},
|
||
{
|
||
path: "/404",
|
||
name: "404",
|
||
component: () => import("@/views/404"),
|
||
hidden: true,
|
||
},
|
||
];
|
||
|
||
export const asyncRoutes = [
|
||
{
|
||
path: "/",
|
||
component: Layout,
|
||
redirect: "index",
|
||
children: [
|
||
{
|
||
path: "index",
|
||
name: "Index",
|
||
component: () => import("@/views/index/index"),
|
||
meta: {
|
||
title: "首页",
|
||
icon: "home",
|
||
affix: true,
|
||
},
|
||
},
|
||
],
|
||
},
|
||
/* {
|
||
path: "/test",
|
||
component: Layout,
|
||
redirect: "noRedirect",
|
||
children: [
|
||
{
|
||
path: "test",
|
||
name: "Test",
|
||
component: () => import("@/views/test/index"),
|
||
meta: {
|
||
title: "test",
|
||
icon: "marker",
|
||
permissions: ["admin"],
|
||
},
|
||
},
|
||
],
|
||
}, */
|
||
|
||
{
|
||
path: "/vab",
|
||
component: Layout,
|
||
redirect: "noRedirect",
|
||
name: "Vab",
|
||
alwaysShow: true,
|
||
meta: { title: "组件", icon: "box-open" },
|
||
children: [
|
||
{
|
||
path: "permissions",
|
||
name: "Permission",
|
||
component: () => import("@/views/vab/permissions/index"),
|
||
meta: {
|
||
title: "角色权限",
|
||
permissions: ["admin", "editor"],
|
||
},
|
||
},
|
||
{
|
||
path:
|
||
"https://github.com/chuzhixin/vue-admin-beautiful?utm_source=gold_browser_extension",
|
||
name: "ExternalLink",
|
||
meta: {
|
||
title: "外链",
|
||
target: "_blank",
|
||
permissions: ["admin", "editor"],
|
||
badge: "New",
|
||
},
|
||
},
|
||
{
|
||
path: "icon",
|
||
component: EmptyLayout,
|
||
redirect: "noRedirect",
|
||
name: "Icon",
|
||
meta: {
|
||
title: "图标",
|
||
permissions: ["admin"],
|
||
},
|
||
children: [
|
||
{
|
||
path: "awesomeIcon",
|
||
name: "AwesomeIcon",
|
||
component: () => import("@/views/vab/icon/index"),
|
||
meta: { title: "常规图标" },
|
||
},
|
||
{
|
||
path: "remixIcon",
|
||
name: "RemixIcon",
|
||
component: () => import("@/views/vab/icon/remixIcon"),
|
||
meta: { title: "小清新图标" },
|
||
},
|
||
{
|
||
path: "colorfulIcon",
|
||
name: "ColorfulIcon",
|
||
component: () => import("@/views/vab/icon/colorfulIcon"),
|
||
meta: { title: "多彩图标" },
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "table",
|
||
component: EmptyLayout,
|
||
redirect: "noRedirect",
|
||
name: "Table",
|
||
meta: {
|
||
title: "表格",
|
||
permissions: ["admin"],
|
||
},
|
||
children: [
|
||
{
|
||
path: "comprehensiveTable",
|
||
name: "ComprehensiveTable",
|
||
component: () => import("@/views/vab/table/index"),
|
||
meta: { title: "综合表格" },
|
||
},
|
||
{
|
||
path: "inlineEditTable",
|
||
name: "InlineEditTable",
|
||
component: () => import("@/views/vab/table/inlineEditTable"),
|
||
meta: { title: "行内编辑" },
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "map",
|
||
component: () => import("@/views/vab/map/index"),
|
||
name: "Map",
|
||
meta: {
|
||
title: "地图",
|
||
permissions: ["admin"],
|
||
},
|
||
},
|
||
|
||
{
|
||
path: "webSocket",
|
||
name: "WebSocket",
|
||
component: () => import("@/views/vab/webSocket/index"),
|
||
meta: { title: "webSocket", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "form",
|
||
name: "Form",
|
||
component: () => import("@/views/vab/form/index"),
|
||
meta: { title: "表单", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "element",
|
||
name: "Element",
|
||
component: () => import("@/views/vab/element/index"),
|
||
meta: { title: "常用组件", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "tree",
|
||
name: "Tree",
|
||
component: () => import("@/views/vab/tree/index"),
|
||
meta: { title: "树", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "card",
|
||
name: "Card",
|
||
component: () => import("@/views/vab/card/index"),
|
||
meta: { title: "卡片", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "verify",
|
||
name: "Verify",
|
||
component: () => import("@/views/vab/verify/index"),
|
||
meta: { title: "验证码", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "menu1",
|
||
component: () => import("@/views/vab/nested/menu1/index"),
|
||
name: "Menu1",
|
||
alwaysShow: true,
|
||
meta: {
|
||
title: "嵌套路由 1",
|
||
permissions: ["admin"],
|
||
},
|
||
children: [
|
||
{
|
||
path: "menu1-1",
|
||
name: "Menu1-1",
|
||
alwaysShow: true,
|
||
meta: { title: "嵌套路由 1-1" },
|
||
component: () => import("@/views/vab/nested/menu1/menu1-1/index"),
|
||
|
||
children: [
|
||
{
|
||
path: "menu1-1-1",
|
||
name: "Menu1-1-1",
|
||
meta: { title: "嵌套路由 1-1-1" },
|
||
component: () =>
|
||
import("@/views/vab/nested/menu1/menu1-1/menu1-1-1/index"),
|
||
},
|
||
],
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "magnifier",
|
||
name: "Magnifier",
|
||
component: () => import("@/views/vab/magnifier/index"),
|
||
meta: { title: "放大镜", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "echarts",
|
||
name: "Echarts",
|
||
component: () => import("@/views/vab/echarts/index"),
|
||
meta: { title: "图表", permissions: ["admin"] },
|
||
},
|
||
|
||
{
|
||
path: "loading",
|
||
name: "Loading",
|
||
component: () => import("@/views/vab/loading/index"),
|
||
meta: { title: "loading", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "player",
|
||
name: "Player",
|
||
component: () => import("@/views/vab/player/index"),
|
||
meta: { title: "视频播放器", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "markdownEditor",
|
||
name: "MarkdownEditor",
|
||
component: () => import("@/views/vab/markdownEditor/index"),
|
||
meta: { title: "markdown编辑器", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "editor",
|
||
name: "Editor",
|
||
component: () => import("@/views/vab/editor/index"),
|
||
meta: {
|
||
title: "富文本编辑器",
|
||
permissions: ["admin"],
|
||
badge: "New",
|
||
},
|
||
},
|
||
{
|
||
path: "backToTop",
|
||
name: "BackToTop",
|
||
component: () => import("@/views/vab/backToTop/index"),
|
||
meta: { title: "返回顶部", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "lodash",
|
||
name: "Lodash",
|
||
component: () => import("@/views/vab/lodash/index"),
|
||
meta: { title: "lodash", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "imgComparison",
|
||
name: "ImgComparison",
|
||
component: () => import("@/views/vab/imgComparison/index"),
|
||
meta: { title: "图像拖拽比对", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "markdown",
|
||
name: "Markdown",
|
||
component: () => import("@/views/vab/markdown/index"),
|
||
meta: { title: "markdown阅读器", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "smallComponents",
|
||
name: "SmallComponents",
|
||
component: () => import("@/views/vab/smallComponents/index"),
|
||
meta: { title: "小组件", permissions: ["admin"] },
|
||
},
|
||
|
||
{
|
||
path: "upload",
|
||
name: "Upload",
|
||
component: () => import("@/views/vab/upload/index"),
|
||
meta: { title: "上传", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "log",
|
||
name: "Log",
|
||
component: () => import("@/views/vab/errorLog/index"),
|
||
meta: { title: "错误日志模拟", permissions: ["admin"] },
|
||
},
|
||
{
|
||
path: "more",
|
||
name: "More",
|
||
component: () => import("@/views/vab/more/index"),
|
||
meta: { title: "关于", permissions: ["admin"] },
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "/personnelManagement",
|
||
component: Layout,
|
||
redirect: "noRedirect",
|
||
name: "PersonnelManagement",
|
||
meta: { title: "配置", icon: "users-cog", permissions: ["admin"] },
|
||
children: [
|
||
{
|
||
path: "userManagement",
|
||
name: "UserManagement",
|
||
component: () =>
|
||
import("@/views/personnelManagement/userManagement/index"),
|
||
meta: { title: "用户管理" },
|
||
},
|
||
{
|
||
path: "roleManagement",
|
||
name: "RoleManagement",
|
||
component: () =>
|
||
import("@/views/personnelManagement/roleManagement/index"),
|
||
meta: { title: "角色管理" },
|
||
},
|
||
{
|
||
path: "menuManagement",
|
||
name: "MenuManagement",
|
||
component: () =>
|
||
import("@/views/personnelManagement/menuManagement/index"),
|
||
meta: { title: "菜单管理", badge: "New" },
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "/mall",
|
||
component: Layout,
|
||
redirect: "noRedirect",
|
||
name: "Mall",
|
||
meta: {
|
||
title: "商城",
|
||
icon: "shopping-cart",
|
||
permissions: ["admin"],
|
||
},
|
||
|
||
children: [
|
||
{
|
||
path: "pay",
|
||
name: "Pay",
|
||
component: () => import("@/views/mall/pay/index"),
|
||
meta: {
|
||
title: "支付",
|
||
noKeepAlive: true,
|
||
},
|
||
children: null,
|
||
},
|
||
{
|
||
path: "goodsList",
|
||
name: "GoodsList",
|
||
component: () => import("@/views/mall/goodsList/index"),
|
||
meta: {
|
||
title: "商品列表",
|
||
},
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "/error",
|
||
component: EmptyLayout,
|
||
redirect: "noRedirect",
|
||
name: "Error",
|
||
meta: { title: "错误页", icon: "bug" },
|
||
children: [
|
||
{
|
||
path: "401",
|
||
name: "Error401",
|
||
component: () => import("@/views/401"),
|
||
meta: { title: "401" },
|
||
},
|
||
{
|
||
path: "404",
|
||
name: "Error404",
|
||
component: () => import("@/views/404"),
|
||
meta: { title: "404" },
|
||
},
|
||
],
|
||
},
|
||
{
|
||
path: "*",
|
||
redirect: "/404",
|
||
hidden: true,
|
||
},
|
||
];
|
||
|
||
const router = new VueRouter({
|
||
base: publicPath,
|
||
mode: routerMode,
|
||
scrollBehavior: () => ({
|
||
y: 0,
|
||
}),
|
||
routes: constantRoutes,
|
||
});
|
||
//注释的地方是允许路由重复点击,如果你觉得框架路由跳转规范太过严格可选择放开
|
||
/* const originalPush = VueRouter.prototype.push;
|
||
VueRouter.prototype.push = function push(location, onResolve, onReject) {
|
||
if (onResolve || onReject)
|
||
return originalPush.call(this, location, onResolve, onReject);
|
||
return originalPush.call(this, location).catch((err) => err);
|
||
}; */
|
||
|
||
export function resetRouter() {
|
||
router.matcher = new VueRouter({
|
||
base: publicPath,
|
||
mode: routerMode,
|
||
scrollBehavior: () => ({
|
||
y: 0,
|
||
}),
|
||
routes: constantRoutes,
|
||
}).matcher;
|
||
}
|
||
|
||
export default router;
|