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.

17 KiB

系统配置

模块编码system 端侧Web专属仅超级管理员 关联文档01-模块划分 §2.3 / 02-功能清单-超级管理员 §3 / 03-业务流转逻辑-超级管理员 §9 / 05-接口规范 §9.2 / 06-项目技术要求 §8.3~8.4 强制规范遵循 07-前端界面开发规范.md

功能概览

项目 说明
菜单名称 系统配置
子菜单 系统版本管理、缓存管理
功能编号 SA-S-01 ~ SA-S-02
权限编码前缀 system:version:* / system:cache:*

页面1系统版本管理页

页面编号SA-S-01-P01 端侧归属Web专属 页面路径/system/versions

界面布局

┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 系统配置 > 系统版本管理                                    │
├──────────────────────────────────────────────────────────────────┤
│ [当前版本信息卡片]                                                 │
│ ┌──────────────────────┐  ┌──────────────────────┐              │
│ │ 管理后台版本           │  │ 小程序版本             │              │
│ │ 当前版本v1.2.0       │  │ 当前版本v1.1.0       │              │
│ │ 最低兼容v1.0.0       │  │ 最低兼容v1.0.0       │              │
│ │ 发布日期2026-04-01   │  │ 发布日期2026-03-15   │              │
│ └──────────────────────┘  └──────────────────────┘              │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏]  [新增版本]                                              │
├──────────────────────────────────────────────────────────────────┤
│ [列表区]                                                          │
│ 序号 | 版本号 | 端侧 | 最低兼容版本 | 是否强制更新 | 发布日期 | 操作 │
│ 1    | v1.2.0 | Web   | v1.0.0      | 否           | 2026-04-01| 编辑│
│ 2    | v1.1.0 | 小程序 | v1.0.0      | 否           | 2026-03-15| 编辑│
│ 3    | v1.0.0 | 小程序 | v1.0.0      | 是           | 2026-01-01| —   │
├──────────────────────────────────────────────────────────────────┤
│ [分页]  共5条                                                     │
└──────────────────────────────────────────────────────────────────┘

查询条件

字段名 控件类型 必填 默认值 说明
无筛选条件,展示全部版本

列表字段

序号 字段名 列宽 支持排序 说明
1 序号 60px 自增
2 版本号 100px 语义化版本号
3 端侧 80px Web/小程序
4 最低兼容版本 120px 低于此版本需强制更新
5 是否强制更新 110px 是(红色)/否(绿色)
6 发布日期 120px 默认倒序
7 更新说明 200px 简述本次更新内容
8 操作 80px 编辑

操作按钮

按钮 权限编码 位置 显示条件 说明
新增版本 system:version:create 操作栏 始终 弹窗
编辑 system:version:update 行操作 始终 弹窗

表单字段(新增/编辑弹窗)

字段名 控件类型 必填 默认值 数据来源 校验规则
版本号 文本输入 自填 语义化版本格式(x.y.z)
端侧 下拉单选 固定选项 Web/小程序
最低兼容版本 文本输入 自填 语义化版本格式
是否强制更新 开关 强制更新时用户无法跳过
更新说明 多行文本 自填 最大500字

通知触发

触发操作 通知对象 通知方式 消息模板 文档来源
版本发布 小程序用户 小程序检测 下次启动时检测版本更新 03-小程序端 §10 / 06 §8.3

API端点

页面操作 API路径 方法 说明
列表查询 /api/v1/system/versions GET
新增 /api/v1/system/versions POST
编辑 /api/v1/system/versions/{id} PUT
获取最新版本 /api/v1/system/versions/latest GET 小程序启动时调用

