console
const Main = {
data() {
return {
loading: false,
tableData: [],
tablePage: {
currentPage: 1,
pageSize: 10,
totalResult: 0
}
}
},
mounted() {
this.findList()
},
methods: {
findList() {
this.loading = true
setTimeout(() => {
this.mockList(500).then(data => {
this.tableData = data
this.loading = false
this.tablePage.totalResult = data.length
})
}, 1000)
},
mockList(size) {
return new Promise(resolve => {
const list = []
for (let index = 0; index < size; index++) {
list.push({
name: `名称${index}`,
sex: '0',
num: 123,
age: 18,
num2: 234,
rate: 3,
address: 'shenzhen'
})
}
resolve(list)
})
},
handlePageChange({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.findList()
},
footerMethod({ columns, data }) {
console.log(data.length)
return [
columns.map((column, columnIndex) => {
if (columnIndex === 0) {
return '平均'
}
switch (column.property) {
case 'age':
case 'rate':
case 'num':
case 'num2':
return parseInt(XEUtils.mean(data, column.property))
}
return '无'
})
]
}
}
};
const Ctor = Vue.extend(Main);
new Ctor().$mount('#app')
<script src="https://cdn.jsdelivr.net/npm/vue">
</script>
<script src="https://cdn.jsdelivr.net/npm/xe-utils">
</script>
<script src="https://cdn.jsdelivr.net/npm/vxe-table">
</script>
<div id="app">
<template>
<div class="content-warp">
<vxe-table border show-overflow show-header-overflow show-footer-overflow show-footer ref="xTable2" height="300" :sort-config="{trigger: 'cell'}"
:footer-method="footerMethod" :scroll-x="{gt: 10}" :scroll-y="{gt: 100}" :loading="loading" :data="tableData">
<vxe-table-column type="seq" width="100"></vxe-table-column>
<vxe-table-column field="name" title="Name" width="150" sortable></vxe-table-column>
<vxe-table-column field="sex" title="Sex" width="100"></vxe-table-column>
<vxe-table-column field="age" title="Age" width="100"></vxe-table-column>
<vxe-table-column field="num" title="Num" width="100"></vxe-table-column>
<vxe-table-column field="num2" title="Num2" width="100"></vxe-table-column>
<vxe-table-column field="address" title="Address" width="200" show-overflow></vxe-table-column>
<vxe-table-column type="seq1" width="100"></vxe-table-column>
<vxe-table-column field="name1" title="Name" width="150" sortable></vxe-table-column>
<vxe-table-column field="sex1" title="Sex" width="100"></vxe-table-column>
<vxe-table-column field="age1" title="Age" width="100"></vxe-table-column>
<vxe-table-column field="num1" title="Num" width="100"></vxe-table-column>
<vxe-table-column field="num21" title="Num2" width="100"></vxe-table-column>
<vxe-table-column field="address1" title="Address" width="200" show-overflow></vxe-table-column>
</vxe-table>
<vxe-pager border size="medium" :loading="loading" :current-page="tablePage.currentPage" :page-size="tablePage.pageSize"
:total="tablePage.totalResult" :layouts="['PrevPage', 'JumpNumber', 'NextPage', 'FullJump', 'Sizes', 'Total']" @page-change="handlePageChange">
</vxe-pager>
<vxe-toolbar>
<template #buttons>
<vxe-button @click="loadList(50)">50条</vxe-button>
</template>
</vxe-toolbar>
</div>
</template>
</div>
@import url("https://cdn.jsdelivr.net/npm/vxe-table/lib/style.css");
.sortable-column-demo .vxe-header--row .vxe-header--column.sortable-ghost,
.sortable-column-demo .vxe-header--row .vxe-header--column.sortable-chosen {
background-color: #dfecfb;
}