Skip to content

BizTablePicker 弹窗表格选择器 ​

弹窗表格选择器(筛选区双形态),合并自 BizSelectTable(弹窗表格选择器)与 BizMemberPicker(人员选择器):按钮触发 Dialog,内部表格分页浏览 + 单选 / 多选(跨页保留),弹窗内为独立会话选择,确定后回填 v-model,已选 chips 可逐个删除。

  • filter-mode="search"(默认):顶部搜索栏 + 表格。本地 data 自动分页 + 关键词跨列过滤,或 request 远程契约(loading / 翻页 / 搜索自动管理);选单据(订单 / 合同 / 物料 / 商品 SKU)等多列信息需比对后选择的场景。
  • filter-mode="tree":左侧组织树(org-tree 静态全量 / org-load-request 懒加载逐层拉取,二选一,均不传则隐藏左栏)+ 右侧表格(关键词 300ms 防抖搜索 + 分页 + 行点击即选);审批选人、任务指派、权限分配等选人场景。

组件零接口:数据全部由业务侧注入(本地 data 或 request),request 契约 { page, pageSize, keyword, deptId? }(tree 形态携带 deptId);本地数据模式支持拼音检索(pinyin-of / initials-of 转换器注入)与头像列(avatar-key)。与 BizRemoteSelect(轻量远程下拉)、BizOrgTreeSelect(字段级选部门)互补。

本地数据单选 ​

暂未选择

当前选中:未选择

36 条本地数据自动分页;单选回填 label-key 字段标签。

本地多选(跨页保留) ​

暂未选择
翻页勾选互不丢失;已选标签可单个移除,合计联动。

远程数据源(request 分页搜索) ​

暂未选择
request 注入(400ms 模拟延迟):搜索 / 翻页走接口,loading 自动管理。

选单据多列比对 ​

暂未选择

已选 0 份合同,主键集合:[]

合同多列信息(编号 / 供应商 / 金额 / 日期 / 状态)比对后多选,confirm 携带主键数组直接提交业务 id。

自定义列(col-xxx 插槽) ​

暂未选择
#col-字段名 作用域插槽自定义单元格(状态标签 / 健康度着色)。

tree 形态选人(审批选人) ​

成员03(运维中心)
静态组织树过滤部门、右侧关键词搜索分页勾选(姓名 + 部门 + 岗位列),chips 回显姓名(部门)。

tree 形态单选(指派负责人) ​

未指派
单选模式行高亮选择(无复选框);不传 org-tree 时隐藏左栏仅保留搜索分页
multiple=false 行高亮单选;不传 org-tree 隐藏左栏仅保留搜索分页。

懒加载组织树 ​

暂未选择人员

左侧组织树展开时才请求子级(模拟 300ms 延迟);点击部门按 deptId 过滤右侧成员

org-load-request 逐层拉取子部门(展开才请求);点部门按 deptId 过滤右侧成员。

已选 chips 管理(项目组上限) ​

项目组暂无成员
当前 0 / 6 人
项目场景:多选组建团队、chips 移除成员、超上限(6 人)自动截断并提示。

值班排班(按日指派) ​

周一
未安排
周二
未安排
周三
未安排
周四
未安排
周五
未安排
排班场景:周一~周五每行一个单选 picker,各自独立 v-model;指派完成即时提示。

数据权限分配 ​

敏感权限开通即记录审计日志,授权后次日 0 点生效
暂无授权成员
安全场景:敏感权限授权选人,提交生效并记录审计——人数上限与生效时间提示前置。

表单关联单据 ​

关联差旅申请
暂未选择
报销金额
报销单选择关联差旅申请,弹窗确认后回填表单。

事件日志(confirm / change / cancel) ​

暂未选择
暂无事件——打开弹窗选择后观察事件流
确认 / 变化 / 取消全事件流实时记录;change、confirm 同时携带选中行与主键数组。

最近选择页签(本地留痕) ​

暂未选择

已选 0 人;确认选择后再次打开弹窗,「最近选择」页签会带出上次确认的人(最多留 8 条,可悬停移除单条记录)。

recent.storage-key 开启「全部数据 / 最近选择」双页签:确认选择时所选行自动提到最近列表最前(按 key 去重、截断至上限),再次打开弹窗可直接从最近记录点选——钉钉式选人体验;悬停记录可移除单条。

最近选择(服务端受控) ​

暂未选择