交互流程要求

  1. 页面加载流程

    • 进入页面 → 并行调用:当前版本信息卡片数据 + 版本列表数据
    • 卡片数据优先渲染
  2. 操作流程

    • 新增版本:点击"新增版本"→ 弹出表单弹窗 → 填写版本信息 → 保存 → 刷新列表和卡片
    • 编辑:点击行"编辑"→ 弹出表单弹窗(回填数据)→ 修改 → 保存 → 刷新列表和卡片
  3. 弹窗交互

    • 新增/编辑共用一个 el-dialog 弹窗
    • 保存成功后弹窗关闭,列表刷新
  4. 异常处理

    • 版本号格式校验失败 → 字段下方红色提示
    • 版本号已存在 → 提示"该版本号已存在"
    • 新增版本后小程序端自动检测更新
  5. 权限控制交互

    • system:version:create → "新增版本"按钮不渲染
    • system:version:update → 行"编辑"按钮不渲染
  6. [H1]防重复请求(列表页)

    • 行内操作按钮点击后整行操作禁用 + loading态
    • 分页切换 abort上一请求后再发新请求
  7. [H2]超时与加载反馈(列表页)

    • 列表查询 timeout=15秒写操作(新增/编辑) timeout=30秒
    • 超时 → ElMessage.error("请求超时,请稍后重试") + 按钮恢复
    • 加载>2秒显示全局ElLoading
  8. [H3]操作确认机制

    • 版本发布无需额外确认(弹窗内已有保存按钮)
  9. [H8]操作结果反馈

    • 成功 ElMessage.success(2s) → silent刷新
    • 失败 ElMessage.error(0手动关闭)
  10. [H1]防重复请求(弹窗内保存按钮)

    • 保存按钮 :loading + disabledAPI返回后恢复
  11. [H2]超时与加载反馈(弹窗内提交)

    • 弹窗内提交 timeout=30秒
  12. [H4]脏数据检测(编辑模式弹窗)

    • 弹窗打开时记录快照
    • 关闭弹窗/点击取消时 isDirty 检测 → 确认提示"修改尚未保存,确定关闭吗?"
  13. [H8]操作结果反馈(弹窗)

    • 保存成功 → 关闭弹窗 → 刷新列表
    • 保存失败 → 弹窗保持打开,错误提示

组件规范

元素 组件 配置参数
版本信息卡片 el-card shadow="hover", :body-style="{padding:'20px'}"
当前版本号 div font-size=20px, font-weight=bold
版本列表 el-table stripe, border, v-loading
端侧标签 el-tag Web:type="primary", 小程序:type="success"
强制更新标签 el-tag 是:type="danger", 否:type="success"
新增/编辑弹窗 el-dialog width="500px", :close-on-click-modal=false
版本号输入 el-input placeholder="x.y.z格式", clearable
端侧下拉 el-select :options="[{label:'Web',value:'web'},{label:'小程序',value:'miniapp'}]"
强制更新开关 el-switch active-text="是", inactive-text="否"
更新说明 el-input type="textarea", :rows=4, maxlength=500, show-word-limit

校验规则

字段 规则 错误提示
版本号 必填, 语义化格式(/^\d+.\d+.\d+$/) "请输入版本号" / "版本号格式为x.y.z"
端侧 必填 "请选择端侧"
最低兼容版本 必填, 语义化格式 "请输入最低兼容版本" / "版本号格式为x.y.z"
更新说明 必填, 最大500字符 "请输入更新说明" / "更新说明不能超过500字符"

响应式布局

断点 布局调整
≥1280px桌面端 版本卡片一行两个;列表完整展示所有列
1024-1279pxPad横屏 版本卡片一行两个;"更新说明"列隐藏
768-1023pxPad竖屏 版本卡片一行一个(全宽);列表仅显示:序号、版本号、端侧、是否强制更新、操作

页面2缓存管理页

页面编号SA-S-02-P01 端侧归属Web专属 页面路径/system/cache

界面布局

┌──────────────────────────────────────────────────────────────────┐
│ [面包屑] 系统配置 > 缓存管理                                       │
├──────────────────────────────────────────────────────────────────┤
│ [缓存状态概览]                                                     │
│ ┌────────────────────────────────────────────────────────────┐   │
│ │ Redis状态● 已连接    内存使用128MB/512MB    连接数24    │   │
│ └────────────────────────────────────────────────────────────┘   │
├──────────────────────────────────────────────────────────────────┤
│ [缓存模块列表]                                                     │
│ 模块名称 | 缓存键前缀 | 缓存条数 | 最后更新时间 | 操作              │
│ 权限缓存 | perm:*     | 1,234   | 10:30:25    | [清理]            │
│ 字典缓存 | dict:*     | 56      | 09:00:00    | [清理]            │
│ 菜单缓存 | menu:*     | 120     | 09:00:00    | [清理]            │
│ 业务缓存 | biz:*      | 0       | —           | [清理]            │
├──────────────────────────────────────────────────────────────────┤
│ [操作栏]  [全部清理]                                              │
└──────────────────────────────────────────────────────────────────┘

操作按钮

按钮 权限编码 位置 显示条件 说明
清理(单模块) system:cache:update 行操作 始终 二次确认后清理指定模块缓存
全部清理 system:cache:update 操作栏 始终 二次确认后清理全部缓存

缓存模块说明

模块 缓存键前缀 过期策略 刷新机制 文档来源
权限缓存 perm:* 2小时TTL 权限变更时实时刷新Redis Pub/Sub 06 §5.3 / 03-超级管理员 §9
字典缓存 dict:* 24小时TTL 字典变更时手动/自动刷新 06 §5.3
菜单缓存 menu:* 24小时TTL 菜单变更时手动/自动刷新 06 §5.3
业务缓存 biz:* 按需懒加载 不缓存,实时查询 06 §5.3

