字典、树形结构与扩展字段
约 875 字大约 3 分钟
2026-03-10
字典服务管理平台的分类与选项。DictInfo 定义一类字典,DictDetail 保存具体选项;扩展字段可承载显示颜色等轻量元数据,不能代替独立业务模型和权限表。
分类和明细
| 对象 | 主要字段 |
|---|---|
| DictInfo | code、name、group、desc、structType、expand |
| DictDetail | dictCode、label、value、sort、status、parentID、isLeaf、idPath、expand |
分类 code 使用稳定业务编码。选项显示名称可以改,已被业务保存的 value 变更需要迁移兼容,不能只修改字典后让历史数据失去含义。
structType 为 1 列表、2 树,创建后不可随意改;树明细的父子、路径与叶子语义由服务维护,不能在前端手工拼出一套不同路径。
扩展定义与值
当前 Proto/API 中两层 expand 都是 map<string,string>:
分类中的说明定义:
{"color":"颜色","icon":"图标"}某个选项的实际扩展值:
{"color":"green","icon":"check"}键应稳定、值为字符串。不要直接提交嵌套 JSON 对象、布尔或数字来冒充 map<string,string>;需要复杂配置时另定义业务合同。
平台管理操作
在 platform-manage 的字典管理中:
- 创建分类,填写稳定编码、名称和列表/树结构类型。
- 在分类的扩展字段 JSON 编辑器填写说明定义。
- 打开明细,创建 label/value,并填写选项自身 expand 值。
- 保存后重新读取分类和明细,确认值类型和展示一致。
- 禁用选项后验证业务表单与历史详情的显示策略。
当前管理端使用 JSON 编辑器维护 expand。历史文章描述的自动生成 ExpandInput 表单属于设计目标,不能当作现有通用组件使用。需要动态编辑体验的页面,可以按分类说明生成输入框,再组装成同一 map 合同。
页面接入
平台前端使用生成的字典客户端和现有共享字典能力,避免每个选项组件重复发请求。按 dictCode 查询,列表和树分别采用对应加载方式;详情需父级/子级时使用接口已有选项。
业务状态中持久保存 value,显示时映射 label;未知 value 或已禁用的历史选项仍应可识别,不把原始值静默置空。颜色、图标等扩展值只在允许范围内映射,不能当作任意 HTML 或脚本执行。
导入、导出与更新
字典服务提供分类/明细 CRUD、批量创建及导入导出。平台预置字典通过服务已有启动种子同步,使用稳定 code/value 和幂等策略,保留企业或用户允许编辑的数据。
导入前检查结构类型、重复键、父级关系和扩展字段类型;不是将整个生产字典表覆盖到新环境。种子或合同变化按数据库迁移及SDK 维护交付。
验证
验证列表字典、树形父子、扩展保存/回显、未知值、禁用项、重复 value、导入重复执行及权限。新增动态表单时额外验证缺失定义、额外键和字符串往返,不能用 UI 展示成功替代后端实际存储校验。
更新日志
2026/10/16 19:46
查看所有更新日志
b3b4d-docs(平台开发): 恢复有效专题并更新当前实现示例于
