diff --git a/memory/2026-06-20.md b/memory/2026-06-20.md index 232a87d..5d51a63 100644 --- a/memory/2026-06-20.md +++ b/memory/2026-06-20.md @@ -240,3 +240,24 @@ - 风险与关注点: - 改动仅影响角色管理页前端弹窗尺寸和分页展示逻辑,不改变接口、schema、权限或 CRUD 语义。 + +# Work Log - 系统日志页面一致性优化(FL-160) + +- 背景: + - 系统日志页面需要严格对齐用户管理页的页面外层卡片、筛选表单、表格滚动和移动端卡片规范。 + +- 本次处理: + - 系统日志页外层容器改为与用户管理页一致的 `min-h-0 flex-1` 页面结构,并补齐 `.admin-syslog-page-card` flex 布局样式。 + - 桌面筛选表单项由 Tailwind `min-w-*` 改为固定 `style={{ width: 260 }}`,与用户管理页筛选布局口径一致。 + - 表格配置补齐 `tableLayout="fixed"`、分页最小 total 处理,并移除横向滚动,仅保留动态纵向滚动。 + - 移动端日志卡片补齐与用户卡片一致的卡片头、标题信息、字段网格、详情省略提示和卡片头部主题样式。 + +- 验证: + - 基线:`npm --workspace web exec eslint src/app/admin/users/page.tsx src/app/admin/syslog/page.tsx` 通过,仅用户页存在 1 条既有 unused eslint-disable warning。 + - 基线:`npm --workspace web exec tsc --noEmit` 通过。 + - 修改后:`npm --workspace web exec eslint src/app/admin/syslog/page.tsx --max-warnings=0` 通过。 + - 修改后:`npm --workspace web exec tsc --noEmit` 通过。 + - 修改后:`npm --workspace web exec eslint src/app/admin/users/page.tsx src/app/admin/syslog/page.tsx` 通过,仍仅用户页 1 条既有 warning。 + +- 风险与关注点: + - 改动仅影响 `/admin/syslog` 前端展示、筛选排布、表格滚动和移动卡片视觉,不改变 `/api/v1/admin/audit-logs` 接口路径、请求/响应字段或权限语义。 diff --git a/web/src/app/admin/syslog/page.tsx b/web/src/app/admin/syslog/page.tsx index 7aec4b2..66555c7 100644 --- a/web/src/app/admin/syslog/page.tsx +++ b/web/src/app/admin/syslog/page.tsx @@ -337,6 +337,12 @@ export default function AdminSyslogPage() { key={log.id} className="admin-syslog-log-card" size="small" + title={ + + {log.username ?? "-"} + {log.action} + + } >
@@ -346,22 +352,17 @@ export default function AdminSyslogPage() {
- 用户 - - {log.username ?? "-"} - - {log.user_id ?? "-"} - - -
-
- 动作 - {log.action} + 用户 ID + + {log.user_id ?? "-"} +
{log.detail && (
详情 - {log.detail} + + {log.detail} +
)}
@@ -405,8 +406,12 @@ export default function AdminSyslogPage() { } return ( -
- +
+ {viewMode === "card" ? (
@@ -453,7 +458,7 @@ export default function AdminSyslogPage() { ) : (
- + handleActionChange(event.target.value)} /> - + setOffset((page - 1) * PAGE_SIZE), showSizeChanger: false, showQuickJumper: false, - showTotal: (value) => `共 ${value} 条`, + showTotal: () => `共 ${total} 条`, hideOnSinglePage: false, style: { marginBottom: 0 }, }} locale={{ emptyText: , }} - scroll={{ x: 980, y: tableScrollY }} + scroll={{ y: tableScrollY }} />
) : ( diff --git a/web/src/app/globals.css b/web/src/app/globals.css index 30ee642..eb0abe5 100644 --- a/web/src/app/globals.css +++ b/web/src/app/globals.css @@ -892,6 +892,22 @@ body { min-height: var(--admin-syslog-table-body-min-height, 180px); } +.admin-syslog-page-card { + display: flex; + flex: 1; + min-height: 0; + flex-direction: column; +} + +.admin-syslog-page-card > .ant-card-body { + display: flex; + min-height: 0; + flex: 1; + flex-direction: column; + overflow-x: hidden; + overflow-y: auto; +} + .admin-syslog-card-view { display: flex; min-height: 0; @@ -925,6 +941,12 @@ body { box-shadow: 0 8px 18px color-mix(in srgb, var(--fquiz-theme-text-primary) 8%, transparent); } +.admin-syslog-log-card > .ant-card-head { + min-height: 44px; + border-bottom-color: color-mix(in srgb, var(--fquiz-theme-primary) 18%, var(--ant-color-border-secondary)); + background: color-mix(in srgb, var(--fquiz-theme-primary) 6%, transparent); +} + .admin-syslog-log-card > .ant-card-body { padding-block: 14px; }