Table 表格 
概述
Table 表格,用于展示多条结构类似的数据。
# 支持平台
| App-vue | App-Nvue | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 | H5 | PC | 快手小程序 | 钉钉小程序 |
|---|---|---|---|---|---|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
温馨提示
组件内部使用了 fui-icon(字体图标)组件,非 easycom 组件模式下需要手动引入组件(打开组件内部注释的引入内容,引入路径按实际调整)。V1.9.9+
Nvue端暂不支持固定行列,仅支持头部固定,需要设置table高度才可生效(高度不可超过屏幕高度)。
设置固定高度时,Nvue端行列不可同时滚动,如果需要同时可滚动,高度不设置值。
支付宝小程序横向滚动与纵向滚动不支持同时生效,只能一个方向滚动。
# 引入
以下介绍两种常用的引入方式。
第一种:在页面中引用、注册
import fuiTable from "@/components/firstui/fui-table/fui-table.vue"
export default {
components:{
fuiTable
}
}
1
2
3
4
5
6
2
3
4
5
6
第二种:easycom组件规范
传统vue组件,需要安装、引用、注册,三个步骤后才能使用组件。easycom将其精简为一步。
First UI easycom配置请查看 快速上手。
如果不了解easycom,可先查看 官网文档 (opens new window)。
# 代码演示
部分示例演示,完整使用请参考示例程序以及文档API(以下示例写于.vue页面中)。
图片元素
通过 itemList 属性设置table数据,header 属性设置表头数据。
<fui-table :itemList="tableData" :header="headerData"></fui-table>
1
data() {
return {
tableData: [{
"name": "FirstUI 1",
"province": "上海",
"city": "普陀区"
}, {
"name": "FirstUI 2",
"province": "上海",
"city": "普陀区"
}, {
"name": "FirstUI 3",
"province": "上海",
"city": "普陀区"
}, {
"name": "FirstUI 4",
"province": "上海",
"city": "普陀区"
}],
//基础使用 表头
headerData: [{
prop: 'name',
label: '名称'
}, {
prop: 'province',
label: '省份'
}, {
prop: 'city',
label: '城市'
}]
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
行列固定
通过 fixed 属性设置表头是否固定,height 属性设置表格高度,itemList 属性设置表格数据, header 属性设置表头。
<!-- #ifndef APP-NVUE -->
<fui-table fixed height="600" :itemList="itemList" :header="header" @click="detail"></fui-table>
<!-- #endif -->
1
2
3
2
3
//表头数据
header: [{
prop: 'date',
label: '日期',
fixed: true,
}, {
prop: 'name',
label: '名称'
}, {
prop: 'province',
label: '省份'
}, {
prop: 'city',
label: '城市'
}, {
prop: 'address',
label: '地址',
width: 320
}, {
label: '操作',
fixed: 'right',
type: 3,
width: 160,
buttons: [{
text: '详情',
color: '#465CFF',
// size: 30,
fontWeight: 600
}]
}]
//表格数据见示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Slots
| 插槽名称 | 说明 |
|---|---|
| - | - |
# Props
| 属性名 | 类型 | 说明 | 默认值 | 平台差异说明 |
|---|---|---|---|---|
| header | Array | 表头数据,必选,具体属性见下方说明 | [ ] | - |
| show | Boolean | 是否显示表头 | true | - |
| size | Number, String | 表头字体大小 | 28 | - |
| color | String | 表头字体颜色 | #7F7F7F | - |
| fontWeight | Number, String | 表头字中重 | 600 | - |
| headerBgColor | String | 表头背景色 | #fff | - |
| fixed | Boolean | 表头是否固定,需要设置表格高度,且内容超过表格高度生效 | false | - |
| itemList | Array | 表格数据 | [ ] | - |
| full | Boolean | 表格宽度是否铺满剩余空间(宽度 < 屏幕宽度- gap*2时有效) | false | - |
| height | Number, String | 表格的高度,为0时默认为auto,单位rpx | 0 | - |
| gap | Number, String | 表格外层设置的左右padding值(距离屏幕左右侧距离),单位rpx | 0 | - |
| border | Boolean | 是否带有纵向边框 | true | - |
| horBorder | Boolean | 是否带有横向边框 | true | - |
| borderColor | String | 边框颜色 | #eee | - |
| background | String | 表格背景色,如果有固定项,不可设置透明 | #fff | - |
| stripe | Boolean | 是否为斑马纹table | false | - |
| stripeColor | String | 斑马纹颜色 | #F8F8F8 | - |
| textSize | Number, String | 表格内容字体大小,单位rpx | 28 | - |
| textColor | String | 表格内容字体颜色 | #333 | - |
| align | String | 单元格对齐方式:left/center/right | center | - |
| ellipsis | Boolean | 文字超出是否省略,默认换行 | false | - |
| padding | Number, String | 单元格上下padding值,单位rpx | 20 | - |
| selection V1.9.8+ | Boolean | 是否可进行多选操作 | false | - |
| initEmitChange V1.9.8+ | Boolean | 初始化数据时是否触发 @selectionChange 事件,仅selection为true时有效 | false | - |
| checkboxColor V1.9.8+ | String | checkbox 选中时背景颜色,仅selection为true时有效 | #465CFF | 非Nvue端可通过css变量 (--fui-color-primary) 修改 |
| checkboxBorderColor V1.9.8+ | String | checkbox 未选中时边框颜色,仅selection为true时有效 | #eee | - |
| checkmarkColor V1.9.8+ | String | checkbox 选中时对号颜色,仅selection为true时有效 | #fff | - |
| emptyText V2.1.0+ | String | 表格数据为空[]时,显示的提示内容,空字符串则不显示 | 暂无数据 | - |
| emptySize V2.1.0+ | String, Number | 提示文本字体大小,单位rpx | 24 | - |
| emptyColor V2.1.0+ | String | 提示文本字体颜色 | #B2B2B2 | - |
//header 表头属性说明,约定属性
[{
//表格内容类型:1-text 展示文本 2-image 展示图片 3-button 展示操作按钮,必选
type: 1,
//表头显示名称,可选,内容为空时显示prop
label: '姓名',
//当前列展示数据属性名,必选
prop: 'name',
//单元格宽度,单位rpx,必选
width: 200,
//当前列是否吸顶固定:true-左侧固定,left-左侧固定,right-右侧固定,可选
fixed: true,
//表头字体大小,单位rpx,优先级大于props中size值,可选
size:30,
//表头文字颜色,优先级大于props中color值,可选
color: '',
//单元格字体大小,单位rpx,优先级大于props中textSize值,可选
textSize:30,
//单元格文字颜色,优先级大于props中textColor值,可选
textColor: '',
//图片宽度,单位rpx ,type=2时有效
imgWidth: 120,
//图片高度度,单位rpx ,type=2时有效
imgHeight: 120,
//列单元格对齐方式:left/center/right,优先级大于props中align值,可选 【V1.8.0+】
align:'',
//按钮数据,,type=3时有效,可选
buttons: [{
//按钮文本
text: '详情',
//按钮文本颜色
color: 'red',
//按钮字体大小
size: 30,
//按钮字重
fontWeight: 400
}],
//[可选] 是否开启排序 [V1.9.9+]
sortable: true,
//[开启排序后则必填] 排序数据类型,可选值:number/date/string [V1.9.9+]
sortType: 'date',
//[可选] 排序图标颜色,不传值则使用默认值 [V1.9.9+]
sortColor: '#465CFF',
//[可选] 排序图标right值,默认40(单位rpx),根据列宽度自行调整至合适的位置 [V1.9.9+]
sortRight:40,
//[可选] 排序图标大小,单位rpx [V1.9.9+]
sortSize:28
}]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
TIP
开启排序后请务必设置 sortType 值,详见上方说明,sortType 可选值见下方描述:
sortTypenumbernumber类型数据进行排序date日期类型的数据进行排序string中文字符串类型数据进行排序
目前仅支持这三种类型,设置排序后,该参数为必传参数。
# Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| @click | 点击按钮时触发,表头数据type=3时有效 | { index:数据行索引, item:对应数据行数据 buttonIndex:按钮索引 } |
| @rowClick V1.6.0+ | 点击行时触发 | { index:数据行索引, item:对应数据行数据 } |
| @select V1.9.8+ | 勾选行 Checkbox 时触发的事件 | { index:数据行索引, item:对应数据行数据, is_selected:是否选中 } |
| @selectAll V1.9.8+ | 勾选全选 Checkbox 时触发的事件 | { is_selected:是否全选 } |
| @selectionChange V1.9.8+ | 当选择项发生变化时会触发该事件 | selection:选中数据 |
| @sortChange V1.9.9+ | 排序数据发生改变时触发 | { itemList:排序后列表, sort:排序方式 prop:排序属性字段 } |
# Methods
通过 ref 来注册组件引用信息,引用信息将会注册在父组件的$refs对象上。注册完成后,通过 this.$refs.XXX 访问到对应的组件实例,并调用上面的实例方法。
| 方法名 | 说明 | 传入参数 |
|---|---|---|
| columnColorMethod V1.8.0+ | 根据值改变列文本颜色 | fn:自定义处理方法 prop:列属性/字段名 |
| clearSelection V1.9.8+ | 用于多选表格,清空用户的选择 | - |
| toggleRowSelection V1.9.8+ | 用于多选表格,切换某一行的选中状态 | row:行数据 selected:是否选中 |
| toggleRowDisabled V1.9.8+ | 用于多选表格,切换某一行的禁用状态 | row:行数据 disabled:是否禁用 |
| toggleAllSelection V1.9.8+ | 用于多选表格,切换所有行的选中状态 | - |
| resetSort V1.9.9+ | 用于有设置排序表格,重置所有排序 | - |
| setSort V1.9.9+ | 用于有设置排序表格,设置排序 | prop:需要排序的字段 sortOrder:排序方式 (ascending/descending) |
// columnColorMethod / setSort方法调用示例:
onReady() {
//必须等组件加载完成后调用组件方法,刷新header数据时需重新执行方法
this.$refs.tableRef && this.$refs.tableRef.columnColorMethod(this.columnNameColor,'name')
//按日期降序(descending)排序(date 为表头中设置的 prop 值) V1.9.9+
this.$refs.tableRef && this.$refs.tableRef.setSort('date','descending')
},
methods: {
//自定义方法:根据值改变列的颜色 约定接收参数 value:列值,index:行索引
columnNameColor(value, index) {
let color = '#333'
if (value && ~value.indexOf('3')) {
color = '#465CFF'
}
return color;
}
}
/*
注:
1、toggleRowSelection 方法,如果不使用第二个参数则自动进行切换,
若使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)
2、toggleRowDisabled 方法,如果不使用第二个参数则自动进行切换,
若使用了第二个参数,则是设置这一行禁用与否(disabled 为 true 则禁用选择)
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
特别说明
当属性 selection 设为true时,即为多选表格:
- 设置初始选中除了调用 方法(toggleRowSelection)实现,还可以在 属性 itemList(表格数据)中,新增
is_selected属性(Boolean类型,组件默认key,不可修改)来实现。 - 设置数据行禁用选择除了调用方法(toggleRowDisabled)实现,还可以在 属性 itemList(表格数据)中,新增
is_disabled属性(Boolean类型,组件默认key,不可修改)来实现。
以上数据需自行处理后再传入组件内。