简单用户管理系统(P-14)

顶部菜单导航的设计

  • 顶部菜单,需要定义一个HeadNav.vue, 在组件中去定义,然后根据内容,引入到index.vue中
export default {
    name: "index",
    components: {
        HeadNav
    }
};

HeadNav.vue 分成左右两个部位
我们用el-row去实现左右,右侧的还需要一个Dropdown,去实现,同是具体的的点击事件和命令看如下代码,当然你记得要在store.js中去action中增加一个clearCurrentState

clearCurrentState: ({commit}) => {
        commit(types.SET_IS_AUTHENTICATED, false);
        commit(types.SET_USER, null)
    }

其他的就是对应Dropdown的事件方法

<template>
    <header class="head-nav">
        <el-row>
            <el-col :span="6" class="logo-container">
                <img src="../assets/logo.png" class="logo" alt="图标">
                <span class="title">智慧党建云平台</span>
            </el-col>
            <el-col :span="6" class="user">
                <div class="userinfo">
                    <!-- <img src="//www.gravatar.com/avatar/97afc159d9bd9fc17d31e9eb298001ca?s=200&r=pg&d=mm" class="avatar" alt="">
                    <div class="welcome">
                        <p class="name comename">欢迎</p>
                        <p class="name avatarname">管理员</p>
                    </div> -->
                    <span class="username">
                        <!-- 指令菜单 -->
                        <el-dropdown trigger="click"  @command='setDialogInfo'>
                            <span class="el-dropdown-link">
                                <img :src="user.avatar" class="avatar" alt="">
                                <div class="welcome">
                                    <p class="name comename">欢迎</p>
                                    <p class="name avatarname">{{user.name}}</p>
                                </div>
                                <i class="el-icon-caret-bottom el-icon--right"></i>
                            </span>
                            <el-dropdown-menu slot="dropdown">
                                <el-dropdown-item command="info">个人信息</el-dropdown-item>
                                <el-dropdown-item command="logout">退出</el-dropdown-item>
                            </el-dropdown-menu>
                        </el-dropdown>
                    </span>
                </div>
            </el-col>
        </el-row>
    </header>
</template>

<script>
    export default {
        name: 'head-nav',
        computed: {
            user() {
                return this.$store.getters.user;
            }
        },
         methods: {
            setDialogInfo(command) {
                if(!command) {
                    console.log("test");
                    this.$message("菜单选项缺少command属性");
                    return; 
                    this.$message('click on item ' + command);
                } 
                switch(command) {
                    case "info":
                        this.showInfoList();
                        break;
                    case "logout":
                        this.logout();
                        break; 
                }
            },
            showInfoList() {
                // 个人信息
                this.$router.push("/infoshow");
            },
            logout() {
                 // 清除token
                localStorage.removeItem('eleToken');
                this.$store.dispatch("clearCurrentState");
                
                // 页面跳转
                this.$router.push('/login')
            }
        }
    }
</script>

<style scoped>
    .head-nav {
        width: 100%;
        height: 60px;
        min-width: 600px;
        padding: 5px;
        background: #324057;
        color: #fff;
        border-bottom: 1px solid #1f2d3d;
    }
    .logo-container {
        line-height: 60px;
        min-width: 400px;
    }
    .logo {
        height: 50;
        width: 50px;
        margin-right: 5px;
        vertical-align: middle;
        display: inline-block; /* 垂直居中 */
    }
    .title {
        vertical-align: middle;
        font-size: 22px;
        font-family: "Microsoft YaHei";
        letter-spacing: 3px; /* 字间距 */
    }
    .user {
        line-height: 60px;
        text-align: right;
        float: right;
        padding-right: 10px;
    }
    .avatar {
        width: 40px;
        height: 40px;
        vertical-align: middle;
        display: inline-block;
        border-radius: 50%;
    }
    .welcome {
        display: inline-block;
        width: auto;
        vertical-align: middle;
        padding: 0 5px;
    }
    .name {
        line-height: 20px;
        text-align: center;
        font-size: 14px;
    }
    .comename {
        font-size: 12px;
    }
    .avatarname {
        color: #409eff;
        font-weight: bolder;
    }
    .username {
        cursor: pointer;
        margin-right: 5px;
    }
    .el-dropdown {
        color: #fff;
    }
    
</style>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值