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

news2024/9/19 10:53:54

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-tabs
      v-model="editableTabsValue"
      type="card"
      class="demo-tabs"
      closable
      @tab-remove="removeTab"
  >
    <el-tab-pane
        v-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.value
  let activeName = editableTabsValue.value
  if (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 = activeName
  editableTabs.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.coloradmin.cn/o/733987.html

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

相关文章

人工智能面试总结-Transformer专题

B站:啥都会一点的研究生 公众号试读:啥都会一点的研究生 目录 说说什么是Transformer?说说Transformer中的Encoder?说说Transformer中的Decoder?说说Transformer在训练与测试阶段Decoder的输入、输出是什么?说说Transformer Encoder和Decoder有哪些不同?说说什么是Tran…

Qt/C++原创项目作品精选(祖传原创/性能凶残)

00 前言说明 从事Qt开发十年有余&#xff0c;一开始是做C#.NET开发的&#xff0c;因为项目需要&#xff0c;转行做嵌入式linux开发&#xff0c;在嵌入式linux上做可视化界面开发一般首选Qt&#xff0c;当然现在可选的方案很多比如安卓&#xff0c;但是十多年前那时候板子性能低…

松下|PCB焊盘脱落常见的几个原因分析

PCB焊盘脱落是电子制造中常见的问题之一&#xff0c;它会导致电路板的性能下降或完全失效。本文将从几个常见原因来分析PCB焊盘脱落的原因&#xff0c;并提供一些预防措施。 一、设计问题 PCB焊盘脱落的一个常见原因是设计问题。一些设计错误可能会导致焊盘的结构不稳定&…

QCC51XX---SPI使用

QCC51XX---系统学习目录_嵌入式学习_force的博客-CSDN博客 了解了I2C的使用,细心的小伙伴已经发现了,在bitserial这个功能里面还能使用SPI。bitserial就是用来使用I2C和SPI的,而这两者的使用,大同小异。 在默认代码使中,是有两个传感器的驱动代码的,分别是加速度传感器ad…

若依@DataScope

DataScope &#xff1a; 根据sys_role 中的 data_scope中的值&#xff0c;来设置数据该怎么过滤&#xff0c;&#xff0c; data_scope 取值&#xff1a; 1 &#xff1a; 不需要过滤2 &#xff1a; 自定义过滤 &#xff1a; 根据 sys_role_dept 这个表关联出来的 dept_id 过滤…

五.LLC谐振变换器

LLC 谐振变换器启动过程分析 LLC 谐振变换器的组成结构中包含容性器件&#xff0c;为了尽可能减小输出电压纹波&#xff0c;钳位输出电压&#xff0c;此时希望输出滤波电容尽可能的大&#xff0c;因此也会在启动的时候&#xff0c;电容两端电压近似为 0&#xff0c;系统对电容…

Final2x-开源图片无损放大工具 提升分辨率到任意尺寸

一、Final2x是什么 Final2x是一款开源、跨平台的图片无损放大工具&#xff0c;内置多个模型&#xff0c;能够将图片提升分辨率到任意尺寸&#xff0c;增强图像的分辨率和质量&#xff0c;使图像更清晰、更详细。目前支持RealCUGAN、RealESRGAN、Waifu2x、SRMD等多种模型。支持…

不会写代码,咋做爬虫

随着时代的发展&#xff0c;大数据越来越重要&#xff0c;数据获取很关键 提到数据获取大家应该都会想到爬虫&#xff0c;但是我不会写代码怎么玩爬虫 今天给大家分享一个不会代码也可以进行爬虫的工具&#xff0c;实现无代码进行数据获取 强调 这里介绍的工具大家合理合法使用…

使用黑盒测试在 Go 中重写 Bash 脚本

目录 前言&#xff1a; 开始 准备工作 描述行为&#xff1a;Bats 简介 行为描述&#xff1a;陷阱 描述行为&#xff1a;设计测试 重写&#xff1a;让我们开始用go吧&#xff01; 重构和更新&#xff1a;实现胜利 结论 前言&#xff1a; 使用黑盒测试在Go中重写Bash脚本…

Linux bio数据结构

数据结构 /** main unit of I/O for the block layer and lower layers (ie drivers and* stacking drivers)*/ struct bio {struct bio *bi_next; /* request queue link */struct gendisk *bi_disk;unsigned int bi_opf; /* bottom bits req flags,* top bits REQ_OP. Us…

go入门demo

go快速学习&#xff1a; 官网学习方案&#xff08;选择自己喜欢的语言&#xff09;&#xff1a;A Tour of Go 视频:B站是个不错的选择 &#xff08;转go入门使用&#xff09;推荐视频&#xff1a;1-课程需知与课程提纲_哔哩哔哩_bilibili1-课程需知与课程提纲是8小时转职Gol…

把握住golang中的template,方能驾驭得了Hugo主题的template

笔者小站&#xff1a;秋码记录 不置可否&#xff0c;Hugo的template同样是使用golang的标准库html/template。为了能实现一个属于自己独特的Hugo theme&#xff0c;或是修改他人的主题&#xff0c;都得对其模板语法有所知晓&#xff0c;方能改的称心如意&#xff0c;亦或是制作…

HarmonyOS学习路之开发篇—数据管理(融合搜索)

融合搜索概述 HarmonyOS融合搜索为开发者提供搜索引擎级的全文搜索能力&#xff0c;可支持应用内搜索和系统全局搜索&#xff0c;为用户提供更加准确、高效的搜索体验。 基本概念 全文索引 记录字或词的位置和次数等属性&#xff0c;建立的倒排索引。 全文搜索 通过全文索引进…

GEE:哨兵数据时间序列计算物候时期EOS/SOS

作者&#xff1a;CSDN _养乐多_ 本文将介绍使用哨兵数据时间序列计算植被物候时期EOS/SOS的代码。 文章目录 一、需要代码请私聊二、代码三、代码链接 一、需要代码请私聊 二、代码 //待更新 三、代码链接 //待更新 声明&#xff1a; 本人作为一名作者&#xff0c;非常重…

11 Java的三元运算符使用

三元运算符使用规则&#xff1a; 关系表达式 ? 表达式1 : 表达式2; 如果关系表达式成立&#xff0c;则结果是表达式1&#xff0c;如果不成立&#xff0c;则结果为表达式2。 package demo;public class Demo1 {public static void main(String[] args) {int a 20;int b 30;i…

基于simulink使用二维规范化互相关进行模式匹配和目标跟踪(附源码)

一、前言 此示例演示如何使用二维规范化互相关进行模式匹配和目标跟踪。双击“编辑参数”块以选择要检测的类似目标的数量。您还可以更改金字塔因子。通过增加它&#xff0c;您可以更快地将目标模板与每个视频帧匹配。更改金字塔因子可能需要更改阈值。 此外&#xff0c;还可…

从零实现深度学习框架——深入浅出PackedSequence

引言 本着“凡我不能创造的&#xff0c;我就不能理解”的思想&#xff0c;本系列文章会基于纯Python以及NumPy从零创建自己的深度学习框架&#xff0c;该框架类似PyTorch能实现自动求导。 &#x1f4a1;系列文章完整目录&#xff1a; &#x1f449;点此&#x1f448; 要深入理解…

使用RabbitMQ

使用RabbitMQ 1 Docker安装RabbitMQ 1.1 安装RabbitMQ # 下载含有管理页面的镜像 docker pull rabbitmq:3.8.8-management# 创建容器 # 5672&#xff1a;应用访问端口&#xff1b;15672&#xff1a;控制台Web端口号&#xff1b; docker run -itd \ --namemy-rabbitmq \ --re…

【Python】Python基础知识总结

&#x1f389;欢迎来到Python专栏~Python基础知识总结 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文中出现错误&#xff0c;希望…

5. 学成在线案例

1.典型的企业级网站 2.目的&#xff1a;整体感知企业级网站布局流程&#xff0c;复习以前的知识 5.1 准备素材和工具 1.学成在线PSD源文件 2.开发工具 PS(切图) / cutterman插件 vscode(代码) chrome(测试) 5.2 案例准备工作 采取结构与样式相分离思想&#xff1a; 1.创…