|
@@ -1,21 +1,45 @@
|
|
<template>
|
|
<template>
|
|
- <LayoutHeader>
|
|
|
|
- <ul class="navs">
|
|
|
|
- <li
|
|
|
|
- v-for="nav in navs"
|
|
|
|
- :key="nav.path"
|
|
|
|
- >
|
|
|
|
- <RouterLink :to="nav.path">
|
|
|
|
- {{ nav.title }}
|
|
|
|
- </RouterLink>
|
|
|
|
- </li>
|
|
|
|
- </ul>
|
|
|
|
- </LayoutHeader>
|
|
|
|
|
|
+ <a-layout-header class="header">
|
|
|
|
+ <div class="left">
|
|
|
|
+ <ul class="navs">
|
|
|
|
+ <li
|
|
|
|
+ v-for="nav in navs"
|
|
|
|
+ :key="nav.path"
|
|
|
|
+ >
|
|
|
|
+ <RouterLink :to="nav.path">
|
|
|
|
+ {{ nav.title }}
|
|
|
|
+ </RouterLink>
|
|
|
|
+ </li>
|
|
|
|
+ </ul>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="right">
|
|
|
|
+ <a-dropdown placement="bottomCenter">
|
|
|
|
+ <a @click.prevent>
|
|
|
|
+ <a-avatar size="small">
|
|
|
|
+ <template #icon><user-outlined /></template>
|
|
|
|
+ </a-avatar>
|
|
|
|
+ <span class="username">小小了墨</span>
|
|
|
|
+ </a>
|
|
|
|
+ <template #overlay>
|
|
|
|
+ <a-menu @click="menuClickHandle">
|
|
|
|
+ <a-menu-item :key="EnumUserDropdown.center">
|
|
|
|
+ <span>个人中心</span>
|
|
|
|
+ </a-menu-item>
|
|
|
|
+ <a-menu-divider />
|
|
|
|
+ <a-menu-item :key="EnumUserDropdown.logout">
|
|
|
|
+ <span>退出登录</span>
|
|
|
|
+ </a-menu-item>
|
|
|
|
+ </a-menu>
|
|
|
|
+ </template>
|
|
|
|
+ </a-dropdown>
|
|
|
|
+ </div>
|
|
|
|
+ </a-layout-header>
|
|
</template>
|
|
</template>
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
import { ref } from 'vue';
|
|
import { ref } from 'vue';
|
|
-import { RouterLink} from 'vue-router';
|
|
|
|
-import { LayoutHeader } from 'ant-design-vue';
|
|
|
|
|
|
+import { RouterLink } from 'vue-router';
|
|
|
|
+import { message } from 'ant-design-vue';
|
|
|
|
+import 'ant-design-vue/es/message/style/index.less';
|
|
|
|
|
|
const navs = ref([
|
|
const navs = ref([
|
|
{
|
|
{
|
|
@@ -31,20 +55,61 @@ const navs = ref([
|
|
title: '错误页'
|
|
title: '错误页'
|
|
}
|
|
}
|
|
])
|
|
])
|
|
|
|
+enum EnumUserDropdown {
|
|
|
|
+ center = 1,
|
|
|
|
+ logout = 2
|
|
|
|
+}
|
|
|
|
+interface menuClickParams {
|
|
|
|
+ key: number
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+const menuClickHandle = ({ key }: menuClickParams) => {
|
|
|
|
+ console.log(key);
|
|
|
|
+ switch (key) {
|
|
|
|
+ case EnumUserDropdown.center:
|
|
|
|
+ message.info('个人中心')
|
|
|
|
+ break
|
|
|
|
+ case EnumUserDropdown.logout:
|
|
|
|
+ message.info('退出登录')
|
|
|
|
+ break
|
|
|
|
+ default:
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+}
|
|
</script>
|
|
</script>
|
|
-<style scoped>
|
|
|
|
|
|
+<style lang="less" scoped>
|
|
|
|
+@color: rgba(255, 255, 255, 0.65);
|
|
|
|
+@color-hover: var(--color-primary);
|
|
|
|
+.header {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ .right {
|
|
|
|
+ a {
|
|
|
|
+ padding: 5px 0;
|
|
|
|
+ color: @color;
|
|
|
|
+ &:hover {
|
|
|
|
+ color: @color-hover;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .username {
|
|
|
|
+ margin-left: 10px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
.navs {
|
|
.navs {
|
|
display: flex;
|
|
display: flex;
|
|
list-style: none;
|
|
list-style: none;
|
|
margin: 0;
|
|
margin: 0;
|
|
|
|
+ a {
|
|
|
|
+ padding: 0 10px;
|
|
|
|
+ text-decoration: none;
|
|
|
|
+ color: var(--color-primary);
|
|
|
|
+ }
|
|
|
|
+ a:hover {
|
|
|
|
+ text-decoration: underline;
|
|
|
|
+ color: var(--color-a-active);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
-a {
|
|
|
|
- padding: 0 10px;
|
|
|
|
- text-decoration: none;
|
|
|
|
- color: var(--color-primary);
|
|
|
|
-}
|
|
|
|
-a:hover {
|
|
|
|
- text-decoration: underline;
|
|
|
|
- color: var(--color-a-active);
|
|
|
|
-}
|
|
|
|
|
|
+
|
|
</style>
|
|
</style>
|