|
@@ -17,7 +17,7 @@
|
|
|
<el-icon><component :is="menu.meta?.icon"/></el-icon>
|
|
<el-icon><component :is="menu.meta?.icon"/></el-icon>
|
|
|
<template #title>{{ menu.meta?.title }}</template>
|
|
<template #title>{{ menu.meta?.title }}</template>
|
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
|
- <el-menu-item index="/admin">
|
|
|
|
|
|
|
+ <el-menu-item v-if="isAdmin" index="/admin">
|
|
|
<el-icon><Tools/></el-icon>
|
|
<el-icon><Tools/></el-icon>
|
|
|
<template #title>后台管理</template>
|
|
<template #title>后台管理</template>
|
|
|
</el-menu-item>
|
|
</el-menu-item>
|
|
@@ -25,11 +25,14 @@
|
|
|
<div class="header-right">
|
|
<div class="header-right">
|
|
|
<template v-if="login">
|
|
<template v-if="login">
|
|
|
<el-dropdown placement="bottom">
|
|
<el-dropdown placement="bottom">
|
|
|
- <el-button> {{ loginUserStore.loginUser?.user?.name }} </el-button>
|
|
|
|
|
|
|
+ <el-button class="user-btn" text>
|
|
|
|
|
+ <el-icon class="user-avatar"><UserFilled /></el-icon>
|
|
|
|
|
+ <span class="username">{{ loginUserStore.loginUser?.user?.name }}</span>
|
|
|
|
|
+ </el-button>
|
|
|
<template #dropdown>
|
|
<template #dropdown>
|
|
|
<el-dropdown-menu>
|
|
<el-dropdown-menu>
|
|
|
<el-dropdown-item>个人信息</el-dropdown-item>
|
|
<el-dropdown-item>个人信息</el-dropdown-item>
|
|
|
- <el-dropdown-item @click="logoutHandler">退出</el-dropdown-item>
|
|
|
|
|
|
|
+ <el-dropdown-item divided @click="logoutHandler">退出登录</el-dropdown-item>
|
|
|
</el-dropdown-menu>
|
|
</el-dropdown-menu>
|
|
|
</template>
|
|
</template>
|
|
|
</el-dropdown>
|
|
</el-dropdown>
|
|
@@ -55,18 +58,15 @@ import {computed, ref} from 'vue'
|
|
|
import {useLoginUserStore, useMetaStore} from "../store";
|
|
import {useLoginUserStore, useMetaStore} from "../store";
|
|
|
import router, {userRoutes} from "../router";
|
|
import router, {userRoutes} from "../router";
|
|
|
import {
|
|
import {
|
|
|
- Tools
|
|
|
|
|
|
|
+ Tools,
|
|
|
|
|
+ UserFilled
|
|
|
} from '@element-plus/icons-vue'
|
|
} from '@element-plus/icons-vue'
|
|
|
const metaStore = useMetaStore()
|
|
const metaStore = useMetaStore()
|
|
|
const loginUserStore = useLoginUserStore()
|
|
const loginUserStore = useLoginUserStore()
|
|
|
const login = computed(() => loginUserStore.loginUser.isLogin)
|
|
const login = computed(() => loginUserStore.loginUser.isLogin)
|
|
|
-//todo:模拟登陆
|
|
|
|
|
|
|
+const isAdmin = computed(() => loginUserStore.loginUser.user?.role === 'admin')
|
|
|
const loginHandler = () => {
|
|
const loginHandler = () => {
|
|
|
- loginUserStore.loginSuccess({
|
|
|
|
|
- id:"",
|
|
|
|
|
- name:"张三",
|
|
|
|
|
- role:"user"
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ router.push('/login')
|
|
|
}
|
|
}
|
|
|
let activeIndex = ref('/')
|
|
let activeIndex = ref('/')
|
|
|
const menus = computed(()=>{
|
|
const menus = computed(()=>{
|
|
@@ -77,6 +77,7 @@ const handleSelect = () => {
|
|
|
}
|
|
}
|
|
|
const logoutHandler = () => {
|
|
const logoutHandler = () => {
|
|
|
loginUserStore.logoutUser()
|
|
loginUserStore.logoutUser()
|
|
|
|
|
+ router.push('/')
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
<style scoped>
|
|
<style scoped>
|
|
@@ -122,4 +123,21 @@ el-main{
|
|
|
font-size: 14px;
|
|
font-size: 14px;
|
|
|
color: #606266;
|
|
color: #606266;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+.user-btn {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ gap: 6px;
|
|
|
|
|
+ cursor: pointer;
|
|
|
|
|
+ transition: color 0.2s;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.user-btn:hover {
|
|
|
|
|
+ color: #db2777;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+.user-avatar {
|
|
|
|
|
+ font-size: 20px;
|
|
|
|
|
+ color: #be185d;
|
|
|
|
|
+}
|
|
|
</style>
|
|
</style>
|