受控模式:最近记录来自服务端(跨设备一致),确认选择不写 localStorage;需要服务端留痕时监听 confirm 事件自行持久化。

recent.initial 受控模式:最近记录由服务端下发(跨设备一致),组件不写 localStorage;需要服务端留痕时监听 confirm 事件自行持久化后回写 initial。

拼音检索 ​

暂未选择
pinyin-of / initials-of 注入全拼与首字母转换器(本地 data 模式生效,匹配 label-key 指向的回显字段):「张伟」「zhangwei」「zw」三种输入均可命中;search 形态 label-key 默认回退 row-key(如 id),拼音检索需显式指定 label-key="name" 等文本字段;转换器由业务注入(生产建议 pinyin-pro),组件保持零字典依赖。

头像列 ​

暂未选择
avatar-key 传入即在表格最前插入头像列:字段有值渲染图片头像,空值回退回显文本首字。

头像 + 最近选择 ​

暂未选择
钉钉式选人组合:头像列 + recent 本地留痕页签(最近记录同步带头像)。

Props ​

属性名类型默认值说明
model-value / v-modelBizTablePickerRow[] | BizTablePickerRow | nullnull多选为行数组,单选为行对象
filter-mode'search' | 'tree''search'筛选区形态:search 顶部搜索栏;tree 左侧组织树
columnsBizTablePickerColumn[][]表格列(prop / label / width / minWidth / align / formatter)
dataBizTablePickerRow[][]本地数据源(search 形态与 request 二选一;自动分页 + 关键词跨列过滤)
request(params: { page; pageSize; keyword; deptId? }) => Promise<{ list; total }>—远程数据源契约(tree 形态必填,携带当前 deptId)
multiplebooleanfalse多选
row-keystring'id'行主键字段(选择判定)
label-keystringtree 形态 'name',search 形态同 row-key回显标签字段
recentBizTablePickerRecentConfig—最近选择配置:{ storageKey, max?, initial? };传入后弹窗内出现「全部数据 / 最近选择」页签,确认自动留痕(storageKey 存本地,initial 受控不写本地),max 默认 10
org-treeBizTablePickerOrgNode[]—静态组织树(tree 形态;与 org-load-request 二选一)
org-load-request(node) => Promise<BizTablePickerOrgNode[]>—组织树懒加载(展开拉子级;根级传入 id 为 'root' 的占位节点)
titlestring'选择数据'弹窗标题
trigger-textstring'选择数据'触发按钮文案
trigger-type'primary' | 'success' | 'warning' | 'danger' | 'info' | '''primary'触发按钮类型(透传 el-button,plain 风格)
dialog-widthstring | numbersearch 'min(760px, 94vw)',tree 'min(880px, 94vw)'弹窗宽度(窄屏自动收缩)
page-sizenumber10每页条数
clearablebooleantrue已选标签可单个移除
disabledbooleanfalse禁用触发
empty-textstring'暂未选择'已选区空占位
pinyin-of(text: string) => string—拼音全拼转换注入(本地 data 模式):关键词额外按回显字段(label-key,search 形态默认回退 row-key,需指向姓名等文本字段)全拼匹配,如 pinyin-pro (t) => pinyin(t, { toneType: 'none' })
initials-of(text: string) => string—拼音首字母转换注入:支持 zhangwei / zw 式检索(与 pinyin-of 可只传其一)
avatar-keystring—头像字段名(表格最前插入头像列 + 最近记录头像位;空值回退首字)

其余属性透传触发按钮(el-button)。

Events ​

事件名参数说明
update:model-value(rows | row | null)确认或移除标签后回发
change(payload: { selected: rows; keys: unknown[] })选中集合变化(含主键数组)
confirm(payload: { selected: rows; keys: unknown[] })弹窗内点击确定(search 形态多选空选时阻止并提示)
cancel()弹窗未确认关闭(取消按钮 / 右上角关闭 / ESC)

Slots ​

插槽名作用域说明
trigger—自定义触发按钮内容
col-字段名{ row, index }弹窗表格自定义单元格

Expose ​

名称类型说明
open() => void主动打开选择弹窗
close() => void关闭弹窗(未确认关闭触发 cancel)
clear() => void清空已选并回发 v-model 与 change
clearRecent() => void清空最近选择记录(含本地存储)
getSelected() => rows读取弹窗会话内当前选中行集合(单选为长度 ≤ 1 的数组)