From 148fa6ad9aa66435183c0d7f4acff9738892a49f Mon Sep 17 00:00:00 2001 From: Cheng Zhou Date: Tue, 23 Dec 2025 22:02:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=98=BE=E7=A4=BA=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=B8=8E=E7=AD=9B=E9=80=89=E5=8A=9F=E8=83=BDUI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/dist/index.html | 4 +- frontend/src/styles/main.css | 27 +++++++ frontend/src/views/MilestoneDetail.vue | 9 ++- frontend/src/views/Verification.vue | 70 +++++++++++------- frontend/src/views/admin/AuditLogs.vue | 98 ++++++++++++-------------- 5 files changed, 127 insertions(+), 81 deletions(-) diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 8107d5b9..5ac88abe 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,8 +4,8 @@ CTMS - - + +
diff --git a/frontend/src/styles/main.css b/frontend/src/styles/main.css index 60c9d2f2..f0b35559 100644 --- a/frontend/src/styles/main.css +++ b/frontend/src/styles/main.css @@ -156,3 +156,30 @@ body { .el-tag--success { background-color: #f6ffed; color: var(--ctms-success); border: 1px solid #b7eb8f; } .el-tag--warning { background-color: #fffbe6; color: var(--ctms-warning); border: 1px solid #ffe58f; } .el-tag--danger { background-color: #fff1f0; color: var(--ctms-danger); border: 1px solid #ffa39e; } + +/* 列表整合工具栏 (Table Toolbar) */ +.ctms-table-toolbar { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 20px; + gap: 16px; + flex-wrap: wrap; +} + +.ctms-filter-group { + display: flex; + gap: 12px; + align-items: center; + flex-wrap: wrap; +} + +.ctms-filter-item { + width: 160px; +} + +.ctms-action-group { + display: flex; + gap: 12px; + align-items: center; +} diff --git a/frontend/src/views/MilestoneDetail.vue b/frontend/src/views/MilestoneDetail.vue index 936778d3..068c5231 100644 --- a/frontend/src/views/MilestoneDetail.vue +++ b/frontend/src/views/MilestoneDetail.vue @@ -121,12 +121,17 @@ const siteName = (row: any) => { const ownerName = (ownerId: string) => { const memberMap = members.value.reduce>((acc, cur) => { - const username = cur?.user?.display_name || cur?.user?.username || cur?.username; + const username = cur?.user?.display_name || cur?.user?.full_name || cur?.user?.username || cur?.username; if (cur?.user_id) acc[cur.user_id] = username || cur.user_id; + if (cur?.id) acc[cur.id] = username || cur.id; return acc; }, {}); + const owner = milestone.value?.owner; - return owner?.display_name || owner?.username || displayUser(ownerId, { members: memberMap }); + const nameFromObject = owner?.display_name || owner?.full_name || owner?.username; + if (nameFromObject) return nameFromObject; + + return memberMap[ownerId] || ownerId || "—"; }; onMounted(async () => { diff --git a/frontend/src/views/Verification.vue b/frontend/src/views/Verification.vue index 3b63b984..9982bda2 100644 --- a/frontend/src/views/Verification.vue +++ b/frontend/src/views/Verification.vue @@ -1,31 +1,34 @@