From f09a8a0083fdc5a50ce699426bec8dc90bfc3e9c Mon Sep 17 00:00:00 2001
From: lcw <1878680531@qq.com>
Date: Thu, 16 Apr 2026 15:44:42 +0800
Subject: [PATCH] lcw
---
src/api/user-manage.js | 4 +-
src/layout/components/SideBar/SideBarMenu.vue | 84 ++++++++++++++-----
.../role-list/conponents/PrivilegesDialog.vue | 51 +++++------
.../systemConfig/role-list/index.vue | 10 ++-
.../user-list/components/roles.vue | 43 ++++++----
vue.config.js | 4 +-
6 files changed, 124 insertions(+), 72 deletions(-)
diff --git a/src/api/user-manage.js b/src/api/user-manage.js
index 203014e..5ff0c46 100644
--- a/src/api/user-manage.js
+++ b/src/api/user-manage.js
@@ -620,7 +620,7 @@ export const idCardNoLogin = (data) => {
method: "POST",
data
});
-}
+};
// 通过身份证号获取会话信息
export const getSessionForSfzh = (params) => {
return request({
@@ -636,7 +636,7 @@ export const idCardNoLoginPcs = (data) => {
method: "POST",
data
});
-}
+};
// 通过身份证号获取会话信息
export const getSessionForSfzhPcs = (params) => {
return request({
diff --git a/src/layout/components/SideBar/SideBarMenu.vue b/src/layout/components/SideBar/SideBarMenu.vue
index 8e857aa..c3cb4d9 100644
--- a/src/layout/components/SideBar/SideBarMenu.vue
+++ b/src/layout/components/SideBar/SideBarMenu.vue
@@ -1,8 +1,19 @@
-
@@ -11,27 +22,62 @@ import { computed } from "vue";
import { useRouter, useRoute } from "vue-router";
import { useStore } from "vuex";
import { filterRoutes, generateMenus } from "@/utils/route";
+import { getItem } from "@/utils/storage";
import SideBarItem from "./SideBarItem.vue";
const store = useStore();
const router = useRouter();
+const EXCLUDE_NAMES = [
+ "warningLists",
+ "behaviorWarnings",
+ "identityWarnings",
+ "combinedWarnings",
+ "DeploymentAreas",
+ "mpvPeos",
+ "myControls"
+];
+const filterRoutesByMenusPermission = (routes, menusSet) => {
+ return routes.reduce((result, route) => {
+ const children = Array.isArray(route.children)
+ ? filterRoutesByMenusPermission(route.children, menusSet)
+ : [];
+ const routeName = route.name ? `${route.name}` : "";
+ const selfMatched = routeName && menusSet.has(routeName);
+ if (selfMatched || children.length > 0) {
+ result.push({ ...route, children });
+ }
+ return result;
+ }, []);
+};
const routes = computed(() => {
const fRoutes = filterRoutes(router.getRoutes());
+ const data = fRoutes.filter((item) => !EXCLUDE_NAMES.includes(item.name));
+ const menusPermission = getItem("menusPermission");
+ console.log(JSON.parse(localStorage.getItem("menusPermission")));
+ console.log(
+ router.getRoutes().map((r) => ({ name: r.name, path: r.path })),
+ "xxx"
+ );
+ // menusPermission 里存的 name
+ router
+ .getRoutes()
+ .filter((r) => r.path === "/")
+ .map((r) => ({
+ name: r.name,
+ path: r.path,
+ children: r.children?.map((c) => ({ name: c.name, path: c.path }))
+ }));
+ console.log(JSON.parse(localStorage.getItem("menusPermission")));
+ const menusSet = new Set(
+ Array.isArray(menusPermission)
+ ? menusPermission.map((item) => `${item}`)
+ : []
+ );
+ console.log(menusSet);
- const data = fRoutes.filter(item => {
- if (item.name != "warningLists"
- && item.name != "behaviorWarnings"
- && item.name != "identityWarnings"
- && item.name != "combinedWarnings"
- && item.name != "DeploymentAreas"
- && item.name != "mpvPeos"
- && item.name != "myControls") {
- return item;
- }
- }
- )
- console.log(data);
-
- return generateMenus(data);
+ const permissionFiltered = menusSet.size
+ ? filterRoutesByMenusPermission(data, menusSet)
+ : data;
+ return generateMenus(permissionFiltered);
});
if (!store.getters.token) {
router.push("/login");
diff --git a/src/views/backOfficeSystem/systemConfig/role-list/conponents/PrivilegesDialog.vue b/src/views/backOfficeSystem/systemConfig/role-list/conponents/PrivilegesDialog.vue
index 2c7b06f..a6d4257 100644
--- a/src/views/backOfficeSystem/systemConfig/role-list/conponents/PrivilegesDialog.vue
+++ b/src/views/backOfficeSystem/systemConfig/role-list/conponents/PrivilegesDialog.vue
@@ -15,10 +15,9 @@
node-key="id"
show-checkbox
default-expand-all
- :check-strictly="true"
- @check="checkeTree"
- />
-
+ :check-strictly="false"
+ @check="handleCheck"
+ />