Skip to content

表格 Table

用于将数据统一展示、分析、操作等。

基础用法

基础的表格数据展示

<template>
  <bp-table border :cols="cols" :data="list"></bp-table>
</template>

<script setup lang="ts">
const list = [
  { seat: "1", name: "李小颖", results: "522", ranking: "4" },
  { seat: "15", name: "杜小浩", results: "462", ranking: "18" },
  { seat: "18", name: "汤小青", results: "482", ranking: "12" },
  { seat: "28", name: "田小锋", results: "475", ranking: "15" },
  { seat: "35", name: "吴小豪", results: "372", ranking: "41" },
  { seat: "41", name: "吴小可", results: "404", ranking: "33" },
  { seat: "46", name: "木小亦", results: "409", ranking: "40" },
  { seat: "43", name: "邹小辉", results: "293", ranking: "53" },
];
const cols = [
  { title: "座号", dataIndex: "seat", width: 100 },
  { title: "姓名", dataIndex: "name" },
  { title: "成绩", dataIndex: "results" },
  { title: "班级排名", dataIndex: "ranking" },
];
</script>

数据选择

目前,你可以通过 selection 属性配置数据的选择

<template>
  <bp-table row-key="seat" :selection="selection" border :data="list" v-model:selected-key="keys">
    <template #columns>
      <bp-table-column title="座号" data-index="seat" width="100"></bp-table-column>
      <bp-table-column title="姓名" data-index="name"></bp-table-column>
      <bp-table-column title="成绩" data-index="results"></bp-table-column>
      <bp-table-column title="班级排名" data-index="ranking"></bp-table-column>
    </template>
  </bp-table>
</template>

<script setup lang="ts">
import { ref } from 'vue';

const list = [
  { seat: "1", name: "李小颖", results: "522", ranking: "4" },
  { seat: "15", name: "杜小浩", results: "462", ranking: "18" },
  { seat: "43", name: "邹小辉", results: "293", ranking: "53" },
];

const selection = {
  type: "checkbox",
};

const keys = ref([]);
</script>

自定义列渲染

通过 columns 插槽或者 scope.customRender 自定义渲染内容

<template>
  <bp-table border :data="list">
    <template #columns>
      <bp-table-column title="座号" data-index="seat" :width="100">
        <template #cell="{ record }">
          <span style="font-weight: bold">{{ record.seat }}</span>
        </template>
      </bp-table-column>
      <bp-table-column title="姓名" data-index="name">
        <template #cell="{ record }">
          <bp-button size="small" status="primary">{{ record.name }}</bp-button>
        </template>
      </bp-table-column>
      <bp-table-column title="成绩" data-index="results" />
      <bp-table-column title="班级排名" data-index="ranking" />
      <bp-table-column title="操作">
        <template #cell>
          <bp-link status="danger">删除</bp-link>
        </template>
      </bp-table-column>
    </template>
  </bp-table>
</template>

<script setup lang="ts">
const list = [
  { seat: "28", name: "田小锋", results: "475", ranking: "15" },
  { seat: "35", name: "吴小豪", results: "372", ranking: "41" },
  { seat: "41", name: "吴小可", results: "404", ranking: "33" },
  { seat: "46", name: "木小亦", results: "409", ranking: "40" },
  { seat: "43", name: "邹小辉", results: "293", ranking: "53" },
];
</script>

文本省略和提示

设置 ellipsistooltip 开启文本省略和气泡提示

<template>
  <bp-table border :data="list">
    <template #columns>
      <bp-table-column title="书籍" data-index="name" :width="100"></bp-table-column>
      <bp-table-column title="作者" data-index="author" :width="60">
        <template #cell="{ record }">
          <span style="font-weight: bold">{{ record.author }}</span>
        </template>
      </bp-table-column>
      <bp-table-column title="介绍" data-index="remark" ellipsis tooltip :width="100"></bp-table-column>
    </template>
  </bp-table>
</template>

<script setup lang="ts">
const list = [
  {
    author: "冯唐",
    name: "《活着活着就老了》",
    remark: "冯唐不二之作,93 篇出道封神的经典文章,用风情万种的文字,写通透性情的智慧",
  },
  {
    author: "陈年喜",
    name: "《活着就是冲天一喊》",
    remark: "“矿工诗人”陈年喜让我们看到,普通人的表达如此丰富、精彩。",
  },
  {
    author: "张嘉佳",
    name: "《从你的全世界路过》",
    remark: "本书讲述十年的起伏人生以及小说中那些人物原型在现实生活中的故事。",
  },
  {
    author: "李银河",
    name: "《煮沸人生》",
    remark: "知名学者、社会学家李银河的灵魂告白,写给所有自由、坦荡、精神明亮的年轻人。",
  },
  {
    author: "宽宽",
    name: "《36岁,人生半熟》",
    remark: "这是一个人即将步入中年时的自我反思和发现。27篇随笔篇幅短小而论述入里,有作者寻找自生生命方向之际的刹那体悟,亦是其人生哲学的阶段阐述。",
  },
];
</script>

Table 属性

cols
表格头部列表
Array
[]
data
表格数据
Array
[]
height
固定高度
String
-
loading
加载状态
Boolean
false
border
展示边框
Boolean
false
stripe
斑马纹
Boolean
false
rowKey
行 Key 字段名称
StringNumber
-
selection
选择器配置
SelectionConfig
-
v-model:selectedKey
选择数据的Key
String|[]Number|[]
[]

Table 事件

select
点击行选择器时触发
rowKeys: string|number|Array<string|number>, rowKey: string|number, record: unkown
select-all
点击全选触发
isSelect: boolean
selection-change
选择项发生改变触发
rowKeys: string|number|Array<string|number>

TableColumn 属性

title
列标题
String
-
record
行记录
Object
{}
data-index
列标识字段
String
-
row-index
行下标
Number
-
width
列宽度
NumberString
-
min-width
最小列宽
NumberString
-
align
对齐方式
Enum
left
ellipsis
是否开启文本省略
Boolean
false
tooltip
是否开启文本气泡提示
Boolean
false

Selection 配置

type
选择类型
Enum
-