From 221d2cc02dfdf3f78cb415f26c88f1f274942222 Mon Sep 17 00:00:00 2001 From: Soybean <2570172956@qq.com> Date: Thu, 23 Sep 2021 00:15:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(projects):=20=E6=96=B0=E5=A2=9E=E9=A1=B6?= =?UTF-8?q?=E9=83=A8=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/enum/index.ts | 2 +- src/enum/theme.ts | 8 ++++ src/interface/index.ts | 2 +- src/interface/theme.ts | 13 +++++- .../GlobalHeader/components/HeaderMenu.vue | 27 +++++++++++ .../components/GlobalHeader/index.vue | 8 ++-- .../components/PageFunc/index.vue | 46 +++++++++++-------- src/layouts/BasicLayout/index.vue | 9 +++- src/settings/theme.ts | 10 +++- src/store/modules/theme/index.ts | 6 ++- 10 files changed, 102 insertions(+), 29 deletions(-) create mode 100644 src/layouts/BasicLayout/components/GlobalHeader/components/HeaderMenu.vue diff --git a/src/enum/index.ts b/src/enum/index.ts index 9f8d223c..a127e29b 100644 --- a/src/enum/index.ts +++ b/src/enum/index.ts @@ -1,5 +1,5 @@ export { ContentType, EnumDataType, EnumLoginModule } from './common'; export { EnumAnimate } from './animate'; -export { EnumNavMode, EnumNavTheme, EnumMultiTabMode } from './theme'; +export { EnumNavMode, EnumNavTheme, EnumMultiTabMode, EnumHorizontalMenuPosition } from './theme'; export { EnumRoutePath, EnumRouteTitle } from './route'; export { EnumStorageKey } from './storage'; diff --git a/src/enum/theme.ts b/src/enum/theme.ts index 3e28e371..5f577902 100644 --- a/src/enum/theme.ts +++ b/src/enum/theme.ts @@ -13,7 +13,15 @@ export enum EnumNavTheme { 'header-dark' = '暗色的侧边栏和顶栏' } +/** 多页签风格 */ export enum EnumMultiTabMode { 'button' = '按钮风格', 'browser' = '浏览器风格' } + +/** 水平模式的菜单位置 */ +export enum EnumHorizontalMenuPosition { + 'flex-start' = '居左', + 'center' = '居中', + 'flex-end' = '居右' +} diff --git a/src/interface/index.ts b/src/interface/index.ts index 25227574..7244b1f0 100644 --- a/src/interface/index.ts +++ b/src/interface/index.ts @@ -1,3 +1,3 @@ export { UserInfo } from './business'; -export { ThemeSettings, NavMode, MultiTabMode, AnimateType } from './theme'; +export { ThemeSettings, NavMode, MultiTabMode, AnimateType, HorizontalMenuPosition } from './theme'; export { CustomRoute, RoutePathKey, GlobalMenuOption, LoginModuleType } from './common'; diff --git a/src/interface/theme.ts b/src/interface/theme.ts index d25a40ff..962c637c 100644 --- a/src/interface/theme.ts +++ b/src/interface/theme.ts @@ -1,4 +1,4 @@ -import { EnumAnimate, EnumNavMode, EnumNavTheme, EnumMultiTabMode } from '@/enum'; +import { EnumAnimate, EnumNavMode, EnumNavTheme, EnumMultiTabMode, EnumHorizontalMenuPosition } from '@/enum'; export interface ThemeSettings { /** 深色模式 */ @@ -56,6 +56,13 @@ interface HeaderStyle { bgColor: string; } +export type HorizontalMenuPosition = keyof typeof EnumHorizontalMenuPosition; + +interface HorizontalMenuPositionList { + value: HorizontalMenuPosition; + label: EnumHorizontalMenuPosition; +} + interface MenuStyle { /** 菜单宽度 */ width: number; @@ -67,6 +74,10 @@ interface MenuStyle { fixed: boolean; /** 分割菜单 */ splitMenu: boolean; + /** 水平模式的菜单的位置 */ + horizontalPosition: HorizontalMenuPosition; + /** 水平模式的菜单的位置列表 */ + horizontalPositionList: HorizontalMenuPositionList[]; } export type MultiTabMode = keyof typeof EnumMultiTabMode; diff --git a/src/layouts/BasicLayout/components/GlobalHeader/components/HeaderMenu.vue b/src/layouts/BasicLayout/components/GlobalHeader/components/HeaderMenu.vue new file mode 100644 index 00000000..dd7385e3 --- /dev/null +++ b/src/layouts/BasicLayout/components/GlobalHeader/components/HeaderMenu.vue @@ -0,0 +1,27 @@ + + + + diff --git a/src/layouts/BasicLayout/components/GlobalHeader/index.vue b/src/layouts/BasicLayout/components/GlobalHeader/index.vue index 9be19185..382e5f8d 100644 --- a/src/layouts/BasicLayout/components/GlobalHeader/index.vue +++ b/src/layouts/BasicLayout/components/GlobalHeader/index.vue @@ -5,11 +5,12 @@ -
+
- + +
-
+
@@ -25,6 +26,7 @@ import { NLayoutHeader } from 'naive-ui'; import { useThemeStore } from '@/store'; import { GlobalBreadcrumb, UserAvatar, MenuCollapse, FullScreen, GihubSite, SettingDrawerButton } from './components'; import { GlobalLogo } from '../common'; +import HeaderMenu from './components/HeaderMenu.vue'; defineProps({ zIndex: { diff --git a/src/layouts/BasicLayout/components/SettingDrawer/components/PageFunc/index.vue b/src/layouts/BasicLayout/components/SettingDrawer/components/PageFunc/index.vue index b832e192..b13e8707 100644 --- a/src/layouts/BasicLayout/components/SettingDrawer/components/PageFunc/index.vue +++ b/src/layouts/BasicLayout/components/SettingDrawer/components/PageFunc/index.vue @@ -4,25 +4,13 @@ - - - - - + - - - @@ -45,18 +33,40 @@ @update:value="handleMixMenuWidth" /> + + + + + + + + +