|
@@ -768,8 +768,39 @@ const syncFileListFromComponent = async () => {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-// 背景图片上传成功回调(仅做校验触发,不重复添加文件,避免与 UploadImgs 的 v-model/on-change 重复导致多传)
|
|
|
|
|
-const handleBackgroundImageSuccess = async (_url: string) => {
|
|
|
|
|
|
|
+// 背景图片上传成功回调:用接口返回的服务器 URL 直接修正 formData(把 blob 替换为服务器地址),再触发校验
|
|
|
|
|
+const handleBackgroundImageSuccess = async (serverUrl: string) => {
|
|
|
|
|
+ if (!serverUrl || typeof serverUrl !== "string") return;
|
|
|
|
|
+ const url = serverUrl.trim();
|
|
|
|
|
+ const list = formData.backgroundImages;
|
|
|
|
|
+ let replaceIndex = -1;
|
|
|
|
|
+ for (let i = 0; i < list.length; i++) {
|
|
|
|
|
+ const item = list[i];
|
|
|
|
|
+ if (!item) continue;
|
|
|
|
|
+ const u = item.url && typeof item.url === "string" ? item.url.trim() : "";
|
|
|
|
|
+ if (!u || u.startsWith("blob:")) {
|
|
|
|
|
+ replaceIndex = i;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (replaceIndex >= 0) {
|
|
|
|
|
+ formData.backgroundImages = list.map((item, i) =>
|
|
|
|
|
+ i === replaceIndex ? { ...item, url, status: "success" as const } : item
|
|
|
|
|
+ ) as UploadUserFile[];
|
|
|
|
|
+ } else {
|
|
|
|
|
+ const hasUrl = list.some((f: UploadUserFile) => f?.url && String(f.url).trim() === url);
|
|
|
|
|
+ if (!hasUrl) {
|
|
|
|
|
+ formData.backgroundImages = [
|
|
|
|
|
+ ...list,
|
|
|
|
|
+ {
|
|
|
|
|
+ uid: `bg-${Date.now()}-${Math.random()}`,
|
|
|
|
|
+ name: url.split("/").pop() || "image",
|
|
|
|
|
+ url,
|
|
|
|
|
+ status: "success" as const
|
|
|
|
|
+ } as unknown as UploadUserFile
|
|
|
|
|
+ ];
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
await nextTick();
|
|
await nextTick();
|
|
|
if (formRef.value) {
|
|
if (formRef.value) {
|
|
|
formRef.value.validateField("backgroundImages");
|
|
formRef.value.validateField("backgroundImages");
|