You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

322 lines
17 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 操作日志
> 模块编码audit-log
> 端侧Web专属仅超级管理员
> 关联文档01-模块划分 §2.3 / 02-功能清单-超级管理员 §4 / 03-业务流转逻辑-超级管理员 §8 / 05-接口规范 §9.2 / 06-项目技术要求 §4.5
> 强制规范遵循 `07-前端界面开发规范.md`
## 功能概览
| 项目 | 说明 |
|------|------|
| 菜单名称 | 操作日志 |
| 子菜单 | 权限变更日志、账号操作日志 |
| 功能编号 | SA-L-01 ~ SA-L-02 |
| 权限编码前缀 | audit-log:permission:view / audit-log:list:* |
---
## 页面1权限变更日志页
**页面编号**SA-L-01-P01
**端侧归属**Web专属
**页面路径**/audit-log/permission
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 操作日志 > 权限变更日志 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 操作人[____] 操作类型[▼] 角色[____] 日期[起始]~[结束] [查询] [重置]│
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 序号 | 操作时间 | 操作人 | 操作类型 | 目标角色 | 变更摘要 | 操作 │
│ 1 | 14:00 | admin | 权限修改 | 巡检主管 | +2项 -1项 | 查看 │
│ 2 | 11:30 | admin | 角色创建 | 保洁主管 | 初始权限 | 查看 │
│ 3 | 09:15 | admin | 角色分配 | 医院查看 | 分配给5个账号| 查看│
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共120条 每页[20▼] < 1 2 3 ... 6 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 操作人 | 文本输入 | 否 | — | 模糊匹配 |
| 操作类型 | 下拉单选 | 否 | 全部 | 角色创建/权限修改/角色分配/角色移除 |
| 角色 | 文本输入 | 否 | — | 模糊匹配角色名称 |
| 日期范围 | 日期范围 | 否 | — | 操作时间范围 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 序号 | 60px | — | 自增 |
| 2 | 操作时间 | 150px | 是 | 默认倒序 |
| 3 | 操作人 | 100px | 否 | — |
| 4 | 操作类型 | 100px | 否 | 彩色标签区分 |
| 5 | 目标角色 | 120px | 否 | — |
| 6 | 变更摘要 | 150px | 否 | +N项 -M项 简述 |
| 7 | 操作 | 80px | — | 查看详情 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 查看详情 | audit-log:permission:view | 行操作 | 始终 | 弹窗展示变更前后对比 |
### 变更详情弹窗
```
┌──────────────────────────────────────────────────────────────────┐
│ 权限变更详情 [×] │
├──────────────────────────────────────────────────────────────────┤
│ 角色:巡检主管 │
│ 操作人:超级管理员(admin) │
│ 操作时间2026-04-16 14:00:00 │
│ 操作类型:权限修改 │
│ 操作IP192.168.1.100 │
├──────────────────────────────────────────────────────────────────┤
│ 变更对比: │
│ [+新增] 在线报修 → 工单详情 → 延期审批 → 审批 │
│ [+新增] 在线报修 → 工单列表 → 工单管理 → 导出 │
│ [-移除] 巡检管理 → 巡检计划 → 计划管理 → 删除 │
├──────────────────────────────────────────────────────────────────┤
│ [关闭] │
└──────────────────────────────────────────────────────────────────┘
```
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/audit-logs/permission | GET | 分页查询 |
| 详情查询 | /api/v1/audit-logs/permission/{id} | GET | 含变更前后对比 |
### 交互流程要求
1. **页面加载流程**
- 进入页面 → 调用 `GET /api/v1/audit-logs/permission` 加载列表(默认倒序)
- 并行加载操作类型下拉
- 列表为空时显示空状态
2. **查询交互流程**
- 填写条件 → 点击"查询"→ 调用API → 重置到第1页
- 日期范围最多查询90天
3. **行内操作流程**
- **查看详情**:点击"查看"→ 弹窗展示变更前后对比
- 新增权限绿色 `[+新增]` 标记,移除权限红色 `[-移除]` 标记
4. **异常处理**
- 日期范围超限 → 提示"查询时间范围不能超过90天"
- 详情加载失败 → 提示错误信息
5. **权限控制交互**
-`audit-log:permission:view` → 页面不可见
6. **[H1]防重复请求**(列表页)
- 查询按钮点击后 disabled + loading态API返回后恢复
- 行内"查看"按钮点击后整行操作禁用 + loading态
- 分页切换 abort上一请求后再发新请求
7. **[H2]超时与加载反馈**(列表页)
- 列表查询 timeout=15秒
- 超时 → ElMessage.error("请求超时,请稍后重试") + 按钮恢复
- 加载>2秒显示全局ElLoading
8. **[H8]操作结果反馈**
- 查询成功 → 正常渲染;查询失败 → ElMessage.error(0手动关闭)
9. **[H1]防重复请求**(详情弹窗)
- 详情查看:点击"查看"后该行按钮disabled弹窗加载完成后恢复
10. **[H2]超时与加载反馈**(详情弹窗)
- 详情查询 timeout=15秒
- 弹窗内 v-loading 展示加载态
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 日期范围选择 | el-date-picker | type="daterange", value-format="YYYY-MM-DD" |
| 操作类型标签 | el-tag | 角色创建:type="success", 权限修改:type="warning", 角色分配:type="primary", 角色移除:type="danger" |
| 变更摘要 | span | [+N项] color=green, [-M项] color=red |
| 详情弹窗 | el-dialog | width="650px" |
| 新增权限 | div | color=var(--el-color-success) |
| 移除权限 | div | color=var(--el-color-danger) |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 日期范围 | 最多90天 | "查询时间范围不能超过90天" |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px桌面端 | 查询条件一行排列;列表完整展示所有列 |
| 1024-1279pxPad横屏 | 查询条件两行排列;"目标角色"列隐藏 |
| 768-1023pxPad竖屏 | 查询条件两行排列;列表仅显示:序号、操作时间、操作人、操作类型、操作 |
---
## 页面2账号操作日志页
**页面编号**SA-L-02-P01
**端侧归属**Web专属
**页面路径**/audit-log/account
### 界面布局
```
┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 操作日志 > 账号操作日志 │
├──────────────────────────────────────────────────────────────────┤
│ [查询条件区] │
│ 操作人[____] 操作类型[▼] 账号类型[▼] 日期[起始]~[结束] [查询] [重置]│
├──────────────────────────────────────────────────────────────────┤
│ [列表区] │
│ 序号 | 操作时间 | 操作人 | 操作类型 | 目标账号 | 账号类型 | 详情 │
│ 1 | 15:00 | admin | 账号创建 | hosp01 | 医院 | 查看 │
│ 2 | 14:30 | admin | 账号续期 | prop01 | 物业 | 查看 │
│ 3 | 10:00 | admin | 账号禁用 | prop02 | 物业 | 查看 │
├──────────────────────────────────────────────────────────────────┤
│ [分页] 共85条 每页[20▼] < 1 2 3 4 5 > │
└──────────────────────────────────────────────────────────────────┘
```
### 查询条件
| 字段名 | 控件类型 | 必填 | 默认值 | 说明 |
|--------|----------|------|--------|------|
| 操作人 | 文本输入 | 否 | — | 模糊匹配 |
| 操作类型 | 下拉单选 | 否 | 全部 | 创建/编辑/启用/禁用/续期/重置密码 |
| 账号类型 | 下拉单选 | 否 | 全部 | 医院/物业管理员 |
| 日期范围 | 日期范围 | 否 | — | 操作时间范围 |
### 列表字段
| 序号 | 字段名 | 列宽 | 支持排序 | 说明 |
|------|--------|------|----------|------|
| 1 | 序号 | 60px | — | 自增 |
| 2 | 操作时间 | 150px | 是 | 默认倒序 |
| 3 | 操作人 | 100px | 否 | — |
| 4 | 操作类型 | 100px | 否 | 彩色标签 |
| 5 | 目标账号 | 120px | 否 | — |
| 6 | 账号类型 | 90px | 否 | 医院/物业管理员 |
| 7 | 绑定单位 | 150px | 否 | 医院或物业公司名称 |
| 8 | 详情 | 80px | — | 查看 |
### 操作按钮
| 按钮 | 权限编码 | 位置 | 显示条件 | 说明 |
|------|----------|------|----------|------|
| 查看详情 | audit-log:list:view | 行操作 | 始终 | 弹窗展示完整操作信息 |
### 操作详情弹窗
```
┌──────────────────────────────────────────────────────────────────┐
│ 账号操作详情 [×] │
├──────────────────────────────────────────────────────────────────┤
│ 操作人:超级管理员(admin) │
│ 操作时间2026-04-16 15:00:00 │
│ 操作IP192.168.1.100 │
│ 操作类型:账号创建 │
│ 目标账号hosp01 │
│ 账号类型:医院账号 │
│ 绑定医院XX医院 │
├──────────────────────────────────────────────────────────────────┤
│ 变更前数据:(无,新增操作) │
│ 变更后数据: │
│ 登录账号hosp01 │
│ 绑定医院XX医院 │
│ 有效期至2027-04-16 │
│ 分配角色:医院查看模板 │
├──────────────────────────────────────────────────────────────────┤
│ [关闭] │
└──────────────────────────────────────────────────────────────────┘
```
### API端点
| 页面操作 | API路径 | 方法 | 说明 |
|----------|---------|------|------|
| 列表查询 | /api/v1/audit-logs/account | GET | 分页查询 |
| 详情查询 | /api/v1/audit-logs/account/{id} | GET | 含变更前后数据 |
### 交互流程要求
1. **页面加载流程**:进入页面 → 调用列表API加载默认倒序→ 并行加载操作类型和账号类型下拉
2. **查询交互**:填写条件 → 点击"查询"→ API调用 → 重置到第1页日期范围最多90天
3. **行内操作**:点击"查看"→ 弹窗展示完整操作信息操作人、时间、IP、变更前后数据对比
4. **异常处理**:日期超限提示;详情加载失败提示错误
5. **权限控制**:无 `audit-log:list:view` → 页面不可见
6. **[H1]防重复请求**(列表页)
- 查询按钮点击后 disabled + loading态API返回后恢复
- 行内"查看"按钮点击后整行操作禁用 + loading态
- 分页切换 abort上一请求后再发新请求
7. **[H2]超时与加载反馈**(列表页)
- 列表查询 timeout=15秒
- 超时 → ElMessage.error("请求超时,请稍后重试") + 按钮恢复
- 加载>2秒显示全局ElLoading
8. **[H8]操作结果反馈**
- 查询成功 → 正常渲染;查询失败 → ElMessage.error(0手动关闭)
9. **[H1]防重复请求**(详情弹窗)
- 详情查看:点击"查看"后该行按钮disabled弹窗加载完成后恢复
10. **[H2]超时与加载反馈**(详情弹窗)
- 详情查询 timeout=15秒
- 弹窗内 v-loading 展示加载态
### 组件规范
| 元素 | 组件 | 配置参数 |
|------|------|----------|
| 日期范围选择 | el-date-picker | type="daterange", value-format="YYYY-MM-DD" |
| 操作类型标签 | el-tag | 创建:type="success", 编辑:type="primary", 启用:type="success", 禁用:type="danger", 续期:type="warning", 重置密码:type="info" |
| 详情弹窗 | el-dialog | width="600px" |
| 变更前数据 | el-descriptions | title="变更前", :column=1, border |
| 变更后数据 | el-descriptions | title="变更后", :column=1, border |
### 校验规则
| 字段 | 规则 | 错误提示 |
|------|------|----------|
| 日期范围 | 最多90天 | "查询时间范围不能超过90天" |
### 响应式布局
| 断点 | 布局调整 |
|------|----------|
| ≥1280px | 查询条件一行;列表完整展示 |
| 1024-1279px | 查询条件两行;"绑定单位"列隐藏 |
| 768-1023px | 查询条件两行;列表仅显示:序号、操作时间、操作人、操作类型、详情 |
---
## 需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| SA-L-01 | 权限变更日志 | 02-超级管理员 §4 / 03-超级管理员 §8.2 / 01 §8.5 | — | 权限管理(变更时自动记录) |
| SA-L-02 | 账号操作日志 | 02-超级管理员 §4 / 03-超级管理员 §8.1 | — | 账号管理(操作时自动记录) |
## 业务规则
1. **日志记录范围**:权限管理(角色创建/修改/删除、权限分配/变更)、账号管理(创建/启停/续期/有效期修改)、系统管理(配置变更/缓存清理/版本管理来源03-超级管理员 §8.1
2. **权限审计日志特殊展示**:额外展示变更前后权限对比,用[+新增][-移除]标记来源03-超级管理员 §8.2
3. **日志记录内容**操作人、时间、IP、模块、操作类型、变更前后数据快照来源06 §4.5
4. **日志保留期限**至少保留1年支持导出来源06 §4.5
5. **自动记录**所有写操作通过AOP切面统一记录业务代码无感知来源06 §4.5
6. **超管仅查看系统数据**:超管操作日志仅涉及账号/权限/系统配置相关操作不包含任何业务数据来源01 §1.3