|
@@ -1,8 +1,8 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <div class="common-layout">
|
|
|
|
|
|
|
+ <div class="user-layout">
|
|
|
<el-container>
|
|
<el-container>
|
|
|
<el-header class="header">
|
|
<el-header class="header">
|
|
|
- <div class="header-left">
|
|
|
|
|
|
|
+ <div class="header-left" @click="router.push('/')">
|
|
|
<img src="/src/assets/logo.svg" alt="logo" class="logo">
|
|
<img src="/src/assets/logo.svg" alt="logo" class="logo">
|
|
|
<h2 class="title">{{title}}</h2>
|
|
<h2 class="title">{{title}}</h2>
|
|
|
</div>
|
|
</div>
|
|
@@ -13,15 +13,17 @@
|
|
|
@select="handleSelect"
|
|
@select="handleSelect"
|
|
|
class="nav-menu"
|
|
class="nav-menu"
|
|
|
>
|
|
>
|
|
|
- <el-menu-item index="/">首页</el-menu-item>
|
|
|
|
|
- <el-sub-menu index="2">
|
|
|
|
|
- <template #title>其他</template>
|
|
|
|
|
- <el-menu-item index="/about">关于</el-menu-item>
|
|
|
|
|
- </el-sub-menu>
|
|
|
|
|
|
|
+ <el-menu-item :index="menu.path" v-for="menu in menus" :key="menu.path">
|
|
|
|
|
+ <el-icon><component :is="menu.meta?.icon"/></el-icon>
|
|
|
|
|
+ <template #title>{{ menu.meta?.title }}</template>
|
|
|
|
|
+ </el-menu-item>
|
|
|
|
|
+ <el-menu-item index="/admin">
|
|
|
|
|
+ <el-icon><Tools/></el-icon>
|
|
|
|
|
+ <template #title>后台管理</template>
|
|
|
|
|
+ </el-menu-item>
|
|
|
</el-menu>
|
|
</el-menu>
|
|
|
<div class="header-right">
|
|
<div class="header-right">
|
|
|
<template v-if="login">
|
|
<template v-if="login">
|
|
|
-<!-- <span class="username"></span>-->
|
|
|
|
|
<el-dropdown placement="bottom">
|
|
<el-dropdown placement="bottom">
|
|
|
<el-button> {{ loginUserStore.loginUser?.user?.name }} </el-button>
|
|
<el-button> {{ loginUserStore.loginUser?.user?.name }} </el-button>
|
|
|
<template #dropdown>
|
|
<template #dropdown>
|
|
@@ -51,6 +53,11 @@
|
|
|
<script setup lang="ts">
|
|
<script setup lang="ts">
|
|
|
import {computed, ref} from 'vue'
|
|
import {computed, ref} from 'vue'
|
|
|
import {useLoginUserStore} from "../store";
|
|
import {useLoginUserStore} from "../store";
|
|
|
|
|
+import router, {userRoutes} from "../router";
|
|
|
|
|
+import {
|
|
|
|
|
+ Tools
|
|
|
|
|
+} from '@element-plus/icons-vue'
|
|
|
|
|
+
|
|
|
const title = ref("标题")
|
|
const title = ref("标题")
|
|
|
const loginUserStore = useLoginUserStore()
|
|
const loginUserStore = useLoginUserStore()
|
|
|
const login = computed(() => loginUserStore.loginUser.isLogin)
|
|
const login = computed(() => loginUserStore.loginUser.isLogin)
|
|
@@ -63,6 +70,9 @@ const loginHandler = () => {
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
let activeIndex = ref('/')
|
|
let activeIndex = ref('/')
|
|
|
|
|
+const menus = computed(()=>{
|
|
|
|
|
+ return userRoutes[0].children;
|
|
|
|
|
+})
|
|
|
const handleSelect = () => {
|
|
const handleSelect = () => {
|
|
|
//todo: 处理菜单选择
|
|
//todo: 处理菜单选择
|
|
|
}
|
|
}
|
|
@@ -71,7 +81,7 @@ const logoutHandler = () => {
|
|
|
}
|
|
}
|
|
|
</script>
|
|
</script>
|
|
|
<style scoped>
|
|
<style scoped>
|
|
|
-.common-layout {
|
|
|
|
|
|
|
+.user-layout {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
flex-direction: column;
|
|
|
min-height: 100vh;
|
|
min-height: 100vh;
|