Skip to content

[P1] form: no conditional show / required / readonly on fields — complex forms degenerate to flat soup #1300

Description

@xuyushun441-sys

来源: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: celrequiredIf: celreadonlyIf: cel
  • 表单引擎按当前 record 值计算,实时更新(不需重渲染)

M2:字段组 / 区段级别条件

  • fieldGroup 上能加同样表达式
  • 整个 group 折叠 / 展开 / 隐藏

M3:跨字段联动

  • A 改变值时,B 的可见性自动反应
  • 当 B 隐藏后,其值在保存时清空(可配置)

M4:与权限系统区分清楚

  • 「字段是否对当前用户可见」(profile / sharing)与「在当前业务条件下是否相关」(visibleIf)是两套,不要混

验收

  • spec + form engine 支持 visibleIf / requiredIf / readonlyIf
  • procurement 模板:service_period_months 按 category 条件出现
  • helpdesk 模板:waiting_customer 状态下所有字段只读
  • 缺陷库 gap Convert to monorepo with scoped packages #8 标记为已解决

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestpriority:p1High: required for production / M2

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions