平台项目首页——左侧菜单栏实现(三)

news2024/12/25 0:03:40

这里写目录标题

  • 一、页面布局设计
  • 二、左侧菜单栏设计
    • 1、注意
    • 2、使用组件
      • 1、导入组件
      • 2、注册组件
      • 3、使用组件
    • 3、用户信息代码设计
    • 4、左侧菜单代码设计
    • 5、用户信息——注销登录和切换项目功能实现
  • 三、嵌套路由实现
    • 1、配置home的嵌套路由(子路由)
    • 2、home中预留的路由展示位(路由出口)
    • 3、点击菜单实现路由跳转

一、页面布局设计

在这里插入图片描述

<template>
	<!-- 进入页面的主界面内容 -->
	<div class="home">
		<!-- 左侧菜单 -->
		<div class="left_box">
		</div>
		
		<!-- 右侧内容 -->
		<div class="right_box">
			<!-- 顶部标签栏 -->
			<div class="top_box">
			</div>
			
			<!-- 主题内容展示区域 -->
			<div class="main_box">
				
			</div>
		</div>
	</div>
</template>

<script>

</script>

<style scoped>
	/* 整体背景设置 */
	.home{
		height: 100vh;
		background: #00aa7f;
		display: flex;
	}
	/* 左侧内容的布局 */
	.left_box{
		width:200px;
		/* 右侧的边框线 实线、1像素 白色 */
		border-right: solid 1px #fff;
		height: 100vh;
	}
	/* 右侧的整体布局 */
	.right_box{
		/* 左侧元素占用2oopx,右侧的元素占用其他的所有空间 */
		flex:1;
		margin: 3px;
		background: burlywood;
	}
	/* 右侧顶部标签栏的样式 */
	.top_box{
		height: 60px;
		background: #fff;
		/* 向下的margin */
		margin-bottom: 2px;
	}
	/* 右侧主题内容展示区域的样式 */
	.main_box{
		/* 屏幕高度-边框线-减去顶部盒子的高度 */
		height:calc(100vh - 68px);
		background: #fff;	
		/* 圆角展示 */
		border-radius:5px;
		padding: 5px;
		}
</style>

二、左侧菜单栏设计

为了方便后期维护,将左侧菜单栏和右侧顶部栏设计成单独的组件

1、注意

通过路由可以访问的页面,页面对应的组件,将组件定义在views中
当定义的组件是给到路由中对应的组件中用的,将组件定义在components中

在这里插入图片描述

2、使用组件

1、导入组件

2、注册组件

在这里插入图片描述

3、使用组件

在这里插入图片描述

3、用户信息代码设计

在这里插入图片描述

<template>
	<!-- 顶部图标logo用户信息显示 -->
	<div class="user_box">
		<img src="../assets/logo.png" width="45" >
		<div class="info">
			
			<el-dropdown>
			    <span class="el-dropdown-link">
				  <!-- 用户图标 -->
				  <el-icon ><User /></el-icon>

				  <!-- 下拉菜单 -->
			      {{ uname }}
			      <el-icon><CaretBottom /></el-icon>
			    </span>
			    <template #dropdown>
			      <el-dropdown-menu>
					<!-- 选项 -->
			        <el-dropdown-item @click="logout">注销登录</el-dropdown-item>
			        <el-dropdown-item @click="$router.push({name:'allProject'})">切换项目</el-dropdown-item>

			      </el-dropdown-menu>
			    </template>
			</el-dropdown>
		</div>
	</div>
</template>

<script>

	export default{
		computed:{
			uname(){
				return window.sessionStorage.getItem('username')
			}
		},
	}

</script>

<style scoped>
	/* 顶部用户信息的样式 */
	.user_box{
		height: 63px;
		border-bottom: solid 1px #fff;
		display: flex;
		/* 居中 */
		align-items: center;
	}
	/* logo图片的样式 */
	.user_box img{
		/* 上、右、下、左 */
		padding: 0 40px 0 10px;
		/* 右侧margin */
		margin-right: 20px;
	}

	/* 下拉菜单的样式 */
	.user_box .info .el-dropdown-link {
	  cursor: pointer;
	  color: #fff;
	  display: flex;
	  align-items: center;
	  font-size: 16px;
	}
	
</style>

4、左侧菜单代码设计

