在Main.vue中使用路由展示<router-view />
<template>
<el-container style="height:100%">
<el-aside width="auto"><common-aside></common-aside></el-aside>
<el-container>
<el-header>
<common-header></common-header>
</el-header>
<el-main> <router-view /> </el-main>
</el-container>
</el-container>
</template>
<script>
import CommonAside from '../components/CommonAside.vue'
import CommonHeader from '../components/CommonHeader.vue'
export default {
name: 'Main',
components: {
CommonAside,
CommonHeader
}
}
</script>
<style lang="scss" scoped>
.el-header{
background: #333;
}
.el-main{
padding-top: 0;
}
</style>
在router文件夹下的index.js进行路由的配置,默认是展示首页
所以 children:中有home组件
{
path:'/',
name:'home',
component:()=>import('@/views/Home/Home')
},
引入组件
component:()=>import('@/views/Home/Home')
import Vue from 'vue'
import VueRouter from 'vue-router'
import Main from '../views/Main.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Main',
component: Main,
children:[
{
path:'/',
name:'home',
component:()=>import('@/views/Home/Home')
}
]
},
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
在src文件夹下有一个scss文件夹下有一个home.scss
.home {
.user {
display: flex;
align-items: center;
padding-bottom: 20px;
margin-bottom: 20px;
border-bottom: 1px solid #ccc;
img {
width: 150px;
height: 150px;
border-radius: 50%;
margin-right: 40px;
}
&info {
.name {
font-size: 32px;
margin-bottom: 10px;
}
.access {
color: #999999;
}
}
}
.login-info {
p {
line-height: 28px;
font-size: 14px;
color: #999999;
span {
color: #666666;
margin-left: 60px;
}
}
}
.num {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.el-card {
width: 32%;
margin-bottom: 20px;
}
.icon {
font-size: 30px;
width: 100px;
height: 100px;
text-align: center;
line-height: 100px;
color: #fff;
}
.detail {
margin-left: 15px;
display: flex;
flex-direction: column;
justify-content: center;
.num {
font-size: 30px;
margin-bottom: 0px;
margin-top: 5px
}
.txt {
font-size: 14px;
text-align: center;
color: #999999;
}
}
}
.graph {
margin-top: 20px;
display: flex;
justify-content: space-between;
.el-card {
width: 48%;
}
}
}
在views文件夹下新建文件夹名为Home下再建一个名叫Home.vue组件
引入样式
<style lang="scss" scoped>
@import "~@/assets/scss/home";
</style>
<template>
<el-row class="home" :getter="20">
<el-col :span="8" style="margin-top: 20px">
<el-card shadow="hover">
<div class="user">
<img :src="userImg"/>
<div class="userinfo">
<p class="name">Admin</p>
<p class="access">超级管理员</p>
</div>
</div>
<div class="login-info">
<p>上次登录时间: <span>2021-7-19</span></p>
<p>上次登录地点: <span>武汉</span></p>
</div>
</el-card>
<el-card style="margin-top: 20px;height:460px">
<el-table :data="tableData">
<el-table-column
show-overflow-tooltip
v-for="(val, key) in tableLabel"
:key="key"
:prop="key"
:label="val"
>
</el-table-column>
</el-table>
</el-card>
</el-col>
<el-col :span="16" style="margin-top:20px"> </el-col>
</el-row>
</template>
<script>
export default {
data() {
return {
userImg: require("../../assets/images/user.png"),
tableData: [
{
name: "oppo",
todayBuy: 100,
monthBuy: 300,
totalBuy: 80000000000,
},
{
name: "vivo",
todayBuy: 100,
monthBuy: 300,
totalBuy: 800,
},
{
name: "小米",
todayBuy: 100,
monthBuy: 300,
totalBuy: 800,
},
{
name: "苹果",
todayBuy: 100,
monthBuy: 300,
totalBuy: 800,
},
{
name: "三星",
todayBuy: 100,
monthBuy: 300,
totalBuy: 800,
},
{
name: "魅族",
todayBuy: 100,
monthBuy: 300,
totalBuy: 800,
},
],
tableLabel: {
name: "课程",
totalBuy: "今日购买",
monthBuy: "本月购买",
totalBuy: "总购买",
}
};
}
};
</script>
<style lang="scss" scoped>
@import "~@/assets/scss/home";
</style>
在Main.js中引入样式
import { Row,Col,Card,Table,TableColumn} from 'element-ui';
Vue.use(Row);
Vue.use(Col);
Vue.use(Card);
Vue.use(Table);
Vue.use(TableColumn);
实现如下效果