|
|
@@ -4,6 +4,18 @@
|
|
|
<el-header>
|
|
|
<div class="header-content">
|
|
|
<h1>资讯管理系统</h1>
|
|
|
+ <el-dropdown class="user panel-item" trigger="click" @command="handleCommand">
|
|
|
+ <div class="user-avatar">
|
|
|
+ <el-avatar :size="30" :src="avatar_img"></el-avatar>
|
|
|
+ <label>{{ userinfo.name }}</label>
|
|
|
+ <el-icon class="el-icon--right"><arrow-down /></el-icon>
|
|
|
+ </div>
|
|
|
+ <template #dropdown>
|
|
|
+ <el-dropdown-menu>
|
|
|
+ <el-dropdown-item command="doLogout">退出登录</el-dropdown-item>
|
|
|
+ </el-dropdown-menu>
|
|
|
+ </template>
|
|
|
+ </el-dropdown>
|
|
|
</div>
|
|
|
</el-header>
|
|
|
|
|
|
@@ -22,9 +34,37 @@
|
|
|
|
|
|
<script setup lang="ts">
|
|
|
import { ref } from 'vue'
|
|
|
+import { ElMessage } from 'element-plus'
|
|
|
+import { ArrowDown } from '@element-plus/icons-vue'
|
|
|
+import cookie from 'js-cookie'
|
|
|
+import { permissionApi } from '@/services/permission'
|
|
|
import Sidebar from '@/components/Sidebar.vue'
|
|
|
+import { storeToRefs } from 'pinia'
|
|
|
+import { userPermission } from '@/stores/permission'
|
|
|
+const permission = userPermission()
|
|
|
+const { userinfo } = storeToRefs(permission)
|
|
|
|
|
|
const isCollapse = ref(false)
|
|
|
+
|
|
|
+import avatar_image from '@/assets/user-avatar.jpeg'
|
|
|
+const avatar_img = avatar_image
|
|
|
+
|
|
|
+import { useRouter } from 'vue-router'
|
|
|
+const router = useRouter()
|
|
|
+
|
|
|
+const handleCommand = async (command: string | number | object) => {
|
|
|
+ switch (command) {
|
|
|
+ case 'doLogout':
|
|
|
+ const response = await permissionApi.adminLogout()
|
|
|
+ if (response.code == 200) {
|
|
|
+ cookie.remove('token')
|
|
|
+ router.push({ path: '/login' })
|
|
|
+ } else {
|
|
|
+ ElMessage.error('退出失败')
|
|
|
+ }
|
|
|
+ break
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
|
@@ -49,6 +89,7 @@ const isCollapse = ref(false)
|
|
|
.header-content {
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
height: 100%;
|
|
|
padding: 0 20px;
|
|
|
}
|
|
|
@@ -58,6 +99,23 @@ const isCollapse = ref(false)
|
|
|
font-size: 20px;
|
|
|
font-weight: 600;
|
|
|
}
|
|
|
+.header-content .user label {
|
|
|
+ color: #fff;
|
|
|
+}
|
|
|
+
|
|
|
+.user-avatar {
|
|
|
+ height: 49px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+}
|
|
|
+
|
|
|
+.user-avatar label {
|
|
|
+ display: inline-block;
|
|
|
+ margin-left: 5px;
|
|
|
+ font-size: 12px;
|
|
|
+ cursor: pointer;
|
|
|
+ color: #383838;
|
|
|
+}
|
|
|
|
|
|
.el-aside {
|
|
|
background-color: #ffffff;
|