From 4fbdf4c6b13d19b9be54900b5dcff29e2ca7ef01 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 24 六月 2025 17:31:45 +0800
Subject: [PATCH] 巡查单据自动下载功能(待完成)

---
 src/views/fysp/check/components/ArbitraryPhoto.vue |   36 +++++++++++++++++++++++++++++++++++-
 1 files changed, 35 insertions(+), 1 deletions(-)

diff --git a/src/views/fysp/check/components/ArbitraryPhoto.vue b/src/views/fysp/check/components/ArbitraryPhoto.vue
index 55b11a5..703ceda 100644
--- a/src/views/fysp/check/components/ArbitraryPhoto.vue
+++ b/src/views/fysp/check/components/ArbitraryPhoto.vue
@@ -74,6 +74,7 @@
       // ],
       closeContextMenuListenr: undefined,
       // 鍙抽敭閫変腑鐨勫浘鐗�
+      selectedFileElement: undefined,
       selectedFile: undefined,
       selectedIndex: undefined,
       selectedTypeId: undefined
@@ -94,7 +95,7 @@
           };
         });
       return [
-        // { label: '澶嶅埗鍥剧墖', action: 'copy' },
+        // { label: '澶嶅埗鍒板壀璐存澘', action: 'copy' },
         { label: '绉诲姩鍒�', children: items }
       ];
     }
@@ -158,6 +159,7 @@
         left: `${event.clientX}px`,
         top: `${event.clientY}px`
       };
+      this.selectedFileElement = event.target;
       this.selectedTypeId = typeId;
       this.selectedIndex = index;
       this.selectedFile = this.typesMap.get(typeId)[index];
@@ -168,6 +170,7 @@
     handleMenuItem(item) {
       switch (item.action) {
         case 'copy':
+          this.drawImageToCanvas();
           break;
         case 'move':
           this.selectedFile.data.businesstypeid = item.value;
@@ -217,6 +220,37 @@
       //   }
       //   this.selectedFile.loading = false;
       // }, 2000);
+    },
+    drawImageToCanvas() {
+      const canvas = document.createElement('canvas');
+      const ctx = canvas.getContext('2d');
+      const img = this.selectedFileElement; // 鑾峰彇DOM寮曠敤
+      // img.crossOrigin = 'Anonymous';
+      canvas.width = img.naturalWidth;
+      canvas.height = img.naturalHeight;
+      ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
+      // this.copyCanvasToClipboard(canvas);
+      const dataUrl = canvas.toDataURL('image/png'); // 鍙互閫夋嫨鍏朵粬鏍煎紡濡�'image/jpeg'
+      // 鍒涘缓涓�涓复鏃剁殑textarea鍏冪礌鏉ュ鍒舵枃鏈�
+      const tempTextArea = document.createElement('textarea');
+      document.body.appendChild(tempTextArea);
+      tempTextArea.value = dataUrl;
+      tempTextArea.select();
+      document.execCommand('copy');
+      document.body.removeChild(tempTextArea);
+    },
+    copyCanvasToClipboard(canvas) {
+      canvas.toBlob((blob) => {
+        const item = new ClipboardItem({ 'image/png': blob }); // 浣犲彲浠ユ牴鎹渶瑕佹敼鍙樻牸寮忥紝濡� "image/jpeg"
+        navigator.clipboard.write([item]).then(
+          () => {
+            console.log('Image copied to clipboard');
+          },
+          (err) => {
+            console.error('Could not copy image: ', err);
+          }
+        );
+      }, 'image/png'); // 鍚屾牱锛岃繖閲屼篃鍙互鎸囧畾鍏朵粬鏍煎紡锛屽 'image/jpeg'
     }
   }
 };

--
Gitblit v1.9.3