字典拓展功能
约 757 字大约 3 分钟
2026-02-03
1. 背景
当前字典管理功能中,字典项(DictDetail)的自定义字段(原 body 字段)以 JSON 字符串形式展示和编辑,对普通用户不够友好,且容易出错。 为了提升用户体验,需要将字典信息的自定义字段定义(Metadata)与字典项的具体值(Value)编辑分离,实现动态表单渲染。
2. 需求描述
2.1 字典信息管理 (DictInfo)
在字典信息管理界面(新增/编辑)中,对原 body 字段进行改造:
- 字段重命名: 将字段在前端 Label 显示为 "拓展字典定义"。
- 输入格式: 保持 JSON 格式输入,用于定义该字典类型下所有字典项(DictDetail)所拥有的额外字段结构。
- 定义规范:
- 格式: Key-Value 对的 JSON 对象。
- Key: 字典项中存储的字段名 (英文)。
- Value: 字典项编辑时显示的字段标签 (中文/描述)。
- 示例:
{"color": "颜色", "size": "尺寸"}。
- 交互:
- 使用多行文本框 (Textarea)。
- Placeholder 提示:
{"key": "字段描述"}。
2.2 字典详情管理 (DictDetail)
在字典详情(字典项)管理界面(新增/编辑)中,根据所属字典信息的定义动态展示输入框:
- 字段重命名: 将字段在前端 Label 显示为 "拓展字段"。
- 动态渲染:
- 不再直接显示 JSON 文本框。
- 系统根据当前字典项所属
dictCode查询对应的DictInfo。 - 解析
DictInfo中的 "拓展字典定义"。 - 为定义中的每一个 Key 生成一个对应的输入框。
- Label: 定义中的 Value (如 "颜色")。
- Input: 用户输入具体的值 (如 "红色")。
- 数据存取:
- 前端将各输入框的值组装成 JSON 对象 (如
{"color": "红色", "size": "XL"})。 - 发送给后端存储于
expand字段中。 - 回显时,将
expand字段的 JSON 解析并填充到各输入框中。
- 前端将各输入框的值组装成 JSON 对象 (如
3. 数据结构变更
3.1 后端 (Backend)
- Proto 定义:
DictInfo和DictDetail中的body字段修改为map<string, string> expand(或保持 string 但逻辑上作为 map 处理,根据实际实现调整)。- 注: 目前已调整为
expandmap<string,string>。
- 注: 目前已调整为
- 数据库: 对应字段存储 JSON 字符串。
- API: 接口出入参需支持
expand字段。
3.2 前端 (Frontend)
- Model:
DictInfo和DictDetail增加expand字段,类型为Record<string, string>。 - Form 组件:
DictInfo: 使用Input(Textarea) 组件编辑expand定义。DictDetail: 开发专用组件ExpandInput,负责获取定义并渲染动态表单。
4. 验收标准
- 定义阶段: 在字典信息中输入
{"test": "测试字段"}并保存成功。 - 使用阶段:
- 进入该字典的字典项列表,点击新增。
- 弹窗中应出现 "测试字段" 的输入框。
- 输入 "值123" 并保存。
- 回显阶段:
- 编辑刚才新增的字典项。
- "测试字段" 输入框中应显示 "值123"。
- 展示阶段: 列表页 "扩展数据" 列应正确展示 JSON 数据或格式化后的数据。
更新日志
2026/1/25 22:07
查看所有更新日志
4d225-docs: 新增字典拓展功能需求文档和开源协议对照文档于
