From 3acffa6e7f7d73d8b9722086c21a33fd086884e2 Mon Sep 17 00:00:00 2001 From: "949036910@qq.com" <> Date: Thu, 28 May 2026 20:48:16 +0800 Subject: [PATCH] 11 --- src/components/workflow/VideoLinkDialog.vue | 11 +++++++++++ src/stores/workflow.js | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/components/workflow/VideoLinkDialog.vue b/src/components/workflow/VideoLinkDialog.vue index f4a6f2f..a158195 100644 --- a/src/components/workflow/VideoLinkDialog.vue +++ b/src/components/workflow/VideoLinkDialog.vue @@ -22,12 +22,22 @@ const tipItems = [ function onCancel() { feedback.value = { severity: "", message: "" }; + if (videoRewriting.value) { + workflow.videoRewriteAbortRequested = true; + workflow.videoRewriting = false; + workflow.rewriteProgress = ""; + } workflow.videoLinkModalVisible = false; } +function onDialogHide() { + onCancel(); +} + async function onRewrite() { feedback.value = { severity: "", message: "" }; const result = await executeVideoRewrite(workflow); + if (result?.cancelled) return; if (!result.ok) { feedback.value = { severity: "error", message: result.message }; } else { @@ -44,6 +54,7 @@ async function onRewrite() { :style="{ width: '600px' }" :draggable="false" class="ip-brain-dialog" + @hide="onDialogHide" >
} store */ export async function executeVideoRewrite(store) { + if (store.videoRewriting) { + return { ok: false, message: "仿写任务正在执行中,请稍候" }; + } const parsed = validateShareText(store.videoShareText); if (!parsed.ok) { return { ok: false, message: parsed.message }; @@ -782,6 +787,7 @@ export async function executeVideoRewrite(store) { } store.videoRewriting = true; + store.videoRewriteAbortRequested = false; store.rewriteProgress = "正在解析和仿写..."; let unlisten = null; @@ -789,6 +795,9 @@ export async function executeVideoRewrite(store) { try { unlisten = await listen(NODEJS_EVENT, (e) => { const p = e.payload; + if (store.videoRewriteAbortRequested) { + return; + } if (p?.type === "progress" && typeof p.status === "string") { store.rewriteProgress = p.status; } else if (p?.type === "log") { @@ -813,6 +822,10 @@ export async function executeVideoRewrite(store) { }, }); + if (store.videoRewriteAbortRequested) { + return { ok: false, cancelled: true, message: "已取消仿写任务" }; + } + if (!result || result.success !== true) { const err = (result && (result.error || result.message)) || @@ -849,6 +862,7 @@ export async function executeVideoRewrite(store) { unlisten(); } store.videoRewriting = false; + store.videoRewriteAbortRequested = false; store.rewriteProgress = ""; } }