Skip to content

ListPage 列表页面容器

xy-list-page 用来把 SearchForm + ProTable + 请求状态 + 页面内批量动作区 收成一块稳定的列表页容器。

何时使用

  • 需要标准列表页骨架:搜索 → 表格 → 分页 → 批量操作。
  • 需要统一管理列表页的加载态、空态和错误态。
  • 需要批量选择行后执行批量操作(如批量删除、批量导出)。

何时不使用

  • 只需要纯表格展示时,优先使用 xy-pro-table
  • 需要编辑表单或详情查看时,优先使用 xy-crud-page
  • 页面布局非标准列表结构时,优先使用 xy-page-container 自由组合。

与基础组件的关系

ListPage
├── PageContainer(页面容器)  ← 页面头部 + 主体布局
├── SearchForm(搜索区)       ← 筛选栏,通过 slot 承接
├── ProTable(表格区)         ← 列表主体,通过 slot 承接
├── AsyncStateContainer       ← 加载/空态/错误状态管理
└── BatchActionBar            ← 批量操作栏(选中行后出现)

核心区别xy-pro-table 是表格工作台,xy-list-page 在其之上封装了完整的列表页容器能力(搜索、批量操作、异步状态)。

最佳实践

与 ProTable 的分工

  • ProTable:负责表格渲染、列定义、工具栏、分页。
  • ListPage:负责页面容器、搜索联动、批量操作、异步状态。

推荐将 ProTable 放在 ListPage 的默认插槽中:

vue
<xy-list-page
  :search-fields="searchFields"
  :batch-actions="batchActions"
  @search="handleSearch"
>
  <xy-pro-table
    :columns="columns"
    :data="tableData"
    :loading="loading"
  />
</xy-list-page>

批量操作

使用 batchActions 定义批量操作按钮,组件会自动在选中行后显示操作栏:

ts
const batchActions = [
  { label: '批量删除', type: 'danger', handler: handleBatchDelete },
  { label: '批量导出', handler: handleBatchExport },
]

基础用法

适合中后台列表页的标准骨架。

成员工作台

列表页容器负责把搜索、列表和批量动作组织起来。

当前定位

  • 承接列表页里的搜索、列表、分页、批量动作和异步状态。
  • 不直接处理表单编辑或详情展示,那些能力继续交给 CrudPageDetailPage

类型命名约定

  • 对外主类型名统一使用 ListPageBatchActionListPagePropsListPageActionRef
  • 旧的 BatchActionBarAction 仅作为源码兼容别名保留,不再作为正式文档类型入口。

ListPage API

ListPage Attributes

属性说明类型默认值
title工具栏标题string''
description工具栏说明string''
search-model搜索表单数据Record<string, unknown>{}
search-fields搜索表单字段配置SearchFormField[][]
data表格数据T[][]
columns列 schema 数组ProTableColumn<T>[]
request远程请求函数,传入后启用分页区(params: Record<string, unknown>, ctx: ProRequestContext) => Promise<ProRequestResult<T>>undefined
toolbar-actions工具栏按钮组ProPageAction[][]
batch-actions批量动作按钮组ListPageBatchAction[][]
immediate挂载后是否立即发起远程请求booleantrue
page-size默认每页条数number10
workbench工作台配置,透传给内部 xy-pro-tableProTableWorkbenchConfig{}
editable编辑模式配置ProTableEditableConfig<T>undefined
virtual虚拟列表配置ProTableVirtualConfigundefined

ListPage Events

事件名说明参数
toolbar-action点击工具栏按钮时派发(action: ProPageAction) => void
batch-action点击批量动作时派发(action: ListPageBatchAction, selection: Record<string, unknown>[]) => void
selection-change表格选中行变化时派发(selection: Record<string, unknown>[]) => void
request-success远程请求成功时派发(payload: Record<string, unknown>[]) => void
request-error远程请求失败时派发(error: unknown) => void

ListPage Slots

插槽说明接收参数
toolbar-main自定义标题区
toolbar-left工具栏右侧操作区前置内容
toolbar-meta工具栏右侧操作区补充内容
toolbar-right工具栏右侧操作区尾部内容
search自定义搜索区
footer-meta分页左侧补充信息
loading自定义加载态透传 ProTable 对应插槽参数
empty自定义空态透传 ProTable 对应插槽参数
其他具名插槽透传给内部 xy-pro-table 的同名插槽(如单元格自定义插槽)对应插槽参数

ListPage Exposes

名称类型说明
reload() => Promise<void>以当前参数重新发起远程请求
refresh() => Promise<void>刷新当前页数据
reset() => Promise<void>重置搜索、筛选、分页和选中行后重新加载
clearSelection() => void清空表格选中行