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 |   60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 1 deletions(-)

diff --git a/src/router/index.js b/src/router/index.js
index dffb3c5..7718b21 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -6,6 +6,8 @@
 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)
@@ -14,8 +16,19 @@
 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",
@@ -107,9 +120,54 @@
   })
 
 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) => {
-  console.log(to, "to")
   if ((to.path === "/overview/overviewList" || to.path === "/productManage/productList") && to.params.name) {
     console.log(from, next)
     to.meta.title = to.params.name

--
Gitblit v1.8.0