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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
| import ElCheckbox from 'element-ui/packages/checkbox';
| export default {
| name: 'ElTableRow',
| props: [
| 'columns',
| 'row',
| 'index',
| 'isSelected',
| 'isExpanded',
| 'store',
| 'context',
| 'firstDefaultColumnIndex',
| 'treeRowData',
| 'treeIndent',
| 'columnsHidden',
| 'getSpan',
| 'getColspanRealWidth',
| 'getCellStyle',
| 'getCellClass',
| 'handleCellMouseLeave',
| 'handleCellMouseEnter',
| 'fixed'
| ],
| components: {
| ElCheckbox
| },
| render() {
| const {
| columns,
| row,
| index: $index,
| store,
| context,
| firstDefaultColumnIndex,
| treeRowData,
| treeIndent,
| columnsHidden = [],
| isSelected,
| isExpanded
| } = this;
|
| return (
| <tr>
| {
| columns.map((column, cellIndex) => {
| const { rowspan, colspan } = this.getSpan(row, column, $index, cellIndex);
| if (!rowspan || !colspan) {
| return null;
| }
| const columnData = { ...column };
| columnData.realWidth = this.getColspanRealWidth(columns, colspan, cellIndex);
| const data = {
| store,
| isSelected,
| isExpanded,
| _self: context,
| column: columnData,
| row,
| $index
| };
| if (cellIndex === firstDefaultColumnIndex && treeRowData) {
| data.treeNode = {
| indent: treeRowData.level * treeIndent,
| level: treeRowData.level
| };
| if (typeof treeRowData.expanded === 'boolean') {
| data.treeNode.expanded = treeRowData.expanded;
| // 表明是懒加载
| if ('loading' in treeRowData) {
| data.treeNode.loading = treeRowData.loading;
| }
| if ('noLazyChildren' in treeRowData) {
| data.treeNode.noLazyChildren = treeRowData.noLazyChildren;
| }
| }
| }
| return (
| <td
| style={this.getCellStyle($index, cellIndex, row, column)}
| class={this.getCellClass($index, cellIndex, row, column)}
| rowspan={rowspan}
| colspan={colspan}
| on-mouseenter={($event) => this.handleCellMouseEnter($event, row)}
| on-mouseleave={this.handleCellMouseLeave}
| >
| {
| column.renderCell.call(
| this._renderProxy,
| this.$createElement,
| data,
| columnsHidden[cellIndex]
| )
| }
| </td>
| );
| })
| }
| </tr>
| );
| }
| };
|
|