# 展示、编辑与表单规则 > 当任务涉及展示与编辑切换、表单、行内编辑、批量工作表或选择流程时读取;纯浏览结构由列表与详情规则负责。 ## 展示态与编辑态 资源列表和只读详情使用文字、资源身份、图片和状态组件。表单控件、上传区及保存操作只在用户明确开始修改、选择,或进入以批量配置为核心的工作表后出现。 禁止: - 用只读或禁用的表单控件展示普通信息; - 让资源列表、卡片和只读详情默认处于编辑态; - 为每个字段长期显示选择器、保存按钮或第二排操作; - 同时显示字段值和负责修改该值的完整控件; - 把多个字段的编辑器塞进资源列表组件。 ## 行内编辑门槛 普通资源列表只有同时满足以下条件才使用行内编辑: - 高频修改; - 只影响一个字段; - 输入短且验证简单; - 不依赖其他字段; - 结果可立即理解; - 失败或撤销不影响其他步骤。 不满足任一条件时,从行末进入单行编辑器、工作流弹窗或详情页。一次只让正在编辑的区域进入编辑态。 ## 表单克制 表单是完成一次数据提交的输入结构,不是为了显得完整而增加的工作流。 - 只收集完成当前任务必需且无法可靠获得的数据。 - 系统已经知道、上一步已经提供、能够继承或可靠推导的信息直接带入;只有字段属于当前任务对象且当前表单负责修改时才允许编辑,否则展示来源并使用负责维护这份数据的页面或共享编辑器修改。 - 相关字段使用一个清楚的提交边界;禁止逐字段编辑和逐字段保存。 - 简单任务不拆成多步骤表单;高级设置仅在影响当前任务且用户主动需要时展开。 - 不默认增加自动保存、草稿、重置、预览、步骤条、字符计数或第二套确认。只有任务状态、错误代价或字段依赖明确需要时才增加。 - 优先使用输入约束、候选范围和合理默认值防止无效输入,不用更多操作步骤代替防错。 - 错误在可修正的位置说明,提交失败保留已输入内容,不清空表单或要求重新开始。 表单复杂度只由字段依赖、错误代价和提交边界决定,不由已有数据库字段数量决定。 ## 可编辑工作表 当前任务本身是连续配置多个同类任务时,可以让多行持续处于编辑态,但必须同时满足: - 行代表同一种任务对象,字段和保存语义一致; - 用户需要跨行比较并连续填写相同字段; - 修改即时生效或拥有统一提交边界,不要求每行重复保存; - 单元格只放当前阶段的高频字段,复杂依赖、完整预览和高级设置进入单行编辑器; - 控件高度、主次信息、状态位置和操作位置在所有行保持一致; - 横向滚动只发生在表格容器内,关键身份列和操作列保持可见。 不要因为页面里出现多个输入框就判定交互错误。先判断它是资源列表,还是用户明确进入的批量工作台。 ## 组件分工 | 当前任务 | 使用组件 | | --- | --- | | 识别和比较资源 | 资源身份、图片、文字、状态 | | 选择资源 | 展示当前值的触发器 + 按需打开的资源选择器 | | 修改单个简单字段 | 明确触发的局部编辑器 | | 修改多个相关字段 | 表单弹窗、单行编辑器或详情编辑模式 | | 浏览详情 | 展示组件;提供一个明确的“编辑”入口 | 资源列表中的选择器关闭后恢复为资源身份展示;可编辑工作表的选择触发器可以持续可见,但展开选项仍按需出现。 ## 数据归属 先确定字段属于哪个业务对象,再决定编辑入口: - 负责维护这份数据的页面或共享编辑器负责修改完整数据; - 使用这份数据的页面默认展示来源对象和当前值; - 使用这份数据的页面可以选择本次任务需要的子集,但不得复制来源对象的完整编辑表单; - 需要修改来源数据时,打开同一个共享编辑器或前往负责维护这份数据的页面; - 返回原页面后保留当前位置、任务数据和最新值。 禁止在多个页面分别维护同一字段的编辑逻辑、校验和保存入口。 ## 选择与候选 - 存在明确默认选择时,先按 [资源识别规则](resource-recognition-contract.md#已选结果) 展示当前选择,通过“更改选择”按需打开选择器;展开候选后隐藏只读摘要,禁止同时重复显示同一批对象。 - 只有“比较并选择”是当前主要任务时,才默认展开选项列表。 - 候选集合默认用于识别、比较和选择,不把每个候选渲染成完整表单。 - 选择候选与编辑候选是两个状态;一次只打开一个候选编辑器。 - 批量接受无需修改的候选,不强迫用户逐个进入编辑。 ## 删除重复操作 - 选择结果已经即时生效时,不再要求额外保存。 - 存在显式保存时,修改只提交一次;不要再增加同义确认。 - 可撤销的普通操作不增加确认弹窗。 - 危险或不可恢复操作只确认一次。 不得为同一次决定增加多个同义确认步骤。只有动作分别改变不同业务状态时才能同时存在。 跨步骤数据带入、返回位置和原对象更新统一遵循 [数据与操作范围规则](scope-and-state-integrity-contract.md#流程连续性)。 ## 审查 - 用户尚未表达修改意图时,为什么会看到表单控件? - 这个控件是在展示值,还是确实允许当前步骤修改值? - 能否用一次点击替代“选择 → 确认 → 保存”? - 同一动作是否同时存在于卡片、单元格、页脚和弹窗? - 是否展示或要求填写了系统已经知道、能够继承或可靠推导的信息? - 是否因为“可能有用”增加了字段、步骤、预览、保存或确认? - 表单复杂度是否来自真实字段依赖和错误代价,而不是数据库字段数量? - 普通列表的行内编辑是否满足门槛?批量工作表是否满足本文件列出的条件? - 编辑结束后是否仍能快速跨行比较?