Table 表格
基本使用
data
属性可以配置表格的数据,接收一个数组
columns
属性可以配置表格的标题和键值,它接收一个数组,里面是对象,对象的 title
配置标题,key
配置键值,名字是必须的,否则将不能正常工作!详情参考文档
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns" />
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
配置行高
trHeight
属性可以表格行高
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns" trHeight="100px" />
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
文字放置方向
align
属性可以表格文字居中还是居两侧
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns" align="center" />
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
斑马纹和边框
zebra
属性可以配置斑马纹
border
属性可以配置边框
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns" align="center" border zebra />
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
自定义宽高
width
属性可以配置表格宽度
height
属性可以配置表格高度
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table
:data="tableData"
:columns="columns"
align="center"
width="500px"
height="200px"
/>
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
带有序号
num
属性可以配置带有序号的表格
日期 | 姓名 | 地址 | |
---|---|---|---|
1 | 2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2 | 2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
3 | 2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
4 | 2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns" align="center" num />
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
重点行标注
important
属性可以配置重点行着重标注,它接收一个数组,里面包含重点行的行号
日期 | 姓名 | 地址 | |
---|---|---|---|
1 | 2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2 | 2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
3 | 2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
4 | 2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table
:data="tableData"
:columns="columns"
align="center"
num
:important="[2, 4]"
/>
</template>
<script setup>
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
单独配置列宽度
每一列的宽度也是可以单独配置的,可以在 columns
数组对象中添加 width
键值,来配置单独的列宽,比如下面将第一列 s 设置为100px
,第二列设置宽度为 200px
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns2" align="center" />
</template>
<script setup>
const columns2 = [
{
title: '日期',
key: 'date',
width: '100px',
},
{
title: '姓名',
key: 'name',
width: '100px',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
自定义列模板
可以在column
中配置slot
,然后为n-table
注入该 slot 实现自定义列,可组合其他组件使用,代码参考如下
日期 | 姓名 | 地址 |
---|---|---|
2021-11-02 | 张三 | 张三住在浙江省杭州市上城区 231 号 |
2021-12-04 | 李四 | 李四住在浙江省杭州市西湖区 12 号 |
2021-10-01 | 王英 | 王英住在浙江省杭州市临平区 2 号 |
2021-11-03 | 李逵 | 李逵住在浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table :data="tableData" :columns="columns3">
<template #nameSlot="record">
<div class="username"><n-icon name="user" />{{record.rowData.name}}</div>
</template>
<template #addressSlot="record">
<n-button
@click="handleClickButtonItem(record)"
size="mini"
type="primary"
>打印本行</n-button
>
{{ record.rowData.name + '住在' + record.rowData.address }}
</template>
</n-table>
</template>
<script setup>
const columns3 = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
slots: 'nameSlot',
},
{
title: '地址',
key: 'address',
slots: 'addressSlot',
},
];
const tableData = [
{
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
const handleClickButtonItem = (item) => {
console.log(item);
};
</script>
<style scope>
.username {
display: flex;
align-items: center;
}
</style>
开启表格行数据多选
日期 | 姓名 | 地址 | |
---|---|---|---|
2021-11-02 | 张三 | 浙江省杭州市上城区 231 号 | |
2021-12-04 | 李四 | 浙江省杭州市西湖区 12 号 | |
2021-10-01 | 王英 | 浙江省杭州市临平区 2 号 | |
2021-11-03 | 李逵 | 浙江省杭州市拱墅区 199 号 |
显示代码
html
<template>
<n-table
:data="tableData"
:columns="columns"
:rowSelect="true"
v-model:selectItems="selectItems"
/>
<n-button @click="handleShowRowSelect">查看选中结果</n-button>
</template>
<script setup>
import { ref } from 'vue';
const selectItems = ref([]);
const handleShowRowSelect = () => {
console.log(selectItems.value);
};
const columns = [
{
title: '日期',
key: 'date',
},
{
title: '姓名',
key: 'name',
},
{
title: '地址',
key: 'address',
},
];
const tableData = [
{
id: '1',
date: '2021-11-02',
name: '张三',
address: '浙江省杭州市上城区 231 号',
},
{
id: '2',
date: '2021-12-04',
name: '李四',
address: '浙江省杭州市西湖区 12 号',
},
{
id: '3',
date: '2021-10-01',
name: '王英',
address: '浙江省杭州市临平区 2 号',
},
{
id: '4',
date: '2021-11-03',
name: '李逵',
address: '浙江省杭州市拱墅区 199 号',
},
];
</script>
API
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
data | 表单的内容数据 | array | —— | [] |
columns | 表头和键值 | array | —— | [] |
trHeight | 行高 | string | —— | '40px' |
align | 内容排向 | string | left / right / center | left |
zebra | 是否显示斑马纹 | boolean | —— | false |
border | 是否显示边框 | boolean | —— | false |
width | 表格宽度 | string | —— | '100%' |
height | 表格高度 | string | —— | 'auto' |
num | 是否显示序号 | boolean | —— | false |
important | 重点行标注 | array | —— | [] |
rowSelect | 开启行选择功能 | boolean | —— | false |
selectItems | 初始选中行 id(开启行选择功能生效) | (string/number)[] | —— | [] |
rowKey | 表格行 key 的取值(开启行选择功能生效) | string /number | —— | 'id' |