Skip to content

改进选人控件(用户 lookup 选择器)的展示与可用性 #2461

Description

@marchtian

背景

在记录表单中,指向用户的 lookupreference: sys_user)字段会渲染为「选人控件」,提供两种入口:

  1. 行内搜索下拉:点击后出现搜索框 + 结果列表,每项显示 姓名 + 邮箱
  2. 表格选择弹窗(字段右侧表格图标):带搜索、筛选与记录数。

在一个制造业现场管理(EHR)场景中实测「工人」选人字段后,发现该控件在「从大量真实人员中选人」这类业务场景下存在若干可用性与展示问题。

现状/复现

  • 打开任一 lookup → sys_user 字段的选人控件;
  • 行内下拉请求:GET /api/v1/data/sys_user?top=50;输入关键字时:GET /api/v1/data/sys_user?top=50&search=xxx
  • 表格弹窗默认列为:名称 / 邮箱 / 邮箱已验证 / 已启用双因素认证

问题

1. 展示字段不可配,且默认列对业务无意义

  • 行内下拉只显示「姓名 + 邮箱」;现场工人常无邮箱、且高度重名(多个「张伟」无法区分)。
  • 表格弹窗的默认列是 sys_user 的系统字段(邮箱已验证 / 已启用双因素认证),对「选人」毫无帮助。
  • 期望:选人控件的显示字段 / 表格列可由 lookup 字段配置(如工号、姓名、班组、岗位、头像),而非硬编码 sys_user 系统字段。

2. top=50 截断,无「加载更多」/无总数

  • 列表固定取前 50 条,无分页 / 无限滚动,也不显示总记录数。
  • 超过 50 人时只能靠搜索命中,几百人规模体验差,且用户无法感知"还有更多结果"。
  • 期望:分页或无限滚动 + 显示总数。

3. 单值 lookup 使用了多值(chip)视觉

  • 单值 lookup(无 multiple)选中后渲染为「上方一个可删除 chip + 下方仍显示『选择...』的搜索框」。
  • 既多占一行,又让人误以为还能继续添加。
  • 期望:单值 lookup 选中后将值直接显示在输入框内;多值才使用 chip + 持续搜索框的布局。

建议(优先级)

  • P1:选人控件的显示字段 / 表格列改为可配置(按 lookup 字段或被引用对象的展示配置),避免硬编码 sys_user 系统字段;至少支持「头像 + 主标题 + 副标题」三段式与自定义副标题字段。
  • P2:行内下拉与表格弹窗支持分页 / 无限滚动,并显示总数。
  • P2:单值 lookup 选中态改为输入框内回填,与多值(chip)布局区分。
  • 可选:支持展示头像与在线/状态标识,辅助识别同名人员。

注:业务侧"按班组/在职过滤候选人"可由各 app 在 lookup 上配 filters/referenceFilters 解决,属应用配置范畴;本 issue 聚焦框架层选人控件本身的展示与交互能力。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions