diff --git a/admin-system/src/api/mockData.ts b/admin-system/src/api/mockData.ts index e4ff118..824da11 100644 --- a/admin-system/src/api/mockData.ts +++ b/admin-system/src/api/mockData.ts @@ -53,6 +53,18 @@ const mockPermissions = [ { id: 14, name: '系统写入', code: 'system:write', description: '创建/编辑系统信息', resource_type: 'system', created_at: '2024-01-01', updated_at: '2024-01-01' } ] +// 模拟系统日志数据 +const mockSystemLogs = [ + { id: '1', level: 'info', message: '用户登录成功 - admin', timestamp: '2024-03-15T14:30:22Z', module: 'auth', userId: '1', ip: '192.168.1.100' }, + { id: '2', level: 'info', message: '数据库备份完成 - 备份文件: backup_20240315.sql', timestamp: '2024-03-15T14:00:00Z', module: 'database', userId: '1', ip: '192.168.1.100' }, + { id: '3', level: 'warn', message: '系统警告 - 内存使用率超过80%', timestamp: '2024-03-15T13:45:18Z', module: 'system', userId: '1', ip: '192.168.1.100' }, + { id: '4', level: 'info', message: '定时任务执行 - 清理过期日志', timestamp: '2024-03-15T13:30:00Z', module: 'task', userId: '1', ip: '192.168.1.100' }, + { id: '5', level: 'error', message: '数据库连接失败 - 连接超时', timestamp: '2024-03-15T12:15:30Z', module: 'database', userId: '1', ip: '192.168.1.100' }, + { id: '6', level: 'info', message: '用户注册成功 - user123', timestamp: '2024-03-15T11:20:45Z', module: 'auth', userId: '2', ip: '192.168.1.101' }, + { id: '7', level: 'debug', message: 'API调用 - 获取用户列表', timestamp: '2024-03-15T10:30:15Z', module: 'api', userId: '1', ip: '192.168.1.100' }, + { id: '8', level: 'info', message: '订单创建成功 - 订单号: ORD20240315001', timestamp: '2024-03-15T09:45:22Z', module: 'order', userId: '3', ip: '192.168.1.102' } +] + // 模拟API响应格式 const createSuccessResponse = (data: any) => ({ success: true, @@ -175,7 +187,7 @@ export const mockOrderAPI = { } } -// 模拟系统统计API +// 模拟系统API export const mockSystemAPI = { getSystemStats: async () => { await delay(600) @@ -190,6 +202,32 @@ export const mockSystemAPI = { }) }, + getSystemLogs: async (params: any = {}) => { + await delay(800) + const { page = 1, limit = 10, level, module, startDate, endDate } = params + + // 根据查询参数过滤日志 + let filteredLogs = mockSystemLogs + if (level) { + filteredLogs = mockSystemLogs.filter(log => log.level === level) + } + if (module) { + filteredLogs = filteredLogs.filter(log => log.module === module) + } + if (startDate) { + filteredLogs = filteredLogs.filter(log => new Date(log.timestamp) >= new Date(startDate)) + } + if (endDate) { + filteredLogs = filteredLogs.filter(log => new Date(log.timestamp) <= new Date(endDate)) + } + + const start = (page - 1) * limit + const end = start + limit + const paginatedData = filteredLogs.slice(start, end) + + return createPaginatedResponse(paginatedData, page, limit, filteredLogs.length) + }, + getSystemMonitorData: async () => { await delay(500) return createSuccessResponse({ diff --git a/admin-system/src/layouts/MainLayout.vue b/admin-system/src/layouts/MainLayout.vue index 704e1e1..a0052b7 100644 --- a/admin-system/src/layouts/MainLayout.vue +++ b/admin-system/src/layouts/MainLayout.vue @@ -83,6 +83,14 @@ 系统设置 + + + + 系统日志 + + @@ -179,7 +187,8 @@ import { MenuFoldOutlined, BellOutlined, QuestionCircleOutlined, - LogoutOutlined + LogoutOutlined, + FileTextOutlined } from '@ant-design/icons-vue' const router = useRouter() diff --git a/admin-system/src/pages/permission/index.vue b/admin-system/src/pages/permission/index.vue index 708a4d2..cdb7252 100644 --- a/admin-system/src/pages/permission/index.vue +++ b/admin-system/src/pages/permission/index.vue @@ -52,6 +52,24 @@ + +
+ + + + 批量删除 + + 已选择 {{ selectedRowKeys.length }} 项 + +
+