From 6f3fac4493995e16ee0f37c6cf2b06e5de2a6a72 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期三, 02 七月 2025 16:27:37 +0800
Subject: [PATCH] 1. 将场景图片的分类修改为从服务端动态获取; 2. 问题整改节目中的问题复现功能修改为可拖动对话框且移除背景模态框;

---
 src/views/fysp/check/components/ArbitraryPhoto.vue |   59 ++++++++++---------
 src/api/fysp/domainApi.js                          |    7 ++
 src/api/index.js                                   |    8 +-
 src/enum/mediaFile.js                              |   43 ++++++++++----
 src/components/CompGenericWrapper.vue              |    7 ++
 src/views/fysp/check/components/CompProRecent.vue  |    2 
 6 files changed, 81 insertions(+), 45 deletions(-)

diff --git a/src/api/fysp/domainApi.js b/src/api/fysp/domainApi.js
index dfd5d1d..02985b1 100644
--- a/src/api/fysp/domainApi.js
+++ b/src/api/fysp/domainApi.js
@@ -14,5 +14,12 @@
   // 鑾峰彇宸℃煡浠诲姟灞傛绫诲瀷
   fetchLevelType() {
     return $fysp.get(`domainitem/level`).then((res) => res.data);
+  },
+
+  // 鑾峰彇鍦烘櫙鍥剧墖锛堜换鎰忔媿锛夌被鍨�
+  fetchMediaFileType(sceneType) {
+    return $fysp
+      .get(`domainitem/mediaFileType`, { params: { sceneType } })
+      .then((res) => res.data);
   }
 };
diff --git a/src/api/index.js b/src/api/index.js
index 69fae9f..fc2c53e 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -3,10 +3,10 @@
 
 const debug = false;
 
-let ip1 = 'http://47.100.191.150:9005/';
-let ip1_file = 'http://47.100.191.150:9005/';
-// let ip1 = 'https://fyami.com.cn:447/';
-// let ip1_file = 'https://fyami.com.cn:447/';
+// let ip1 = 'http://47.100.191.150:9005/';
+// let ip1_file = 'http://47.100.191.150:9005/';
+let ip1 = 'https://fyami.com.cn:447/';
+let ip1_file = 'https://fyami.com.cn:447/';
 let ip2 = 'https://fyami.com.cn/';
 let ip2_file = 'https://fyami.com.cn/';
 
diff --git a/src/components/CompGenericWrapper.vue b/src/components/CompGenericWrapper.vue
index 041acd6..545b7fd 100644
--- a/src/components/CompGenericWrapper.vue
+++ b/src/components/CompGenericWrapper.vue
@@ -7,6 +7,8 @@
     @opened="$emit('update:visible', true)"
     @closed="$emit('update:visible', false)"
     destroy-on-close
+    :draggable="draggable"
+    :modal="modal"
   >
     <div v-if="visible">
       <slot name="content"></slot>
@@ -38,6 +40,11 @@
   type: {
     type: String,
     default: 'normal'
+  },
+  draggable: Boolean,
+  modal: {
+    type: Boolean,
+    default: true
   }
 });
 const typeOptions = ref([
diff --git a/src/enum/mediaFile.js b/src/enum/mediaFile.js
index 4b4e048..b0ca952 100644
--- a/src/enum/mediaFile.js
+++ b/src/enum/mediaFile.js
@@ -1,19 +1,36 @@
+import domainApi from '@/api/fysp/domainApi.js';
+
 // 椋炵窘鐩戠绯荤粺
 function enumMediaFile(sceneType, allOption = true) {
-  let l;
-  switch (parseInt(sceneType)) {
-    case 5:
-      l = _enumMediaFile_restaurant();
-      break;
-    default:
-      l = _enumMediaFile_common();
-      break;
-  }
-  if (!allOption) {
-    l.shift();
-  }
+  return domainApi.fetchMediaFileType(sceneType).then((res) => {
+    let l = [
+      {
+        label: '鍏ㄩ儴',
+        value: null
+      }
+    ];
+    for (const key in res) {
+      const value = res[key];
+      l.push({
+        label: value,
+        value: parseInt(key)
+      });
+    }
 
-  return l;
+    // switch (parseInt(sceneType)) {
+    //   case 5:
+    //     l = _enumMediaFile_restaurant();
+    //     break;
+    //   default:
+    //     l = _enumMediaFile_common();
+    //     break;
+    // }
+    if (!allOption) {
+      l.shift();
+    }
+
+    return l;
+  });
 }
 
 function _enumMediaFile_common() {
diff --git a/src/views/fysp/check/components/ArbitraryPhoto.vue b/src/views/fysp/check/components/ArbitraryPhoto.vue
index 703ceda..29c5a4e 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);
@@ -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));
     }
   }
 };
diff --git a/src/views/fysp/check/components/CompProRecent.vue b/src/views/fysp/check/components/CompProRecent.vue
index 66fc00c..81be92d 100644
--- a/src/views/fysp/check/components/CompProRecent.vue
+++ b/src/views/fysp/check/components/CompProRecent.vue
@@ -1,5 +1,5 @@
 <template>
-  <CompGenericWrapper type="dialog">
+  <CompGenericWrapper type="dialog" draggable :modal="false">
     <template #content>
       <el-tabs v-model="activeName" type="card">
         <el-tab-pane

--
Gitblit v1.9.3