1
1
import T from "ant-design-vue/es/table/Table" ;
2
+ import get from "lodash.get"
2
3
export default {
3
4
data ( ) {
4
5
return {
@@ -13,6 +14,10 @@ export default {
13
14
} ;
14
15
} ,
15
16
props : Object . assign ( { } , T . props , {
17
+ rowKey : {
18
+ type : String ,
19
+ default : 'id'
20
+ } ,
16
21
data : {
17
22
type : Function ,
18
23
required : true
@@ -33,9 +38,12 @@ export default {
33
38
type : Boolean ,
34
39
default : false
35
40
} ,
41
+ showPagination : {
42
+ default : 'auto'
43
+ }
36
44
} ) ,
37
45
watch : {
38
- 'localPagination.current' ( val ) {
46
+ 'localPagination.current' ( val ) {
39
47
this . $router . push ( {
40
48
name : this . $route . name ,
41
49
params : Object . assign ( { } , this . $route . params , {
@@ -44,41 +52,28 @@ export default {
44
52
} ) ;
45
53
} ,
46
54
pageNum ( val ) {
47
- this . localPagination = Object . assign ( { } , this . localPagination , {
55
+ Object . assign ( this . localPagination , {
48
56
current : val
49
57
} ) ;
50
58
} ,
51
59
pageSize ( val ) {
52
- this . localPagination = Object . assign ( { } , this . localPagination , {
60
+ Object . assign ( this . localPagination , {
53
61
pageSize : val
54
62
} ) ;
55
63
} ,
56
64
showSizeChanger ( val ) {
57
- this . localPagination = Object . assign ( { } , this . localPagination , {
65
+ Object . assign ( this . localPagination , {
58
66
showSizeChanger : val
59
67
} ) ;
60
- } ,
61
- /*
62
- 'selectedRows': function (selectedRows) {
63
- this.needTotalList = this.needTotalList.map(item => {
64
- return {
65
- ...item,
66
- total: selectedRows.reduce( (sum, val) => {
67
- return sum + val[item.dataIndex]
68
- }, 0)
69
- }
70
- })
71
- }*/
68
+ }
72
69
} ,
73
70
created ( ) {
74
- this . localPagination = Object . assign ( { } , this . localPagination , {
71
+ this . localPagination = [ 'auto' , true ] . includes ( this . showPagination ) && Object . assign ( { } , this . localPagination , {
75
72
current : this . pageNum ,
76
73
pageSize : this . pageSize ,
77
74
showSizeChanger : this . showSizeChanger
78
75
} ) ;
79
-
80
76
this . needTotalList = this . initTotalList ( this . columns )
81
-
82
77
this . loadData ( ) ;
83
78
} ,
84
79
methods : {
@@ -87,13 +82,11 @@ export default {
87
82
} ,
88
83
loadData ( pagination , filters , sorter ) {
89
84
this . localLoading = true
90
- const result = this . data (
85
+ var result = this . data (
91
86
Object . assign ( {
92
- pageNo :
93
- ( pagination && pagination . current ) ||
87
+ pageNo : ( pagination && pagination . current ) ||
94
88
this . localPagination . current ,
95
- pageSize :
96
- ( pagination && pagination . pageSize ) ||
89
+ pageSize : ( pagination && pagination . pageSize ) ||
97
90
this . localPagination . pageSize
98
91
} ,
99
92
( sorter && sorter . field && {
@@ -116,31 +109,35 @@ export default {
116
109
pageSize : ( pagination && pagination . pageSize ) ||
117
110
this . localPagination . pageSize
118
111
} ) ;
112
+
113
+ ! r . totalCount && [ 'auto' , false ] . includes ( this . showPagination ) && ( this . localPagination = false )
114
+ console . log ( this . localPagination ) ;
119
115
this . localDataSource = r . data ; // 返回结果中的数组数据
120
116
this . localLoading = false
121
- } ) . catch ( ( ) => {
122
- this . localLoading = false
123
117
} ) ;
124
118
}
125
119
} ,
126
- initTotalList ( columns ) {
120
+ initTotalList ( columns ) {
127
121
const totalList = [ ]
128
- columns . forEach ( column => {
122
+ columns && columns instanceof Array && columns . forEach ( column => {
129
123
if ( column . needTotal ) {
130
- totalList . push ( { ...column , total : 0 } )
124
+ totalList . push ( { ...column ,
125
+ total : 0
126
+ } )
131
127
}
132
128
} )
133
129
return totalList
134
130
} ,
135
- updateSelect ( selectedRowKeys , selectedRows ) {
131
+ updateSelect ( selectedRowKeys , selectedRows ) {
136
132
this . selectedRowKeys = selectedRowKeys
137
133
this . selectedRows = selectedRows
138
134
let list = this . needTotalList
139
135
this . needTotalList = list . map ( item => {
140
136
return {
141
137
...item ,
142
138
total : selectedRows . reduce ( ( sum , val ) => {
143
- return sum + val [ item . dataIndex ]
139
+ let total = sum + get ( val , item . dataIndex )
140
+ return isNaN ( total ) ? 0 : total
144
141
} , 0 )
145
142
}
146
143
} )
@@ -149,7 +146,7 @@ export default {
149
146
updateEdit ( ) {
150
147
this . selectedRows = [ ]
151
148
} ,
152
- onClearSelected ( ) {
149
+ onClearSelected ( ) {
153
150
this . selectedRowKeys = [ ]
154
151
this . updateSelect ( [ ] , [ ] )
155
152
} ,
@@ -158,37 +155,53 @@ export default {
158
155
let d = [ ]
159
156
// 构建 已选择
160
157
d . push (
161
- h ( 'span' , { style : { marginRight : '12px' } } , [ '已选择 ' , h ( 'a' , { style : { fontWeight : 600 } } , this . selectedRows . length ) ] )
158
+ h ( 'span' , {
159
+ style : {
160
+ marginRight : '12px'
161
+ }
162
+ } , [ '已选择 ' , h ( 'a' , {
163
+ style : {
164
+ fontWeight : 600
165
+ }
166
+ } , this . selectedRows . length ) ] )
162
167
) ;
163
168
164
169
// 构建 列统计
165
170
this . needTotalList . map ( item => {
166
- d . push ( h ( 'span' ,
167
- { style : { marginRight : '12px' } } ,
171
+ d . push ( h ( 'span' , {
172
+ style : {
173
+ marginRight : '12px'
174
+ }
175
+ } ,
168
176
[
169
177
`${ item . title } 总计 ` ,
170
- h ( 'a' , { style : { fontWeight : 600 } } , `${ item . customRender ? item . customRender ( item . total ) : item . total } ` )
171
- ] )
172
- )
178
+ h ( 'a' , {
179
+ style : {
180
+ fontWeight : 600
181
+ }
182
+ } , `${ ! item . customRender ? item . total : item . customRender ( item . total ) } ` )
183
+ ] ) )
173
184
} ) ;
174
185
175
186
// 构建 清空选择
176
- d . push ( h ( 'a' , {
177
- style : { marginLeft : '24px' } ,
187
+ d . push ( h ( 'a' , {
188
+ style : {
189
+ marginLeft : '24px'
190
+ } ,
178
191
on : {
179
192
click : _vm . onClearSelected
180
193
}
181
- } , '清空' ) )
194
+ } , '清空' ) )
182
195
183
196
return d
184
197
} ,
185
198
renderAlert ( h ) {
186
-
187
199
return h ( 'span' , {
188
200
slot : 'message'
189
201
} , this . renderMsg ( h ) )
190
202
} ,
191
203
} ,
204
+
192
205
render ( h ) {
193
206
const _vm = this
194
207
@@ -206,7 +219,13 @@ export default {
206
219
// 显示信息提示
207
220
if ( this . showAlertInfo ) {
208
221
209
- props . rowSelection = { selectedRowKeys : this . selectedRowKeys , onChange : this . updateSelect } ;
222
+ props . rowSelection = {
223
+ selectedRowKeys : this . selectedRowKeys ,
224
+ onChange : ( selectedRowKeys , selectedRows ) => {
225
+ _vm . updateSelect ( selectedRowKeys , selectedRows )
226
+ _vm . $emit ( 'onSelect' , { selectedRowKeys : selectedRowKeys , selectedRows : selectedRows } )
227
+ }
228
+ } ;
210
229
211
230
return h ( 'div' , { } , [
212
231
h ( "a-alert" , {
@@ -217,16 +236,17 @@ export default {
217
236
type : 'info' ,
218
237
showIcon : true
219
238
}
220
- } , [ _vm . renderAlert ( h ) ] ) ,
239
+ } , [ _vm . renderAlert ( h ) ] ) ,
221
240
h ( "a-table" , {
222
241
tag : "component" ,
223
242
attrs : props ,
224
243
on : {
225
244
change : _vm . loadData
226
245
} ,
227
246
scopedSlots : this . $scopedSlots
228
- } )
247
+ } , this . $slots . default )
229
248
] ) ;
249
+
230
250
}
231
251
232
252
return h ( "a-table" , {
@@ -236,6 +256,6 @@ export default {
236
256
change : _vm . loadData
237
257
} ,
238
258
scopedSlots : this . $scopedSlots
239
- } ) ;
259
+ } , this . $slots . default ) ;
240
260
}
241
- } ;
261
+ } ;
0 commit comments