diff --git a/src/components/settings/cards/DisplaySettingsCard.vue b/src/components/settings/cards/DisplaySettingsCard.vue
index b8bb090..ff168ee 100644
--- a/src/components/settings/cards/DisplaySettingsCard.vue
+++ b/src/components/settings/cards/DisplaySettingsCard.vue
@@ -19,6 +19,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/index.vue b/src/pages/index.vue
index a674d50..5d85e9e 100644
--- a/src/pages/index.vue
+++ b/src/pages/index.vue
@@ -1,4 +1,16 @@
+
+
{{ titleText }}
@@ -657,6 +669,41 @@ export default {
return `${deviceName} - ${currentDateStr}的作业`;
}
},
+ hasBackgroundImage() {
+ return !!this.backgroundImageUrl;
+ },
+ backgroundImageUrl() {
+ void this.settingsTick;
+ return (getSetting("display.backgroundImage") || "").trim();
+ },
+ backgroundBlurAmount() {
+ void this.settingsTick;
+ const value = Number(getSetting("display.backgroundBlur"));
+ return Number.isFinite(value) ? value : 0;
+ },
+ backgroundDimAmount() {
+ void this.settingsTick;
+ const value = Number(getSetting("display.backgroundDim"));
+ return Number.isFinite(value) ? value : 0;
+ },
+ backgroundImageStyle() {
+ const url = this.backgroundImageUrl;
+ if (!url) return { display: "none" };
+
+ const blur = Math.min(Math.max(this.backgroundBlurAmount, 0), 50);
+ return {
+ backgroundImage: `url("${url}")`,
+ filter: `blur(${blur}px)`,
+ };
+ },
+ backgroundOverlayStyle() {
+ if (!this.hasBackgroundImage) return { display: "none" };
+
+ const dim = Math.min(Math.max(this.backgroundDimAmount, 0), 100);
+ return {
+ backgroundColor: `rgba(0, 0, 0, ${dim / 100})`,
+ };
+ },
sortedItems() {
const items = [];
@@ -2353,3 +2400,24 @@ export default {
},
};
+
+
diff --git a/src/utils/settings.js b/src/utils/settings.js
index c74cb1b..8774b91 100644
--- a/src/utils/settings.js
+++ b/src/utils/settings.js
@@ -147,6 +147,26 @@ const settingsDefinitions = {
description: "是否启用增强触摸模式",
icon: "mdi-gesture-tap-button",
},
+ "display.backgroundImage": {
+ type: "string",
+ default: "",
+ description: "主页背景图地址",
+ icon: "mdi-image-outline",
+ },
+ "display.backgroundBlur": {
+ type: "number",
+ default: 12,
+ validate: (value) => value >= 0 && value <= 30,
+ description: "背景模糊强度",
+ icon: "mdi-blur",
+ },
+ "display.backgroundDim": {
+ type: "number",
+ default: 35,
+ validate: (value) => value >= 0 && value <= 90,
+ description: "背景暗色程度(%)",
+ icon: "mdi-weather-night",
+ },
"display.showAntiScreenBurnCard": {
type: "boolean",
default: false,