Michael Wang преди 3 години
родител
ревизия
45be674cf8
променени са 2 файла, в които са добавени 64 реда и са изтрити 9 реда
  1. 13 0
      src/features/Image/Image.vue
  2. 51 9
      src/features/ImageDownload/ImageDownload.vue

+ 13 - 0
src/features/Image/Image.vue

@@ -133,6 +133,19 @@ let trackMode = ref("");
 let examNumber = ref("");
 let subjectCode = ref("");
 
+const config = store.pageInputs["/image-download"];
+if (config) {
+  type.value = config.type;
+  template.value = config.template;
+  dir.value = config.dir;
+  append.value = config.append;
+  failover.value = config.failover;
+  watermark.value = config.watermark;
+  trackMode.value = config.trackMode;
+  examNumber.value = config.examNumber || "";
+  subjectCode.value = config.subjectCode || "";
+}
+
 let ruleExample = computed(() => {
   switch (type.value) {
     case "1":

+ 51 - 9
src/features/ImageDownload/ImageDownload.vue

@@ -20,7 +20,7 @@ import { onMounted, ref } from "vue";
 import { Modal } from "ant-design-vue";
 import { useRouter } from "vue-router";
 const router = useRouter();
-import { getStudents, countStudents } from "@/api/api";
+import { getStudents, countStudents, getPackages } from "@/api/api";
 import { httpApp } from "@/plugins/axiosApp";
 import mustache from "mustache";
 
@@ -86,7 +86,7 @@ onMounted(async () => {
               // console.log(await imageRes.data.arrayBuffer());
               // console.log(new Uint8Array(await imageRes.data.arrayBuffer()));
               const index = student.sheetUrls.indexOf(sheetUrl);
-              student.index = index;
+              student.index = index + 1;
               student.examId = store.env.examId;
               // console.log(mustache.render(config.template, student));
               await window.electron.addWatermark(
@@ -96,7 +96,7 @@ onMounted(async () => {
                 height,
                 [config.dir, mustache.render(config.template, student)],
                 student,
-                index,
+                index + 1,
                 config.trackMode
               );
 
@@ -113,14 +113,56 @@ onMounted(async () => {
           }
         }
       }
+    } else if (config.type === "2") {
+      const res = await getPackages(store.env.examId, true, true);
+      const array = res.data;
+      totalCount.value = array.length;
 
-      const modal = Modal.success();
-      modal.update({
-        title: "图片下载完成",
-        content: "完成",
-        onOk: () => router.back(),
-      });
+      for (let i = 0; i < array.length; i++) {
+        const p = array[i];
+        p.examId = store.env.examId;
+        for (let i = 0; i < p.urls.length; i++) {
+          try {
+            const imageRes = await httpApp.get(p.urls[i], {
+              responseType: "blob",
+            });
+
+            const [width, height] = await getImageDim(imageRes.data);
+
+            const index = i + 1;
+            p.index = index;
+            // console.log(mustache.render(config.template, student));
+            await window.electron.addWatermark(
+              JSON.parse(JSON.stringify(store)),
+              await imageRes.data.arrayBuffer(),
+              width,
+              height,
+              [config.dir, mustache.render(config.template, p)],
+              p,
+              index,
+              config.trackMode
+            );
+
+            finishedCount.value += 1;
+          } catch (error) {
+            errorCount.value += 1;
+            if (config.failover) {
+              throw error;
+            } else {
+              console.log(p, error);
+              continue;
+            }
+          }
+        }
+      }
     }
+
+    const modal = Modal.success();
+    modal.update({
+      title: "图片下载完成",
+      content: "完成",
+      onOk: () => router.back(),
+    });
   } catch (error) {
     const modal = Modal.error();
     console.log(error);