background-color=“none” 去除菜单颜色
text-color=“#fff” 未选中文字颜色
active-text-color=“#ffaa00” 选中后的文字颜色

<template>
	<!-- 顶部图标logo用户信息显示 -->
	<div class="user_box">
		<img src="../assets/logo.png" width="45" >
		<div class="info">
			
			<el-dropdown>
			    <span class="el-dropdown-link">
				  <!-- 用户图标 -->
				  <el-icon ><User /></el-icon>

				  <!-- 下拉菜单 -->
			      {{ uname }}
			      <el-icon><CaretBottom /></el-icon>
			    </span>
			    <template #dropdown>
			      <el-dropdown-menu>
					<!-- 选项 -->
			        <el-dropdown-item @click="logout">注销登录</el-dropdown-item>
			        <el-dropdown-item @click="$router.push({name:'allProject'})">切换项目</el-dropdown-item>

			      </el-dropdown-menu>
			    </template>
			</el-dropdown>
		</div>
	</div>
	<!-- 菜单显示 -->

	<!--background-color="none" 去除菜单颜色 -->
	<!-- text-color="#fff" 未选中文字颜色 -->
	<!-- active-text-color="#ffaa00" 选中后的文字颜色 -->
	<el-menu
		router
        :default-active="$route.path"
        class="el-menu-vertical-demo leftmenubox"
        background-color="none"
        text-color="#ffffff"
        active-text-color="#ffaa00">
		
		<el-menu-item index="/project">
			<el-icon><location /></el-icon>
			<span>项目首页</span>
		</el-menu-item>	
		<el-menu-item index="/interface">
			<el-icon><location /></el-icon>
			<span>接口管理</span>
		</el-menu-item>	
		<el-menu-item index="3">
			<el-icon><location /></el-icon>
			<span>接口测试</span>
		</el-menu-item>	 
		<el-menu-item index="/records">
			<el-icon><location /></el-icon>
			<span>测试报表</span>
		</el-menu-item>
	</el-menu>
</template>

<script>
	export default{
		computed:{
			uname(){
				return window.sessionStorage.getItem('username')
			}
		},
	}

</script>

<style scoped>
	/* 顶部用户信息的样式 */
	.user_box{
		height: 63px;
		border-bottom: solid 1px #fff;
		display: flex;
		/* 居中 */
		align-items: center;
	}
	/* logo图片的样式 */
	.user_box img{
		/* 上、右、下、左 */
		padding: 0 40px 0 10px;
		/* 右侧margin */
		margin-right: 20px;
	}
	/* 下拉菜单的样式 */
	.user_box .info .el-dropdown-link {
	  cursor: pointer;
	  color: #fff;
	  display: flex;
	  align-items: center;
	  font-size: 16px;
	}
	
</style>

修改element UI提供的组件,修改选中后的菜单背景颜色
需要将修改的css样式在全局css中

在这里插入图片描述

/* ==================左侧菜单的样式更改======================= */
.leftmenubox .el-menu-item:hover{
	background: rgb(224, 229, 224);
}

在这里插入图片描述

5、用户信息——注销登录和切换项目功能实现

选择注销登录——》清除token和用户名、重定向到登录页面
选择切换项目——》切换路由到项目列表页面$router.push({name:'allProject'})

<template>
      <el-dropdown-menu>
		<!-- 选项 -->
        <el-dropdown-item @click="logout">注销登录</el-dropdown-item>
        <el-dropdown-item @click="$router.push({name:'allProject'})">切换项目</el-dropdown-item>
      </el-dropdown-menu>
</template>

<script>

	export default{
		computed:{
			uname(){
				return window.sessionStorage.getItem('username')
			}
		},
		methods:{
			// 移除token和用户信息
			logout(){
				// 清除token和用户名
				window.sessionStorage.removeItem('token');
				window.sessionStorage.removeItem('username');
				// 再重定向到登录页面
				this.$router.push({name:'login'})
			}
		
			
		}
	}

</script>

<style scoped>
	......
	......
</style>

三、嵌套路由实现

当切换到项目首页菜单时:主界面展示项目首页的信息
当切换到接口管理菜单时:主界面展示接口管理的信息
等等
在这里插入图片描述

1、配置home的嵌套路由(子路由)

在这里插入图片描述

