<template>
<a-table
:pagination="pagination"
:dataSource="tableList"
:columns="columns"
:rowKey="rowKey"
v-bind="$attrs"
@change="onTableChange"
>
<template v-for="custom in columnsCustoms" v-slot:[custom.customRender]="text, record, index">
<slot :name="custom.customRender" :text="text" :record="record" :index="index"></slot>
</template>
</a-table>
</template>
<script>
export default {
data() {
return {
tableList: [],
pagination: {
current: 1,
pageSize: 10,
total: 0,
showTotal: (total, range) => `共${total}條記錄`,
showSizeChanger: true,
showQuickJumper: true
}
}
},
props: {
fetchData: {
type: Function,
required: true
},
columns: {
type: Array,
required: true
},
rowKey: {
type: String,
default: 'id'
}
},
computed: {
columnsCustoms() {
return this.columns.filter(record => record.scopedSlots).map(item => item.scopedSlots)
}
},
mounted() {
this.getTableList(this.pagination)
},
methods: {
getTableList(pagination) {
const { data } = this.fetchData(pagination)
if (data.code === 200) {
const { records, total, current, pageSize } = data.data
this.tableList = records
this.pagination.total = total
this.pagination.current = current
this.pagination.pageSize = pageSize
}
},
onTableChange(pagination) {
this.getTableList(pagination)
}
}
}
</script>
antd-vue的table二次封裝
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。