Skip to content

Commit 5876cdc

Browse files
author
黄书伟
committed
支持 coSpan rowSpan
1 parent 69120c9 commit 5876cdc

File tree

6 files changed

+477
-43
lines changed

6 files changed

+477
-43
lines changed

examples/doc/table/api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@
6565
| row-mouse-enter| 鼠标进入表体行的回调| rowIndex |
6666
| row-mouse-leave| 鼠标离开表体行的回调| rowIndex |
6767
| sort-change| 点击排序回调| sortColumns(排序的列对象信息) |
68-
| cell-edit-done| 单元格编辑完成回调| newValue,oldValue,rowData,column,index|
6968
| cell-edit-formatter| 单元格编辑格式化回调(可以对编辑的结果设置样式等)| newValue,oldValue,rowIndex,rowData,field|
7069
| cell-edit-done| 单元格编辑完成回调| newValue,oldValue,rowIndex,rowData,field|
70+
| cell-merge| 单元格合并,支持rowSpan、colSpan,返回值`{colSpan: 1,rowSpan: 1,content: '',componentName: ''}`;合并后单元格的内容可以通过`content`(html)设置也可以通过,`componentName`(自定义组件)设置| rowIndex,rowData,field|
7171

7272

7373

examples/doc/table/cell-merge.md

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
:::demo 通过传入回调函数 ‘cell-merge’ 设置要合并的单元格
2+
3+
```html
4+
<template>
5+
<div>
6+
<v-table
7+
:width="1100"
8+
:height="430"
9+
:columns="tableConfig.columns"
10+
:table-data="tableConfig.tableData"
11+
even-bg-color="#f4f4f4"
12+
row-hover-color="#eee"
13+
row-click-color="#edf7ff"
14+
:cell-merge="cellMerge"
15+
></v-table>
16+
</div>
17+
</template>
18+
19+
<script>
20+
import Vue from 'vue'
21+
import mockData from '../../mock/tableData.js'
22+
23+
export default{
24+
name: 'frozen-title-columns',
25+
data(){
26+
return {
27+
tableConfig: {
28+
tableData: [],
29+
columns:[
30+
{field: 'name', title:'姓名', width: 150, titleAlign: 'center',columnAlign:'center', isFrozen: true},
31+
{field: 'gender', title:'性别', width: 150, titleAlign: 'center',columnAlign:'center', isFrozen: true},
32+
{field: 'tel', title: '手机号码', width: 180, titleAlign: 'center',columnAlign:'center', isFrozen: false},
33+
{field: 'birthday', title: '出生日期', width: 180, titleAlign: 'center',columnAlign:'center'},
34+
{field: 'hobby', title: '爱好', width: 380, titleAlign: 'center',columnAlign:'center'},
35+
{field: 'address', title: '地址', width: 430, titleAlign: 'center',columnAlign:'left'}
36+
]
37+
}
38+
}
39+
},
40+
methods: {
41+
// 模拟获取数据
42+
getTableData(){
43+
var self = this
44+
45+
setTimeout(function () {
46+
self.tableConfig.tableData = mockData
47+
}, 100)
48+
},
49+
cellMerge(rowIndex,rowData,field){
50+
if (field === 'name' && rowData[field] === '李伟') {
51+
return {
52+
colSpan: 2,
53+
rowSpan: 1,
54+
content: '<span style="color:red">单元格 colSpan</span>',
55+
componentName: ''
56+
57+
}
58+
} else if (rowIndex === 3 && field === 'gender') {
59+
60+
return {
61+
colSpan: 1,
62+
rowSpan: 3,
63+
content: '<span style="color:red">单元格 rowSpan</span>',
64+
componentName: ''
65+
}
66+
67+
}else if (rowIndex === 2 && field === 'birthday') {
68+
69+
return {
70+
colSpan: 2,
71+
rowSpan: 3,
72+
content:'',
73+
componentName:'table-cell-merge',
74+
}
75+
}
76+
}
77+
},
78+
created(){
79+
this.getTableData()
80+
}
81+
}
82+
83+
// 自定义列组件
84+
Vue.component('table-cell-merge',{
85+
template:`<span style="color:red">
86+
单元格 rowSpan 和 colSpan 同时使用
87+
</span>`,
88+
props:{
89+
rowData:{
90+
type:Object
91+
},
92+
field:{
93+
type:String
94+
},
95+
index:{
96+
type:Number
97+
}
98+
}
99+
})
100+
</script>
101+
```
102+
:::

examples/doc/table/main.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,17 @@
102102
</div>
103103
</div>
104104

105+
<div class="mt30">
106+
<h3>单元格合并</h3>
107+
108+
<div class="mt30">
109+
<div class="bold">
110+
<a class="anchor" id="table-cell-merge" @click.stop="goAnchor('table-cell-merge')">#</a>
111+
支持 rowSpan、colSpan</div>
112+
<cell-merge></cell-merge>
113+
</div>
114+
</div>
115+
105116
<div class="mt30 mb30">
106117
<h3>表格自适应(改变浏览器窗口大小试试看)</h3>
107118

@@ -191,6 +202,8 @@
191202
import frozenTitleColumns from './frozen-title-columns.md'
192203
import complexHeaderFixedColumn from './complex-header-fixed-column.md'
193204
205+
import cellMerge from './cell-merge.md'
206+
194207
import simpleTableResize from './simple-table-resize.md'
195208
import complexTableResize from './complex-table-resize.md'
196209
@@ -218,6 +231,8 @@
218231
complexHeaderFixedColumn,
219232
frozenTitleColumns,
220233
234+
cellMerge,
235+
221236
cellEdit,
222237
cellEditAdvanced,
223238

0 commit comments

Comments
 (0)