2、home中预留的路由展示位(路由出口)

在这里插入图片描述

3、点击菜单实现路由跳转

router:实现路由跳转
index="/project"只能设置字符串
:default-active="$route.path":$route.path:$route:获取当前路由

在这里插入图片描述

当新增一个菜单的时候:
a、定义1个父组件例如testcase.vue
b、配置home的嵌套路由例如(path:‘/testcase’)
c、在子组件LeftMenu.vue中,新增菜单

<el-menu-item index="3">
	<el-icon><location /></el-icon>
	<span>用例管理</span>
</el-menu-item>	

d、修改index:index=‘/testcase’

<el-menu-item index='/testcase'>
	<el-icon><location /></el-icon>
	<span>用例管理</span>
</el-menu-item>	

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

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

相关文章

Python-将常用库写入到一个Python程序里面,后续使用直接导入这个文件即可,就相当于导入了所有的库,就不用每次都写一堆的import了

sys.path.append(rD:\Backup\Documents) # 上方代码中的这一句 是我的常用库 所在的文件路径 当然&#xff0c;文件名建议写英文&#xff08;比如&#xff1a;Common_use_lib.py&#xff09;&#xff0c; 不要写&#xff1a;常用库... 我这里只是演示使用&#xff0c;方便理…

机器学习笔记 - 基于pytorch、grad-cam的计算机视觉的高级可解释人工智能

一、pytorch-gradcam简介 ​Grad-CAM是常见的神经网络可视化的工具,用于探索模型的可解释性,广泛出现在各大顶会论文中,以详细具体地描述模型的效果。Grad-CAM的好处是,可以在不额外训练的情况下,只使用训练好的权重即可获得热力图。 1、CAM是什么? CAM全称Class Activa…

GitHub工具之云资产管理

文章目录 0x01 介绍0x02 软件架构0x03 下载地址0x04 更新记录0x05 实现功能0x06 使用截图1、云存储工具-资产列表2、云存储工具-阿里云3、云存储工具-七牛云4、云存储工具-腾讯云5、云存储工具-亚马逊6、云存储工具-京东云7、云存储工具-金山云8、云存储工具-其他9、云存储工具…

java项目中git的.ignore文件设置

在Git中&#xff0c;ignore是用来指定Git应该忽略的故意不被追踪的文件。它并不影响已经被Git追踪的文件。我们可以通过.ignore文件在Git中指定要忽略的文件。 当我们执行git add命令时&#xff0c;Git会检查.gitignore文件&#xff0c;并自动忽略这些文件和目录。这样可以避免…

AT9110H-单通道低压 H桥电机驱动芯片

AT9110H能够驱动一个直流有刷电机或其它诸如螺线管的器件。输出驱动模块由PMOSNMOS功率管构成的H桥组成&#xff0c;以驱动电机绕组。AT9110H能够提供高达12V1A的驱动输出。 AT9110H是SOP8封装&#xff0c;且是无铅产品&#xff0c;符合环保标准。 AT9110H具有一个PWM (IN1/IN2…

【SWAT水文模型】SWAT水文模型建立及应用第七期:SWAT模型检验

SWAT水文模型检验 方式1&#xff1a;参数带回至ArcSWAT方式1.1&#xff1a;文件替换方式1.2&#xff1a;手动修改方式1.3&#xff1a; 方式2&#xff1a;于SWAT CUP中确定检验期结果方式2.1&#xff1a;率定期径流数据验证方式2.2&#xff1a;率定期检验期径流数据验证 总结参考…

九章云极DataCanvas公司完成D1轮融资

近日&#xff0c;九章云极DataCanvas公司完成总融资额3亿元D1轮融资。中国电子集团旗下中电智慧基金、华民投、中国太平旗下太平创新、浙江东方旗下东方嘉富等央国企旗下投资机构&#xff0c;以及卓源资本等专注人工智能赛道的知名财务投资机构参与本轮融资。 九章云极DataCan…

智慧驿站:为城市带来全新智慧公厕未来形态

随着城市发展和科技进步的不断推进&#xff0c;智慧公厕逐渐成为城市规划和公共设施建设的重要组成部分。而集合了创意的外观设计、全金属结构工艺、智慧公厕、自动售货、共享设备、广告大屏、小型消防站、小型医疗站&#xff0c;并能根据需要而灵活组合的智慧驿站成为其中重要…

