@@ -6,10 +6,11 @@ import {computed, onMounted, reactive, ref, watch} from 'vue'
66import {useRoute , useRouter } from ' vue-router'
77import {message } from ' ant-design-vue'
88import {downloadCsv } from ' @/lib/helper'
9+ import dayjs from ' dayjs'
910
1011const {$gettext, interpolate} = gettext
1112
12- const emit = defineEmits ([' onSelected' , ' onSelectedRecord' , ' clickEdit' ])
13+ const emit = defineEmits ([' onSelected' , ' onSelectedRecord' , ' clickEdit' , ' update:selectedRowKeys ' ])
1314
1415const props = defineProps ({
1516 api: Object ,
@@ -66,6 +67,11 @@ const props = defineProps({
6667 exportCsv: {
6768 type: Boolean ,
6869 default: false
70+ },
71+ size: String ,
72+ selectedRowKeys: {
73+ type: Array ,
74+ default: []
6975 }
7076})
7177
@@ -83,7 +89,14 @@ const params = reactive({
8389 ... props .get_params
8490})
8591
86- const selectedRowKeys = ref ([])
92+ const selectedRowKeysBuffer = computed ({
93+ get() {
94+ return props ?.selectedRowKeys ?? []
95+ },
96+ set(v ) {
97+ emit (' update:selectedRowKeys' , v )
98+ }
99+ })
87100
88101const searchColumns = getSearchColumns ()
89102const pithyColumns = getPithyColumns ()
@@ -170,8 +183,13 @@ function checked(c: any) {
170183}
171184
172185function onSelectChange(_selectedRowKeys : any ) {
173- selectedRowKeys .value = _selectedRowKeys
174- emit (' onSelected' , selectedRowKeys .value )
186+ const n: any = [... _selectedRowKeys ]
187+ const t = [... selectedRowKeysBuffer .value ].concat (n )
188+
189+ const set = new Set (t )
190+ selectedRowKeysBuffer .value = Array .from (set )
191+
192+ emit (' onSelected' , selectedRowKeysBuffer .value )
175193}
176194
177195function onSelect(record : any ) {
@@ -201,7 +219,7 @@ watch(params, () => {
201219const rowSelection = computed (() => {
202220 if (props .selectionType ) {
203221 return {
204- selectedRowKeys: selectedRowKeys , onChange: onSelectChange ,
222+ selectedRowKeys: selectedRowKeysBuffer , onChange: onSelectChange ,
205223 onSelect: onSelect , type: props .selectionType
206224 }
207225 } else {
@@ -263,25 +281,26 @@ async function export_csv() {
263281 dataSource = dataSource .concat (... response [props .data_key ])
264282 }
265283 }).catch ((e : any ) => {
266- message .error (e .message ?? ' 系统错误' )
284+ message .error (e .message ?? $gettext (' Server error' ))
285+ hasMore = false
286+ return
267287 })
268288 page += 1
269289 }
270290 const data: any [] = []
271291 dataSource .forEach ((row : Object ) => {
272292 let obj: any = {}
273293 headerKeys .forEach (key => {
274- console .log (row , key )
275294 let data = fn (row , key )
276295 const c = showColumnsMap [key ]
277- console .log (c )
278296 data = c ?.customRender ?.({text: data }) ?? data
279297 obj [c .dataIndex ] = data
280298 })
281299 data .push (obj )
282300 })
283- console .log (header , data )
284- downloadCsv (header , data , ' 测试.csv' )
301+
302+ downloadCsv (header , data ,
303+ ` ${$gettext (' Export' )}-${dayjs ().format (' YYYYMMDDHHmmss' )}.csv ` )
285304}
286305 </script >
287306
@@ -295,11 +314,11 @@ async function export_csv() {
295314 >
296315 <template #action >
297316 <a-space class =" reset-btn" >
298- <a-button @click =" export_csv" type =" primary" ghost >
299- < translate > Export</ translate >
317+ <a-button v-if = " exportCsv " @click =" export_csv" type =" primary" ghost >
318+ {{ $gettext(' Export') }}
300319 </a-button >
301320 <a-button @click =" reset_search" >
302- < translate > Reset</ translate >
321+ {{ $gettext(' Reset') }}
303322 </a-button >
304323 </a-space >
305324 </template >
@@ -313,6 +332,7 @@ async function export_csv() {
313332 :rowSelection =" rowSelection"
314333 @change =" stdChange"
315334 :scroll =" { x: scrollX }"
335+ :size =" size"
316336 >
317337 <template
318338 v-slot :bodyCell =" {text , record , index , column } "
@@ -335,7 +355,7 @@ async function export_csv() {
335355 </template >
336356 </template >
337357 </a-table >
338- <std-pagination :pagination =" pagination" @changePage =" get_list" />
358+ <std-pagination :size = " size " : pagination =" pagination" @changePage =" get_list" />
339359 </div >
340360</template >
341361
0 commit comments