跳到主要内容

审核管理文档

概述

本文档详细分析邮轮穿舱件管理系统的审核管理功能,重点基于AuditView组件分析审核业务逻辑和状态流转。审计日志系统用于记录系统中的关键操作,便于审计与问题追踪。

系统架构

组件依赖关系

flowchart TD
A[AuditView.vue] --> B[http/index.js]
A --> C[moment.js]
A --> D[Vuetify UI组件库]
B --> E[axios]
B --> F[js-cookie]

subgraph 前端组件层
A
D
end

subgraph 网络通信层
B
E
F
end

subgraph 工具库
C
end

架构说明

  • AuditView组件作为核心审计界面,依赖HTTP客户端进行API调用
  • 使用Vuetify组件库构建用户界面
  • 通过axios处理HTTP请求,js-cookie管理认证令牌
  • moment.js用于日期时间格式化处理

参考文件

审核业务流程分析

审核状态流转

stateDiagram-v2
[*] --> 初始化
初始化 --> 加载数据: 组件创建
加载数据 --> 筛选处理: 应用过滤器
筛选处理 --> 显示列表: 数据就绪
显示列表 --> 查看详情: 点击查看
显示列表 --> 删除确认: 点击删除
查看详情 --> 显示列表: 关闭对话框
删除确认 --> 执行删除: 确认删除
执行删除 --> 刷新数据: 删除成功
执行删除 --> 显示列表: 删除取消
刷新数据 --> 显示列表: 数据更新

数据流控制

flowchart TD
A[用户操作] --> B[过滤器设置]
B --> C{筛选条件判断}
C -->|关键词搜索| D[调用/search接口]
C -->|类型筛选| E[调用/type接口]
C -->|用户筛选| F[调用/user接口]
C -->|默认条件| G[调用/all接口]

D --> H[数据加载]
E --> H
F --> H
G --> H

H --> I[客户端筛选]
I --> J[表格显示]
J --> K[用户交互]
K --> L{操作类型}
L -->|查看| M[详情对话框]
L -->|删除| N[删除确认]

M --> O[关闭返回]
N --> P{确认删除}
P -->|是| Q[调用删除接口]
P -->|否| O
Q --> R[刷新数据]
R --> J

AuditView组件详细分析

组件结构

classDiagram
class AuditView {
-loading: boolean
-deleting: boolean
-itemsPerPage: number
-tableSearch: string
-logs: Array
-filters: Object
-menus: Object
-detailDialog: boolean
-deleteDialog: boolean
-selectedLog: Object
-deleteTarget: Object
-snackbar: boolean
-snackbarText: string
-snackbarColor: string
-headers: Array
-actionTypeOptions: Array
+displayLogs() Array
+getActionTypeText(type) string
+formatDate(val) string
+truncate(text, len) string
+normalizeList(listStr) string
+applyFilters() Promise
+clearFilters() void
+reload() void
+fetchLogs() Promise
+openDetail(item) Promise
+confirmDelete(item) void
+deleteLog() Promise
}

核心方法分析

数据加载逻辑

// 数据加载方法 - 支持多种筛选方式
async fetchLogs() {
this.loading = true;
try {
let url = '/log/all';
let params = { skip: 0, limit: 100 };

if (this.filters.keyword) {
url = '/log/search';
params.keyword = this.filters.keyword;
} else if (this.filters.actionType) {
url = `/log/type/${encodeURIComponent(this.filters.actionType)}`;
} else if (this.filters.userId) {
url = `/log/user/${encodeURIComponent(this.filters.userId)}`;
}

const resp = await http.get(url, { params });
const data = Array.isArray(resp.data) ? resp.data : (resp.data && resp.data.items) || [];
this.logs = data;
} catch (err) {
// 错误处理逻辑
} finally {
this.loading = false;
}
}

参考代码AuditView.vue

客户端筛选计算属性

// 显示日志的计算属性 - 处理客户端筛选
displayLogs() {
let result = Array.isArray(this.logs) ? this.logs.slice() : [];

// 日期范围筛选(客户端)
if (this.filters.startDate) {
const start = moment(this.filters.startDate).startOf('day');
result = result.filter(it => moment(it.created_at).isSameOrAfter(start));
}
if (this.filters.endDate) {
const end = moment(this.filters.endDate).endOf('day');
result = result.filter(it => moment(it.created_at).isSameOrBefore(end));
}

return result;
}

