Quellcode durchsuchen

feat(photography): 添加生成目录功能并优化同步提示

- 在摄影详情页移除调试日志输出
- 优化首页同步状态提示逻辑,使用更准确的加载文案
- 使用 ElMessage 替代 console 输出同步等待提示
- 在摄影拍摄页新增“生成目录”按钮,支持打开输出路径
- 实现 openOutputDir 方法用于调用 IPC 打开系统文件夹- 引入 ElMessage 组件处理错误提示信息- 调整代码格式,去除多余空行和无用注释
panqiuyao vor 1 Monat
Ursprung
Commit
85219c1529

+ 6 - 5
frontend/src/views/Home/index.vue

@@ -3,7 +3,7 @@
 
 
     <template  #title><div @click="handleSettingClick" v-log="{ describe: { action: '点击首页标题' } }">首页</div></template>
     <template  #title><div @click="handleSettingClick" v-log="{ describe: { action: '点击首页标题' } }">首页</div></template>
   </headerBar>
   </headerBar>
-  <div class="home-container" v-loading="loading || syncLoading" :element-loading-text="syncLoading ? '正在同步配置...' : '正在加载...'">
+  <div class="home-container" v-loading="loading || !syncCompleted" :element-loading-text="!syncCompleted ? '正在同步配置...' : '正在加载...'">
     <!-- 背景图片 -->
     <!-- 背景图片 -->
     <img src="@/assets/images/home/bg.png" alt="背景图片" class="background-image" />
     <img src="@/assets/images/home/bg.png" alt="背景图片" class="background-image" />
 
 
@@ -14,7 +14,7 @@
     </div>
     </div>
 
 
     <!-- 右侧图片区域 -->
     <!-- 右侧图片区域 -->
-    <div class="image-container right-image" @click="goShot" v-log="{ describe: { action: '点击仅处理图像入口' } }">
+    <div class="image-container right-image"  @click="goShot" v-log="{ describe: { action: '点击仅处理图像入口' } }">
       <img src="@/assets/images/home/right.png" alt="仅处理图像" class="zoom-on-hover" />
       <img src="@/assets/images/home/right.png" alt="仅处理图像" class="zoom-on-hover" />
       <div class="overlay-text" style="line-height: 80px;">仅处理图像</div>
       <div class="overlay-text" style="line-height: 80px;">仅处理图像</div>
     </div>
     </div>
@@ -51,6 +51,7 @@ const isLatest = ref(true);
 
 
 
 
 import socket from "@/stores/modules/socket";
 import socket from "@/stores/modules/socket";
+import {ElMessage} from "element-plus";
 // 初始化 WebSocket 状态管理
 // 初始化 WebSocket 状态管理
 const socketStore = socket();
 const socketStore = socket();
 
 
@@ -73,7 +74,7 @@ const goCheck = async () => {
 
 
   // 如果未同步完成,等待同步
   // 如果未同步完成,等待同步
   if (!syncCompleted.value) {
   if (!syncCompleted.value) {
-    console.log('等待配置同步完成...');
+    ElMessage.error('等待配置同步完成');
     return;
     return;
   }
   }
 
 
@@ -125,12 +126,12 @@ const checkHealth = async () => {
           try {
           try {
             syncLoading.value = true; // 开始同步
             syncLoading.value = true; // 开始同步
             syncCompleted.value = false; // 重置同步状态
             syncCompleted.value = false; // 重置同步状态
-            
+
             // 导入同步函数
             // 导入同步函数
             const { syncAfterLogin } = await import('@/apis/setting');
             const { syncAfterLogin } = await import('@/apis/setting');
             await syncAfterLogin();
             await syncAfterLogin();
             console.log('健康检查后数据同步成功');
             console.log('健康检查后数据同步成功');
-            
+
             syncCompleted.value = true; // 同步完成
             syncCompleted.value = true; // 同步完成
           } catch (syncError) {
           } catch (syncError) {
             console.error('健康检查后数据同步失败:', syncError);
             console.error('健康检查后数据同步失败:', syncError);

+ 0 - 2
frontend/src/views/Photography/detail.vue

@@ -939,9 +939,7 @@ const openOutputDir = () => {
       ElMessage.error('未获取到应用目录 appPath')
       ElMessage.error('未获取到应用目录 appPath')
       return
       return
     }
     }
-    console.log(pyPath);
     const fullPath = `${pyPath}\\output`
     const fullPath = `${pyPath}\\output`
-    console.log(fullPath);
     clientStore.ipc.removeAllListeners(icpList.utils.shellFun);
     clientStore.ipc.removeAllListeners(icpList.utils.shellFun);
     clientStore.ipc.send(icpList.utils.shellFun, {
     clientStore.ipc.send(icpList.utils.shellFun, {
       action: 'openPath',
       action: 'openPath',

+ 27 - 0
frontend/src/views/Photography/shot.vue

@@ -252,6 +252,12 @@ const menu = computed(()=>{
         }
         }
       },
       },
       {
       {
+        name:'生成目录',
+        click(){
+          openOutputDir()
+        }
+      },
+      {
         ...generate
         ...generate
       }
       }
     ]
     ]
@@ -283,6 +289,27 @@ const menu = computed(()=>{
 
 
 })
 })
 
 
+// 打开输出目录:appConfig.appPath + '/build/extraResources/py/output'
+const openOutputDir = () => {
+  try {
+
+    const pyPath = configInfoStore?.appConfig?.pyPath || ''
+    if (!pyPath) {
+      ElMessage.error('未获取到应用目录 appPath')
+      return
+    }
+    const fullPath = `${pyPath}\\output`
+    clientStore.ipc.removeAllListeners(icpList.utils.shellFun);
+    clientStore.ipc.send(icpList.utils.shellFun, {
+      action: 'openPath',
+      params: fullPath.replace(/\//g, '\\')
+    });
+  } catch (e) {
+    console.error(e)
+    ElMessage.error('打开目录失败')
+  }
+}
+
 const clientStore = client();
 const clientStore = client();
 
 
 const Router = useRouter()
 const Router = useRouter()