Преглед на файлове

feat: 添加路由数据格式化和扁平化功能,优化权限管理逻辑

张涛 преди 1 година
родител
ревизия
07d2e4076b
променени са 3 файла, в които са добавени 29 реда и са изтрити 5 реда
  1. 1 0
      src/base/store/use-current-user.js
  2. 26 4
      src/utils/permission.js
  3. 2 1
      src/views/account/use-logout.js

+ 1 - 0
src/base/store/use-current-user.js

@@ -71,6 +71,7 @@ export const useCurrentUserStore = defineStore('current_user', {
         // 将 setItem 包装在一个 Promise 中并等待完成
         return new Promise((resolve, reject) => {
           try {
+            localST_RoutesList.removeItem();
             localST_RoutesList.setItem(JSON.stringify(routers));
             resolve();
           } catch (error) {

+ 26 - 4
src/utils/permission.js

@@ -18,7 +18,13 @@ export const hasPermission = (str) => {
     return false;
   }
 };
-// 格式化路由数据
+
+/**
+ * 格式化路由数据,将原始路由数据转换为组件路由对象。
+ *
+ * @param {Array} data - 原始路由数据数组,每个元素包含路由的相关信息。
+ * @returns {Array} routes - 格式化后的路由对象数组。
+ */
 export const formatRoutes = (data) => {
   const routes = [];
 
@@ -60,7 +66,12 @@ export const formatRoutes = (data) => {
   return routes;
 };
 
-// 扁平化路由数据
+/**
+ * 扁平化路由数据,将嵌套的路由对象数组扁平化为一维数组。
+ *
+ * @param {Array} routes - 嵌套的路由对象数组。
+ * @returns {Array} flatRoutes - 扁平化后的路由对象数组。
+ */
 export const flattenRoutes = (routes) => {
   let flatRoutes = [];
 
@@ -77,7 +88,13 @@ export const flattenRoutes = (routes) => {
   return flatRoutes;
 };
 
-// 获取有权限的路由
+/**
+ * 初始化路由,获取并格式化有权限的路由。
+ *
+ * @returns {Object} - 包含 accessRoutes 和 accessFlatRoutes 的对象。
+ * @property {Array} accessRoutes - 格式化后的有权限路由对象数组。
+ * @property {Array} accessFlatRoutes - 扁平化后的有权限路由对象数组。
+ */
 let routesList = [];
 let accessRoutes = [];
 let accessFlatRoutes = [];
@@ -93,7 +110,12 @@ export const initializeRoutes = () => {
   return { accessRoutes, accessFlatRoutes };
 };
 
-// 递归过滤未启用的节点
+/**
+ * 递归过滤出状态为启用的节点。
+ *
+ * @param {Array} nodes - 原始节点数组,每个节点包含状态和子节点信息。
+ * @returns {Array} - 过滤后的启用节点数组。
+ */
 export const filterNotEnabledTree = (nodes) => {
   return nodes
     .filter((node) => node.status === '1')

+ 2 - 1
src/views/account/use-logout.js

@@ -1,5 +1,5 @@
 import { useRouter } from 'vue-router';
-import { kuky_Authorization } from '../../base/storage';
+import { kuky_Authorization, localST_RoutesList } from '../../base/storage';
 import { resetHasRouteFlag } from '../../router';
 
 /**
@@ -10,6 +10,7 @@ export default function useLogout() {
   const router = useRouter();
 
   return () => {
+    localST_RoutesList.removeItem();
     kuky_Authorization.remove();
 
     // 重置路由守卫标志位