From beb0506b0c3b888ffc8e7b068c4807481b751efe Mon Sep 17 00:00:00 2001 From: jxxghp Date: Wed, 20 May 2026 19:55:44 +0800 Subject: [PATCH] feat: show plugin system version compatibility --- src/api/types.ts | 6 +++++ src/components/cards/PluginCard.vue | 5 ++++ .../dialog/PluginMarketDetailDialog.vue | 26 ++++++++++++++++++- .../dialog/PluginVersionHistoryDialog.vue | 10 ++++++- src/locales/en-US.ts | 2 ++ src/locales/zh-CN.ts | 2 ++ src/views/plugin/PluginCardListView.vue | 8 ++++++ 7 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/api/types.ts b/src/api/types.ts index f7670926..39fc967b 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -646,6 +646,12 @@ export interface Plugin { has_page?: boolean // 是否有新版本 has_update?: boolean + // 主系统版本是否兼容 + system_version_compatible?: boolean + // 主系统版本兼容提示 + system_version_message?: string + // 主系统版本限定范围 + system_version?: string // 是否本地插件 is_local?: boolean // 插件仓库地址 diff --git a/src/components/cards/PluginCard.vue b/src/components/cards/PluginCard.vue index c21b3ab4..0ae3ba6f 100644 --- a/src/components/cards/PluginCard.vue +++ b/src/components/cards/PluginCard.vue @@ -226,6 +226,11 @@ async function resetPlugin() { // 更新插件 async function updatePlugin() { + if (props.plugin?.system_version_compatible === false) { + $toast.error(props.plugin?.system_version_message || t('plugin.incompatibleSystemVersion')) + return + } + try { // 显示等待提示框 showPluginProgress(t('plugin.updating', { name: props.plugin?.plugin_name })) diff --git a/src/components/dialog/PluginMarketDetailDialog.vue b/src/components/dialog/PluginMarketDetailDialog.vue index a545c33f..5793d3ee 100644 --- a/src/components/dialog/PluginMarketDetailDialog.vue +++ b/src/components/dialog/PluginMarketDetailDialog.vue @@ -98,6 +98,11 @@ function visitPluginPage() { /** 安装插件并通知父级刷新市场列表。 */ async function installPlugin() { + if (props.plugin?.system_version_compatible === false) { + $toast.error(props.plugin?.system_version_message || t('plugin.incompatibleSystemVersion')) + return + } + try { showInstallProgress( t('plugin.installing', { @@ -176,9 +181,28 @@ onUnmounted(() => { + + + {{ t('plugin.systemVersion') }}: + {{ props.plugin?.system_version }} + + +
- + {{ t('plugin.installToLocal') }}
diff --git a/src/components/dialog/PluginVersionHistoryDialog.vue b/src/components/dialog/PluginVersionHistoryDialog.vue index af0997d6..a4742882 100644 --- a/src/components/dialog/PluginVersionHistoryDialog.vue +++ b/src/components/dialog/PluginVersionHistoryDialog.vue @@ -49,7 +49,15 @@ function handleUpdate() {