From 15bcbd44b6a3b2ec34092bc5ed3e213fa9c55de4 Mon Sep 17 00:00:00 2001
From: zuozhengqing <a13193816592@163.com>
Date: 星期三, 20 十二月 2023 16:14:56 +0800
Subject: [PATCH] 将侧栏菜单数据存储进vuex
---
src/router/index.js | 80 ++++++++++++++++++++++++++++++++++++++-
1 files changed, 77 insertions(+), 3 deletions(-)
diff --git a/src/router/index.js b/src/router/index.js
index b12b86e..7718b21 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -5,6 +5,9 @@
import productRouter from "./product/index.js" // 浜у搧
import operateRouter from "./operate/index.js" // 鎿嶄綔
import warehouseManageRouter from "./warehouseManage/index.js" // 浠撳簱绠$悊
+import reportRouter from "./report/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)
@@ -12,8 +15,20 @@
const productManage = (resolve) => require(["@/views/productManage/index"], resolve) // 浜у搧
const operate = (resolve) => require(["@/views/operate/index"], resolve) // 鎿嶄綔
const warehouseManage = (resolve) => require(["@/views/warehouseManage/index"], resolve) // 浠撳簱绠$悊
+const reportForm = (resolve) => require(["@/views/reportForm/index"], resolve) // 鎶ヨ〃
+const noData = (resolve) => require(["@/views/NoData/index"], resolve)
export const routes = [
+ // 鏃犳潈闄愭暟鎹〉闈�
+ {
+ path: "noData",
+ name: "noData",
+ meta: {
+ title: "",
+ auth: true,
+ },
+ component: noData,
+ },
{
path: "overview", // 姒傝堪
name: "overview",
@@ -50,6 +65,16 @@
children: warehouseManageRouter,
meta: {
title: "浠撳簱绠$悊",
+ isAllways: true
+ }
+ },
+ {
+ path: "reportForm", // 鎶ヨ〃
+ name: "reportForm",
+ component: reportForm,
+ children: reportRouter,
+ meta: {
+ title: "鎶ヨ〃",
isAllways: true
}
}
@@ -95,12 +120,61 @@
})
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 === 3);
+ if (foundObject) {
+ // 瀛樺偍杩泇uex
+ store.commit('setMenus', foundObject.menus);
+ 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) => {
+ try {
+ const result = await hasPermission(to.path);
+ console.log(result,"result")
+ next();
+ if (!isSkip) {
+ if(to.path==="/overview/overviewList"||to.path==="/overview/previewExcel"||to.path==="/operate/inventoryAdjustmentHistory"){
+ next();
+ }else{
+ next('/noData')
+ }
+ }
+ } catch (error) {
+ console.error('Error in navigation guard:', error);
+ next();
+ }
+});
+
router.afterEach((to, from, next) => {
- if ((to.path === "/overview/overviewList" || to.path === "/reportForm/inOutboundDetail") && to.query.name) {
+ if ((to.path === "/overview/overviewList" || to.path === "/productManage/productList") && to.params.name) {
console.log(from, next)
- to.meta.title = to.query.name
- document.title = to.meta.title
+ to.meta.title = to.params.name
+ // document.title = to.meta.title
+ } else if (to.name === "inboundOutboundDetail") {
+ to.meta.title = "鍏ュ簱鏄庣粏鎶ヨ〃"
+ // document.title = to.meta.title
}
})
// router.beforeEach((to, from, next) => {
--
Gitblit v1.8.0