import Vue from "vue"; import Router from "vue-router"; Vue.use(Router); /* Layout */ import Layout from "@/layout"; /** * Note: 路由配置项 * * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1 * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面 * // 若你想不管路由下面的 children 声明的个数都显示你的根路由 * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由 * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题 * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数 * roles: ['admin', 'common'] // 访问路由的角色权限 * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限 * meta : { noCache: true // 如果设置为true,则不会被 缓存(默认 false) title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字 icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。 } */ // 公共路由 export const constantRoutes = [ { path: "/redirect", component: Layout, hidden: true, children: [ { path: "/redirect/:path(.*)", component: () => import("@/views/redirect"), }, ], }, { path: "/login", component: () => import("@/views/login"), hidden: true, }, { path: "/register", component: () => import("@/views/register"), hidden: true, }, { path: "/404", component: () => import("@/views/error/404"), hidden: true, }, { path: "/401", component: () => import("@/views/error/401"), hidden: true, }, { path: "", component: Layout, redirect: "index", children: [ { path: "index", component: () => import("@/views/index"), name: "Index", meta: { title: "首页", icon: "dashboard", affix: true }, }, ], }, { path: "/user", component: Layout, hidden: true, redirect: "noredirect", children: [ { path: "profile", component: () => import("@/views/system/user/profile/index"), name: "Profile", meta: { title: "个人中心", icon: "user" }, }, ], }, //销售出库单 { path: "/sell/sellOut/sellOutBill", component: Layout, hidden: true, // permissions: ["system:goods:add"], redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/sell/sellOut", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/sell/sellOut/sellOutBill", component: () => import("@/views/sell/sellOut/sellOutBill"), name: "SellOutBill", meta: { title: "销售出库单", activeMenu: "sell/sellOut" }, }, ], }, //销售出库单编辑页面 { path: "/sell/sellOut/sellOutBillEdit", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/sell/sellOut", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/sell/sellOut/sellOutBillEdit", component: () => import("@/views/sell/sellOutBill/edit"), name: "SellOutBillEdit", meta: { title: "销售出库单编辑", activeMenu: "sell/sellOut" }, }, ], }, //用户列表 { path: "/system/user/xtUserList", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/system/user", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/system/user/xtUserList", component: () => import("@/views/system/user/xtUserList.vue"), name: "XtUserList", meta: { title: "用户列表", activeMenu: "system/user" }, }, ], }, //采购入库单 { path: "/purchase/POStockInBill/POStockInBillList", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/purchase/POStockInBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/purchase/POStockInBill/POStockInBillList", component: () => import("@/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillList.vue"), name: "POStockInBillList", meta: { title: "采购入库单", activeMenu: "purchase/POStockInBill" }, }, ], }, //采购入库单编辑页面 { path: "/purchase/POStockInBill/POStockInBillEdit", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/purchase/POStockInBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/purchase/POStockInBill/POStockInBillEdit", component: () => import("@/views/CaiGouGuanLi/CaiGouRuKu/Kf_POStockInBillEdit.vue"), name: "POStockInBillEdit", meta: { title: "采购入库单编辑", activeMenu: "/purchase/POStockInBill" }, }, ], }, //生产资源 { path: "/basic/production/gySource", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/production/gySource", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/production/gySource", component: () => import("@/views/basic/production/gySource.vue"), name: "GySource", meta: { title: "生产资源列表", activeMenu: "basic/production" }, }, ], }, //打印列表页面 { path: "/printList", component: () => import("@/views/component/printList/index"), hidden: true, }, { path: "/hBarPlanPrint", component: () => import("@/views/component/printList/hBarPlanPrint"), hidden: true, }, // 仓库 { path: "/basic/gy/gyWarehouse", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gyWarehouse", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gyWarehouse", component: () => import("@/views/basic/gyWarehouse/gyWarehouse"), name: "GyWarehouse", meta: { title: "仓库列表", activeMenu: "basic/gy" }, }, ], }, // 仓位 { path: "/basic/gy/gyStockPlace", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gyStockPlace", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gyStockPlace", component: () => import("@/views/basic/gyStockPlace/gyStockPlace.vue"), name: "GyStockPlace", meta: { title: "仓位列表", activeMenu: "basic/gy" }, }, ], }, // 职员 { path: "/basic/gy/gyEmployee", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gyEmployee", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gyEmployee", component: () => import("@/views/basic/gyEmployee/gyEmployee.vue"), name: "GyEmployee", meta: { title: "职员列表", activeMenu: "basic/gy" }, }, ], }, //部门列表 { path: "/basic/gy/gyDepartment", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gyDepartment", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gyDepartment", component: () => import("@/views/basic/gy/gyDepartment.vue"), name: "GyDepartment", meta: { title: "部门列表", activeMenu: "basic/gy" }, }, ], }, // 销售订单 { path: "/sales/seOrder/xsSeOrderBill", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/sales/seOrder/xsSeOrderBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/sales/seOrder/xsSeOrderBill", component: () => import("@/views/sell/xsSeOrderBill/xsSeOrderBill"), name: "XsSeOrderBill", meta: { title: "销售订单维护", activeMenu: "sales/seOrder" }, }, ], }, { path: "/sales/seOrder/xsSeOrderBillEdit", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/sales/seOrder/xsSeOrderBillEdit", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/sales/seOrder/xsSeOrderBillEdit", component: () => import("@/views/sell/xsSeOrderBill/xsSeOrderBillEdit"), name: "XsSeOrderBillEdit", meta: { title: "销售订单编辑", activeMenu: "sales/seOrder" }, }, ], }, // 采购订单 { path: "/purchase/poOrder/cgPoOrderBill", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/purchase/poOrder/cgPoOrderBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/purchase/poOrder/cgPoOrderBill", component: () => import("@/views/purchase/cgPoOrderBill/cgPoOrderBill"), name: "CgPoOrderBill", meta: { title: "采购订单列表", activeMenu: "/purchase/PoOrder" }, }, ], }, // 收料通知单 { path: "/purchase/PoInStock/cgPoInStockBill", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/purchase/PoInStock/cgPoInStockBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/purchase/PoInStock/cgPoInStockBill", component: () => import("@/views/purchase/cgPoInStockBill/cgPoInStockBill"), name: "CgPoInStockBillList", meta: { title: "收料通知单列表", activeMenu: "/purchase/PoInStock" }, }, ], }, // 发货通知单 { path: "/sales/seOutStock/xsSeOutStockBill", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/sales/seOutStock/xsSeOutStockBill", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/sales/seOutStock/xsSeOutStockBill", component: () => import("@/views/sell/XsSeOutStockBill.vue"), name: "XsSeOutStockBill", meta: { title: "发货通知单列表", activeMenu: "/sales/seOutStock" }, }, ], }, // 退货通知单 { path: "/sales/seOutStockBack/xsSeOutStockBackBillList", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/sales/seOutStockBack/xsSeOutStockBackBillList", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/sales/seOutStockBack/xsSeOutStockBackBillList", component: () => import("@/views/sell/XsSeOutStockBackBillList.vue"), name: "XsSeOutStockBackBillList", meta: { title: "退货通知单列表", activeMenu: "/sales/seOutStockBack" }, }, ], }, // 生产订单 { path: "/icmo/scIcmoBill/scIcmoBillList", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/icmo/scIcmoBill/scIcmoBillList", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/icmo/scIcmoBill/scIcmoBillList", component: () => import("@/views/ICMO/ScICMOBillList.vue"), name: "ScICMOBillList", meta: { title: "生产订单列表", activeMenu: "/icmo/scIcmoBill" }, }, ], }, { path: "/ScICMOBillList", component: () => import("@/views/ICMO/ScICMOBillList.vue"), hidden: true, }, //供应商列表 { path: "/basic/gy/gySupplier", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gySupplier", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gySupplier", component: () => import("@/views/basic/gy/gySupplier.vue"), name: "GySupplier", meta: { title: "供应商列表", activeMenu: "basic/gy" }, }, ], }, // 客户 { path: "/GyCustomer", component: () => import("@/views/GyCustomer/index"), hidden: false, }, { path: "/basic/gy/gyCustomer", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gyCustomer", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gyCustomer", component: () => import("@/views/GyCustomer/index"), name: "GyCustomer", meta: { title: "客户列表", activeMenu: "basic/gy" }, }, ], }, // 物料 { path: "/gyMaterial", component: () => import("@/views/gyMaterial/GyMaterial"), hidden: false, }, { path: "/basic/gy/gyMaterial", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/gyMaterial", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/gyMaterial", component: () => import("@/views/gyMaterial/GyMaterial"), name: "gyMaterial", meta: { title: "物料列表", activeMenu: "basic/gy" }, }, ], }, // 分布式调入单 { path: "/FbStepFoldinBillList", component: () => import("@/views/FbStepFoldinBillList/fbStepFoldinBillList"), hidden: false, }, { path: "/basic/gy/FbStepFoldinBillList", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/FbStepFoldinBillList", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/FbStepFoldinBillList", component: () => import("@/views/FbStepFoldinBillList/fbStepFoldinBillList"), name: "FbStepFoldinBillList", meta: { title: "分布式调入单", activeMenu: "basic/gy" }, }, ], }, //分布式调出单fbStepFoldOutBillList { path: "/fbStepFoldOutBillList", component: () => import("@/views/FbStepFoldOutBillList/fbStepFoldOutBillList"), hidden: false, }, { path: "/basic/gy/FbStepFoldOutBillList", component: Layout, hidden: true, redirect: "noredirect", meta: { breadcrumb: false, // 如果设置为false,则不会在breadcrumb面包屑中显示 activeMenu: "/basic/gy/FbStepFoldOutBillList", // 当路由设置了该属性,则会高亮相对应的侧边栏。 }, children: [ { path: "/basic/gy/FbStepFoldOutBillList", component: () => import("@/views/FbStepFoldOutBillList/fbStepFoldOutBillList"), name: "FbStepFoldOutBillList", meta: { title: "分布式调入单", activeMenu: "basic/gy" }, }, ], }, ]; // 动态路由,基于用户权限动态去加载 export const dynamicRoutes = [ { path: "/system/user-auth", component: Layout, hidden: true, permissions: ["system:user:edit"], children: [ { path: "role/:userId(\\d+)", component: () => import("@/views/system/user/authRole"), name: "AuthRole", meta: { title: "分配角色", activeMenu: "/system/user" }, }, ], }, { path: "/system/role-auth", component: Layout, hidden: true, permissions: ["system:role:edit"], children: [ { path: "user/:roleId(\\d+)", component: () => import("@/views/system/role/authUser"), name: "AuthUser", meta: { title: "分配用户", activeMenu: "/system/role" }, }, ], }, { path: "/system/dict-data", component: Layout, hidden: true, permissions: ["system:dict:list"], children: [ { path: "index/:dictId(\\d+)", component: () => import("@/views/system/dict/data"), name: "Data", meta: { title: "字典数据", activeMenu: "/system/dict" }, }, ], }, { path: "/monitor/job-log", component: Layout, hidden: true, permissions: ["monitor:job:list"], children: [ { path: "index/:jobId(\\d+)", component: () => import("@/views/monitor/job/log"), name: "JobLog", meta: { title: "调度日志", activeMenu: "/monitor/job" }, }, ], }, { path: "/tool/gen-edit", component: Layout, hidden: true, permissions: ["tool:gen:edit"], children: [ { path: "index/:tableId(\\d+)", component: () => import("@/views/tool/gen/editTable"), name: "GenEdit", meta: { title: "修改生成配置", activeMenu: "/tool/gen" }, }, ], }, ]; // 防止连续点击多次路由报错 let routerPush = Router.prototype.push; let routerReplace = Router.prototype.replace; // push Router.prototype.push = function push(location) { return routerPush.call(this, location).catch((err) => err); }; // replace Router.prototype.replace = function push(location) { return routerReplace.call(this, location).catch((err) => err); }; export default new Router({ mode: "history", // 去掉url中的# scrollBehavior: () => ({ y: 0 }), routes: constantRoutes, });