⚙️ 系统配置

以 Key-Value 形式管理所有系统配置项,支持查看、编辑、新增、删除配置。

页面结构

  • 顶部按钮:新增配置
  • 配置卡片列表:每项配置一个卡片,显示 key 名 + value(可复制)
  • 每卡片操作:编辑(内联)/ 删除
  • 新增弹窗:输入 key / value(支持JSON)/ 描述

触发时机详解

1. 页面加载 → GET /api/admin/system-config

触发条件:进入系统配置页面时,一次性加载所有配置项
GET /api/admin/system-config
✅ 页面加载时触发(仅此一次)

响应:

{
  "email_smtp": { "host": "smtp.example.com", "port": 587, ... },
  "email_notification_types": { "user_register": false, ... },
  ...
}

2. 点击「编辑」→ 原地变为 textarea → blur 时触发 PUT

触发条件:点击配置项的"编辑"按钮 → 该项 value 变为 textarea → 输入后离开焦点(onBlur)→ 自动提交 PUT
PUT /api/admin/system-config/:key
✅ onBlur 时自动触发(无需确认按钮)
参数类型必填说明
valuestring|object必填配置值(对象自动 JSON.stringify,字符串原样存储)

响应: {"success": true}

3. 点击「删除」→ PUT value 为空字符串

触发条件:点击配置项的"删除"按钮 → confirm() 确认 → PUT /api/admin/system-config/:key value=""
PUT /api/admin/system-config/:key
✅ 确认后触发,将 value 置为空字符串
参数类型必填说明
valuestring必填空字符串(删除效果)

响应: {"success": true}

4. 点击「新增配置」→ 弹出 Modal → 填写后 PUT

触发条件:点击"新增配置"按钮 → 弹出 Modal → 填写 key + value → 点击"保存"
PUT /api/admin/system-config/:key
✅ 点击"保存"按钮触发(key 不存在则插入,存在则更新)
参数类型必填说明
valuestring|object必填配置值(尝试 JSON.parse,失败则存为字符串)

响应: {"success": true}

5. 前端校验(无需请求)

触发条件:新增 Modal 中 key 为空 → notify() 提示"配置项名称不能为空"(不提交请求)