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;
+}