参考代码AuditView.vue

API接口分析

接口调用序列

sequenceDiagram
participant User as 用户
participant AuditView as AuditView组件
participant HTTP as HTTP客户端
participant API as 后端API

User->>AuditView: 页面加载/刷新
AuditView->>HTTP: GET /log/all?skip=0&limit=100
HTTP->>API: 请求审计日志
API-->>HTTP: 返回日志数据
HTTP-->>AuditView: 响应数据
AuditView->>AuditView: 处理并显示数据

User->>AuditView: 应用筛选条件
AuditView->>HTTP: 根据条件调用对应接口
HTTP->>API: 筛选请求
API-->>HTTP: 筛选结果
HTTP-->>AuditView: 返回数据

User->>AuditView: 查看详情
AuditView->>HTTP: GET /log/detail/{log_id}
HTTP->>API: 请求详情
API-->>HTTP: 详情数据
HTTP-->>AuditView: 返回详情
AuditView->>User: 显示详情对话框

User->>AuditView: 删除日志
AuditView->>HTTP: DELETE /log/{log_id}
HTTP->>API: 删除请求
API-->>HTTP: 删除结果
HTTP-->>AuditView: 删除成功
AuditView->>AuditView: 刷新数据

支持的API接口

接口功能方法路径参数描述
获取详情GET/log/detail/{log_id}log_id获取单条日志详情
获取全部GET/log/allskip, limit获取所有日志
按类型筛选GET/log/type/{action_type}action_type, skip, limit按操作类型筛选
按用户筛选GET/log/user/{user_id}user_id, skip, limit按用户ID筛选
关键词搜索GET/log/searchkeyword, skip, limit按标题关键词搜索
删除日志DELETE/log/{log_id}log_id删除指定日志

参考文档api.md

审核状态管理

操作类型定义

系统支持13种操作类型,涵盖系统各个模块:

flowchart LR
A[操作类型] --> B[认证模块]
A --> C[用户模块]
A --> D[角色模块]
A --> E[调试模块]
A --> F[错误测试模块]
A --> G[作品单元模块]
A --> H[作品信息模块]
A --> I[图片基础设施模块]
A --> J[图片模块]
A --> K[工单模块]
A --> L[工单实体模块]
A --> M[微信模块]
A --> N[小程序模块]
A --> O[文章模块]

状态流转规则

  1. 初始化状态:组件创建时自动加载数据
  2. 筛选状态:支持多维度筛选,包括操作类型、用户ID、关键词、日期范围
  3. 查看状态:点击查看按钮进入详情模式
  4. 删除状态:删除操作需要二次确认,防止误操作
  5. 提示状态:操作结果通过snackbar提示用户

错误处理机制

异常处理流程

flowchart TD
A[API调用] --> B{调用成功?}
B -->|是| C[正常处理数据]
B -->|否| D[捕获异常]
D --> E[错误信息提取]
E --> F[用户提示]
F --> G[恢复界面状态]
C --> H[更新界面数据]

具体错误处理代码

try {
const resp = await http.get(url, { params });
// 正常处理逻辑
} catch (err) {
console.error('加载审计日志失败:', err);
this.snackbarText = '加载失败:' + (err && err.message ? err.message : '未知错误');
this.snackbarColor = 'error';
this.snackbar = true;
} finally {
this.loading = false;
}

参考代码AuditView.vue

性能优化考虑

数据加载策略

  1. 分页加载:默认限制100条记录,避免大数据量影响性能
  2. 客户端筛选:日期范围筛选在客户端处理,减少服务端压力
  3. 懒加载详情:详情数据按需加载,减少初始数据量

内存管理

  1. 数据清理:删除操作后及时清理相关引用
  2. 对话框管理:对话框关闭时释放资源
  3. 事件监听:合理管理事件监听器,避免内存泄漏

索引

审计管理系统通过AuditView组件实现了完整的审核流程管理,具备以下特点:

  1. 完整的审核功能:支持查看、筛选、删除等操作
  2. 灵活的状态管理:多维度筛选和状态流转控制
  3. 友好的用户界面:基于Vuetify的现代化UI设计
  4. 健壮的错误处理:完善的异常处理机制
  5. 良好的性能表现:合理的数据加载和内存管理策略

系统通过清晰的业务逻辑和状态流转,为邮轮穿舱件管理系统提供了可靠的审计追踪能力。

主要参考文件