<template> <el-row type="flex" justify="end" :gutter="20"> <el-col :span="5"> <el-button @click="$store.commit('onChangeToggleAside', !$store.state.isShowAside)" class="mini-im-button" type="info" :icon="$store.state.isShowAside ? 'el-icon-s-fold' : 'el-icon-s-unfold'" > </el-button> </el-col> <el-col :span="16" > <div class="mini-im-title">{{$store.state.heaserTitle}}</div> </el-col> <el-col :span="5"> <el-row type="flex" justify="end" class="mini-im-dropdown"> <el-dropdown @command="handleCommand" trigger="click"> <div class="el-dropdown-link"> <el-avatar :size="25" class="mini-im-avatar"> <img :src="$store.getters.avatar"/> </el-avatar> <span style="padding:0 5px;"> {{$store.getters.nickname}} </span> <i class="el-icon-arrow-down el-icon--right"></i> </div> <el-dropdown-menu slot="dropdown"> <el-dropdown-item command="a"> <i class="el-icon-user icon"></i> 修改资料 </el-dropdown-item> <el-dropdown-item command="b"> <i class="el-icon-unlock icon"></i> 修改密码 </el-dropdown-item> <el-dropdown-item command="c" divided> <i class="el-icon-caret-right icon"></i> 退出登录 </el-dropdown-item> </el-dropdown-menu> </el-dropdown> </el-row> </el-col> </el-row> </template> <script> import axios from 'axios' export default { name: "mini-im-aside", data(){ return { bgColor: "#ffffff" } }, props: { title: String }, methods: { // 退出登录 logout(){ axios.put('/admin/online/0') axios.get('/auth/logout') .then(() => { this.$store.commit("onReset") this.$store.commit("onChangeAdminInfo", null) this.$router.push({ path: '/login'}) this.$mimcInstance.logout() this.$store.commit("onIsLogin", false) localStorage.clear() }) .catch(error => { this.$message.error('退出失败') console.log(error) }) }, handleCommand(command){ switch(command){ case 'a': this.$store.commit("onChangeEditDialogFormVisible", true) break case 'b': this.$store.commit("onChangeEditPasswordDialogFormVisible", true) break case 'c': this.$confirm('您确定要退出登录吗? ', '温馨提示!', { confirmButtonText: '确定', cancelButtonText: '取消', center: true, type: 'warning' }).then(() => this.logout()) break } } } } </script> <style scoped lang="stylus"> .mini-im-header { background-color: #545c64; border-bottom: 1px solid #545c64; .mini-im-dropdown{ height 100% } .mini-im-button{ border 0 font-size 35px display block background 0 padding-left 0 } .mini-im-title{ color #fff font-size 16px text-align center line-height 60px } .icon { color: #fff; } .el-dropdown-link { cursor: pointer; display flex height 100% line-height 60px align-items center color: #fff; } .el-icon-arrow-down { font-size: 12px; } } </style>