mirror of
				https://github.com/pure-admin/vue-pure-admin.git
				synced 2025-11-03 13:44:47 +08:00 
			
		
		
		
	refactor: 优化主题色 (#842)
* refactor: 优化主题色 * chore: 移除`yellow`金色主题配色 * perf: 优化左侧菜单的右边框,使其不再突兀 * style: 所有层级的子菜单字体大小跟顶级菜单保持一致都是`14px` * chore: 默认亮白色`light`主题配色,并按照感官调整主题色顺序 * fix: 修复亮白主题配色,切换暗色主题后再切回亮色主题时,无法恢复之前的亮白主题配色 * style: 统一亮白主题配色下顶部菜单和混合菜单的`logo`和右侧操作功能颜色
This commit is contained in:
		
							parent
							
								
									7acdf03f87
								
							
						
					
					
						commit
						ba1f655b6e
					
				@ -7,7 +7,7 @@
 | 
				
			|||||||
  "KeepAlive": true,
 | 
					  "KeepAlive": true,
 | 
				
			||||||
  "Locale": "zh",
 | 
					  "Locale": "zh",
 | 
				
			||||||
  "Layout": "vertical",
 | 
					  "Layout": "vertical",
 | 
				
			||||||
  "Theme": "default",
 | 
					  "Theme": "light",
 | 
				
			||||||
  "DarkMode": false,
 | 
					  "DarkMode": false,
 | 
				
			||||||
  "Grey": false,
 | 
					  "Grey": false,
 | 
				
			||||||
  "Weak": false,
 | 
					  "Weak": false,
 | 
				
			||||||
 | 
				
			|||||||
@ -120,7 +120,7 @@ onBeforeUnmount(() => {
 | 
				
			|||||||
  right: 0;
 | 
					  right: 0;
 | 
				
			||||||
  z-index: 40000;
 | 
					  z-index: 40000;
 | 
				
			||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
  max-width: 300px;
 | 
					  max-width: 280px;
 | 
				
			||||||
  height: 100vh;
 | 
					  height: 100vh;
 | 
				
			||||||
  box-shadow: 0 0 15px 0 rgb(0 0 0 / 5%);
 | 
					  box-shadow: 0 0 15px 0 rgb(0 0 0 / 5%);
 | 
				
			||||||
  transition: all 0.25s cubic-bezier(0.7, 0.3, 0.1, 1);
 | 
					  transition: all 0.25s cubic-bezier(0.7, 0.3, 0.1, 1);
 | 
				
			||||||
 | 
				
			|||||||
@ -194,7 +194,8 @@ function setLayoutModel(layout: string) {
 | 
				
			|||||||
    theme: layoutTheme.value.theme,
 | 
					    theme: layoutTheme.value.theme,
 | 
				
			||||||
    darkMode: $storage.layout?.darkMode,
 | 
					    darkMode: $storage.layout?.darkMode,
 | 
				
			||||||
    sidebarStatus: $storage.layout?.sidebarStatus,
 | 
					    sidebarStatus: $storage.layout?.sidebarStatus,
 | 
				
			||||||
    epThemeColor: $storage.layout?.epThemeColor
 | 
					    epThemeColor: $storage.layout?.epThemeColor,
 | 
				
			||||||
 | 
					    themeColor: layoutTheme.value.theme
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  useAppStoreHook().setLayout(layout);
 | 
					  useAppStoreHook().setLayout(layout);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -411,7 +412,7 @@ onBeforeMount(() => {
 | 
				
			|||||||
    cursor: pointer;
 | 
					    cursor: pointer;
 | 
				
			||||||
    border-radius: 4px;
 | 
					    border-radius: 4px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    &:nth-child(2) {
 | 
					    &:nth-child(1) {
 | 
				
			||||||
      border: 1px solid #ddd;
 | 
					      border: 1px solid #ddd;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -66,6 +66,6 @@ const toggleClick = () => {
 | 
				
			|||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
  height: 40px;
 | 
					  height: 40px;
 | 
				
			||||||
  line-height: 40px;
 | 
					  line-height: 40px;
 | 
				
			||||||
  box-shadow: 0 0 6px -2px var(--el-color-primary);
 | 
					  box-shadow: 0 0 6px -3px var(--el-color-primary);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
</style>
 | 
					</style>
 | 
				
			||||||
 | 
				
			|||||||
@ -18,24 +18,22 @@ import {
 | 
				
			|||||||
export function useDataThemeChange() {
 | 
					export function useDataThemeChange() {
 | 
				
			||||||
  const { layoutTheme, layout } = useLayout();
 | 
					  const { layoutTheme, layout } = useLayout();
 | 
				
			||||||
  const themeColors = ref<Array<themeColorsType>>([
 | 
					  const themeColors = ref<Array<themeColorsType>>([
 | 
				
			||||||
    /* 道奇蓝(默认) */
 | 
					 | 
				
			||||||
    { color: "#1b2a47", themeColor: "default" },
 | 
					 | 
				
			||||||
    /* 亮白色 */
 | 
					    /* 亮白色 */
 | 
				
			||||||
    { color: "#ffffff", themeColor: "light" },
 | 
					    { color: "#ffffff", themeColor: "light" },
 | 
				
			||||||
 | 
					    /* 道奇蓝 */
 | 
				
			||||||
 | 
					    { color: "#1b2a47", themeColor: "default" },
 | 
				
			||||||
 | 
					    /* 深紫罗兰色 */
 | 
				
			||||||
 | 
					    { color: "#722ed1", themeColor: "saucePurple" },
 | 
				
			||||||
 | 
					    /* 深粉色 */
 | 
				
			||||||
 | 
					    { color: "#eb2f96", themeColor: "pink" },
 | 
				
			||||||
    /* 猩红色 */
 | 
					    /* 猩红色 */
 | 
				
			||||||
    { color: "#f5222d", themeColor: "dusk" },
 | 
					    { color: "#f5222d", themeColor: "dusk" },
 | 
				
			||||||
    /* 橙红色 */
 | 
					    /* 橙红色 */
 | 
				
			||||||
    { color: "#fa541c", themeColor: "volcano" },
 | 
					    { color: "#fa541c", themeColor: "volcano" },
 | 
				
			||||||
    /* 金色 */
 | 
					 | 
				
			||||||
    { color: "#fadb14", themeColor: "yellow" },
 | 
					 | 
				
			||||||
    /* 绿宝石 */
 | 
					    /* 绿宝石 */
 | 
				
			||||||
    { color: "#13c2c2", themeColor: "mingQing" },
 | 
					    { color: "#13c2c2", themeColor: "mingQing" },
 | 
				
			||||||
    /* 酸橙绿 */
 | 
					    /* 酸橙绿 */
 | 
				
			||||||
    { color: "#52c41a", themeColor: "auroraGreen" },
 | 
					    { color: "#52c41a", themeColor: "auroraGreen" }
 | 
				
			||||||
    /* 深粉色 */
 | 
					 | 
				
			||||||
    { color: "#eb2f96", themeColor: "pink" },
 | 
					 | 
				
			||||||
    /* 深紫罗兰色 */
 | 
					 | 
				
			||||||
    { color: "#722ed1", themeColor: "saucePurple" }
 | 
					 | 
				
			||||||
  ]);
 | 
					  ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const { $storage } = useGlobal<GlobalPropertiesApi>();
 | 
					  const { $storage } = useGlobal<GlobalPropertiesApi>();
 | 
				
			||||||
@ -50,17 +48,23 @@ export function useDataThemeChange() {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /** 设置导航主题色 */
 | 
					  /** 设置导航主题色 */
 | 
				
			||||||
  function setLayoutThemeColor(theme = getConfig().Theme ?? "default") {
 | 
					  function setLayoutThemeColor(
 | 
				
			||||||
 | 
					    theme = getConfig().Theme ?? "light",
 | 
				
			||||||
 | 
					    isClick = true
 | 
				
			||||||
 | 
					  ) {
 | 
				
			||||||
    layoutTheme.value.theme = theme;
 | 
					    layoutTheme.value.theme = theme;
 | 
				
			||||||
    toggleTheme({
 | 
					    toggleTheme({
 | 
				
			||||||
      scopeName: `layout-theme-${theme}`
 | 
					      scopeName: `layout-theme-${theme}`
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
					    // 如果非isClick,保留之前的themeColor
 | 
				
			||||||
 | 
					    const storageThemeColor = $storage.layout.themeColor;
 | 
				
			||||||
    $storage.layout = {
 | 
					    $storage.layout = {
 | 
				
			||||||
      layout: layout.value,
 | 
					      layout: layout.value,
 | 
				
			||||||
      theme,
 | 
					      theme,
 | 
				
			||||||
      darkMode: dataTheme.value,
 | 
					      darkMode: dataTheme.value,
 | 
				
			||||||
      sidebarStatus: $storage.layout?.sidebarStatus,
 | 
					      sidebarStatus: $storage.layout?.sidebarStatus,
 | 
				
			||||||
      epThemeColor: $storage.layout?.epThemeColor
 | 
					      epThemeColor: $storage.layout?.epThemeColor,
 | 
				
			||||||
 | 
					      themeColor: isClick ? theme : storageThemeColor
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (theme === "default" || theme === "light") {
 | 
					    if (theme === "default" || theme === "light") {
 | 
				
			||||||
@ -93,14 +97,17 @@ export function useDataThemeChange() {
 | 
				
			|||||||
  /** 亮色、暗色整体风格切换 */
 | 
					  /** 亮色、暗色整体风格切换 */
 | 
				
			||||||
  function dataThemeChange() {
 | 
					  function dataThemeChange() {
 | 
				
			||||||
    if (useEpThemeStoreHook().epTheme === "light" && dataTheme.value) {
 | 
					    if (useEpThemeStoreHook().epTheme === "light" && dataTheme.value) {
 | 
				
			||||||
      setLayoutThemeColor("default");
 | 
					      setLayoutThemeColor("default", false);
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      setLayoutThemeColor(useEpThemeStoreHook().epTheme);
 | 
					      setLayoutThemeColor(useEpThemeStoreHook().epTheme, false);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (dataTheme.value) {
 | 
					    if (dataTheme.value) {
 | 
				
			||||||
      document.documentElement.classList.add("dark");
 | 
					      document.documentElement.classList.add("dark");
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
 | 
					      if ($storage.layout.themeColor === "light") {
 | 
				
			||||||
 | 
					        setLayoutThemeColor("light", false);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      document.documentElement.classList.remove("dark");
 | 
					      document.documentElement.classList.remove("dark");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
				
			|||||||
@ -24,10 +24,11 @@ export function useLayout() {
 | 
				
			|||||||
    if (!$storage.layout) {
 | 
					    if (!$storage.layout) {
 | 
				
			||||||
      $storage.layout = {
 | 
					      $storage.layout = {
 | 
				
			||||||
        layout: $config?.Layout ?? "vertical",
 | 
					        layout: $config?.Layout ?? "vertical",
 | 
				
			||||||
        theme: $config?.Theme ?? "default",
 | 
					        theme: $config?.Theme ?? "light",
 | 
				
			||||||
        darkMode: $config?.DarkMode ?? false,
 | 
					        darkMode: $config?.DarkMode ?? false,
 | 
				
			||||||
        sidebarStatus: $config?.SidebarStatus ?? true,
 | 
					        sidebarStatus: $config?.SidebarStatus ?? true,
 | 
				
			||||||
        epThemeColor: $config?.EpThemeColor ?? "#409EFF"
 | 
					        epThemeColor: $config?.EpThemeColor ?? "#409EFF",
 | 
				
			||||||
 | 
					        themeColor: $config?.Theme ?? "light"
 | 
				
			||||||
      };
 | 
					      };
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    /** 灰色模式、色弱模式、隐藏标签页 */
 | 
					    /** 灰色模式、色弱模式、隐藏标签页 */
 | 
				
			||||||
 | 
				
			|||||||
@ -68,7 +68,8 @@ function setTheme(layoutModel: string) {
 | 
				
			|||||||
    theme: $storage.layout?.theme,
 | 
					    theme: $storage.layout?.theme,
 | 
				
			||||||
    darkMode: $storage.layout?.darkMode,
 | 
					    darkMode: $storage.layout?.darkMode,
 | 
				
			||||||
    sidebarStatus: $storage.layout?.sidebarStatus,
 | 
					    sidebarStatus: $storage.layout?.sidebarStatus,
 | 
				
			||||||
    epThemeColor: $storage.layout?.epThemeColor
 | 
					    epThemeColor: $storage.layout?.epThemeColor,
 | 
				
			||||||
 | 
					    themeColor: $storage.layout?.themeColor
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,19 @@ import type { multipleScopeVarsOptions } from "@pureadmin/theme";
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/** 预设主题色 */
 | 
					/** 预设主题色 */
 | 
				
			||||||
const themeColors = {
 | 
					const themeColors = {
 | 
				
			||||||
 | 
					  /* 亮白色 */
 | 
				
			||||||
 | 
					  light: {
 | 
				
			||||||
 | 
					    subMenuActiveText: "#000000d9",
 | 
				
			||||||
 | 
					    menuBg: "#fff",
 | 
				
			||||||
 | 
					    menuHover: "#e0ebf6",
 | 
				
			||||||
 | 
					    subMenuBg: "#fff",
 | 
				
			||||||
 | 
					    subMenuActiveBg: "#e0ebf6",
 | 
				
			||||||
 | 
					    menuText: "rgb(0 0 0 / 60%)",
 | 
				
			||||||
 | 
					    sidebarLogo: "#fff",
 | 
				
			||||||
 | 
					    menuTitleHover: "#000",
 | 
				
			||||||
 | 
					    menuActiveBefore: "#4091f7"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  /* 道奇蓝 */
 | 
				
			||||||
  default: {
 | 
					  default: {
 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
    menuBg: "#001529",
 | 
					    menuBg: "#001529",
 | 
				
			||||||
@ -17,72 +30,19 @@ const themeColors = {
 | 
				
			|||||||
    menuTitleHover: "#fff",
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
    menuActiveBefore: "#4091f7"
 | 
					    menuActiveBefore: "#4091f7"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  light: {
 | 
					  /* 深紫罗兰色 */
 | 
				
			||||||
    subMenuActiveText: "#409eff",
 | 
					  saucePurple: {
 | 
				
			||||||
    menuBg: "#fff",
 | 
					 | 
				
			||||||
    menuHover: "#e0ebf6",
 | 
					 | 
				
			||||||
    subMenuBg: "#fff",
 | 
					 | 
				
			||||||
    subMenuActiveBg: "#e0ebf6",
 | 
					 | 
				
			||||||
    menuText: "#7a80b4",
 | 
					 | 
				
			||||||
    sidebarLogo: "#fff",
 | 
					 | 
				
			||||||
    menuTitleHover: "#000",
 | 
					 | 
				
			||||||
    menuActiveBefore: "#4091f7"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  dusk: {
 | 
					 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
    menuBg: "#2a0608",
 | 
					    menuBg: "#130824",
 | 
				
			||||||
    menuHover: "#e13c39",
 | 
					    menuHover: "#693ac9",
 | 
				
			||||||
    subMenuBg: "#000",
 | 
					    subMenuBg: "#000",
 | 
				
			||||||
    subMenuActiveBg: "#e13c39",
 | 
					    subMenuActiveBg: "#693ac9",
 | 
				
			||||||
    menuText: "rgb(254 254 254 / 65.1%)",
 | 
					 | 
				
			||||||
    sidebarLogo: "#42090c",
 | 
					 | 
				
			||||||
    menuTitleHover: "#fff",
 | 
					 | 
				
			||||||
    menuActiveBefore: "#e13c39"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  volcano: {
 | 
					 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					 | 
				
			||||||
    menuBg: "#2b0e05",
 | 
					 | 
				
			||||||
    menuHover: "#e85f33",
 | 
					 | 
				
			||||||
    subMenuBg: "#0f0603",
 | 
					 | 
				
			||||||
    subMenuActiveBg: "#e85f33",
 | 
					 | 
				
			||||||
    menuText: "rgb(254 254 254 / 65%)",
 | 
					 | 
				
			||||||
    sidebarLogo: "#441708",
 | 
					 | 
				
			||||||
    menuTitleHover: "#fff",
 | 
					 | 
				
			||||||
    menuActiveBefore: "#e85f33"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  yellow: {
 | 
					 | 
				
			||||||
    subMenuActiveText: "#d25f00",
 | 
					 | 
				
			||||||
    menuBg: "#2b2503",
 | 
					 | 
				
			||||||
    menuHover: "#f6da4d",
 | 
					 | 
				
			||||||
    subMenuBg: "#0f0603",
 | 
					 | 
				
			||||||
    subMenuActiveBg: "#f6da4d",
 | 
					 | 
				
			||||||
    menuText: "rgb(254 254 254 / 65%)",
 | 
					 | 
				
			||||||
    sidebarLogo: "#443b05",
 | 
					 | 
				
			||||||
    menuTitleHover: "#fff",
 | 
					 | 
				
			||||||
    menuActiveBefore: "#f6da4d"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  mingQing: {
 | 
					 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					 | 
				
			||||||
    menuBg: "#032121",
 | 
					 | 
				
			||||||
    menuHover: "#59bfc1",
 | 
					 | 
				
			||||||
    subMenuBg: "#000",
 | 
					 | 
				
			||||||
    subMenuActiveBg: "#59bfc1",
 | 
					 | 
				
			||||||
    menuText: "#7a80b4",
 | 
					    menuText: "#7a80b4",
 | 
				
			||||||
    sidebarLogo: "#053434",
 | 
					    sidebarLogo: "#1f0c38",
 | 
				
			||||||
    menuTitleHover: "#fff",
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
    menuActiveBefore: "#59bfc1"
 | 
					    menuActiveBefore: "#693ac9"
 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  auroraGreen: {
 | 
					 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					 | 
				
			||||||
    menuBg: "#0b1e15",
 | 
					 | 
				
			||||||
    menuHover: "#60ac80",
 | 
					 | 
				
			||||||
    subMenuBg: "#000",
 | 
					 | 
				
			||||||
    subMenuActiveBg: "#60ac80",
 | 
					 | 
				
			||||||
    menuText: "#7a80b4",
 | 
					 | 
				
			||||||
    sidebarLogo: "#112f21",
 | 
					 | 
				
			||||||
    menuTitleHover: "#fff",
 | 
					 | 
				
			||||||
    menuActiveBefore: "#60ac80"
 | 
					 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  /* 深粉色 */
 | 
				
			||||||
  pink: {
 | 
					  pink: {
 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
    menuBg: "#28081a",
 | 
					    menuBg: "#28081a",
 | 
				
			||||||
@ -94,16 +54,53 @@ const themeColors = {
 | 
				
			|||||||
    menuTitleHover: "#fff",
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
    menuActiveBefore: "#d84493"
 | 
					    menuActiveBefore: "#d84493"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  saucePurple: {
 | 
					  /* 猩红色 */
 | 
				
			||||||
 | 
					  dusk: {
 | 
				
			||||||
    subMenuActiveText: "#fff",
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
    menuBg: "#130824",
 | 
					    menuBg: "#2a0608",
 | 
				
			||||||
    menuHover: "#693ac9",
 | 
					    menuHover: "#e13c39",
 | 
				
			||||||
    subMenuBg: "#000",
 | 
					    subMenuBg: "#000",
 | 
				
			||||||
    subMenuActiveBg: "#693ac9",
 | 
					    subMenuActiveBg: "#e13c39",
 | 
				
			||||||
    menuText: "#7a80b4",
 | 
					    menuText: "rgb(254 254 254 / 65.1%)",
 | 
				
			||||||
    sidebarLogo: "#1f0c38",
 | 
					    sidebarLogo: "#42090c",
 | 
				
			||||||
    menuTitleHover: "#fff",
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
    menuActiveBefore: "#693ac9"
 | 
					    menuActiveBefore: "#e13c39"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  /* 橙红色 */
 | 
				
			||||||
 | 
					  volcano: {
 | 
				
			||||||
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
 | 
					    menuBg: "#2b0e05",
 | 
				
			||||||
 | 
					    menuHover: "#e85f33",
 | 
				
			||||||
 | 
					    subMenuBg: "#0f0603",
 | 
				
			||||||
 | 
					    subMenuActiveBg: "#e85f33",
 | 
				
			||||||
 | 
					    menuText: "rgb(254 254 254 / 65%)",
 | 
				
			||||||
 | 
					    sidebarLogo: "#441708",
 | 
				
			||||||
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
 | 
					    menuActiveBefore: "#e85f33"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  /* 绿宝石 */
 | 
				
			||||||
 | 
					  mingQing: {
 | 
				
			||||||
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
 | 
					    menuBg: "#032121",
 | 
				
			||||||
 | 
					    menuHover: "#59bfc1",
 | 
				
			||||||
 | 
					    subMenuBg: "#000",
 | 
				
			||||||
 | 
					    subMenuActiveBg: "#59bfc1",
 | 
				
			||||||
 | 
					    menuText: "#7a80b4",
 | 
				
			||||||
 | 
					    sidebarLogo: "#053434",
 | 
				
			||||||
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
 | 
					    menuActiveBefore: "#59bfc1"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  /* 酸橙绿 */
 | 
				
			||||||
 | 
					  auroraGreen: {
 | 
				
			||||||
 | 
					    subMenuActiveText: "#fff",
 | 
				
			||||||
 | 
					    menuBg: "#0b1e15",
 | 
				
			||||||
 | 
					    menuHover: "#60ac80",
 | 
				
			||||||
 | 
					    subMenuBg: "#000",
 | 
				
			||||||
 | 
					    subMenuActiveBg: "#60ac80",
 | 
				
			||||||
 | 
					    menuText: "#7a80b4",
 | 
				
			||||||
 | 
					    sidebarLogo: "#112f21",
 | 
				
			||||||
 | 
					    menuTitleHover: "#fff",
 | 
				
			||||||
 | 
					    menuActiveBefore: "#60ac80"
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -23,8 +23,6 @@ export const useEpThemeStore = defineStore({
 | 
				
			|||||||
    fill(state) {
 | 
					    fill(state) {
 | 
				
			||||||
      if (state.epTheme === "light") {
 | 
					      if (state.epTheme === "light") {
 | 
				
			||||||
        return "#409eff";
 | 
					        return "#409eff";
 | 
				
			||||||
      } else if (state.epTheme === "yellow") {
 | 
					 | 
				
			||||||
        return "#d25f00";
 | 
					 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        return "#fff";
 | 
					        return "#fff";
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -83,7 +83,7 @@
 | 
				
			|||||||
    overflow: hidden;
 | 
					    overflow: hidden;
 | 
				
			||||||
    font-size: 0;
 | 
					    font-size: 0;
 | 
				
			||||||
    background: $menuBg;
 | 
					    background: $menuBg;
 | 
				
			||||||
    box-shadow: 0 0 1px #888;
 | 
					    border-right: 1px solid var(--pure-border-color);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* 展开动画 */
 | 
					    /* 展开动画 */
 | 
				
			||||||
    transition: width var(--pure-transition-duration);
 | 
					    transition: width var(--pure-transition-duration);
 | 
				
			||||||
@ -193,7 +193,7 @@
 | 
				
			|||||||
    .el-menu .el-menu--inline .el-sub-menu__title,
 | 
					    .el-menu .el-menu--inline .el-sub-menu__title,
 | 
				
			||||||
    & .el-sub-menu .el-menu-item {
 | 
					    & .el-sub-menu .el-menu-item {
 | 
				
			||||||
      min-width: $sideBarWidth !important;
 | 
					      min-width: $sideBarWidth !important;
 | 
				
			||||||
      font-size: 12px;
 | 
					      font-size: 14px;
 | 
				
			||||||
      background-color: $subMenuBg !important;
 | 
					      background-color: $subMenuBg !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -247,7 +247,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      .el-menu-item {
 | 
					      .el-menu-item {
 | 
				
			||||||
        span {
 | 
					        span {
 | 
				
			||||||
          font-size: 12px;
 | 
					          font-size: 14px;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -270,7 +270,7 @@
 | 
				
			|||||||
    /* 子菜单中还有子菜单 */
 | 
					    /* 子菜单中还有子菜单 */
 | 
				
			||||||
    .el-menu .el-sub-menu__title {
 | 
					    .el-menu .el-sub-menu__title {
 | 
				
			||||||
      min-width: $sideBarWidth !important;
 | 
					      min-width: $sideBarWidth !important;
 | 
				
			||||||
      font-size: 12px;
 | 
					      font-size: 14px;
 | 
				
			||||||
      background-color: $subMenuBg !important;
 | 
					      background-color: $subMenuBg !important;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -333,7 +333,7 @@
 | 
				
			|||||||
        background-color: $subMenuBg;
 | 
					        background-color: $subMenuBg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        span {
 | 
					        span {
 | 
				
			||||||
          font-size: 12px;
 | 
					          font-size: 14px;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -351,7 +351,7 @@
 | 
				
			|||||||
    /* 子菜单中还有子菜单 */
 | 
					    /* 子菜单中还有子菜单 */
 | 
				
			||||||
    .el-menu .el-sub-menu__title {
 | 
					    .el-menu .el-sub-menu__title {
 | 
				
			||||||
      min-width: $sideBarWidth !important;
 | 
					      min-width: $sideBarWidth !important;
 | 
				
			||||||
      font-size: 12px;
 | 
					      font-size: 14px;
 | 
				
			||||||
      background-color: $subMenuBg !important;
 | 
					      background-color: $subMenuBg !important;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      &:hover {
 | 
					      &:hover {
 | 
				
			||||||
 | 
				
			|||||||
@ -15,11 +15,13 @@ export const injectResponsiveStorage = (app: App, config: PlatformConfigs) => {
 | 
				
			|||||||
      // layout模式以及主题
 | 
					      // layout模式以及主题
 | 
				
			||||||
      layout: Storage.getData("layout", nameSpace) ?? {
 | 
					      layout: Storage.getData("layout", nameSpace) ?? {
 | 
				
			||||||
        layout: config.Layout ?? "vertical",
 | 
					        layout: config.Layout ?? "vertical",
 | 
				
			||||||
        theme: config.Theme ?? "default",
 | 
					        theme: config.Theme ?? "light",
 | 
				
			||||||
        darkMode: config.DarkMode ?? false,
 | 
					        darkMode: config.DarkMode ?? false,
 | 
				
			||||||
        sidebarStatus: config.SidebarStatus ?? true,
 | 
					        sidebarStatus: config.SidebarStatus ?? true,
 | 
				
			||||||
        epThemeColor: config.EpThemeColor ?? "#409EFF"
 | 
					        epThemeColor: config.EpThemeColor ?? "#409EFF",
 | 
				
			||||||
 | 
					        themeColor: config.Theme ?? "light" // 主题色(对应项目配置中的主题色,与theme不同的是它不会受到亮色、暗色整体风格切换的影响,只会在手动点击主题色时改变)
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      // 项目配置-界面显示
 | 
				
			||||||
      configure: Storage.getData("configure", nameSpace) ?? {
 | 
					      configure: Storage.getData("configure", nameSpace) ?? {
 | 
				
			||||||
        grey: config.Grey ?? false,
 | 
					        grey: config.Grey ?? false,
 | 
				
			||||||
        weak: config.Weak ?? false,
 | 
					        weak: config.Weak ?? false,
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										9
									
								
								types/global.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								types/global.d.ts
									
									
									
									
										vendored
									
									
								
							@ -1,11 +1,4 @@
 | 
				
			|||||||
import type {
 | 
					 | 
				
			||||||
  VNode,
 | 
					 | 
				
			||||||
  FunctionalComponent,
 | 
					 | 
				
			||||||
  PropType as VuePropType,
 | 
					 | 
				
			||||||
  ComponentPublicInstance
 | 
					 | 
				
			||||||
} from "vue";
 | 
					 | 
				
			||||||
import type { ECharts } from "echarts";
 | 
					import type { ECharts } from "echarts";
 | 
				
			||||||
import type { IconifyIcon } from "@iconify/vue";
 | 
					 | 
				
			||||||
import type { TableColumns } from "@pureadmin/table";
 | 
					import type { TableColumns } from "@pureadmin/table";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -129,6 +122,7 @@ declare global {
 | 
				
			|||||||
    hideFooter?: boolean;
 | 
					    hideFooter?: boolean;
 | 
				
			||||||
    sidebarStatus?: boolean;
 | 
					    sidebarStatus?: boolean;
 | 
				
			||||||
    epThemeColor?: string;
 | 
					    epThemeColor?: string;
 | 
				
			||||||
 | 
					    themeColor?: string;
 | 
				
			||||||
    showLogo?: boolean;
 | 
					    showLogo?: boolean;
 | 
				
			||||||
    showModel?: string;
 | 
					    showModel?: string;
 | 
				
			||||||
    mapConfigure?: {
 | 
					    mapConfigure?: {
 | 
				
			||||||
@ -155,6 +149,7 @@ declare global {
 | 
				
			|||||||
      darkMode?: boolean;
 | 
					      darkMode?: boolean;
 | 
				
			||||||
      sidebarStatus?: boolean;
 | 
					      sidebarStatus?: boolean;
 | 
				
			||||||
      epThemeColor?: string;
 | 
					      epThemeColor?: string;
 | 
				
			||||||
 | 
					      themeColor?: string;
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    configure: {
 | 
					    configure: {
 | 
				
			||||||
      grey?: boolean;
 | 
					      grey?: boolean;
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										3
									
								
								types/router.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								types/router.d.ts
									
									
									
									
										vendored
									
									
								
							@ -1,6 +1,7 @@
 | 
				
			|||||||
// 全局路由类型声明
 | 
					// 全局路由类型声明
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { type RouteComponent, type RouteLocationNormalized } from "vue-router";
 | 
					import type { RouteComponent, RouteLocationNormalized } from "vue-router";
 | 
				
			||||||
 | 
					import type { FunctionalComponent } from "vue";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
declare global {
 | 
					declare global {
 | 
				
			||||||
  interface ToRouteType extends RouteLocationNormalized {
 | 
					  interface ToRouteType extends RouteLocationNormalized {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user