vue2+antd——实现动态菜单路由功能——基础积累
vue2+antd——实现动态菜单路由功能——基础积累
- 实现的需求:
- 效果图:
- 登录接口处添加以下代码
- `loadRoutes`方法内容如下:
最近在写后台管理系统,遇到一个需求就是要将之前的静态路由改为动态路由,使用的后台框架是:
vue-antd-admin
实现的需求:
在页面开始登录时,通过路由接口可以获取到所有有权限的菜单数据。
然后通过loadRoutes方法来实现异步动态路由。
效果图:

登录接口处添加以下代码
如上图所示,需要在登录接口调用成功后,书写以下的代码:
import { loadRoutes } from '@/utils/routerUtil.js';
//调用异步动态路由接口
//接口返回的数据格式如下:
loadRoutes({router:this.$router,store:this.$store,i18n:this.$18n},[{router:'root',children:[{router:'default',name:'工作台',component:()=>import('@/pages/dashboard/index')},{router:'/memberManage',name:'客户管理',component:()=>import('@/layouts/BlankView'),children:[{router:'list',path:'/company/list',name:'企业管理',component:()=>import('@/pages/Member/Company/list')},{router:'detail',path:'/company/detail',name:'企业详情',invisible:true,component:()=>import('@/pages/Member/Company/detail')}]},{router:'/member',name:'用户管理',component:()=>import('@/layouts/BlankView'),redirect:'/member/list',children:[{router:'list',name:'用户管理',path:'/member/list',component:()=>import('@/pages/Member/Member/list')},{router:'detail',name:'用户详情',path:'/member/detail',invisible:true,component:()=>import('@/pages/Member/Member/detail')}]},{router:'/system',name:'系统管理',component:()=>import('@/layouts/PageView'),children:[{router:'role',name:'角色管理',path:'/system/role',component:()=>import('@/pages/identity/RoleList'),},{router:'organization',name:'部门组织',path:'/system/organizaition',component:()=>import('@/pages/organization/organizationUnits')},{router:'user',name:'用户管理',path:'/system/user',component:()=>import('@/pages/identity/UserList')},{router:'dataDictionary',name:'数据字典',path:'/system/dataDictionary',component:()=>import('@/pages/dataDictionary/DataDictionary')},{router:'openApi',name:'客户端管理',path:'/system/openApi',component:()=>import('@/pages/OpenAPI/index')},{router:'httpApi',name:'HttpApi日志',path:'/system/httpApi',component:()=>import('@/pages/system/httpApi')},{router:'auditLog',name:'审计日志',path:'/system/auditLog',component:()=>import('@/pages/system/auditLog')},{router:'cache',name:'缓存列表',path:'/system/cache',component:()=>import('@/pages/system/cache')}]}]}]
)
loadRoutes方法内容如下:
function loadRoutes(routesConfig){if(arguments.length>0){const arg0 = arguments[0];if(arg0.router ||arg0.i18n||arg0.store){routesConfig = arguments[i];console.error('the usage of signature loadRoutes({router,store,i18n},routesConfig) is out of date,please use the new signature:loadRoutes(routesConfig)')connsole.error('方法签名 loadRoutes({router,store,i18n},routesConfig)的用法已过时,请使用新的方法签名loadRoutes(routesConfig)')}}//应用配置const {router,store,i18n} = appOptions;//如果routesConfig有值,则更新到本地,否则从本地获取if(routesConfig){store.commit('account/setRoutesConfig',routesConfig);}else{routesConfig = store.getters['account/routesConfig']}//如果开启了异步路由,则加载异步路由配置//const asyncRoutes = store.state.setting.asyncRoutesconst asyncRoutes = true;if(asyncRoutes){if(routesConfig&&routesConfig.length>0){const routes = parseRoutes(routesConfig,routerMap);const finalRoutes = mergeRoutes(basicOptions.routes,routes);formatRoutes(finalRoutes);router.options = {...router.options,routes:finalRoutes};router.matcher = new Router({...router.options,routes:[]}).matcher;router.addRoutes(finalRoutes);}}mergeI18nFromRoutes(i18n,router.options.routes);//初始化admin后台菜单数据const rootRoute = router.options.routes.find(item=>item.path==='/');const menuRoutes = rootRoute&&rootRoute.children;if(menuRoutes){store.commit('setting/setMenuData',menuRoutes);}
}
相关文章:
vue2+antd——实现动态菜单路由功能——基础积累
vue2antd——实现动态菜单路由功能——基础积累 实现的需求:效果图:登录接口处添加以下代码loadRoutes方法内容如下: 最近在写后台管理系统,遇到一个需求就是要将之前的静态路由改为动态路由,使用的后台框架是…...
代码随想录算法训练营第三十八天丨 动态规划part01
动态规划理论基础 动态规划刷题大纲 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&a…...
关于集合遇到的坑
public void invoke(ComparisonSpotEvaluationResultsExcel comparisonSpotEvaluationResultsExcel, AnalysisContext analysisContext) {/*** 记录行号码*/ReadRowHolder readRowHolder analysisContext.readRowHolder();Integer rowIndex readRowHolder.getRowIndex();Stri…...
需要下微信视频号视频的小伙伴们看过来~
随着视频号的热度越来越大,下载视频号视频的需求也开始增加啦,今天给大家给分享几个简单实用的下载方法,总有一个你能用上的! 一、犀牛视频下载 犀牛视频下载器可以直接解析并下载视频号短视频。您只需转发视频到机器人即可下载。…...
测试工具:hurl
文章目录 Hurlinstallstartdemo 功能使用变量Capturing values 捕获值Asserts 断言生成报告 Hurl 官网:https://hurl.dev/ Hurl 是一个命令行工具,它运行以简单的纯文本格式定义的 HTTP 请求。 它可以发送请求、捕获值并评估对标头和正文响应的查询 i…...
RateLimiter限流
使用场景 限流是高并发的处理方法之一。 高并发处理方案: 缓存:缓存的目的是提升系统访问速度和增大系统处理容量。 降级:降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,待高峰或者问题解决后再打开。…...
PMP适合哪些人去考?
许多人都在考虑是否适合考取PMP证书,我来解答你的疑惑:无论是IT、建筑、制药、制造业、电信、金融还是通信领域,PMP证书都得到广泛认可。虽然IT行业目前占比最大,但近几年T业比重下降,制造业、金融、能源和建筑工程等的…...
钡铼技术 工控机中的X86和ARM处理器:哪个更具可扩展性?
X86和ARM是两种不同的处理器架构,它们在工控机中的应用也有所不同。 X86架构的处理器是英特尔公司和AMD公司生产的,它们主要应用于个人电脑和服务器等领域。X86架构的处理器具有良好的通用性和兼容性,可以运行各种操作系统和应用软件。X86架…...
软考 系统架构设计师系列知识点之软件构件(3)
接前一篇文章:软考 系统架构设计师系列知识点之软件构件(2) 所属章节: 第2章. 计算机系统基础知识 第3节. 计算机软件 2.3.7 软件构件 (2)J2EE(补充知识) J2EE核心组成:…...
中科驭数亮相2023中国移动全球合作伙伴大会
10月11-13日,2023中国移动全球合作伙伴大会开幕。中科驭数作为移动云COCA生态合作伙伴,受邀出席“算网融百业数智赢未来”政企分论坛,高级副总裁张宇上台参与移动云OpenCOCA开源项目和《OpenCOCA白皮书》的重磅发布仪式,助力构建未…...
WebGIS国产化(信创)研发流程一:数据库的调研与介绍
眼下互联网产业国产化已经成为不可阻挡的趋势,WebGIS的开发工作也不例外,越来越依靠纯国产的软件和产品,甚至是框架。企业中使用国产软件和产品的项目占比也在不断升高,我将分享一系列的文章给大家,来共同研究GIS的国产…...
[Shell] ${} 的多种用法
文章目录 解释代码 解释 在Shell脚本中,${} 是一种变量替换语法。它用于获取和操作变量的值。 具体来说,${} 可以用来执行以下操作: 变量引用:${variable} 表示引用变量 variable 的值。 变量默认值:${variable:-de…...
基于SpringBoot的社区医院管理系统设计与实现
目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 用户信息管理 病例信息管理 家庭医生管理 药品信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的…...
Spring的执行流程与Bean的生命周期
目录 一、Spring的执行流程(生命周期) 二、Bean的生命周期 一、Spring的执行流程(生命周期) 首先在Spring的执行过程中会先启动容器,这里是将配置文件进行加载。根据配置文件完成Bean的实例化,比如是配置的…...
使用 SQL 的方式查询消息队列数据以及踩坑指南
背景 为了让业务团队可以更好的跟踪自己消息的生产和消费状态,需要一个类似于表格视图的消息列表,用户可以直观的看到发送的消息;同时点击详情后也能查到消息的整个轨迹。 消息列表 点击详情后查看轨迹 原理介绍 由于 Pulsar 并没有关系型数…...
拿下国家级信创认证 中科驭数KPU SWIFT-2200N成为国内首款满足金融业严苛要求的DPU产品
近日,中科驭数KPU SWIFT-2200N低时延DPU卡,在中国人民银行旗下金融信创生态实验室完成测试并取得测试报告,这意味着中科驭数低时延网络代表性产品的应用领域从证券进一步拓展到了银行业,成为国内首款满足金融行业严苛要求的DPU产品…...
centos怎么禁用和关闭selinux
要禁用和关闭SELinux(Security-Enhanced Linux)在CentOS上,请按照以下步骤进行: 请注意:禁用SELinux会减少系统的安全性,因此只有在确切知道自己在做什么并且出于特定目的时才应该这样做。 1.打开终端并以超级用户(root)身份登录&…...
【LeetCode刷题日志】88.合并两个有序数组
🎈个人主页:库库的里昂 🎐C/C领域新星创作者 🎉欢迎 👍点赞✍评论⭐收藏✨收录专栏:LeetCode 刷题日志🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,…...
计算机考研 | 2013年 | 计算机组成原理真题
文章目录 【计算机组成原理2013年真题43题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题44题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题43题-9分】 某32位计算机&a…...
[Unity][VR]透视开发系列4-解决只看得到Passthrough但看不到Unity对象的问题
【视频资源】 视频讲解地址请关注我的B站。 专栏后期会有一些不公开的高阶实战内容或是更细节的指导内容。 B站地址: https://www.bilibili.com/video/BV1Zg4y1w7fZ/ 我还有一些免费和收费课程在网易云课堂(大徐VR课堂): https://study.163.com/provider/480000002282025/…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
