feat(audit): 完成审计日志页面筛选与导出

This commit is contained in:
xy
2026-09-28 16:38:27 +08:00
parent 536632e104
commit a25716c861
5 changed files with 618 additions and 7 deletions
+27 -4
View File
@@ -12,8 +12,7 @@ import type {
BackendPage,
} from './types'
// 审计日志当前只用于签署留痕,跟随签署工作台的开关;后续有独立页面时再拆出来。
const useMockData = mockFlags.signing
const useMockData = mockFlags.audit
function formatDateTime(value: string) {
const date = new Date(value)
@@ -36,8 +35,10 @@ function mapAuditLog(dto: AuditLogResponseDto): AuditLogRecord {
id: dto.id,
action: dto.action,
resourceType: dto.resourceType,
resourceId: dto.resourceId,
operatorId: dto.operatorId,
resourceId: dto.resourceId ?? '',
operatorId: dto.operatorId ?? '',
operatorName: dto.operatorName ?? (dto.operatorId ? '未知' : '系统'),
operatorRoles: dto.operatorRoles ?? '—',
clientIp: dto.clientIp ?? '—',
userAgent: dto.userAgent ?? '—',
detailsJson: dto.detailsJson ?? '',
@@ -74,6 +75,11 @@ export function getAuditLogs(query: AuditLogQuery): Promise<AuditLogListResponse
params.keyword = query.keyword.trim()
}
if (query.createdFrom) params.createdFrom = query.createdFrom
if (query.createdTo) params.createdTo = query.createdTo
if (query.operator?.trim()) params.operator = query.operator.trim()
if (query.module) params.module = query.module
return request
.get<ApiResponse<BackendCollection<AuditLogResponseDto>>>('/v1/audit-logs', { params })
.then(unwrapApiResponse)
@@ -82,3 +88,20 @@ export function getAuditLogs(query: AuditLogQuery): Promise<AuditLogListResponse
return { ...page, records: page.records.map(mapAuditLog) }
})
}
export function exportAuditLogs(query: AuditLogQuery): Promise<Blob> {
const params: Record<string, string | number> = {
page: Math.max(query.page, 1),
size: Math.min(Math.max(query.pageSize, 1), 200),
}
if (query.keyword?.trim()) params.keyword = query.keyword.trim()
if (query.createdFrom) params.createdFrom = query.createdFrom
if (query.createdTo) params.createdTo = query.createdTo
if (query.operator?.trim()) params.operator = query.operator.trim()
if (query.module) params.module = query.module
return request.get<Blob>('/v1/audit-logs/export', {
params,
responseType: 'blob',
})
}