第6章 el-menu刷新保持当前菜单选项与角色页面

news2024/11/18 17:36:29

1重构:src\components\AdminLayoutComponen.vue(el-menu刷新保持当前菜单选项)

<template>

    <el-container>

        <!-- 侧边栏 "<div class="aside">标签可被删除,为了下拉条控件样式保存了该标签"-->

        <div class="aside">

            <el-aside width="200px">

                <!--必须包含有:"el-menu"标签,否则左侧菜单栏的高度不能达到100% -->

                <el-menu active-text-color="#ffd04b" background-color="#545c64" class="el-menu-vertical-demo"

                    text-color="#fff" :default-active="activeIndex" router>

                    <template v-for="(item, index) in menuList" :key="index">

                        <el-sub-menu v-if="item.children && item.children.length" :index="item.menuId">

                            <template #title>

                                <el-icon>

                                    <component :is="item.icon"></component>

                                </el-icon>

                                <span>{{item.name}}</span>

                            </template>

                            <el-menu-item v-for="(children, index) in item.children" :key="index"

                                :route="{path:children.path}" :index="children.menuId">

                                {{children.name}}

                            </el-menu-item>

                        </el-sub-menu>

                        <el-menu-item v-else :route="{path:item.path}" :index="item.menuId">

                            <el-icon>

                                <component :is="item.icon"></component>

                            </el-icon>

                            <span>{{item.name}}</span>

                        </el-menu-item>

                    </template>

                </el-menu>

            </el-aside>

        </div>

        <el-container>

            <el-header>Header</el-header>

            <el-main>

                <router-view></router-view>

            </el-main>

            <el-footer>Footer</el-footer>

        </el-container>

    </el-container>

</template>

<script>

    import router from '../router/index.js'

    export default {

        data() {

            return {

                //对所有后台管理路由实例进行存储,为左侧菜单栏的渲染显示提供数据支撑。

                menuList: {},

                // el-menu刷新保持当前菜单选项。

                activeIndex: "1",

            };

        },

        methods: {

            async getAllMenu() {

                this.menuList = this.$router.options.routes.find(route => route.path === "/").children;

            },

            // el-menu刷新保持当前菜单选项。

            async setCurrentRoute() {

                let adminRouteList = this.$router.options.routes.find(route => route.path === "/").children

                adminRouteList.forEach((item) => {

                    if (item.name === this.$route.name)

                        this.activeIndex = item.menuId;

                    if (item.children) {

                        if (item.children.find(route => route.name === this.$route.name) != null)

                            this.activeIndex = item.children.find(route => route.name == this.$route.name).menuId;

                    }

                });

                //console.log(this.activeIndex);

            },

        },

        mounted() {

            this.getAllMenu();

            console.log(router.options.routes.find(route => route.path === "/"));

            console.log(JSON.stringify(router.options.routes.find(route => route.path === "/")));

            //“JSON”编码格式把所有后台管理路由实例进行全局存储(Vuex=store)

            if (window.localStorage.router != null)

                window.localStorage.router = null;

            console.log(window.localStorage.router);

            window.localStorage.router = JSON.stringify(router.options.routes.find(route => route.path === "/"))

            console.log(window.localStorage.router);

        },

        // 检测路由变化,el-menu刷新保持当前菜单选项。

        watch: {

            $route() {

                this.setCurrentRoute();

            }

        },

        created() {

            //el-menu刷新保持当前菜单选项。

            this.setCurrentRoute();

        },

    }

</script>

<style scoped lang="scss">

    .aside {

        width: 200px;

        overflow: hidden;

        background-color: #545c64;

    }

    .el-aside {

        height: 100%;

        //overflow-x: hidden;

        //overflow-y: scroll;

    }

    .el-header {

        background-color: #ff0000;

        color: #FFFFFF;

    }

    .el-main {

        height: 90vh; //必须定义:"height"为:90vh,否则主区域的高度不能达到100%;如果大于90vh整页的调度将超过100%

    }

    .el-footer {

        background-color: #0000ff;

        color: #FFFFFF;

    }

    //必须定义:".el-menu"样式,否则左侧菜单栏的高度不能达到100%

    .el-menu {

        height: 90vh; //必须定义:"height"为:90vh,否则左侧菜单栏的高度不能达到100%;如果大于90vh整页的调度将超过100%

    }

    .el-menu .el-menu-item.is-active {

        background-color: #000000;

        font-weight: 900;

        font-size: 120%;

    }

</style>

2 重构src\views\Users\ RoleView.vue

<template>

    <el-table :data="roleAllList" style="width: 100%" :row-style="{height:'30px'}">

        <el-table-column type="selection" width="50px" />

        <el-table-column property="name" label="名称" />

        <el-table-column property="isActive" label="启用?" />

        <el-table-column label="操作" align="center">

            <template #default="scope">

                <el-button type="primary" @click="handleEdit(scope.$index, scope.row)" size="large" style="margin-right: 10px;"> </el-button>

                <el-button type="danger" @click="handleDelete(scope.$index, scope.row)" size="large"> </el-button>

            </template>

        </el-table-column>

    </el-table>

