【vue3+ts后台管理】首页完成

布局搭建

根据Element UI 中的Container 布局容器-常见页面布局,我们复制包含Aside、Header、Main三个部分的布局,复制到 HomeView.vue 的布局中,即:

头部,我们可以左边放一个 logo,中间放一些文字,右侧放退出登录按钮。所以我们可以根据 Layout布局-混合布局的左中右的布局来写,我们复制最后的代码放入我们上面代码的 Header 部分 侧边栏,我们可以参考 侧栏

然后我们需要修改样式,右键查看布局就能看到布局的 class,通过 class 名增加样式即可

html 复制代码
<template>
  <div class="home">
    <el-container>
      <el-header>
        <el-row :gutter="20">
          <el-col :span="4"><img src="../assets/logo.png" class="logo"/></el-col>
          <el-col :span="16"><h2>后台管理系统</h2></el-col>
          <el-col :span="4"><span class="quit-login">退出登录</span></el-col>
        </el-row>
      </el-header>
      <el-container>
        <el-aside width="200px">
          <el-menu
              active-text-color="#ffd04b"
              background-color="#545c64"
              class="el-menu-vertical-demo"
              default-active="2"
              text-color="#fff"
          >
            <el-sub-menu index="1">
              <template #title>
                <el-icon><location /></el-icon>
                <span>商品列表</span>
              </template>
            </el-sub-menu>
          </el-menu>
        </el-aside>
        <el-main>Main</el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script lang="ts">
import {defineComponent} from 'vue';

export default defineComponent({
  name: 'HomeView',
  components: {},
});
</script>

<style lang="scss" scoped>

.el-header {
  height: 80px;
  background: #666;
  .logo {
    height: 80px;
  }

  h2, .quit-login {
    text-align: center;
    height: 80px;
    line-height: 80px;
    color: #fff;
  }
}

.el-aside{
  .el-menu{
    height: calc(100vh - 80px);
  }
}
</style>

目前的样式为:

首页侧边栏的动态路由

新建 GoodsView.vue 和 UserView.vue 内容可以先随便写点什么

HomeView.vue

html 复制代码
<template>
  <div class="home">
    <el-container>
      <el-header>
        <el-row :gutter="20">
          <el-col :span="4"><img src="../assets/logo.png" class="logo"/></el-col>
          <el-col :span="16"><h2>后台管理系统</h2></el-col>
          <el-col :span="4"><span class="quit-login">退出登录</span></el-col>
        </el-row>
      </el-header>
      <el-container>
        <el-aside width="200px">
          <el-menu
              active-text-color="#ffd04b"
              background-color="#545c64"
              class="el-menu-vertical-demo"
              default-active="2"
              text-color="#fff"
              router
          >
            <!--router为启用 vue-router 模式。启用该模式会在激活导航时以 index 作为 path 进行路由跳转-->
            <el-menu-item :index="item.path" v-for="item in list" :key="item.path">
              {{ item.meta.title }}
            </el-menu-item>
          </el-menu>
        </el-aside>
        <el-main>
          <!--设置路由出口-->
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script lang="ts">
import {defineComponent} from 'vue';
import {useRouter} from "vue-router";

export default defineComponent({
  name: 'HomeView',
  setup() {
    const router = useRouter()
    const list = router.getRoutes().filter(value => value.meta.isShow)
    console.log(list);
    return {
      list
    }
  },
  components: {},
});
</script>
......

index.ts

typescript 复制代码
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    name: 'home',
    component: HomeView,
    children:[
      {
        path: 'goods',
        name: 'goods',
        meta:{
          isShow:true,
          title:'商品列表'
        },
        component: () => import('../views/GoodsView.vue')
      },
      {
        path: 'user',
        name: 'user',
        meta:{
          isShow:true,
          title:'用户列表'
        },
        component: () => import('../views/UserView.vue')
      }
    ]
  },
 ......
]

......

export default router
相关推荐
胡小图图图图图22 分钟前
第6章 常用UI组件库
前端·javascript·vue.js
LL.CS25 分钟前
Vue框架
前端·javascript·vue.js
麻辣_水煮鱼2 小时前
vue中使用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)
前端·javascript·vue.js
计算机学姐2 小时前
基于python+django+vue的网络小说数据分析系统
vue.js·爬虫·python·django·网络爬虫·numpy·web3.py
懮 俍3 小时前
前端请求音频返回pcm流进行播放
前端·vue.js·音视频·pcm
计算机学姐4 小时前
基于python+django+vue的电影数据分析及可视化系统
vue.js·爬虫·python·mysql·信息可视化·数据分析·django
aeoliancrazy5 小时前
el-table翻页记录勾选,正常记录取消勾选,不受翻页影响
前端·vue.js·elementui
Ian10257 小时前
使用three.js+vue3完成无人机上下运动
开发语言·前端·javascript·vue.js·无人机·three
计算机学姐10 小时前
基于微信小程序的剧本杀游玩一体化平台
java·vue.js·spring boot·微信小程序·小程序·intellij-idea·mybatis
青云交11 小时前
大数据新视界 --大数据大厂之 Vue.js 与大数据可视化:打造惊艳的数据界面
大数据·vue.js·信息可视化·echarts·d3.js·数据驱动·大数据可视化