Skip to content

AiToolbarAction 表格工具栏组件

提供表格工具栏的常用操作按钮:刷新、密度调整、列设置(集成 AiTableFilter)、搜索显示/隐藏切换。通常由 AiTable 或 AiCrudPage 内部调用。

基础用法

vue
<template>
  <div class="table-container">
    <div class="table-header">
      <n-space>
        <n-button type="primary">新增</n-button>
      </n-space>
      <AiToolbarAction
        :columns="columns"
        :show-search-toggle="true"
        :search-visible="searchVisible"
        @refresh="handleRefresh"
        @density-change="handleDensityChange"
        @filter-change="handleFilterChange"
        @search-visible-change="handleSearchVisibleChange"
      />
    </div>

    <AiSearch v-if="searchVisible" :schema="searchSchema" @search="handleSearch" />
    <n-data-table :columns="visibleColumns" :data="dataSource" :size="tableSize" />
  </div>
</template>

<script setup>
import { ref, computed } from 'vue'
import { AiToolbarAction } from '@/components/ai-form'
import { AiSearch } from '@/components/ai-form'

const tableSize = ref('medium')
const searchVisible = ref(false)
const visibleColumnKeys = ref([])

function handleRefresh() { /* 刷新数据 */ }
function handleDensityChange(size) { tableSize.value = size }
function handleFilterChange(checked) { visibleColumnKeys.value = checked }
function handleSearchVisibleChange(visible) { searchVisible.value = visible }
</script>

Props

属性类型默认值说明
columnsArray<object>[]表格列配置(用于列筛选)
showRefreshBooleantrue是否显示刷新按钮
showDensityBooleantrue是否显示密度调整下拉
showColumnFilterBooleantrue是否显示列设置按钮
showSearchToggleBooleanfalse是否显示搜索显示/隐藏切换按钮
searchVisibleBooleanfalse搜索区域的可见状态(与 showSearchToggle 配合使用)
filterMaxHeightString'300px'列筛选下拉面板最大高度
defaultCheckedColumnsArray<string>[]列筛选默认选中的列 key 数组

事件

事件名参数说明
refresh-点击刷新按钮
density-change(size: 'small' | 'medium' | 'large')密度变化
filter-change(visibleColumns: Array\<string\>)列筛选变化(透传自 AiTableFilter)
search-visible-change(visible: boolean)搜索区域显示/隐藏切换

密度调整

通过下拉菜单切换三种尺寸,点击后触发 density-change 事件:

  • 默认(medium):标准行高
  • 紧凑(small):减小行高,适合数据密集场景
  • 宽松(large):增大行高,提升可读性
js
function handleDensityChange(size) {
  // size 为 'small' | 'medium' | 'large'
  tableSize.value = size
  // 可持久化到本地存储
  localStorage.setItem('table_density', size)
}

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架