</template>

<script>

    import axios from 'axios'

    export default ({

        data() {

            return {

                roleAllList: [],

            };

        },

        methods: {

            //获取角色实体的所有实例。

            async getRoleList() {

                let res = await axios.get('https://localhost:7043/Role/GetRoleList');

                console.log(res.data);

                this.roleAllList = res.data;

            },

        },

        mounted() {

            this.getRoleList();

        }

    });

</script>

<style scoped lang="scss">

    // 修改表头样式。

    :deep(.el-table__header thead th) {

        background-color: #000000;

        color: #ffd04b;

        font-size: 150%;

        font-weight: 700;

        text-align: center;

    }

    //修改复选框控件样式。

    :deep(.el-checkbox) {

        display: flex;

        align-items: center;

        width: 25px;

        height: 25px;

        //修改选中框的大小

        .el-checkbox__inner {

            width: 20px;

            height: 20px;

            border: #409EFF solid 2px;

            //修改选中框中的对勾的大小和位置

            &::after {

                // 对号

                border: 4px solid #FFFFFF;

                // 不覆盖下面的 导致对号变形

                box-sizing: content-box;

                content: "";

                border-left: 0;

                border-top: 0;

                height: 15px;

                position: absolute;

                top: -3px;

            }

        }

        //修改点击文字颜色不变

        .el-checkbox__input.is-checked+.el-checkbox__label {

            color: #333333;

        }

        .el-checkbox__label {

            line-height: 25px;

            //padding-left: 8px;

        }

    }

    //表格隔行变换颜色。

    :deep(.el-table__body tbody tr:nth-child(odd)) {

        background-color: #FFFFFF;

        font-size: 120%;

        font-weight: 700;

    }

    :deep(.el-table__body tbody tr:nth-child(even) td) {

        background-color: #CCFFFF;

        font-size: 120%;

        font-weight: 700;

    }

</style>

对以上功能更为具体实现和注释见221224_003shopvue(el-menu刷新保持当前菜单选项与角色页面)。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

maven的插件(命令)install介绍

maven的插件&#xff08;命令&#xff09;install介绍背景关于构建时使用的maven命令installmaven其他插件/命令的使用背景 今天在引入SpringCloudAlibaba时&#xff0c;pom.xml中的dependency报错了 到本地仓库去验证 验证无误&#xff0c;找原因 现象&#xff1a; 在maven…

Flink-状态编程(按键分区状态、算子状态、广播状态、持久化与状态后端)

9 状态编程 9.1 概述 9.1.1 状态 所谓的状态&#xff0c;最常见的就是之前到达的数据&#xff0c;或者由之前数据计算出的某个结果 继承富函数类的函数类就可以获取运行时上下文&#xff0c;也就可以自定义状态&#xff0c;例如process中的ProcessFunction&#xff0c;CoPr…

HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

HTMLCSSsvg绘制精美彩色闪灯圣诞树&#xff0c; HTMLCSSJs实时新年时间倒数倒计时(附源代码) 本篇目录 一、前言 二、主要功能 三、效果展示 四、编码实现步骤 五、资源下载 六、完整源代码&#xff0c;也可下载打包代码&#xff08;我设的是免费&#xff09; 一、前言…

【Vue】三、Vue.js的常用选项

后端程序员的vue学习之路一、选项 / 数据1、data2、computed3、 methods4、computed 与 methods的区别5、watch二、选项 / DOMeltemplate三、选项 / 生命周期钩子1、生命周期钩子有如下这些&#xff1a;2、流程图2、练习代码四、选项 / 资源1、filters2、directives3、componen…

大半夜睡不着,聊一下在小外包公司工作一年后的感想吧

我不知道当年怎么想的&#xff0c;能在一个外包公司一干就是6年&#xff0c;后来终于跳出来了&#xff0c;现在的公司虽然不是什么大厂吧&#xff0c;但至少是个正经的互联网企业&#xff0c;待遇也不错。 其实很多地方的朋友都有提到外包公司的一些弊端&#xff1a; 1.工期短…

自己动手实现一个轮播图组件

1. 轮播图原理 轮播图的原理可以总结为两点&#xff1a; 定位的运用定时器的运用 轮播图的每一张图横向依次排列。在最外层还有一个父级盒子&#xff0c;它的宽度刚好是一张图片的宽度&#xff0c;第一张图没有设置隐藏超出部分&#xff0c;第二张图隐藏了超出部分。 当我们…

河道非法采砂识别系统 yolov5

