liuyun 8743e68451 chore: archive dict-driven-enums change + sync specs to main specs
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-11 14:44:56 +08:00

2.3 KiB
Raw Blame History

Dictionary Rendering Specification

Purpose

定义前端字典驱动渲染机制:登录后缓存全部启用字典,组件按字典 code 声明下拉/标签,页面不再硬编码枚举中文映射,且字典管理页对内置项施加保护交互。

Requirements

Requirement: 字典缓存

前端 SHALL 在登录后一次性拉取全部启用字典(GET /dicts)并缓存于全局字典 store,登录失效时清空。

Scenario: 登录后缓存

  • WHEN 用户登录进入后台
  • THEN 前端拉取并缓存全部启用字典

Scenario: 登出清空

  • WHEN 用户登出
  • THEN 字典缓存被清空

Requirement: useDict Hook

前端 SHALL 提供 useDict(dictCode) Hook,返回该字典类型的响应式字典项数组(label/value/color_type/sort)。

Scenario: 读取字典项

  • WHEN 组件调用 useDict('common_status')
  • THEN 返回 启用(enabled)/停用(disabled) 等字典项

Requirement: 组件字典 code 声明

JSON Schema 字段 SHALL 支持 dictCode 声明:ty-form / ty-search-form 的 select/enum 字段用 dictCode 自动解析下拉选项(label/value);ty-table 列用 dictCode 自动渲染标签(按 color_type 着色)。

Scenario: 下拉按字典渲染

  • WHEN 搜索/表单字段声明 dictCode='resource_type'
  • THEN 下拉选项按字典项渲染为 菜单/按钮/接口

Scenario: 表格标签按字典渲染

  • WHEN 表格列声明 dictCode='common_status'
  • THEN 单元格按字典项渲染启用/停用标签并按 color_type 着色

Requirement: 字典管理保护交互

字典管理页 SHALL 对内置类型/项展示「内置」标记,并禁用内置项的 value 编辑与删除(仅 label/排序/颜色可编辑)。

Scenario: 内置项 value 只读

  • WHEN 管理员在字典管理页编辑内置字典项
  • THEN value 输入框禁用,label/排序/颜色可编辑,且不提供删除入口

Requirement: 字典化渲染生效

各页面枚举字段 SHALL 按字典渲染:修改某字典项的 label 或 color_type 后,引用该字典的页面 SHALL 刷新后按新 label/颜色展示。

Scenario: 改 label 全局生效

  • WHEN 管理员把 common_status 中 enabled 的 label 由「启用」改为「可用」
  • THEN 所有引用 common_status 的页面(租户/角色/资源/组织等)刷新后展示「可用」