【vue学习】权限管理系统前端实现6-主页面布局

1.新建layout文件夹 新建index.vue 添加router

const routes = [{path: '/',name: '首页',component: () => import('../layout')},

2.登录添加跳转

  loginRef.value.validate(async (valid)=>{if(valid){try{let result=await requestUtil.post("login?"+qs.stringify(loginForm.value))let data=result.data;if(data.code==200){const token = data.authorization;store.commit('SET_TOKEN',token);rounter.replace("/")}else{ElMessage.error(data.msg)}}catch(error){console.log("error:"+error);ElMessage.error("服务器出错,请联系管理员!")}}else{console.log("验证失败")}})

3.最终效果

 4.新建结构

 5.主页面index.vue

<template><div class="app-wrapper"><el-container><el-aside width="200px" class="sidebar-container"><Menu/></el-aside><el-container><el-header><Header/></el-header><el-main><Tabs/></el-main><el-footer><Footer/></el-footer></el-container></el-container></div>
</template><script setup>
import Menu from '@/layout/menu'
import Header from '@/layout/header'
import Footer from '@/layout/foot'
import Tabs from '@/layout/tabs'
</script><style lang="scss" scoped>.app-wrapper {position: relative;width: 100%;height: 100%;
}.sidebar-container {background-color: #2d3a4b;height: 100%;
}//修改原有样式
.el-container{height:100%
}.el-header{padding-left: 0px;padding-right: 0px;
}//深度选择器
:deep(ul.el-menu){border-right-width: 0px
}</style>

6.foot

<template><div class="footer">Copyright © 2012-2022 xxx 版权所有&nbsp;&nbsp;<a href="xxx" target="_blank">xxx</a></div>
</template><script setup></script><style lang="scss" scoped>
.footer{padding: 20px;display: flex;align-items: center;
}
</style>

7.tabs

<template><div style="margin-bottom: 20px"><el-button size="small" @click="addTab(editableTabsValue)">add tab</el-button></div><el-tabsv-model="editableTabsValue"type="card"class="demo-tabs"closable@tab-remove="removeTab"><el-tab-panev-for="item in editableTabs":key="item.name":label="item.title":name="item.name">{{ item.content }}</el-tab-pane></el-tabs>
</template>
<script  setup>
import { ref } from 'vue'let tabIndex = 2
const editableTabsValue = ref('2')
const editableTabs = ref([{title: 'Tab 1',name: '1',content: 'Tab 1 content',},{title: 'Tab 2',name: '2',content: 'Tab 2 content',},
])const addTab = (targetName) => {const newTabName = `${++tabIndex}`editableTabs.value.push({title: 'New Tab',name: newTabName,content: 'New Tab content',})editableTabsValue.value = newTabName
}
const removeTab = (targetName) => {const tabs = editableTabs.valuelet activeName = editableTabsValue.valueif (activeName === targetName) {tabs.forEach((tab, index) => {if (tab.name === targetName) {const nextTab = tabs[index + 1] || tabs[index - 1]if (nextTab) {activeName = nextTab.name}}})}editableTabsValue.value = activeNameeditableTabs.value = tabs.filter((tab) => tab.name !== targetName)
}
</script>
<style>
.demo-tabs > .el-tabs__content {padding: 32px;color: #6b778c;font-size: 32px;font-weight: 600;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

交通 | 针对Close-Enough旅行商问题的一种分支定界算法

论文解读​&#xff1a;王飞龙&#xff0c;曲晨辉 1、问题背景 \qquad 旅行商问题(TSP)是一种众所周知的路径问题。TSP的目标是在图 G ( V , E ) G(V,E) G(V,E)中找一条以场站为起终点的最短路&#xff0c;访问所有客户点 V V V&#xff0c;同时没有子环路。令 E E E表示网络中…

达梦数据库性能分析

目录 数据库常用性能分析方法... 3 一、服务器监控... 3 1、cpu监控... 3 2、内存... 3 3、swap内存... 3 4、磁盘... 4 5、网络监测... 4 二、数据库实例监控... 6 1、v$sessions. 6 2、慢sql、阻塞、锁... 7 3、内存监控... 10 4、monitor监控工具使用及开启sql日…

Matlab画两个三维曲面在一个画布

clc;clear;close all; data xlsread(Brent等厚度.xlsx); x data(:,1) xmax max(x); xmin min(x); y data(:,2) ymax max(y); ymin min(y); z data(:,3); z1 data(:,4); N 45; …

AI绘画:StableDiffusion炼丹Lora攻略-实战萌宠图片生成

Lora攻略-实战萌宠图片生成 写在前面的话一&#xff1a;准备二、Lora作用1.AI模特2.炼衣服Lora3.改变画风/画面背景Lora模型究竟是什么&#xff1f; 三、如何炼制自己的Lora模型&#xff1f;四、炼丹前的准备&#xff08;**下载整合包**&#xff09;五、选择合适的大模型六、高…

win go vscode安装配置-智能提示

win go vscode安装配置-智能提示 0.前提 go1.17.1之后不允许go get安装库 vscode是免费的go开发工具&#xff0c;想要代码智能提示 go推荐go mod和go install&#xff0c;不推荐GOPATH了 1.安装步骤 [1] vscode安装-百度一堆 [2] go安装-从官网 https://go.dev/dl/ 下载win 6…

SpringBoot——在测试阶段验证Web表现层的接口是否正常

验证请求状态 之前我们实现了在测试环境中开启Web环境&#xff0c;并且在测试阶段发送虚拟请求&#xff0c;并看到了返回的结果&#xff0c;这次我们不止要看他的请求结果&#xff0c;还要看他的请求过程和请求状态 匹配请求状态 首先就是查看请求的状态。主要介绍的就是一个…

使用Vue脚手架

(193条消息) 第 3 章 使用 Vue 脚手架_qq_40832034的博客-CSDN博客 初始化脚手架 说明 1.Vue脚手架是Vue官方提供的标准化开发工具&#xff08;开发平台&#xff09; 2.最新的版本是4.x 3.文档Vue CLI脚手架&#xff08;命令行接口&#xff09; 具体步骤 1.如果下载缓慢…

短视频抖音seo矩阵系统源码:技术开发与实践(三)

一、 技术开发文档说明 1. 系统架构 短视频抖音seo矩阵源码部署功能架构包含&#xff1a;多模式视频剪辑&#xff0c;视频批量处理、文字转语音、视频批量发布、多平台账号管理、 智能在线客服、粉丝画像及数据统计分析、抖音seo排名优化采集等。 2. 抖音seo排名系统模块组成…

三张表学会MySQL的单表操作!

表单一信息 1、查询表中所有学生的信息 mysql> select * from student; 2、 查询表中所有学生的姓名和英语成绩 mysql> select name,english from student; 3、过滤表中的重复数据 mysql> select DISTINCT * from student; 4、统计每个学生的总分 mysql> sele…

[CVPR‘23] PanoHead: Geometry-Aware 3D Full-Head Synthesis in 360 deg

论文&#xff5c;项目 总结&#xff1a; 任务&#xff1a;3D human head synthesis现有问题&#xff1a;GANs无法在「in-the-wild」「single-view」的图片情况下&#xff0c;生成360度人像解决方案&#xff1a;1&#xff09;提出了two-stage self-adaptive image alignment&am…

《Spring系列》第18章 监听器Listener

前言 陆续阅读了Spring Boot源码中&#xff0c;有不少地方都用到了监听器。每次看到监听器的代码都一头雾水&#xff0c;不懂其中的设计理念&#xff0c;这次决定肝一篇监听器的博文。 一、监听器 1.概述 何为监听器&#xff1f;就是用来监听程序执行的。监听器可以做什么事…

从单体到SpringBoot/SpringCloud微服务架构无感升级的最佳实践

目录导读 从单体到SpringBoot/SpringCloud微服务架构无感升级的最佳实践1. 业务背景2. 当前问题3. 升级方案3.1 架构设计4. 详细设计4.1 迁移阻碍4.2 解决思路 5. 实现过程5.1 认证兼容改造5.2 抽象业务流程5.2.1 抽象业务的思路5.2.2 抽象业务的抽象编码5.2.3 抽象业务的具体实…