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
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 | 小程序启动时调用 |
交互流程要求
-
页面加载流程
- 进入页面 → 并行调用:当前版本信息卡片数据 + 版本列表数据
- 卡片数据优先渲染
-
操作流程
- 新增版本:点击"新增版本"→ 弹出表单弹窗 → 填写版本信息 → 保存 → 刷新列表和卡片
- 编辑:点击行"编辑"→ 弹出表单弹窗(回填数据)→ 修改 → 保存 → 刷新列表和卡片
-
弹窗交互
- 新增/编辑共用一个
el-dialog弹窗 - 保存成功后弹窗关闭,列表刷新
- 新增/编辑共用一个
-
异常处理
- 版本号格式校验失败 → 字段下方红色提示
- 版本号已存在 → 提示"该版本号已存在"
- 新增版本后小程序端自动检测更新
-
权限控制交互
- 无
system:version:create→ "新增版本"按钮不渲染 - 无
system:version:update→ 行"编辑"按钮不渲染
- 无
-
[H1]防重复请求(列表页)
- 行内操作按钮点击后整行操作禁用 + loading态
- 分页切换 abort上一请求后再发新请求
-
[H2]超时与加载反馈(列表页)
- 列表查询 timeout=15秒;写操作(新增/编辑) timeout=30秒
- 超时 → ElMessage.error("请求超时,请稍后重试") + 按钮恢复
- 加载>2秒显示全局ElLoading
-
[H3]操作确认机制
- 版本发布无需额外确认(弹窗内已有保存按钮)
-
[H8]操作结果反馈
- 成功 ElMessage.success(2s) → silent刷新
- 失败 ElMessage.error(0手动关闭)
-
[H1]防重复请求(弹窗内保存按钮)
- 保存按钮 :loading + disabled,API返回后恢复
-
[H2]超时与加载反馈(弹窗内提交)
- 弹窗内提交 timeout=30秒
-
[H4]脏数据检测(编辑模式弹窗)
- 弹窗打开时记录快照
- 关闭弹窗/点击取消时 isDirty 检测 → 确认提示"修改尚未保存,确定关闭吗?"
-
[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-1279px(Pad横屏) | 版本卡片一行两个;"更新说明"列隐藏 |
| 768-1023px(Pad竖屏) | 版本卡片一行一个(全宽);列表仅显示:序号、版本号、端侧、是否强制更新、操作 |
页面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 | 清理全部缓存 |
交互流程要求
-
页面加载流程
- 进入页面 → 并行调用:缓存状态概览(
GET /api/v1/system/cache/status)+ 缓存模块列表 - 概览数据优先渲染
- 进入页面 → 并行调用:缓存状态概览(
-
操作流程
- 清理单模块:点击行"清理"→ 二次确认("确认清理XX缓存?清理后相关数据将从数据库重新加载")→ 调用API → 成功提示 → 刷新缓存状态
- 全部清理:点击"全部清理"→ 二次确认("确认清理全部缓存?所有在线用户将收到刷新提示")→ 调用API → 成功提示 → 刷新缓存状态
-
缓存状态实时更新
- 清理操作完成后自动刷新状态概览和模块列表
- 支持手动刷新(页面顶部刷新按钮)
-
异常处理
- Redis连接断开 → 状态概览显示"● 未连接"红色标识,清理按钮禁用
- 清理失败 → 提示错误信息
-
权限控制交互
- 无
system:cache:update→ 所有清理按钮不渲染
- 无
-
[H1]防重复请求
- 行内清理按钮点击后整行操作禁用 + loading态
- "全部清理"按钮点击后 disabled + loading态,API返回后恢复
-
[H2]超时与加载反馈
- 写操作(缓存清理) timeout=30秒
- 超时 → ElMessage.error("请求超时,请稍后重试") + 按钮恢复
- 加载>2秒显示全局ElLoading
-
[H3]操作确认机制
- 缓存清理:ElMessageBox.confirm("确认清理XX缓存?清理后相关数据将从数据库重新加载", { type: 'warning' })
- 全部清理:ElMessageBox.confirm("确认清理全部缓存?所有在线用户将收到刷新提示", { type: 'error' })
-
[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-1279px(Pad横屏) | 状态概览一行展示;"最后更新时间"列隐藏 |
| 768-1023px(Pad竖屏) | 状态概览竖向堆叠;缓存模块列表仅显示:模块名称、缓存条数、操作 |
需求追溯
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|---|---|---|---|---|
| SA-S-01 | 系统版本管理 | 02-超级管理员 §3 / 03-超级管理员 §9 | 版本发布→小程序检测更新 | 小程序端版本更新提示(MP-C-05) |
| SA-S-02 | 缓存管理 | 02-超级管理员 §3 / 03-超级管理员 §9 | 清理缓存→通知在线用户刷新 | 权限管理(权限缓存清理) / 物业系统配置(字典缓存) |
业务规则
- 版本更新策略:小版本更新提示用户可选更新,大版本更新(低于最低兼容版本)强制更新(来源:03-小程序端 §10 / 06 §8.3)
- SDK依赖校验:小程序启动时校验蓝牙SDK、微信SDK等关键依赖版本(来源:03-小程序端 §10)
- 缓存自动清理:系统启动时自动全量清理缓存,权限变更时定向清理权限缓存(来源:03-超级管理员 §9 / 06 §8.4)
- 缓存手动清理:超级管理员可按模块清理缓存,清理后通知在线用户刷新页面(来源:03-超级管理员 §9)
- 权限缓存TTL降级:Redis连接断开时,权限缓存2小时TTL到期后自动刷新(来源:06 §3.1)