ProList 高级列表

uniboot-ui 的基础组件之上提供的 高级列表:支持 request 分页加载网格布局关键字段映射(metas)行勾选(rowSelection)展开(expandable),并提供一组可覆盖的插槽以快速搭建「卡片列表 / 商品列表 / 任务列表」等页面。

基础用法

最推荐的用法是通过 metas 把数据映射到列表的 title / subTitle / description / content / actions / extra 等区域;需要更复杂的内容时,再使用同名插槽覆盖。

高级列表
Total 0
  • 1
Go to

request 与分页

当提供 request 时,ProList 会在以下场景触发请求:

  • 初次渲染(manualRequest !== true
  • 分页页码/每页条数变化
  • 关键词搜索回车或点击查询
  • 调用实例方法 reload() / run(true|false)

request 入参为:

  • current:当前页(从 1 开始)
  • pageSize:每页条数
  • keyword:关键词(仅在 showSearch 下由内置搜索框维护)
  • query:保留字段(目前用于扩展,默认空对象)

返回值为 { data, total, success? }

  • data:当前页列表
  • total:总条数(用于分页)
  • success: false 时不更新列表(仍会结束 loading)

metas(字段映射)

metas 用于把 record 的字段映射到各个区域:

  • 对象形式{ dataIndex, render? }
  • 函数形式(record, index) => VNodeChild
ts
const metas = {
  title: { dataIndex: 'name' },
  subTitle: (r) => `负责人:${r.owner}`,
  actions: (r) => [
    /* ... */
  ],
}

当同时提供 metas.xxx#xxx 插槽时,插槽优先

行选择 rowSelection

配置 rowSelection 可展示每项左侧勾选框,并通过 v-model:selected-row-keysrowSelection.onChange 获取选择结果。

vue
<pro-list
  row-key="id"
  v-model:selected-row-keys="selectedKeys"
  :row-selection="{
    selectedRowKeys: selectedKeys,
    onChange: (keys, rows) => console.log(keys, rows),
  }"
/>

展开 expandable

当提供 expandable 且存在 #expandedRowRender 插槽时,会显示「展开/收起」按钮。

vue
<pro-list
  row-key="id"
  v-model:expanded-row-keys="expandedKeys"
  :expandable="{ expandedRowKeys: expandedKeys }"
>
  <template #expandedRowRender="{ item }">
    <div>展开内容:{{ item }}</div>
  </template>
</pro-list>

网格 grid

传入 grid 后,列表将使用 CSS Grid 布局:

vue
<pro-list :grid="{ column: 2, gutter: 12, minItemWidth: '320px' }" />

插槽

名称说明作用域参数
headerTitle头部标题区
headerActions头部操作区
title列表项主标题{ item, index }
subTitle列表项副标题{ item, index }
description列表项描述{ item, index }
avatar列表项头像/缩略图{ item, index }
content列表项主内容{ item, index }
actions列表项操作区{ item, index }
extra列表项右侧额外区{ item, index }
expandedRowRender展开内容{ item, index }

ProList API

ProList 属性

名称说明类型默认值
request远程请求(可选;不传则使用 dataSourceFunction
dataSource静态数据(无 request 时本地分页)array
rowKey行主键字段名或函数string / Function'id'
headerTitle头部标题文案string
headerActions头部操作区(简单场景直接传 VNode)any
metas字段映射object
showActionsactions 显示时机enum'always'
split是否显示分割线(边框效果)booleantrue
bordered容器是否带边框booleanfalse
grid网格布局配置object
rowSelection行选择配置;false 关闭object / boolean
expandable展开配置;false 关闭object / boolean
pagination分页配置;false 隐藏分页条boolean / objecttrue
defaultPageSize默认每页条数(pagination.defaultPageSize 优先)number10
manualRequesttrue 时首屏不自动请求booleanfalse
showSearch是否显示关键词搜索条booleanfalse
searchPlaceholder关键词输入框占位符string请输入关键词
beforeSearchSubmit提交前转换 query(预留扩展)Function
postData请求完成后映射列表Function

ProList 事件

事件名说明类型
reload点击内置刷新并完成 reload 后触发Function
update:selectedRowKeys选中 key 变更(v-model)Function
update:expandedRowKeys展开 key 变更(v-model)Function

request 入参 ProListRequestParams

名称说明类型
current当前页,从 1 开始number
pageSize每页条数number
keyword关键词(可选)string
query扩展查询对象(预留)object

request 返回值 ProListRequestResult

名称说明类型
data当前页数据array
total总条数number
successfalse 时不更新列表boolean

metas ProListMetas

metas 支持以下字段:titlesubTitledescriptionavatarcontentactionsextra

网格配置 ProListGridConfig

名称说明类型默认值
gutter网格间距(px)number16
column列数number1
minItemWidth单项最小宽度string260px