From c95ca722bc50e2a52ea1bf7fd51098029e0e3c0c Mon Sep 17 00:00:00 2001 From: anghunk Date: Wed, 21 Jan 2026 11:19:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui):=20=E4=BF=AE=E5=A4=8D=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E5=AE=BD=E5=BA=A6=E5=92=8C=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=90=8C=E6=AD=A5=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为按钮添加最小宽度100px防止内容截断 - 修改模态框背景透明度提升视觉层次 - 统一错误日志中的冒号为中文全角 - 重构分页组件,同步当前页码到路由参数 - 初始化时从路由参数读取页码 --- cwd-admin/src/views/CommentsView.vue | 49 +++++++++++++++++++++------- cwd-admin/src/views/DataView.vue | 9 ++--- cwd-admin/src/views/LayoutView.vue | 2 +- cwd-admin/src/views/SettingsView.vue | 1 + 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/cwd-admin/src/views/CommentsView.vue b/cwd-admin/src/views/CommentsView.vue index 5584caf..6fadf5f 100644 --- a/cwd-admin/src/views/CommentsView.vue +++ b/cwd-admin/src/views/CommentsView.vue @@ -130,17 +130,17 @@ > ... - + import { onMounted, ref, computed } from "vue"; +import { useRoute, useRouter } from "vue-router"; import { CommentItem, CommentListResponse, @@ -196,6 +197,9 @@ import { blockEmail, } from "../api/admin"; +const route = useRoute(); +const router = useRouter(); + const comments = ref([]); const pagination = ref<{ page: number; total: number }>({ page: 1, total: 1 }); const loading = ref(false); @@ -269,10 +273,16 @@ async function loadComments(page?: number) { } } +function updateRoutePage(page: number) { + const query = { ...route.query, p: String(page) }; + router.replace({ query }); +} + async function goPage(page: number) { if (page < 1 || page > pagination.value.total) { return; } + updateRoutePage(page); await loadComments(page); } @@ -286,6 +296,7 @@ function handleJumpPage() { return; } jumpPageInput.value = ""; + updateRoutePage(page); loadComments(page); } @@ -341,7 +352,21 @@ async function handleBlockEmail(item: CommentItem) { } onMounted(() => { - loadComments(); + const p = route.query.p; + let initialPage = 1; + if (typeof p === "string") { + const value = Number(p); + if (Number.isFinite(value) && value >= 1) { + initialPage = Math.floor(value); + } + } else if (Array.isArray(p) && typeof p[0] === "string") { + const value = Number(p[0]); + if (Number.isFinite(value) && value >= 1) { + initialPage = Math.floor(value); + } + } + updateRoutePage(initialPage); + loadComments(initialPage); }); diff --git a/cwd-admin/src/views/DataView.vue b/cwd-admin/src/views/DataView.vue index 06cfdec..c8084fc 100644 --- a/cwd-admin/src/views/DataView.vue +++ b/cwd-admin/src/views/DataView.vue @@ -76,7 +76,7 @@ @@ -210,7 +210,7 @@ async function handleFileChange(event: Event) { } } catch (err: any) { console.error(err); - addLog(`导入失败: ${err.message || "未知错误"}`); + addLog(`导入失败:${err.message || "未知错误"}`); showToast(err.message || "导入失败,文件格式错误", "error"); importing.value = false; } @@ -299,11 +299,11 @@ async function executeImport(comments: any[]) { addLog("正在上传并导入数据库..."); try { const res = await importComments(comments); - addLog(`导入完成: ${res.message || "成功"}`); + addLog(`导入完成:${res.message || "成功"}`); showToast(res.message || "导入成功", "success"); } catch (err: any) { console.error(err); - addLog(`导入失败: ${err.message || "未知错误"}`); + addLog(`导入失败:${err.message || "未知错误"}`); showToast(err.message || "导入失败", "error"); } finally { importing.value = false; @@ -444,6 +444,7 @@ async function executeImport(comments: any[]) { color: #ffffff; font-size: 14px; cursor: pointer; + min-width: 100px; } .card-button:disabled { diff --git a/cwd-admin/src/views/LayoutView.vue b/cwd-admin/src/views/LayoutView.vue index 8c5c67a..7b7cb48 100644 --- a/cwd-admin/src/views/LayoutView.vue +++ b/cwd-admin/src/views/LayoutView.vue @@ -327,7 +327,7 @@ function handleLogoutFromActions() { left: 0; right: 0; bottom: 0; - background-color: rgba(0, 0, 0, 0.3); + background-color: rgba(0, 0, 0, 0.6); z-index: 900; display: block; } diff --git a/cwd-admin/src/views/SettingsView.vue b/cwd-admin/src/views/SettingsView.vue index d49f797..eafcf9c 100644 --- a/cwd-admin/src/views/SettingsView.vue +++ b/cwd-admin/src/views/SettingsView.vue @@ -701,6 +701,7 @@ onMounted(() => { color: #ffffff; font-size: 14px; cursor: pointer; + min-width: 100px; } .card-button.secondary {