From e74ecea6aa65f4004ba907b484a68174d9d7b08a Mon Sep 17 00:00:00 2001 From: duanshuwen Date: Thu, 27 Aug 2026 09:20:10 +0800 Subject: [PATCH] =?UTF-8?q?feat(media):=20=E6=B7=BB=E5=8A=A0=E7=A9=BA?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=A3=80=E6=9F=A5=E5=B7=A5=E5=85=B7=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E5=B9=B6=E4=BC=98=E5=8C=96=E5=8D=95=E5=AA=92=E4=BD=93?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 shouldShowMediaEmptyState 工具函数用于判断是否显示媒体空状态,为其编写单元测试覆盖核心场景,同时在单媒体编辑器组件中使用该函数替换原有的内联条件判断,提升代码可维护性。 --- .../src/components/media/SingleMediaEditor.vue | 4 ++-- WonderQ-Admin-UI-Vue/src/lib/media-url.test.ts | 7 ++++++- WonderQ-Admin-UI-Vue/src/lib/media-url.ts | 4 ++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/WonderQ-Admin-UI-Vue/src/components/media/SingleMediaEditor.vue b/WonderQ-Admin-UI-Vue/src/components/media/SingleMediaEditor.vue index fec288e..3ca2029 100644 --- a/WonderQ-Admin-UI-Vue/src/components/media/SingleMediaEditor.vue +++ b/WonderQ-Admin-UI-Vue/src/components/media/SingleMediaEditor.vue @@ -2,7 +2,7 @@ import { ref } from "vue"; import { uploadMediaAsset } from "@/api/client"; import { validateMediaFile } from "@/lib/media"; -import { resolveAdminMediaUrl } from "@/lib/media-url"; +import { resolveAdminMediaUrl, shouldShowMediaEmptyState } from "@/lib/media-url"; const props = defineProps<{ modelValue: string; @@ -58,7 +58,7 @@ function clear() { - + 移除图片 diff --git a/WonderQ-Admin-UI-Vue/src/lib/media-url.test.ts b/WonderQ-Admin-UI-Vue/src/lib/media-url.test.ts index 138460d..de66926 100644 --- a/WonderQ-Admin-UI-Vue/src/lib/media-url.test.ts +++ b/WonderQ-Admin-UI-Vue/src/lib/media-url.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { resolveAdminMediaUrl, resolveAdminMediaUrls } from "@/lib/media-url"; +import { resolveAdminMediaUrl, resolveAdminMediaUrls, shouldShowMediaEmptyState } from "@/lib/media-url"; describe("resolveAdminMediaUrl", () => { it("将公共本地资源挂载到管理端 base 下", () => { @@ -18,4 +18,9 @@ describe("resolveAdminMediaUrl", () => { "https://example.com/b.jpg", ]); }); + + it("已有图片地址时不显示暂无图片占位", () => { + expect(shouldShowMediaEmptyState("https://example.com/image.webp", false)).toBe(false); + expect(shouldShowMediaEmptyState("", false)).toBe(true); + }); }); diff --git a/WonderQ-Admin-UI-Vue/src/lib/media-url.ts b/WonderQ-Admin-UI-Vue/src/lib/media-url.ts index 6cbfa71..3dc731a 100644 --- a/WonderQ-Admin-UI-Vue/src/lib/media-url.ts +++ b/WonderQ-Admin-UI-Vue/src/lib/media-url.ts @@ -17,3 +17,7 @@ export function resolveAdminMediaUrl(value: string | null | undefined, baseUrl = export function resolveAdminMediaUrls(values: string[], baseUrl = import.meta.env.BASE_URL): string[] { return values.map((value) => resolveAdminMediaUrl(value, baseUrl) ?? ""); } + +export function shouldShowMediaEmptyState(value: string | null | undefined, previewFailed: boolean): boolean { + return !value && !previewFailed; +}