Kaynağa Gözat

卡格式dpi

刘洋 8 ay önce
ebeveyn
işleme
30439e1fb7

+ 27 - 6
src/render/views/BaseDataConfig/ImportCardDialog.vue

@@ -92,6 +92,9 @@ const fields = computed(() => {
               { value: 200, label: "200" },
             ],
             disabled: cardJson.value?.dpi,
+            onChange: () => {
+              compareSize();
+            },
           },
         }
       : null,
@@ -147,13 +150,29 @@ const rules = {
       },
     },
   ],
+  dpi: [
+    {
+      validator: async () => {
+        if (!isJson) {
+          return Promise.reject("卡格式json文件内容异常,请检查");
+        } else {
+          if (cardJson.value && !cardSizePass.value) {
+            return Promise.reject("卡格式图片dpi异常!");
+          } else {
+            return Promise.resolve();
+          }
+        }
+      },
+    },
+  ],
 };
 let pageSizeStr = "";
-const compareSize = (content: any, img: any) => {
-  let target = content[pageSizeStr];
-  console.log(content, img.width, img.height);
-  let w = img.width / params.dpi / 0.0394;
-  let h = img.height / params.dpi / 0.0394;
+let contentRecord: any = null;
+let imgRecord: any = null;
+const compareSize = () => {
+  let target = contentRecord?.[pageSizeStr];
+  let w = imgRecord?.width / params.dpi / 0.0394;
+  let h = imgRecord?.height / params.dpi / 0.0394;
   if (Math.abs(w - target.width) > 10 || Math.abs(h - target.height) > 10) {
     cardSizePass.value = false;
   } else {
@@ -171,7 +190,9 @@ const validateCardSize = async (json: any) => {
     const img = new Image();
     img.onload = () => {
       pageSizeStr = json.pages[0].exchange["page_size"];
-      compareSize(content, img);
+      contentRecord = content;
+      imgRecord = img;
+      compareSize();
     };
     img.onerror = function () {
       window.$message.error("卡格式json文件里的图片base64无效!");