Skip to content

StdTable 组件

StdTable 是一个增强的表格组件,基于 Ant Design Vue 的 Table 组件扩展,提供了搜索、排序、筛选等功能。

基础用法

vue
<script setup lang="ts">
const loading = ref(false)

function onChange(pagination, filters, sorter) {
  // 处理表格变化
  console.log(pagination, filters, sorter)
}
</script>

<template>
  <StdTable
    :columns="columns"
    :get-list-api="getListApi"
    :table-loading="loading"
    @change="onChange"
  />
</template>

API

Props

属性说明类型默认值
columns列配置StdColumn[][]
getListApi接口配置StdApi['getList']-
tablePropsantd table 配置TableProps{}
customQueryParams自定义查询参数(同步到路由)Record<string, any>{}
overwriteParams覆盖查询参数(不同步到路由,优先级最高)Record<string, any>{}
rowSelectionType选择类型'checkbox' | 'radio'-
refreshConfig刷新配置{ timestamp: number, reset: boolean }-
disableSearch禁用搜索booleanfalse
disableRouterQuery禁用路由参数booleanfalse
disableEdit禁用编辑booleanfalse
disableDelete禁用删除booleanfalse
disableTrash禁用软删除booleanfalse
onlyQuery仅查询booleanfalse
isTrash是否显示回收站booleanfalse
rowDraggable是否开启行拖拽booleanfalse
rowDraggableOptions行拖拽配置{ onMove: (oldRow, newRow) => void, onEnd: ({target_id, direction, affected_ids}) => void }-
hideResetBtn隐藏重置按钮booleanfalse
showSearchBtn显示搜索按钮booleanfalse
searchFormExtraRender搜索表单额外渲染函数(searchFormData: any, searchColumns: StdTableColumn[], stdTableConfig: Record<any, any>) => VNode | JSX.Element-

Model

属性说明类型默认值
tableLoading表格加载状态booleanfalse
selectedRowKeys选中的行(string | number)[][]
selectedRows选中的行Record<string | number, any>[][]

Events

事件名说明回调参数
change分页、排序、筛选变化时触发(pagination, filters, sorter)
read点击查看按钮时触发record
editItem点击编辑按钮时触发record
deleteItemTemporarily点击删除按钮时触发record
restoreItem点击恢复按钮时触发record
deleteItemPermanently点击彻底删除按钮时触发record

Slots

插槽名说明
beforeSearch搜索区域前插槽
beforeTable表格前插槽
beforeActions操作列前插槽
afterActions操作列后插槽

功能特性

自动加载数据

组件会自动调用 api.getList 方法加载数据,支持以下参数:

  • page: 当前页码
  • page_size: 每页条数
  • sort_by: 排序字段
  • order: 排序方式
  • ...其他搜索条件

路由参数同步

默认会将查询参数同步到路由 query 中,可通过 disableRouterQuery 禁用。

表格选择

通过 rowSelectionType 配置选择模式:

vue
<template>
  <StdTable
    v-model:selected-row-keys="selectedKeys"
    v-model:selected-rows="selectedRows"
    row-selection-type="checkbox"
  />
</template>

搜索表单扩展渲染

通过 searchFormExtraRender 属性可以在搜索表单中添加自定义内容:

vue
<script setup lang="ts">
import { h } from 'vue'
import { Button } from 'ant-design-vue'

function extraRender(searchFormData, searchColumns, config) {
  return h(Button, {
    type: 'primary',
    onClick: () => {
      console.log('搜索数据:', searchFormData)
    }
  }, '自定义按钮')
}
</script>

<template>
  <StdTable
    :columns="columns"
    :get-list-api="getListApi"
    :search-form-extra-render="extraRender"
  />
</template>

该函数接收三个参数:

  • searchFormData: 当前搜索表单的数据
  • searchColumns: 搜索列的配置
  • stdTableConfig: StdTable 组件的配置

返回值应该是一个 Vue 虚拟节点 (VNode) 或 JSX 元素。

根据 Apache-2.0 许可发布。