河道非法采砂识别系统通过yolov5网络架构深度学习技术对河道非法采砂行为进行实时分析检测&#xff0c;如yolov5架构模型发现现场违规采砂&#xff0c;则立即抓拍回传后台。YOLO算法- YOLO算法是一种基于回归的算法&#xff0c;它不是选择图像中有趣的部分&#xff0c;而是预测…

世界杯已开赛,哪些看球设备让你觉得身临其境?

笔者在父亲的影响下&#xff0c;从1994年美国世界杯开始接触足球&#xff0c;因为当时 CCTV5 对拥有着小世界杯之称的意甲转播&#xff0c;成为了一名意大利足球队的忠实拥趸&#xff0c;一直到现在。 四年一次的世界杯也成了我从不错过的足球盛宴。2002年日韩世界杯和2006年德…

Unity使用飞书在线表格做配置表

团队使用飞书进行项目管理&#xff0c;使用在线表格进行配置表的编写&#xff0c;而飞书也提供了在线表格操作的Api&#xff0c;这样我们可以直接在Unity中同步云端表格数据 飞书配置 首先需要进入飞书开发者后台创建应用https://open.feishu.cn/app 创建应用后记录AppId和Ap…

CAJ转pdf在线网址

知网下载论文格式为CAJ&#xff0c;不想下载它的阅读器&#xff0c;网上找了一下转pdf的网站&#xff0c;记录一下&#xff1a; 1.Caj2Pdf在线 https://caj.bookcodes.cn/ 2.speedpdf-CAJ转PDF https://speedpdf.cn/zh-cn/convert/caj-to-pdf?chbaiducp

Android---ViewPager

目录 一、ViewPager 缓存页面与预加载 缓存页面 预加载 预加载带来的问题 解决(性能优化) 二、ViewPager 懒加载机制 ViewPager源码 ViewPager 是怎么展示出来的 Populate FragmentPagerAdapter 三、ViewPager 与 ViewPager2 的差异 一、ViewPager 缓存页面与预加载 …

为什么企业要注重数据安全?六大优势分析

数据加密是将数据从可读格式转换为编码格式。两种最常见的加密方法是对称加密和非对称加密。这些名称是指是否使用相同的密钥进行加密和解密&#xff1a; ●对称加密密钥&#xff1a;这也称为私钥加密。用于编码的密钥与用于解码的密钥相同&#xff0c;使其最适合个人用户和封…

java jar 的修改

java jar 的修改目录概述需求&#xff1a;设计思路实现思路分析1.编译生成class文件2.生产src文件3.单独将对应的java 类编译成class文件4.替换原来的class文件参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bus…

prettytable辅助打印表格的Python库

这个库的主要作用是&#xff1a;当我们想要结构话的打印一些表格类的数据时会让我们的视觉体验变好 一、安装 一行命令&#xff1a;python -m pip install -U prettytable 搞定 二、使用 1、添加数据 首先来看一个打印的效果 要想实现上边的效果使用下边的代码&#xff1a…

el-Dropdown 两个下拉框之间的动态绑定 实现默认选中值

目录 业务场景 官方链接 实现效果 使用框架 代码展示 template代码 script代码 变量定义 事件定义 onMounted事件 courseClass事件--课程班级绑定 defaultValue事件 optionChange事件 changeClass事件 为什么要给课程的每个选项也绑定click事件&#xff1f;作用是什么…

数字化时代,基于令牌的身份验证是如何工作?

一、背景 数字化转型给用户带来了安全问题&#xff0c;以保护他们的身份免受假冒。据美国诺顿称&#xff0c;平均每年有 80 万个帐户被黑客入侵。需要用于身份验证的高安全性系统和网络安全法规。 传统方法依赖于使用用户名和密码的单级身份验证来授予对 Web 资源的访问权限。…

Superset安装与使用

第1章 Superset入门 1.1 Superset概述 Apache Superset是一个开源的、现代的、轻量级BI分析工具&#xff0c;能够对接多种数据源、拥有丰富的图表展示形式、支持自定义仪表盘&#xff0c;且拥有友好的用户界面&#xff0c;十分易用。 1.2 Superset应用场景 由于Superset能够…

局域网yum仓库搭建

有时候在线的yum源安装特别慢还经常会断,制作自己的一个本地yum源是有必要的。 使用场景,一个服务器集群,只有一台服务器能连接外网,连接外网那台服务器就可以通过reposync把外网源的包全部同步下来放在本地,集群中其他服务器就以这台服务器为包库使用 yum 安装,当然,同…

nginx 后退

nginx 后退目录概述需求&#xff1a;设计思路实现思路分析1.使用nginx的2.配置nginx属性即可参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for chang…

TextMeshPro快速上手

Text Mesh Pro是Unity的新的文本显示对象&#xff0c;最大的优点是放大以后不会有锯齿&#xff0c;而且有更多的显示效果。缺点是需要配置才能使用&#xff0c;不像原来的直接就可以用。 官方资源 http://digitalnativestudios.com/textmeshpro/docs/ https://docs.unity3d.c…