引入 几个less。
index.less 中引入了其他三个,在 main.js 中引入这一个即可
<template>
<header>
<div class="l-content">
<el-button plain icon="el-icon-menu" size="mini">el-button>
div>
header>
template>


<template>
<header>
<div class="l-content">
<el-button plain icon="el-icon-menu" size="mini">el-button>
<h3 style="color: #fff">首页h3>
div>
<div class="r-content">
<el-dropdown trigger="click" szie="mini">
<span>
<img class="user" :src="userImg" />
span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>个人中心el-dropdown-item>
<el-dropdown-item>退出el-dropdown-item>
el-dropdown-menu>
el-dropdown>
div>
header>
template>
<script>
export default {
name: "commenHeaderMenu",
data() {
return {
userImg: require("../assets/images/user.png"),
};
},
};
script>


<style lang="less" scoped>
header {
display: flex; // 使用flex布局
height: 100%;
justify-content: space-between;
align-items: center; // 水平居中
}
.l-content {
display: flex;
align-items: center;
.el-button {
margin-right: 20px;
}
}
.r-content {
.user {
width: 40px;
height: 40px;
border-radius: 50%;
}
}
style>


现在要实现点击首页左边的icon 来实现侧边栏的收起和展开。但是
icon在组件commenHeaderMenu.vue中

控制侧边栏的属性在组件commenAsideMenu.vue中

这两个组件是兄弟组件

所以设计到 组件间通信的问题。
方法1:使用组件间通信。
方法2:使用vuex进行管理。
这里为了方便,使用vuex进行管理。
npm i vuex or yarn add vuex (npm 会报错,用yarn 即可)
这里报错了,用了很长时间发现了是版本问题,问题描述和解决,在最下面的开发中bug里面。
import Vue from 'vue'
import Vuex from 'vuex'
import tab from './tab'
Vue.use(Vuex);
export default new Vuex.Store({
state: {},
modules: {
tab
}
})
export default {
state: {
},
mutations: {
}
}

到此配置结束
将控制展开和封闭属性,封装到 tab/state/isCollapse。
export default {
state: {
isCollapse: false
},
mutations: {
collapseMenu(state){
state.isCollapse = !state.isCollapse;
}
}
}
isCollapse
isCollapse
关闭/展开属性使用的就是vuex中的数据,通过 this.$store.state.tab.isCollapse; 来引用,在下图的控制台中,也打印出了 this.$store 这个对象。




<template>
<el-row class="home" :gutter="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">Adminp>
<p class="access">超级管理员p>
div>
div>
<div class="login-info">
<p>上次登陆时间:<span>2021-07-19span>p>
<p>上次登陆地点:<span>武汉span>p>
div>
el-card>
<el-card style="margin-top: 20px; height: 460px">
<el-table :data="tableData">
<el-table-column
v-for="(value, key) in tableLabel"
:prop="key"
:label="value"
:key="key"
>el-table-column>
el-table>
el-card>
el-col>
<el-col :span="16" style="margin-top: 20px">
<div class="num">
<el-card
v-for="item in countData"
:key="item.name"
:body-style="{ display: 'flex', padding: 0 }"
>
<i
class="icon"
:class="`el-icon-${item.icon}`"
:style="{ background: item.color }"
>i>
<div class="detail">
<p class="num">¥{{ item.value }}p>
<p class="txt">{{ item.name }}p>
div>
el-card>
div>
<el-card style="height: 280px">el-card>
<div class="graph">
<el-card style="height: 260px">el-card>
<el-card style="height: 260px">el-card>
div>
el-col>
el-row>
template>
<script>
export default {
name: "Home",
data() {
return {
userImg: require("../../assets/images/user.png"),
tableData: [
{
name: "oppo",
todayBuy: 100,
monthBuy: 300,
totalBuy: 800,
},
{
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,
},
],
countData: [
{
name: "今日支付订单",
value: 1234,
icon: "success",
color: "#2ec7c9",
},
{
name: "今日收藏订单",
value: 210,
icon: "star-on",
color: "#ffb980",
},
{
name: "今日未支付订单",
value: 1234,
icon: "s-goods",
color: "#5ab1ef",
},
{
name: "本月支付订单",
value: 1234,
icon: "success",
color: "#2ec7c9",
},
{
name: "本月收藏订单",
value: 210,
icon: "star-on",
color: "#ffb980",
},
{
name: "本月未支付订单",
value: 1234,
icon: "s-goods",
color: "#5ab1ef",
},
],
tableLabel: {
name: "课程",
totalBuy: "今日购买",
monthBuy: "本月购买",
},
};
},
mounted() {
},
};
script>

原因:在使用Vuex.Store()的时候忘记加上new了
const store = Vuex.Store({ //Vuex前面少了new
modules:{
user
}
})
改正:
const store = new Vuex.Store({
modules:{
user
}
})
安装 vuex:npm i vuex or yarn add vuex
配置完vuex后,浏览器控制台出错
this.$store,说明vuex没有配置成功。
我看了项目的vue版本 是2.6.14版本,然后通过命令安装的是vuex是4.0.2版本。
然后看了下vuex官网

意思是:
vue3.x 对应 vuex4.xvue2.x 对应 vuex3.xnpm i vuex@3.0.0 or yarn add vuex@3.0.0