bill 8 月之前
父節點
當前提交
df9e5727cd
共有 1 個文件被更改,包括 33 次插入25 次删除
  1. 33 25
      src/view/map/pc4Helper.ts

+ 33 - 25
src/view/map/pc4Helper.ts

@@ -12,6 +12,7 @@ import {
 import { noValidPoint } from "./install";
 import { PointTypeEnum } from "@/lib/board/4dmap";
 import { addWatermark } from "@/util/image";
+import { Message, MessageBox } from "@element-plus/icons-vue";
 
 export const exportFile = async (
   points: ScenePoint[],
@@ -73,32 +74,39 @@ export const exportImage = async (points: ScenePoint[], name?: string) => {
   const imgFolder = zip.folder(name || "images")!;
 
   const downloadImages = Promise.all(
-    points.map((point) => {
-      const url = getPointPano(point) as string;
-      console.log(url, point)
-
-      let loadBlob: Promise<Blob>
-      if (!noValidPoint(point)) {
-        let ration = 6;
-        loadBlob = new Promise<void>(resolve => {
-          const img = new Image()
-          img.src = url
-          img.onload = () => {
-            ration = img.width / 2730
-            resolve()
-          }
-        }).then(() => addWatermark(url, point!.pos, ration))
-      } else {
-        loadBlob = fetch(url).then(res => res.blob())
+    points.map(async (point) => {
+      const getBlob = (isThumbnail: boolean) => {
+        const url = getPointPano(point, false, isThumbnail) as string;
+        console.log(url, point);
+        let loadBlob: Promise<Blob>;
+        if (!noValidPoint(point)) {
+          let ration = 6;
+          loadBlob = new Promise<void>((resolve, reject) => {
+            const img = new Image();
+            img.src = url;
+            img.onload = () => {
+              ration = img.width / 2730;
+              resolve();
+            };
+            img.onerror =reject
+          }).then(() => addWatermark(url, point!.pos, ration));
+        } else {
+          loadBlob = fetch(url).then((res) => res.blob());
+        }
+        return loadBlob;
+      };
+      let loadBlob: Blob;
+      try {
+        loadBlob = await getBlob(false)
+      } catch {
+        try {
+          loadBlob = await getBlob(true)
+        } catch {
+          ElMessage.error("图片下载失败!");
+          return;
+        }
       }
-      return loadBlob
-        .then((blob) => {
-          imgFolder.file(`${point.sceneCode}-${point.uuid}.jpg`, blob);
-        })
-        .catch((e) => {
-          ElMessage.error(url + "图片下载失败!");
-          throw e;
-        });
+      return imgFolder.file(`${point.sceneCode}-${point.uuid}.jpg`, loadBlob);
     })
   );
   await downloadImages;