通知触发

触发操作 通知对象 通知方式 消息模板 文档来源
缓存清理 在线用户 WebSocket推送 提示刷新页面 03-超级管理员 §9
权限缓存清理 在线用户 Redis Pub/Sub 刷新权限缓存 03-超级管理员 §9

API端点

页面操作 API路径 方法 说明
缓存状态 /api/v1/system/cache/status GET Redis连接状态+各模块缓存统计
清理单模块 /api/v1/system/cache/clear/{module} POST 清理指定模块缓存
全部清理 /api/v1/system/cache/clear-all POST 清理全部缓存

交互流程要求

  1. 页面加载流程

    • 进入页面 → 并行调用:缓存状态概览(GET /api/v1/system/cache/status+ 缓存模块列表
    • 概览数据优先渲染
  2. 操作流程

    • 清理单模块:点击行"清理"→ 二次确认("确认清理XX缓存清理后相关数据将从数据库重新加载")→ 调用API → 成功提示 → 刷新缓存状态
    • 全部清理:点击"全部清理"→ 二次确认("确认清理全部缓存?所有在线用户将收到刷新提示")→ 调用API → 成功提示 → 刷新缓存状态
  3. 缓存状态实时更新

    • 清理操作完成后自动刷新状态概览和模块列表
    • 支持手动刷新(页面顶部刷新按钮)
  4. 异常处理

    • Redis连接断开 → 状态概览显示"● 未连接"红色标识,清理按钮禁用
    • 清理失败 → 提示错误信息
  5. 权限控制交互

    • system:cache:update → 所有清理按钮不渲染
  6. [H1]防重复请求

    • 行内清理按钮点击后整行操作禁用 + loading态
    • "全部清理"按钮点击后 disabled + loading态API返回后恢复
  7. [H2]超时与加载反馈

    • 写操作(缓存清理) timeout=30秒
    • 超时 → ElMessage.error("请求超时,请稍后重试") + 按钮恢复
    • 加载>2秒显示全局ElLoading
  8. [H3]操作确认机制

    • 缓存清理ElMessageBox.confirm("确认清理XX缓存清理后相关数据将从数据库重新加载", { type: 'warning' })
    • 全部清理ElMessageBox.confirm("确认清理全部缓存?所有在线用户将收到刷新提示", { type: 'error' })
  9. [H8]操作结果反馈

    • 成功 ElMessage.success(2s) → silent刷新
    • 失败 ElMessage.error(0手动关闭)

组件规范

元素 组件 配置参数
Redis状态指示 el-badge 已连接:type="success", 未连接:type="danger"
内存使用 el-progress :percentage, :stroke-width=10, :color
缓存模块列表 el-table stripe, :show-header=true
缓存条数 el-statistic :value, 千分位格式化
清理按钮(行) el-button type="danger", link, size="small", icon="Delete"
全部清理按钮 el-button type="danger", icon="Delete", plain
刷新按钮 el-button icon="Refresh", circle

校验规则

无表单校验(操作类页面)

响应式布局

断点 布局调整
≥1280px桌面端 状态概览一行展示;缓存模块列表完整展示
1024-1279pxPad横屏 状态概览一行展示;"最后更新时间"列隐藏
768-1023pxPad竖屏 状态概览竖向堆叠;缓存模块列表仅显示:模块名称、缓存条数、操作

需求追溯

功能点编号 功能名称 文档来源 后续服务 关联功能
SA-S-01 系统版本管理 02-超级管理员 §3 / 03-超级管理员 §9 版本发布→小程序检测更新 小程序端版本更新提示(MP-C-05)
SA-S-02 缓存管理 02-超级管理员 §3 / 03-超级管理员 §9 清理缓存→通知在线用户刷新 权限管理(权限缓存清理) / 物业系统配置(字典缓存)

业务规则

  1. 版本更新策略小版本更新提示用户可选更新大版本更新低于最低兼容版本强制更新来源03-小程序端 §10 / 06 §8.3
  2. SDK依赖校验小程序启动时校验蓝牙SDK、微信SDK等关键依赖版本来源03-小程序端 §10
  3. 缓存自动清理系统启动时自动全量清理缓存权限变更时定向清理权限缓存来源03-超级管理员 §9 / 06 §8.4
  4. 缓存手动清理超级管理员可按模块清理缓存清理后通知在线用户刷新页面来源03-超级管理员 §9
  5. 权限缓存TTL降级Redis连接断开时权限缓存2小时TTL到期后自动刷新来源06 §3.1