From 4eaf89219d7f69e5be698896cb82f3ff3fc36fab Mon Sep 17 00:00:00 2001 From: wonder Date: Sat, 20 Jun 2026 00:05:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20Toast=20=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E7=B3=BB=E7=BB=9F=EF=BC=8C=E6=9B=BF=E6=8D=A2=E6=89=80?= =?UTF-8?q?=E6=9C=89=20alert()=20=E8=B0=83=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/js/note-editor.js | 4 ++-- templates/layouts/base.html | 42 +++++++++++++++++++++++++++++++++++ templates/pages/generate.html | 8 +++---- templates/pages/repo.html | 6 ++--- templates/pages/review.html | 8 +++---- 5 files changed, 55 insertions(+), 13 deletions(-) diff --git a/static/js/note-editor.js b/static/js/note-editor.js index 7b5bbd4..6105491 100644 --- a/static/js/note-editor.js +++ b/static/js/note-editor.js @@ -152,7 +152,7 @@ const NoteEditor = { */ async exportPDF() { if (!this.analysisId) { - alert('请先完成审查再导出 PDF'); + showToast('请先完成审查再导出 PDF', 'warning'); return; } @@ -189,7 +189,7 @@ const NoteEditor = { document.body.removeChild(a); URL.revokeObjectURL(url); } catch (err) { - alert('PDF 导出失败: ' + err.message); + showToast('PDF 导出失败: ' + err.message, 'error'); } finally { if (btn) { btn.disabled = false; diff --git a/templates/layouts/base.html b/templates/layouts/base.html index 04425fc..5f0c623 100644 --- a/templates/layouts/base.html +++ b/templates/layouts/base.html @@ -6,6 +6,48 @@ + + {{end}} diff --git a/templates/pages/generate.html b/templates/pages/generate.html index 013bc2a..79213a1 100644 --- a/templates/pages/generate.html +++ b/templates/pages/generate.html @@ -191,7 +191,7 @@ const headRef = document.getElementById('head-ref').value; if (!baseRef || !headRef) { - alert('请选择 Base 和 Head 分支'); + showToast('请选择 Base 和 Head 分支', 'warning'); return; } @@ -258,7 +258,7 @@ btn.textContent = '生成 PR 描述'; }, error(data) { - alert('生成失败: ' + (data.message || '未知错误')); + showToast('生成失败: ' + (data.message || '未知错误'), 'error'); streaming.classList.add('hidden'); output.classList.add('hidden'); btn.disabled = false; @@ -275,7 +275,7 @@ function copyMarkdown() { const markdown = markdownContent || document.getElementById('pr-markdown').textContent; navigator.clipboard.writeText(markdown).then(() => { - alert('已复制到剪贴板'); + showToast('已复制到剪贴板', 'success'); }).catch(() => { const textarea = document.createElement('textarea'); textarea.value = markdown; @@ -283,7 +283,7 @@ textarea.select(); document.execCommand('copy'); document.body.removeChild(textarea); - alert('已复制到剪贴板'); + showToast('已复制到剪贴板', 'success'); }); } diff --git a/templates/pages/repo.html b/templates/pages/repo.html index a11139b..483e58a 100644 --- a/templates/pages/repo.html +++ b/templates/pages/repo.html @@ -405,7 +405,7 @@ const base = document.getElementById('select-base').value; const head = document.getElementById('select-head').value; if (!base || !head) { - alert('请选择 Base 和 Head 分支'); + showToast('请选择 Base 和 Head 分支', 'warning'); return; } DiffViewer.loadDiff(repoId, base, head); @@ -436,7 +436,7 @@ const base = document.getElementById('select-base').value; const head = document.getElementById('select-head').value; if (!base || !head) { - alert('请先选择 Base 和 Head 并查看 Diff'); + showToast('请先选择 Base 和 Head 并查看 Diff', 'warning'); return; } @@ -499,7 +499,7 @@ viewLink.href = `/repo/${repoId}/review?base=${encodeURIComponent(base)}&head=${encodeURIComponent(head)}`; }, error(data) { - alert('审查失败: ' + (data.message || '未知错误')); + showToast('审查失败: ' + (data.message || '未知错误'), 'error'); progress.classList.add('hidden'); btn.disabled = false; btn.textContent = '🤖 AI 评审'; diff --git a/templates/pages/review.html b/templates/pages/review.html index c769b5e..3a2ace0 100644 --- a/templates/pages/review.html +++ b/templates/pages/review.html @@ -229,7 +229,7 @@ const topN = document.getElementById('top-n').value; if (!baseRef || !headRef) { - alert('请选择 Base 和 Head 分支'); + showToast('请选择 Base 和 Head 分支', 'warning'); return; } @@ -340,7 +340,7 @@ NoteEditor.loadNotes(); }, error(data) { - alert('审查失败: ' + (data.message || '未知错误')); + showToast('审查失败: ' + (data.message || '未知错误'), 'error'); progress.classList.add('hidden'); btn.disabled = false; btn.textContent = '开始审查'; @@ -471,7 +471,7 @@ const result = data.result; if (!result || !result.file_reviews) { - alert('该历史记录没有完整的评审数据'); + showToast('该历史记录没有完整的评审数据', 'warning'); return; } @@ -533,7 +533,7 @@ } catch (e) { console.error('Load history error:', e); - alert('加载历史评审失败: ' + e.message); + showToast('加载历史评审失败: ' + e.message, 'error'); } }