Prechádzať zdrojové kódy

fix(photography): 优化LOGO上传与缓存逻辑

- 更新LOGO加载错误提示文案,明确文件不存在或加载失败原因
- 调整LOGO预览区域UI结构,新增重新上传和删除操作按钮
- 修改LOGO缓存键名,避免缓存冲突问题
- 优化加载缓存时的默认值处理,确保路径为空时正确显示
- 简化保存LOGO到缓存的逻辑,移除冗余条件判断
- 修复删除LOGO功能,清空路径并更新缓存状态
- 增加LOGO加载错误处理判断,防止重复设置错误状态
- 样式调整:为LOGO上传底部操作区添加布局与间距样式
panqiuyao 1 týždeň pred
rodič
commit
7509a2394e
1 zmenil súbory, kde vykonal 23 pridanie a 11 odobranie
  1. 23 11
      frontend/src/views/Photography/detail.vue

+ 23 - 11
frontend/src/views/Photography/detail.vue

@@ -262,11 +262,11 @@
 
                     </div>
                     <div class="logo-upload-text">点击或拖拽上传</div>
-                    <div class="logo-upload-hint" v-if="logoLoadError">图片加载出错或已被删除,请重新上传</div>
+                    <div class="logo-upload-hint" v-if="logoLoadError">LOGO指向的文件不存在或加载失败,请重新上传</div>
                     <div class="logo-upload-hint" v-else>支持PNG、JPG格式</div>
                   </div>
                   <div v-else class="logo-upload-preview">
-                    <img :src="'file:///' + form.logo_path" alt="LOGO预览" class="logo-preview-image" @error="handleLogoLoadError" />
+                    <img  :src="'file:///' + form.logo_path" alt="LOGO预览" class="logo-preview-image" @error="handleLogoLoadError" />
                     <div class="logo-upload-actions">
                       <span class="logo-action-btn" @click.stop="previewLogo">
                         <el-icon><ZoomIn /></el-icon>
@@ -275,6 +275,10 @@
                         <el-icon><Delete /></el-icon>
                       </span>
                     </div>
+                    <div class="logo-upload-footer">
+                      <el-button type="primary" link @click.stop="openLogoUpload">重新上传</el-button>
+                      <el-button type="danger" link @click.stop="removeLogo">删除</el-button>
+                    </div>
                   </div>
                 </div>
               </div>
@@ -913,7 +917,7 @@ const scenePrompt = ref('')
 // 本地缓存键(与弹窗组件保持一致)
 const DETAIL_MODEL_CACHE_KEY = 'model_selection_cache'
 const DETAIL_SCENE_PROMPT_CACHE_KEY = 'scene_prompt_cache'
-const DETAIL_LOGO_CACHE_KEY = 'detail_logo_cache'
+const detail_logo_cache_1_KEY = 'detail_logo_cache_1'
 const DETAIL_DATA_TYPE_CACHE_KEY = 'detail_data_type_cache'
 const DETAIL_SERVICES_CACHE_KEY = 'detail_services_cache'
 const DETAIL_TEMPLATE_CACHE_KEY = 'detail_template_cache'
@@ -943,9 +947,10 @@ const loadDetailCache = () => {
 
   // 加载LOGO缓存
   try {
-    const logo = localStorage.getItem(DETAIL_LOGO_CACHE_KEY)
+    const logo = localStorage.getItem(detail_logo_cache_1_KEY)
     if (logo) {
-      form.logo_path = logo
+      form.logo_path = logo || ''
+      console.log(form.logo_path);
       console.log('loadDetailCache - logo:', logo);
     }
   } catch {}
@@ -1008,10 +1013,7 @@ const saveScenePromptToCache = (prompt: string) => {
 // 保存LOGO到缓存
 const saveLogoToCache = (logoPath: string) => {
   try {
-    if (logoPath) {
-      localStorage.setItem(DETAIL_LOGO_CACHE_KEY, logoPath)
-      console.log('saveLogoToCache:', logoPath);
-    }
+      localStorage.setItem(detail_logo_cache_1_KEY, logoPath)
   } catch {}
 }
 
@@ -1628,7 +1630,9 @@ const previewLogo = () => {
 // 删除LOGO
 const removeLogo = () => {
   if (form.logo_path) {
-    const currentLogoPath = form.logo_path
+    saveLogoToCache('')
+    form.logo_path = ''
+  /*  const currentLogoPath = form.logo_path
     clientStore.ipc.send(icpList.generate.deleteLogo, {
       path: currentLogoPath
     });
@@ -1643,11 +1647,12 @@ const removeLogo = () => {
         logoList.value.splice(index, 1)
       }
       clientStore.ipc.removeAllListeners(icpList.generate.deleteLogo);
-    })
+    })*/
   }
 }
 
 const handleLogoLoadError = () => {
+  if (!form.logo_path) return
   if (!logoLoadError.value) {
     logoLoadError.value = true
     form.logo_path = ''
@@ -2413,6 +2418,13 @@ const selectFolder = () => {
   &:hover .logo-upload-actions {
     opacity: 1;
   }
+
+  .logo-upload-footer {
+    display: flex;
+    justify-content: flex-end;
+    gap: 12px;
+    padding: 8px 4px 0;
+  }
 }
 
 .logo-upload {