Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

详情页笔 icon 行内编辑:多值 lookup 无法选中多个 #2956

Closed

Description

@baozhoutao

问题

详情页(record detail)通过字段上的笔 icon 进入行内编辑后,多值 lookup 字段无法选中多个:

  • 选中第一条记录后,浮层直接关闭,值被替换而不是追加;
  • 再点第二条只会把第一条顶掉,永远只能有一个值;
  • 读态同样只显示一个 chip(值是数组时甚至可能显示异常)。

同一个字段在对象表单里多选是正常的 —— 只有详情页行内编辑坏。

复现(framework examples/app-showcase):
Field Zoo → Specimen — Full → 「显示空字段」→ Users (multiple)(Field.user({ multiple: true }))→ 点笔 icon → 试图选第二个人。

根因

详情页行内编辑的字段元数据是 DetailSection 从 object schema 手写白名单逐个拷过来的(DetailViewField 只带 name/label/span 这类展示信息,配置控件的元数据全在 object schema 上)。

这份白名单从来没有 multiple,所以 LookupField 里 fieldMeta?.multiple 恒为 false,走单选分支:选中即 onChange(option.value) 覆盖 + 关闭浮层。

同一份白名单还漏掉了 lookup picker 的其余配置(display_field / description_field / id_field、快捷新建、Level-2 记录选择器的列 / 分页 / 基础过滤、people picker、依赖联动 depends_on),这些在表单路径上都是白拿的。

而且 HeaderHighlight(高亮条的行内编辑)另抄了一份同类白名单,两份已经互相漂移过两次(代码注释里还留着 "keep in sync with DetailSection" 的字样)。

方案

  1. 抽出共享的 enrichDetailField(viewField, objectDefField)(带文档的 key 清单,视图字段永远优先,readonly 不拷),DetailSection 与 HeaderHighlight 共用,消除漂移;清单里补齐 multiple + 全部关系/picker 配置键。
  2. multiple 真的传下来之后,InlineFieldInput 的 select 分支不能再用 String(value) 把数组拍扁 —— 多值 picklist(含 multiselect)改走 chip 选择器、值保持数组。
  3. 补测试:集成测试直接驱动 DetailSection + 真实 LookupField,断言连点两个选项后 onFieldChange 依次收到 ['t1']、['t1','t2'];另加 enrichDetailField 单测。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions