diff --git a/apps/web/app/components/organize-wizard/organize-wizard.tsx b/apps/web/app/components/organize-wizard/organize-wizard.tsx index b3e49ca4..b8580262 100644 --- a/apps/web/app/components/organize-wizard/organize-wizard.tsx +++ b/apps/web/app/components/organize-wizard/organize-wizard.tsx @@ -321,7 +321,19 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on Number.isFinite(Number(minMb)) && Number(minMb) >= 0 && Number.isSafeInteger(Math.round(Number(minMb) * MIB)); + const targetUnavailable = + options.target.mode === "root" && + rootsQ.isSuccess && + !roots.some( + (r) => + options.target.mode === "root" && + r.id === options.target.rootId && + r.kind === "library" && + r.writable && + r.health !== "offline", + ); const canPreview = + !targetUnavailable && (!needsReview || recoveryConfirmed) && !ambiguous && !lookupPending && @@ -548,6 +560,11 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on 批量重新整理使用本次统一设置。要沿用各记录的洗版与文件覆写,逐条打开重新整理。
) : null} + {targetUnavailable ? ( ++ 原目标媒体库不可用,在高级选项中重新选择目标。 +
+ ) : null} {src.recovery ? (@@ -580,7 +597,7 @@ export function OrganizeWizard({ source, onClose }: { source: OrganizeSource; on
{notice}
: null} {dry.isPending ? (diff --git a/apps/web/app/components/organize-wizard/step-preview.tsx b/apps/web/app/components/organize-wizard/step-preview.tsx index 37448a00..8aa7a7ee 100644 --- a/apps/web/app/components/organize-wizard/step-preview.tsx +++ b/apps/web/app/components/organize-wizard/step-preview.tsx @@ -60,12 +60,11 @@ export function PreviewStatsBar({ }) { return (