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'); } }