IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 第6章 el-menu刷新保持当前菜单选项与角色页面 -> 正文阅读

[JavaScript知识库]第6章 el-menu刷新保持当前菜单选项与角色页面

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刷新保持当前菜单选项与角色页面)。

?

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 10:59:18  更:2022-12-25 11:03:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/22 17:56:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码