diff --git a/apps/web/src/components/cover/useSharedCover.ts b/apps/web/src/components/cover/useSharedCover.ts index eac74e189..4db30d162 100644 --- a/apps/web/src/components/cover/useSharedCover.ts +++ b/apps/web/src/components/cover/useSharedCover.ts @@ -86,8 +86,27 @@ export function useSharedCover(opts: UseSharedCoverOptions): UseSharedCoverRetur })) setTemplates(list) } catch (err) { - console.error("[SharedCover] 加载封面模板失败:", err) - setTemplatesError("加载模板失败,请稍后重试") + const axiosErr = err as { + response?: { + status?: number + data?: { detail?: string; message?: string; error?: { message?: string } } + } + message?: string + } + const status = axiosErr?.response?.status + const detail = + axiosErr?.response?.data?.detail || + axiosErr?.response?.data?.message || + axiosErr?.response?.data?.error?.message || + axiosErr?.message + console.error("[SharedCover] 加载封面模板失败:", err, "status=", status, "detail=", detail) + if (status === 401) { + setTemplatesError("登录已过期,请刷新页面重新登录") + } else if (status === 403) { + setTemplatesError(detail ? "权限不足:" + detail : "无权限访问封面模板") + } else { + setTemplatesError("加载模板失败:" + (detail || "请稍后重试")) + } } finally { setTemplatesLoading(false) } @@ -144,8 +163,25 @@ export function useSharedCover(opts: UseSharedCoverOptions): UseSharedCoverRetur setShowCoverEditor(false) setEditingTemplate(null) } catch (err) { - console.error("[SharedCover] 保存模板失败:", err) - message.error("保存模板失败,请稍后重试") + const axiosErr = err as { + response?: { + status?: number + data?: { detail?: string; message?: string; error?: { message?: string } } + } + message?: string + } + const status = axiosErr?.response?.status + const detail = + axiosErr?.response?.data?.detail || + axiosErr?.response?.data?.message || + axiosErr?.response?.data?.error?.message || + axiosErr?.message + console.error("[SharedCover] 保存模板失败:", err, "status=", status, "detail=", detail) + if (status === 403) { + message.error("保存失败(权限不足):" + (detail || "无权操作该模板")) + } else { + message.error("保存模板失败:" + (detail || "请稍后重试")) + } } }, [templates], @@ -160,8 +196,25 @@ export function useSharedCover(opts: UseSharedCoverOptions): UseSharedCoverRetur setSelectedTemplateId("default") } } catch (err) { - console.error("[SharedCover] 删除模板失败:", err) - message.error("删除模板失败,请稍后重试") + const axiosErr = err as { + response?: { + status?: number + data?: { detail?: string; message?: string; error?: { message?: string } } + } + message?: string + } + const status = axiosErr?.response?.status + const detail = + axiosErr?.response?.data?.detail || + axiosErr?.response?.data?.message || + axiosErr?.response?.data?.error?.message || + axiosErr?.message + console.error("[SharedCover] 删除模板失败:", err, "status=", status, "detail=", detail) + if (status === 403) { + message.error("删除失败(权限不足):" + (detail || "无权操作该模板")) + } else { + message.error("删除模板失败:" + (detail || "请稍后重试")) + } } }, [selectedTemplateId], diff --git a/apps/web/src/pages/generate/components/cover-settings/CoverSettingsModal.tsx b/apps/web/src/pages/generate/components/cover-settings/CoverSettingsModal.tsx index 9877c909e..c03ae826c 100644 --- a/apps/web/src/pages/generate/components/cover-settings/CoverSettingsModal.tsx +++ b/apps/web/src/pages/generate/components/cover-settings/CoverSettingsModal.tsx @@ -110,7 +110,12 @@ const CoverSettingsModal: React.FC = ({ {tpl.is_system && ✨ 系统}
e.stopPropagation()}> - {!tpl.is_system && (