diff --git a/web/src/components/AppFooter.vue b/web/src/components/AppFooter.vue
index 60965cf..447023d 100644
--- a/web/src/components/AppFooter.vue
+++ b/web/src/components/AppFooter.vue
@@ -41,9 +41,9 @@ const statusConfig = {
text: "有更新",
},
error: {
- color: "#909399",
- icon: undefined,
- text: "",
+ color: "#d03050",
+ icon: WarningOutline,
+ text: "检查失败",
},
};
@@ -68,7 +68,10 @@ const checkVersion = async () => {
};
const handleVersionClick = () => {
- if (versionInfo.value.status === "update-available" && versionInfo.value.releaseUrl) {
+ if (
+ (versionInfo.value.status === "update-available" || versionInfo.value.status === "latest") &&
+ versionInfo.value.releaseUrl
+ ) {
window.open(versionInfo.value.releaseUrl, "_blank", "noopener,noreferrer");
}
};
@@ -95,7 +98,8 @@ onMounted(() => {
{
{{ formatVersion(versionInfo.currentVersion) }}
-
-
-
- {{ statusConfig[versionInfo.status].text }}
-
-
-
-
- {{ statusConfig[versionInfo.status].text }}
+
+ {{ statusConfig[versionInfo.status].text }}
+
[{{ formatVersion(versionInfo.latestVersion || "") }}]
-
-
-
-
- {{ statusConfig[versionInfo.status].text }}
-
-
+
+
diff --git a/web/src/services/version.ts b/web/src/services/version.ts
index 47dbb9c..2dccf84 100644
--- a/web/src/services/version.ts
+++ b/web/src/services/version.ts
@@ -45,6 +45,12 @@ class VersionService {
return null;
}
+ // 检查缓存中的版本号是否与当前应用版本号一致
+ if (versionInfo.currentVersion !== this.currentVersion) {
+ this.clearCache();
+ return null;
+ }
+
return versionInfo;
} catch (error) {
console.warn("Failed to parse cached version info:", error);
@@ -144,6 +150,9 @@ class VersionService {
versionInfo.isLatest = comparison >= 0;
versionInfo.hasUpdate = comparison < 0;
versionInfo.status = comparison < 0 ? "update-available" : "latest";
+
+ // 只在成功时缓存结果
+ this.setCachedVersionInfo(versionInfo);
} else {
versionInfo.status = "error";
}
@@ -152,9 +161,6 @@ class VersionService {
versionInfo.status = "error";
}
- // 缓存结果
- this.setCachedVersionInfo(versionInfo);
-
return versionInfo;
}