来源:docs/PLATFORM_GAPS_FROM_TEMPLATES.md 第 8 条(P1)。
现象
表单字段没有条件显示 / 条件必填 / 条件只读 机制。所有字段一律:
- 一直展示(即便对当前 state 无意义)
required 是静态布尔readonly 也是静态布尔
复杂业务表单只能堆字段,看上去像一锅粥。
复现
procurement_request 表单:
- 当
category = 'service' 时应必填 service_period_months,否则隐藏 - 当
status = 'closed' 时所有字段只读 - 当
amount > 100000 时必填 justification
以上需求今天只能靠加 validation flow + 多个 view 切换实现,UI 没有原生支持。
建议范围
M1:声明式字段条件
- spec:每个字段可加
visibleIf: cel、requiredIf: cel、readonlyIf: cel - 表单引擎按当前 record 值计算,实时更新(不需重渲染)
M2:字段组 / 区段级别条件
fieldGroup 上能加同样表达式- 整个 group 折叠 / 展开 / 隐藏
M3:跨字段联动
- A 改变值时,B 的可见性自动反应
- 当 B 隐藏后,其值在保存时清空(可配置)
M4:与权限系统区分清楚
- 「字段是否对当前用户可见」(profile / sharing)与「在当前业务条件下是否相关」(visibleIf)是两套,不要混
验收
现象
表单字段没有条件显示 / 条件必填 / 条件只读 机制。所有字段一律:
required是静态布尔readonly也是静态布尔复杂业务表单只能堆字段,看上去像一锅粥。
复现
procurement_request表单:category = 'service'时应必填service_period_months,否则隐藏status = 'closed'时所有字段只读amount > 100000时必填justification以上需求今天只能靠加 validation flow + 多个 view 切换实现,UI 没有原生支持。
建议范围
M1:声明式字段条件
visibleIf: cel、requiredIf: cel、readonlyIf: celM2:字段组 / 区段级别条件
fieldGroup上能加同样表达式M3:跨字段联动
M4:与权限系统区分清楚
验收
procurement模板:service_period_months 按 category 条件出现helpdesk模板:waiting_customer 状态下所有字段只读