修改一个参数,就实现默认的四个系统主题快速切换

This commit is contained in:
JEECG 2025-12-03 19:55:13 +08:00
parent 8c88f8adf5
commit 38d44c2487
5 changed files with 76 additions and 48 deletions

View File

@ -2,13 +2,13 @@
* @description: menu type * @description: menu type
*/ */
export enum MenuTypeEnum { export enum MenuTypeEnum {
// left menu //
SIDEBAR = 'sidebar', SIDEBAR = 'sidebar',
//
MIX_SIDEBAR = 'mix-sidebar',
// mixin menu
MIX = 'mix', MIX = 'mix',
// top menu //
MIX_SIDEBAR = 'mix-sidebar',
//
TOP_MENU = 'top-menu', TOP_MENU = 'top-menu',
} }

View File

@ -9,8 +9,7 @@ import { changeTheme } from '/@/logics/theme';
import { updateDarkTheme } from '/@/logics/theme/dark'; import { updateDarkTheme } from '/@/logics/theme/dark';
import { useRootSetting } from '/@/hooks/setting/useRootSetting'; import { useRootSetting } from '/@/hooks/setting/useRootSetting';
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum'; import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
import { HEADER_PRESET_BG_COLOR_LIST, SIDE_BAR_BG_COLOR_LIST } from '/@/settings/designSetting'; import { getConfigByMenuType } from '../../../utils/getConfigByMenuType';
import { getThemeColorByMenuType } from '/@/utils/getThemeColorByMenuType';
import { isObject } from '/@/utils/is'; import { isObject } from '/@/utils/is';
import { ThemeEnum } from '/@/enums/appEnum'; import { ThemeEnum } from '/@/enums/appEnum';
import { APP__THEME__COLOR } from '/@/enums/cacheEnum'; import { APP__THEME__COLOR } from '/@/enums/cacheEnum';
@ -27,10 +26,10 @@ export function layoutHandler(event: HandlerEnum, value: any) {
const appStore = useAppStore(); const appStore = useAppStore();
const darkMode = appStore.getDarkMode === ThemeEnum.DARK; const darkMode = appStore.getDarkMode === ThemeEnum.DARK;
// //
const dynamicThemeColor = getThemeColorByMenuType(value.type); const {themeColor: dynamicThemeColor, headerBgColor, sideBgColor } = getConfigByMenuType(value.type);
if (isHTopMenu) { if (isHTopMenu) {
baseHandler(event, value); baseHandler(event, value);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[4]); baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.CHANGE_THEME_COLOR, dynamicThemeColor); baseHandler(HandlerEnum.CHANGE_THEME_COLOR, dynamicThemeColor);
if (darkMode) { if (darkMode) {
updateHeaderBgColor(); updateHeaderBgColor();
@ -39,8 +38,8 @@ export function layoutHandler(event: HandlerEnum, value: any) {
baseHandler(HandlerEnum.TABS_THEME, tabsThemeOptions[1].value); baseHandler(HandlerEnum.TABS_THEME, tabsThemeOptions[1].value);
} else if (isMixMenu) { } else if (isMixMenu) {
baseHandler(event, value); baseHandler(event, value);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[2]); baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.MENU_THEME, SIDE_BAR_BG_COLOR_LIST[3]); baseHandler(HandlerEnum.MENU_THEME, sideBgColor);
if (darkMode) { if (darkMode) {
updateHeaderBgColor(); updateHeaderBgColor();
updateSidebarBgColor(); updateSidebarBgColor();
@ -51,8 +50,8 @@ export function layoutHandler(event: HandlerEnum, value: any) {
} else if (isMixSidebarMenu) { } else if (isMixSidebarMenu) {
baseHandler(event, value); baseHandler(event, value);
baseHandler(HandlerEnum.CHANGE_THEME_COLOR, dynamicThemeColor); baseHandler(HandlerEnum.CHANGE_THEME_COLOR, dynamicThemeColor);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[0]); baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.MENU_THEME, SIDE_BAR_BG_COLOR_LIST[0]); baseHandler(HandlerEnum.MENU_THEME, sideBgColor);
if (darkMode) { if (darkMode) {
updateHeaderBgColor(); updateHeaderBgColor();
updateSidebarBgColor(); updateSidebarBgColor();
@ -60,8 +59,8 @@ export function layoutHandler(event: HandlerEnum, value: any) {
baseHandler(HandlerEnum.TABS_THEME, tabsThemeOptions[1].value); baseHandler(HandlerEnum.TABS_THEME, tabsThemeOptions[1].value);
} else { } else {
baseHandler(event, value); baseHandler(event, value);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[4]); baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.MENU_THEME, SIDE_BAR_BG_COLOR_LIST[7]); baseHandler(HandlerEnum.MENU_THEME, sideBgColor);
if (darkMode) { if (darkMode) {
updateHeaderBgColor(); updateHeaderBgColor();
updateSidebarBgColor(); updateSidebarBgColor();

View File

@ -10,11 +10,14 @@ import {
SessionTimeoutProcessingEnum, SessionTimeoutProcessingEnum,
TabsThemeEnum, TabsThemeEnum,
} from '/@/enums/appEnum'; } from '/@/enums/appEnum';
import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting';
import { darkMode } from '/@/settings/designSetting'; import { darkMode } from '/@/settings/designSetting';
import { getThemeColorByMenuType } from '/@/utils/getThemeColorByMenuType'; import { getConfigByMenuType } from '../utils/getConfigByMenuType';
//
const menuType = MenuTypeEnum.SIDEBAR; const menuType = MenuTypeEnum.SIDEBAR;
// update-begin--author:liaozhiyang---date:20251201---forQQYUN-14176
const { themeColor, headerBgColor, sideBgColor, split, mode } = getConfigByMenuType(menuType);
// update-end--author:liaozhiyang---date:20251201---forQQYUN-14176
// ! // !
const setting: ProjectConfig = { const setting: ProjectConfig = {
// SettingButton // SettingButton
@ -43,7 +46,7 @@ const setting: ProjectConfig = {
// SessionTimeoutProcessingEnum.PAGE_COVERAGE: // SessionTimeoutProcessingEnum.PAGE_COVERAGE:
sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP, sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP,
// - // -
themeColor: getThemeColorByMenuType(menuType), themeColor: themeColor,
// //
themeMode: darkMode, themeMode: darkMode,
@ -71,7 +74,7 @@ const setting: ProjectConfig = {
// //
headerSetting: { headerSetting: {
// //
bgColor: HEADER_PRESET_BG_COLOR_LIST[4], bgColor: headerBgColor,
// //
fixed: true, fixed: true,
// //
@ -93,7 +96,7 @@ const setting: ProjectConfig = {
// //
menuSetting: { menuSetting: {
// //
bgColor: SIDE_BAR_BG_COLOR_LIST[0], bgColor: sideBgColor,
// //
fixed: true, fixed: true,
// //
@ -110,15 +113,15 @@ const setting: ProjectConfig = {
// //
menuWidth: 210, menuWidth: 210,
// //
mode: MenuModeEnum.INLINE, mode,
// //
type: MenuTypeEnum.SIDEBAR, type: menuType,
// //
theme: ThemeEnum.DARK, theme: ThemeEnum.LIGHT,
// () // ()
isThemeBright: false, isThemeBright: false,
// //
split: false, split,
// //
topMenuAlign: 'center', topMenuAlign: 'center',
// //

View File

@ -0,0 +1,49 @@
import { MenuTypeEnum, MenuModeEnum } from '/@/enums/menuEnum';
import { APP_PRESET_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST, SIDE_BAR_BG_COLOR_LIST } from '/@/settings/designSetting';
/**
* 根据菜单类型和模式获取对应的主题色
* @param menuType 菜单类型
*/
export function getConfigByMenuType(menuType: MenuTypeEnum): {
themeColor: string;
headerBgColor: string;
sideBgColor: string;
split: boolean;
mode: MenuModeEnum;
} {
let themeColor;
let headerBgColor;
let sideBgColor;
let split = false;
let mode: MenuModeEnum = MenuModeEnum.INLINE;
if (menuType === MenuTypeEnum.TOP_MENU) {
//
themeColor = APP_PRESET_COLOR_LIST[1];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[4];
mode = MenuModeEnum.HORIZONTAL;
} else if (menuType === MenuTypeEnum.MIX) {
//
themeColor = APP_PRESET_COLOR_LIST[2];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[2];
sideBgColor = SIDE_BAR_BG_COLOR_LIST[3];
split = true;
} else if (menuType === MenuTypeEnum.MIX_SIDEBAR) {
//
themeColor = APP_PRESET_COLOR_LIST[1];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[0];
sideBgColor = SIDE_BAR_BG_COLOR_LIST[0];
} else if (menuType === MenuTypeEnum.SIDEBAR) {
//
themeColor = APP_PRESET_COLOR_LIST[1];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[4];
sideBgColor = SIDE_BAR_BG_COLOR_LIST[7];
}
return {
themeColor,
headerBgColor,
sideBgColor,
split,
mode,
};
}

View File

@ -1,23 +0,0 @@
import { MenuTypeEnum } from '/@/enums/menuEnum';
import { APP_PRESET_COLOR_LIST } from '/@/settings/designSetting';
/**
* 根据菜单类型和模式获取对应的主题色
* @param menuType 菜单类型
*/
export function getThemeColorByMenuType(menuType: MenuTypeEnum): string {
if (menuType === MenuTypeEnum.TOP_MENU) {
//
return APP_PRESET_COLOR_LIST[1];
} else if (menuType === MenuTypeEnum.MIX) {
// 使绿
return APP_PRESET_COLOR_LIST[2];
} else if (menuType === MenuTypeEnum.MIX_SIDEBAR) {
//
return APP_PRESET_COLOR_LIST[1];
} else if (menuType === MenuTypeEnum.SIDEBAR) {
//
return APP_PRESET_COLOR_LIST[1];
}
return APP_PRESET_COLOR_LIST[1];
}