import Vue from "vue"
|
import Router from "vue-router"
|
// import type from "@/router/deployCode"
|
|
import supplierRouter from "./supplier/index.js"
|
import purchaseRouter from "./purchase/index.js"
|
import productRouter from "./product/index.js"
|
import {getMenuTreeByRole} from "@/api/menus/index"
|
import store from '@/store/index.js';
|
|
Vue.use(Router)
|
const login = (resolve) => require(["@/views/other/login/index"], resolve)
|
const supplierManage = (resolve) => require(["@/views/supplierManage/index"], resolve)
|
const purchaseManage = (resolve) => require(["@/views/purchaseManage/index"], resolve)
|
const productManage = (resolve) => require(["@/views/productManage/index"], resolve)
|
const PreviewFile = (resolve) => require(["@/views/supplierManage/supplier/PreviewFile"], resolve)
|
const noData = (resolve) => require(["@/views/NoData/index"], resolve)
|
const commonSet = (resolve) => require(["@/views/systemSet/commonSet/index"], resolve) //系統設置
|
|
export const routes = [
|
// 无数据页面
|
{
|
path: "noData",
|
name: "noData",
|
meta: {
|
title: "",
|
auth: true,
|
},
|
component: noData,
|
},
|
{
|
path: "supplierManage", // 供应商管理
|
name: "supplierManage",
|
component: supplierManage,
|
children: supplierRouter,
|
meta: {
|
title: "供应商管理",
|
isAllways: true
|
}
|
},
|
{
|
path: "purchaseManage", // 采购管理
|
name: "purchaseManage",
|
component: purchaseManage,
|
children: purchaseRouter,
|
meta: {
|
title: "采购管理",
|
isAllways: true
|
}
|
},
|
{
|
path: "productManage", // 产品管理
|
name: "productManage",
|
component: productManage,
|
children: productRouter,
|
meta: {
|
title: "产品管理",
|
isAllways: true
|
}
|
},
|
{
|
path: "/systemSet/commonSet",
|
name: "commonSet",
|
component: commonSet,
|
meta: {
|
title: "通用设置"
|
}
|
}
|
]
|
export const constantRoutes = [
|
{
|
path: "/",
|
component: () => import("@/components/layout/index"),
|
name: "Index",
|
meta: {
|
title: "首页",
|
isAllways: true,
|
insIndex: true
|
},
|
redirect: {
|
name: "supplier"
|
},
|
children: routes
|
},
|
{
|
path: "/login",
|
component: login,
|
meta: {
|
isLogin: true,
|
title: "登录"
|
}
|
},
|
{
|
path: "/PreviewFile",
|
component: PreviewFile,
|
meta: {
|
isLogin: true,
|
title: "预览"
|
}
|
},
|
{
|
path: "*",
|
component: () => import("@/views/other/error/404"),
|
meta: {
|
title: "404"
|
}
|
}
|
]
|
// 导出路由 在 main.js 里使用
|
const createRouter = () =>
|
new Router({
|
mode: "history",
|
// base: window.getServerJson.context,
|
scrollBehavior: () => ({ y: 0 }),
|
routes: constantRoutes
|
})
|
|
const router = createRouter()
|
|
let isSkip = false;
|
async function hasPermission(routePath) {
|
isSkip = false;
|
try {
|
const res = await getMenuTreeByRole();
|
const newPath = {
|
path: "/noData"
|
};
|
const foundObject = res.data.list.find(obj => obj.systemType === 4);
|
if (foundObject) {
|
// 存储进vuex
|
store.commit('setMenus', foundObject);
|
foundObject.menus.forEach(item => {
|
const nextPath = item.children.find(obj => obj.path === routePath);
|
if (nextPath) {
|
newPath.path = nextPath.path;
|
isSkip = true;
|
}
|
});
|
} else {
|
newPath.path = '/noData';
|
}
|
return newPath;
|
} catch (error) {
|
return { path: "/noData" };
|
}
|
}
|
router.beforeEach(async (to, from, next) => {
|
console.log(to,from,"看看")
|
try {
|
const result = await hasPermission(to.path);
|
console.log(result,"result")
|
next();
|
if (!isSkip) {
|
next('/noData')
|
}
|
} catch (error) {
|
console.error('Error in navigation guard:', error);
|
next();
|
}
|
});
|
|
// router.beforeEach((to, from, next) => {
|
// must call `next`
|
// console.log(to, from)
|
// if (to.path === "/custom/salesLead") {
|
// next()
|
// } else {
|
// if (to.meta.requireAuth) {
|
// next({
|
// path: "/login",
|
// query: { redirect: to.fullPath }
|
// })
|
// } else {
|
// next()
|
// }
|
// }
|
// })
|
|
export default router
|