From 416f5bc113352ac726a73b4f58e2218bb742b4d5 Mon Sep 17 00:00:00 2001 From: "fengchuanhn@gmail.com" Date: Mon, 25 May 2026 02:13:03 +0800 Subject: [PATCH] 1 --- src/components/workflow/Step02AudioVideo.vue | 59 +++++++++++++++++++- src/components/workflow/Step03VideoEdit.vue | 29 +++++++++- 2 files changed, 85 insertions(+), 3 deletions(-) diff --git a/src/components/workflow/Step02AudioVideo.vue b/src/components/workflow/Step02AudioVideo.vue index 26264c1..aae8b6f 100644 --- a/src/components/workflow/Step02AudioVideo.vue +++ b/src/components/workflow/Step02AudioVideo.vue @@ -4,6 +4,7 @@ import { storeToRefs } from "pinia"; import { useWorkflowStore } from "../../stores/workflow.js"; import { useAvatarStore } from "../../stores/avatar.js"; import VoiceManageDialog from "./VoiceManageDialog.vue"; +import { revealLocalFileInFolder } from "../../services/fileExport.js"; const workflow = useWorkflowStore(); const avatarStore = useAvatarStore(); @@ -14,10 +15,12 @@ const { avatarSelect, speechGenerating, generatedAudioSrc, + generatedAudioPath, currentAudioId, audioHistory, videoGenerating, generatedVideoSrc, + generatedVideoPath, currentVideoId, videoHistory, } = storeToRefs(workflow); @@ -68,6 +71,21 @@ async function onPickAudioHistory() { await workflow.pickAudioHistory(currentAudioId.value); } +async function onOpenAudioInExplorer() { + if (!generatedAudioPath.value) { + feedback.value = { severity: "error", message: "暂无音频文件" }; + return; + } + try { + await revealLocalFileInFolder(generatedAudioPath.value); + } catch (err) { + feedback.value = { + severity: "error", + message: err instanceof Error ? err.message : String(err), + }; + } +} + async function onGenerateTalkingVideo() { feedback.value = { severity: "", message: "" }; const result = await workflow.generateTalkingVideo(); @@ -84,6 +102,21 @@ async function onPickVideoHistory() { await workflow.pickVideoHistory(currentVideoId.value); } +async function onOpenVideoInExplorer() { + if (!generatedVideoPath.value) { + feedback.value = { severity: "error", message: "暂无视频文件" }; + return; + } + try { + await revealLocalFileInFolder(generatedVideoPath.value); + } catch (err) { + feedback.value = { + severity: "error", + message: err instanceof Error ? err.message : String(err), + }; + } +} + onMounted(() => { avatarStore.refresh(); workflow.refreshAudioHistory(); @@ -155,7 +188,18 @@ onMounted(() => {

- 音频预览 +
+ 音频预览 +