Spring AOP 中被代理的对象一定是单例吗?

今天我们来思考这样一个问题&#xff1a;在 Spring AOP 中&#xff0c;被代理的对象是单例的吗&#xff1f;当我们每次获取到代理对象的时候&#xff0c;都会重新获取一个新的被代理对象吗&#xff1f;还是被代理的对象始终是同一个&#xff1f; 为什么要思考这个问题&#xf…

2023,社交进入大变革时代

社交赛道的发展似乎没有终局&#xff0c;尤其AIGC这一概念出现之后&#xff0c;社交有可能将迎来全新场景。那么在技术的助推下&#xff0c;社交赛道是否有可能跑出下一个超级APP&#xff1f;如何看待2023年的社交赛道变革&#xff1f;不妨来看看本文的解读。 2023社交还有新故…

springboot-admin整合及使用

0. 官方文档及示例 官方文档 示例代码:Spring-Boot-Admin-Demo 1. 概述 Spring Boot Admin(SBA)是一个开源的社区项目&#xff0c;用于管理和监控 Spring Boot 应用程序。应用程序可以通过 http 的方式&#xff0c;或 Spring Cloud 服务发现机制注册到 SBA 中&#xff0c;然…

读书笔记——C++高性能编程(一至三)

《C高性能编程》作者&#xff1a;费多尔.G.皮克斯 版本&#xff1a;2022年11月第1版 第一章.性能基础 描述了吞吐量&#xff0c;功耗&#xff0c;实时应用性能的含义。 阐述了“虽然几乎不可能提前预测最佳优化&#xff0c;但是可以确定某些设计决策将使后续优化变得非常困难…

SSCI及SCI撰写|立足于审稿进行论文修改

一、回复审稿意见视角下的论文改进 &#xff08;一&#xff09;常见审稿意见分类&#xff08;改进向&#xff09; 意见分类研究主题方面真实案例研究主题研完没有提供新的信息This is clearly a students paper Although it is adequately written it offers no new informat…

Python Parser 因子计算性能简单测试

一直以来&#xff0c;Python 都在量化金融领域扮演着至关重要的角色。得益于 Python 强大的库和工具&#xff0c;用户在处理金融数据、进行数学建模和机器学习时变得更加便捷。但作为一种解释性语言&#xff0c;相对较慢的执行速度也限制了 Python 在一些需要即时响应的场景中的…

【nvm】Node Version Manager(NVM)安装配置以及使用(WIN版)

NVM 包管理工具 安装 访问NVM-Windows的GitHub页面&#xff1a;点击nvm-setup.exe。 根据提示进行下一步&#xff0c;文件位置选择自定义位置 验证安装是否成功 nvm version 。如果成功&#xff0c;它将显示NVM的版本号。 使用 nvm list available查看所有的可以被下载…

【LeetCode: 2034. 股票价格波动 | 有序表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

基于SSM的学院学生论坛系统的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

ViT论文逐段精读【论文精读】

如果说过去一年中在计算机视觉领域哪个工作的影响力最大&#xff0c;那应该非 vision consumer 莫属了&#xff0c;因为它挑战了自从 2012 年 Alexnet 提出以来卷积神经网络在计算机视觉领域里绝对统治的地位。它的结论就是说&#xff0c;如果在足够多的数据上去做预训练&#…

在Unity使用自定义网格生成一个球体

1.在Unity场景中新建一个空物体&#xff0c;在空物体上添加MeshRenderer和MeshFilter组件。 2.新建一个C#脚本命名SphereMesh,将脚本挂载到空物体上&#xff0c;如图&#xff1a; 运行场景就可以看到生成一个球体 全部代码如下&#xff1a; using UnityEngine;public class S…

非支配排序遗传算法NSGA + 带精英策略的非支配排序遗传算法NSGA-Ⅱ 解析

xi 优于 xj > 则称 xi 非支配于 xj 一、NSGA 1、识别非支配个体&#xff08;使用非支配排序算法&#xff09; -> 从而将种群分为多层 通过非支配排序算法对这个规模为 n 的种群进行分层的具体步骤如下&#xff1a; &#xff08; 1 &#xff09;设 i 1 &#xff1b;…