From fe7fd6e4b1450c01faba724bb22b1d050e896c92 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 23 七月 2025 17:29:50 +0800
Subject: [PATCH] 2025.7.23 监管地图(待完成)

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

diff --git a/src/views/fysp/check/components/ArbitraryPhoto.vue b/src/views/fysp/check/components/ArbitraryPhoto.vue
index 703ceda..012ae5c 100644
--- a/src/views/fysp/check/components/ArbitraryPhoto.vue
+++ b/src/views/fysp/check/components/ArbitraryPhoto.vue
@@ -14,7 +14,12 @@
     @contextmenu="closeContextMenu"
     class="container"
   > -->
-  <div v-if="showMenu" ref="menu" :style="menuStyle" class="context-menu">
+  <div
+    v-if="showMenu && !menuLoading"
+    ref="menu"
+    :style="menuStyle"
+    class="context-menu"
+  >
     <template v-for="(item, index) in menuItems" :key="index">
       <el-popover v-if="item.children" placement="right-start" trigger="hover">
         <template #reference>
@@ -58,20 +63,9 @@
       loading: true,
       // 鍙抽敭鍥剧墖寮瑰嚭鑿滃崟鎺у埗
       showMenu: false,
+      menuLoading: true,
       menuStyle: undefined,
-      // menuItems: [
-      //   { label: '澶嶅埗鍥剧墖', action: 'copy' },
-      //   {
-      //     label: '绉诲姩鍒�',
-      //     children: [
-      //       {
-      //         action: 'move',
-      //         label: v.typeName,
-      //         value: v.typeId
-      //       }
-      //     ]
-      //   }
-      // ],
+      allMoveActions: [],
       closeContextMenuListenr: undefined,
       // 鍙抽敭閫変腑鐨勫浘鐗�
       selectedFileElement: undefined,
@@ -82,21 +76,14 @@
   },
   computed: {
     menuItems() {
-      const sceneTypeId = this.subtask.sceneTypeId;
-      const items = enumMediaFile(sceneTypeId, false)
-        .filter((v) => {
-          return v.value != this.selectedTypeId;
-        })
-        .map((v) => {
-          return {
-            action: 'move',
-            label: v.label,
-            value: v.value
-          };
-        });
       return [
         // { label: '澶嶅埗鍒板壀璐存澘', action: 'copy' },
-        { label: '绉诲姩鍒�', children: items }
+        {
+          label: '绉诲姩鍒�',
+          children: this.allMoveActions.filter((v) => {
+            return v.value != this.selectedTypeId;
+          })
+        }
       ];
     }
   },
@@ -113,6 +100,8 @@
       }
     };
     document.addEventListener('click', this.closeContextMenuListenr);
+
+    this.initMenuItems();
   },
   unmounted() {
     document.removeEventListener('click', this.closeContextMenuListenr);
@@ -229,7 +218,7 @@
       canvas.width = img.naturalWidth;
       canvas.height = img.naturalHeight;
       ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
-      // this.copyCanvasToClipboard(canvas);
+      this.copyCanvasToClipboard(canvas);
       const dataUrl = canvas.toDataURL('image/png'); // 鍙互閫夋嫨鍏朵粬鏍煎紡濡�'image/jpeg'
       // 鍒涘缓涓�涓复鏃剁殑textarea鍏冪礌鏉ュ鍒舵枃鏈�
       const tempTextArea = document.createElement('textarea');
@@ -251,6 +240,22 @@
           }
         );
       }, 'image/png'); // 鍚屾牱锛岃繖閲屼篃鍙互鎸囧畾鍏朵粬鏍煎紡锛屽 'image/jpeg'
+    },
+    // 鍒濆鍖栧満鏅浘鐗囩殑绫诲瀷鑿滃崟
+    initMenuItems() {
+      this.menuLoading = true;
+      const sceneTypeId = this.subtask.sceneTypeId;
+      enumMediaFile(sceneTypeId, false)
+        .then((res) => {
+          this.allMoveActions = res.map((v) => {
+            return {
+              action: 'move',
+              label: v.label,
+              value: v.value
+            };
+          });
+        })
+        .finally(() => (this.menuLoading = false));
     }
   }
 };

--
Gitblit v1.9.3