Commit
cec324522580b31925091ccca37e2786068137de
merge
Showing
5 changed files
with
152 additions
and
38 deletions
Show diff stats
| |
1
| +<template> |
| |
2
| + <div>{{ name }}</div> |
| |
3
| +</template> |
| |
4
| +<script> |
| |
5
| + export default { |
| |
6
| + props: { |
| |
7
| + name: String |
| |
8
| + }, |
| |
9
| + created () { |
| |
10
| + console.log(this.name + ': 被创建'); |
| |
11
| + }, |
| |
12
| + destroyed () { |
| |
13
| + console.log(this.name + ': 被销毁'); |
| |
14
| + } |
| |
15
| + } |
| |
16
| +</script> |
0
| \ No newline at end of file |
17
| \ No newline at end of file |
| |
1
| +<template> |
| |
2
| + <Table border :columns="columns7" :data="data6" @on-expand="expand"></Table> |
| |
3
| +</template> |
| |
4
| +<script> |
| |
5
| + import TableExpand from '../components/tableExpand.vue'; |
| |
6
| + import etable from '../components/table.vue'; |
| |
7
| + export default { |
| |
8
| + components: { etable }, |
| |
9
| + data () { |
| |
10
| + return { |
| |
11
| + columns7: [ |
| |
12
| + { |
| |
13
| + type: 'expand', |
| |
14
| + width: 50, |
| |
15
| + render: (h, params) => { |
| |
16
| +// return h(etable); |
| |
17
| +// return h('div', params.row.name) |
| |
18
| + return h(TableExpand, { props: { name: params.row.name } }) |
| |
19
| + } |
| |
20
| + }, |
| |
21
| + { |
| |
22
| + title: '姓名', |
| |
23
| + key: 'name', |
| |
24
| + render: (h, params) => { |
| |
25
| + return h('div', [ |
| |
26
| + h('Icon', { |
| |
27
| + props: { |
| |
28
| + type: 'person' |
| |
29
| + } |
| |
30
| + }), |
| |
31
| + h('strong', params.row.name) |
| |
32
| + ]); |
| |
33
| + } |
| |
34
| + }, |
| |
35
| + { |
| |
36
| + title: '年龄', |
| |
37
| + key: 'age', |
| |
38
| + sortable: true |
| |
39
| + }, |
| |
40
| + { |
| |
41
| + title: '地址', |
| |
42
| + key: 'address' |
| |
43
| + }, |
| |
44
| + { |
| |
45
| + title: '操作', |
| |
46
| + key: 'action', |
| |
47
| + width: 150, |
| |
48
| + align: 'center', |
| |
49
| + render: (h, params) => { |
| |
50
| + return h('div', [ |
| |
51
| + h('Button', { |
| |
52
| + props: { |
| |
53
| + type: 'primary', |
| |
54
| + size: 'small' |
| |
55
| + }, |
| |
56
| + style: { |
| |
57
| + marginRight: '5px' |
| |
58
| + }, |
| |
59
| + on: { |
| |
60
| + click: () => { |
| |
61
| + this.show(params.index) |
| |
62
| + } |
| |
63
| + } |
| |
64
| + }, '查看'), |
| |
65
| + h('Button', { |
| |
66
| + props: { |
| |
67
| + type: 'error', |
| |
68
| + size: 'small' |
| |
69
| + }, |
| |
70
| + on: { |
| |
71
| + click: () => { |
| |
72
| + this.remove(params.index) |
| |
73
| + } |
| |
74
| + } |
| |
75
| + }, '删除') |
| |
76
| + ]); |
| |
77
| + } |
| |
78
| + } |
| |
79
| + ], |
| |
80
| + data6: [ |
| |
81
| + { |
| |
82
| + name: '王小明', |
| |
83
| + age: 18, |
| |
84
| + address: '北京市朝阳区芍药居' |
| |
85
| + }, |
| |
86
| + { |
| |
87
| + name: '张小刚', |
| |
88
| + age: 25, |
| |
89
| + address: '北京市海淀区西二旗', |
| |
90
| + _disableExpand: true |
| |
91
| + }, |
| |
92
| + { |
| |
93
| + name: '李小红', |
| |
94
| + age: 30, |
| |
95
| + address: '上海市浦东新区世纪大道', |
| |
96
| + _expanded: true |
| |
97
| + }, |
| |
98
| + { |
| |
99
| + name: '周小伟', |
| |
100
| + age: 26, |
| |
101
| + address: '深圳市南山区深南大道' |
| |
102
| + } |
| |
103
| + ] |
| |
104
| + } |
| |
105
| + }, |
| |
106
| + methods: { |
| |
107
| + show (index) { |
| |
108
| + this.$Modal.info({ |
| |
109
| + title: '用户信息', |
| |
110
| + content: `姓名:${this.data6[index].name}<br>年龄:${this.data6[index].age}<br>地址:${this.data6[index].address}` |
| |
111
| + }) |
| |
112
| + }, |
| |
113
| + remove (index) { |
| |
114
| + this.data6.splice(index, 1); |
| |
115
| + }, |
| |
116
| + expand (row, s) { |
| |
117
| +// console.log(row); |
| |
118
| +// console.log(s); |
| |
119
| + } |
| |
120
| + } |
| |
121
| + } |
| |
122
| +</script> |
| |
1
| + |
| |
2
| +export default { |
| |
3
| + name: 'TableExpand', |
| |
4
| + functional: true, |
| |
5
| + props: { |
| |
6
| + row: Object, |
| |
7
| + render: Function, |
| |
8
| + index: Number, |
| |
9
| + }, |
| |
10
| + render: (h, ctx) => { |
| |
11
| + return ctx.props.render(h, {row: ctx.props.row, index: ctx.props.index}); |
| |
12
| + } |
| |
13
| +}; |
0
| \ No newline at end of file |
14
| \ No newline at end of file |
1
| -<template> |
| |
2
| - <div ref="cell"></div> |
| |
3
| -</template> |
| |
4
| -<script> |
| |
5
| - import Vue from 'vue'; |
| |
6
| - export default { |
| |
7
| - name: 'TableExpand', |
| |
8
| - props: { |
| |
9
| - row: Object, |
| |
10
| - render: Function, |
| |
11
| - index: Number, |
| |
12
| - }, |
| |
13
| - methods: { |
| |
14
| - compile () { |
| |
15
| - if (this.render) { |
| |
16
| - this.$el.innerHTML = ''; |
| |
17
| - const component = new Vue({ |
| |
18
| - functional: true, |
| |
19
| - render: (h) => { |
| |
20
| - return this.render(h, { |
| |
21
| - row: this.row, |
| |
22
| - index: this.index |
| |
23
| - }); |
| |
24
| - } |
| |
25
| - }); |
| |
26
| - const Cell = component.$mount(); |
| |
27
| - this.$refs.cell.appendChild(Cell.$el); |
| |
28
| - } |
| |
29
| - } |
| |
30
| - }, |
| |
31
| - mounted () { |
| |
32
| - this.$nextTick(() => { |
| |
33
| - this.compile(); |
| |
34
| - }); |
| |
35
| - } |
| |
36
| - }; |
| |
37
| -</script> |
| |
38
| \ No newline at end of file |
0
| \ No newline at end of file |
| @@ -38,7 +38,7 @@ |
| @@ -38,7 +38,7 @@ |
38
| <script> |
38
| <script> |
39
| // todo :key="row" |
39
| // todo :key="row" |
40
| import Cell from './cell.vue'; |
40
| import Cell from './cell.vue'; |
41
| - import Expand from './expand.vue'; |
41
| + import Expand from './expand.js'; |
42
| import Mixin from './mixin'; |
42
| import Mixin from './mixin'; |
43
| |
43
| |
44
| export default { |
44
| export default { |