From c62f6e3401d5c8568e8479a5db1c5005d3ae7f17 Mon Sep 17 00:00:00 2001 From: admin <572701190@qq.com> Date: Mon, 18 May 2026 19:33:14 +0800 Subject: [PATCH] =?UTF-8?q?2026-05-18-19-31-18=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E8=A7=86=E9=A2=91=E6=9F=A5=E7=9C=8B=E5=85=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/app.js | 31 +++++++++++++++++++ frontend/index.html | 19 +++++++++++- frontend/styles.css | 38 ++++++++++++++++++++++++ 工程分析/实现方案-2026-05-18-19-31-18.md | 22 ++++++++++++++ 工程分析/测试方案-2026-05-18-19-31-18.md | 26 ++++++++++++++++ 工程分析/经验记录.md | 12 ++++++++ 工程分析/需求分析-2026-05-18-19-31-18.md | 21 +++++++++++++ 7 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 工程分析/实现方案-2026-05-18-19-31-18.md create mode 100644 工程分析/测试方案-2026-05-18-19-31-18.md create mode 100644 工程分析/需求分析-2026-05-18-19-31-18.md diff --git a/frontend/app.js b/frontend/app.js index 912c5b6..72c12a8 100644 --- a/frontend/app.js +++ b/frontend/app.js @@ -27,6 +27,12 @@ const resultCount = document.querySelector("#resultCount"); const jobMeta = document.querySelector("#jobMeta"); const detailDialog = document.querySelector("#detailDialog"); const closeDialog = document.querySelector("#closeDialog"); +const openSourceButton = document.querySelector("#openSourceButton"); +const sourceDialog = document.querySelector("#sourceDialog"); +const closeSourceDialog = document.querySelector("#closeSourceDialog"); +const sourceTitle = document.querySelector("#sourceTitle"); +const sourceVideo = document.querySelector("#sourceVideo"); +const sourceImage = document.querySelector("#sourceImage"); const methodLabels = new Map(); const methodDescriptions = new Map(); @@ -68,12 +74,17 @@ function renderPreview(file) { previewEmpty.hidden = true; videoPreview.hidden = true; imagePreview.hidden = true; + openSourceButton.hidden = false; if (file.type.startsWith("video/")) { videoPreview.src = currentObjectUrl; videoPreview.hidden = false; + openSourceButton.textContent = "查看原始视频"; + sourceTitle.textContent = "原始视频"; } else { imagePreview.src = currentObjectUrl; imagePreview.hidden = false; + openSourceButton.textContent = "查看原始图像"; + sourceTitle.textContent = "原始图像"; } jobMeta.textContent = `已选择 ${file.name}`; } @@ -213,6 +224,12 @@ function clearAll() { imagePreview.removeAttribute("src"); videoPreview.hidden = true; imagePreview.hidden = true; + sourceVideo.hidden = true; + sourceImage.hidden = true; + sourceVideo.removeAttribute("src"); + sourceImage.removeAttribute("src"); + openSourceButton.hidden = true; + if (sourceDialog.open) sourceDialog.close(); previewEmpty.hidden = false; resultGrid.innerHTML = ""; emptyState.hidden = false; @@ -253,6 +270,20 @@ dropZone.addEventListener("drop", (event) => { sampleButton.addEventListener("click", loadSample); clearButton.addEventListener("click", clearAll); closeDialog.addEventListener("click", () => detailDialog.close()); +closeSourceDialog.addEventListener("click", () => sourceDialog.close()); +openSourceButton.addEventListener("click", () => { + if (!selectedFile || !currentObjectUrl) return; + sourceVideo.hidden = true; + sourceImage.hidden = true; + if (selectedFile.type.startsWith("video/")) { + sourceVideo.src = currentObjectUrl; + sourceVideo.hidden = false; + } else { + sourceImage.src = currentObjectUrl; + sourceImage.hidden = false; + } + sourceDialog.showModal(); +}); form.addEventListener("submit", async (event) => { event.preventDefault(); diff --git a/frontend/index.html b/frontend/index.html index 03042ea..e7598d2 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -85,7 +85,10 @@

Live Workspace

预览与结果

-
等待输入
+
+ +
等待输入
+
@@ -144,6 +147,20 @@
+ +
+
+

Source Media

+

原始视频

+
+ +
+
+ + +
+
+