Skip to content

TableSelect 表格选择器 ​

简介 ​

点击后打开弹窗,在表格里选择数据,确认后回填到输入框。

弹窗里的表格就是 co-table:api、columns、form-props、keys、pagination 与表格完全一致,筛选、分页、列配置都可以直接使用。

适合选项需要多列信息才能辨认、或者需要多个条件才能筛出目标的场景。

代码演示 ​

基础使用(单选) ​

api 用于获取数据,props 指定每一行的文本字段与值字段,columns 定义表格列。

示例数据来自 mock 的 /mock/api/products 接口,字段与商品模型一致。

已经在 model-value 里、但不在当前列表中的值,用 fetch-selected 查出对应的行,否则输入框里只能显示原始值。

多选 ​

设置 multiple 后,行首变成复选框,表头的复选框作用于当前页。

弹窗内的选择是临时的,点「确定」才会写回 model-value。选中后表格上方出现批量操作条,显示已选数量与清空操作,batch 插槽可以往里面加自己的操作。超过 max-tag-count 的标签折叠成 +N,标签上的叉可以单独移除一项。

抽屉与尺寸 ​

设置 drawer 用抽屉代替弹窗,width 控制尺寸;dialog-props、drawer-props 透传给对应的弹层组件。size 控制输入框尺寸,不传时跟随所在的 co-form-item。

表单校验 ​

放在 co-form-item 里时,选择或清空都会触发表单校验,表现与内置表单控件一致。

API ​

TableSelectProps ​

属性描述类型默认值
model-value选中的值,多选时为数组any-
multiple是否多选booleanfalse
api获取列表数据的接口(...args: any[]) => Promise<any> | any-
columns表格列,同 co-tableTableColumnProps[][]
table-props透传给 co-table 的其他属性TableProps-
form-props筛选表单属性FormQueryProps-
transform-params转换当前请求参数(params: Record<string, any>) => any-
keys定义接口相关的键名TableConfig['keys']-
pagination自定义分页属性,或者设置 false 隐藏分页boolean | PaginationPropstrue
props指定每一行的文本字段与值字段,形如 { label: 'name', value: 'id' }-
placeholder未选中时的提示,同时作为弹窗的默认标题string请选择
size输入框尺寸,不传时跟随所在的 co-form-item'small' | 'default' | 'large'-
disabled是否禁用booleanfalse
clearable是否可清空,悬停或聚焦时清空按钮顶替箭头booleantrue
max-tag-count多选时最多显示几个标签,其余折叠为 +Nnumber2
title弹窗标题string-
width弹窗宽度string | number900
drawer是否使用抽屉代替弹窗booleanfalse
dialog-props透传给 ElDialog 的属性DialogProps-
drawer-props透传给 ElDrawer 的属性DrawerProps-
fetch-selected根据值查出对应的行,用于回显(values: any[]) => Promise<any[]> | any[]-
row-key行唯一标识字段,默认为 props.valuestring | ((row: any) => any)-

TableSelectSlots ​

插槽描述属性
tag自定义多选时标签的内容
label自定义单选时输入框里的内容
batch批量操作条右侧的操作,紧挨着默认的「清空」

TableSelectEmits ​

事件描述参数
update:modelValue选中的值变化(value: any)
change选中的值变化(value: any, rows: any[])
confirm点「确定」时触发(value: any, rows: any[])
cancel点「取消」时触发-
clear点清空按钮时触发-
visible-change弹窗打开或关闭时触发(visible: boolean)

表格的事件通过 table-props 传递,例如 table-props="{ onRowDblclick: handler }";弹层首次打开时才创建,关闭即销毁,再次打开会重新请求数据。

基于 MIT 许可发布