123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497 |
- /**
- * @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: "/personalCenter",
- component: Layout,
- hidden: true,
- redirect: "personalCenter",
- children: [
- {
- path: "personalCenter",
- name: "PersonalCenter",
- component: () => import("@/views/personalCenter/index"),
- meta: {
- title: "个人中心",
- },
- },
- ],
- },
- /* {
- path: "/test",
- component: Layout,
- redirect: "noRedirect",
- children: [
- {
- path: "test",
- name: "Test",
- component: () => import("@/views/test/index"),
- meta: {
- title: "test",
- icon: "marker",
- 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: "/vab",
- component: Layout,
- redirect: "noRedirect",
- name: "Vab",
- alwaysShow: true,
- meta: { title: "组件", icon: "box-open" },
- children: [
- {
- 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: "permissions",
- name: "Permission",
- component: () => import("@/views/vab/permissions/index"),
- meta: {
- title: "权限控制",
- permissions: ["admin", "editor"],
- },
- },
- {
- 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: "betterScroll",
- name: "BetterScroll",
- component: () => import("@/views/vab/betterScroll/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: "qrCode",
- name: "QrCode",
- component: () => import("@/views/vab/qrCode/index"),
- meta: { title: "二维码", permissions: ["admin"] },
- },
- {
- 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: "codeGenerator",
- name: "CodeGenerator",
- component: () => import("@/views/vab/codeGenerator/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: "sticky",
- name: "Sticky",
- component: () => import("@/views/vab/sticky/index"),
- meta: { title: "sticky吸附", 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: "blacklist",
- name: "Blacklist",
- component: () => import("@/views/vab/blacklist/index"),
- meta: { title: "黑名单", permissions: ["admin"] },
- },
- ],
- },
- {
- 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: "goodsDetail",
- name: "GoodsDetail",
- component: () => import("@/views/mall/goodsDetail/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;
|