diff --git a/src/layouts/common/SettingDrawer/components/DarkMode/index.vue b/src/layouts/common/SettingDrawer/components/DarkMode/index.vue
index 0721a94a..7171f30e 100644
--- a/src/layouts/common/SettingDrawer/components/DarkMode/index.vue
+++ b/src/layouts/common/SettingDrawer/components/DarkMode/index.vue
@@ -1,19 +1,34 @@
- 深色主题
-
-
-
-
-
-
-
-
-
-
+ 主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/settings/theme.json b/src/settings/theme.json
index 624db62f..bb8bfe74 100644
--- a/src/settings/theme.json
+++ b/src/settings/theme.json
@@ -1,4 +1,5 @@
{
+ "followSystemTheme": true,
"darkMode": false,
"layout": {
"minWidth": 900,
diff --git a/src/settings/theme.ts b/src/settings/theme.ts
index 225d41f4..503ed69e 100644
--- a/src/settings/theme.ts
+++ b/src/settings/theme.ts
@@ -29,6 +29,7 @@ const themeColorList = [
];
const defaultThemeSetting: Theme.Setting = {
+ followSystemTheme: true,
darkMode: false,
layout: {
minWidth: 900,
diff --git a/src/store/modules/theme/index.ts b/src/store/modules/theme/index.ts
index 970d4f04..786901ce 100644
--- a/src/store/modules/theme/index.ts
+++ b/src/store/modules/theme/index.ts
@@ -26,6 +26,16 @@ export const useThemeStore = defineStore('theme-store', {
setDarkMode(darkMode: boolean) {
this.darkMode = darkMode;
},
+ /** 设置自动跟随系统主题 */
+ setFollowSystemTheme(visible: boolean) {
+ this.followSystemTheme = visible;
+ },
+ /** 自动跟随系统主题 */
+ autoFollowSystemMode(darkMode: boolean) {
+ if (this.followSystemTheme) {
+ this.darkMode = darkMode;
+ }
+ },
/** 切换/关闭 暗黑模式 */
toggleDarkMode() {
this.darkMode = !this.darkMode;
diff --git a/src/store/subscribe/theme.ts b/src/store/subscribe/theme.ts
index c6459c95..412c30c4 100644
--- a/src/store/subscribe/theme.ts
+++ b/src/store/subscribe/theme.ts
@@ -53,7 +53,7 @@ export default function subscribeThemeStore() {
osTheme,
newValue => {
const isDark = newValue === 'dark';
- theme.setDarkMode(isDark);
+ theme.autoFollowSystemMode(isDark);
},
{ immediate: true }
);
diff --git a/src/typings/system.d.ts b/src/typings/system.d.ts
index bbb4ef74..b0a29851 100644
--- a/src/typings/system.d.ts
+++ b/src/typings/system.d.ts
@@ -98,6 +98,8 @@ declare namespace Service {
declare namespace Theme {
/** 主题配置 */
interface Setting {
+ /** 是否自动跟随系统主题 */
+ followSystemTheme: boolean;
/** 暗黑模式 */
darkMode: boolean;
/** 布局样式 */