⚙️ 系统配置
以 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 时自动触发(无需确认按钮)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | string|object | 必填 | 配置值(对象自动 JSON.stringify,字符串原样存储) |
响应: {"success": true}
3. 点击「删除」→ PUT value 为空字符串
触发条件:点击配置项的"删除"按钮 → confirm() 确认 → PUT /api/admin/system-config/:key value=""
PUT
/api/admin/system-config/:key
✅ 确认后触发,将 value 置为空字符串
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | string | 必填 | 空字符串(删除效果) |
响应: {"success": true}
4. 点击「新增配置」→ 弹出 Modal → 填写后 PUT
触发条件:点击"新增配置"按钮 → 弹出 Modal → 填写 key + value → 点击"保存"
PUT
/api/admin/system-config/:key
✅ 点击"保存"按钮触发(key 不存在则插入,存在则更新)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
value | string|object | 必填 | 配置值(尝试 JSON.parse,失败则存为字符串) |
响应: {"success": true}
5. 前端校验(无需请求)
触发条件:新增 Modal 中 key 为空 → notify() 提示"配置项名称不能为空"(不提交请求)