Files
vxe-table/examples/views/table/advanced/Page.vue
xuliangzhan a9ee2ab7fe update
2019-07-26 21:37:06 +08:00

154 lines
4.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div>
<p>使用自带的分页 <pager-api-link name="vxe-pager"/></p>
<p>如果要支持动态序号可以通过 <table-api-link prop="start-index"/> 属性设置起始值</p>
<p>如果要支持保留选中状态可以通过设置 <table-api-link prop="select-config"/> <table-api-link prop="reserve"/> 属性</p>
<p class="red">启用 reserve 功能需要有 row-id 唯一主键</p>
<vxe-table
border
show-overflow
ref="xTable"
height="460"
row-id="id"
:loading="loading"
:start-index="(tablePage.currentPage - 1) * tablePage.pageSize"
:select-config="{reserve: true}"
:data.sync="tableData">
<vxe-table-column type="selection" width="60"></vxe-table-column>
<vxe-table-column type="index" title="序号" width="60"></vxe-table-column>
<vxe-table-column field="name" title="Name" sortable></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
<vxe-table-column field="rate" title="Rate"></vxe-table-column>
</vxe-table>
<vxe-pager
: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>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[0] }}</code>
<code class="javascript">{{ demoCodes[1] }}</code>
</pre>
</div>
</template>
<script>
import XEAjax from 'xe-ajax'
import hljs from 'highlight.js'
export default {
data () {
return {
loading: false,
tableData: [],
tablePage: {
currentPage: 1,
pageSize: 10,
totalResult: 0
},
demoCodes: [
`
<vxe-table
border
show-overflow
ref="xTable"
height="460"
row-id="id"
:loading="loading"
:start-index="(tablePage.currentPage - 1) * tablePage.pageSize"
:select-config="{reserve: true}"
:data.sync="tableData">
<vxe-table-column type="selection" width="60"></vxe-table-column>
<vxe-table-column type="index" title="序号" width="60"></vxe-table-column>
<vxe-table-column field="name" title="Name" sortable></vxe-table-column>
<vxe-table-column field="sex" title="Sex"></vxe-table-column>
<vxe-table-column field="age" title="Age"></vxe-table-column>
<vxe-table-column field="rate" title="Rate"></vxe-table-column>
</vxe-table>
<vxe-pager
: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>
`,
`
export default {
data () {
return {
loading: false,
tableData: [],
tablePage: {
currentPage: 1,
pageSize: 10,
totalResult: 0
}
}
},
created () {
this.findList()
},
methods: {
findList () {
this.loading = true
XEAjax.doGet(\`/api/user/page/list/\${this.tablePage.pageSize}/\${this.tablePage.currentPage}\`, this.formData).then(response => {
let { page, result } = response.data
this.tableData = result
this.tablePage.totalResult = page.totalResult
this.loading = false
}).catch(e => {
this.loading = false
})
},
handlePageChange ({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.findList()
}
}
}
`
]
}
},
created () {
this.findList()
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
findList () {
this.loading = true
XEAjax.doGet(`/api/user/page/list/${this.tablePage.pageSize}/${this.tablePage.currentPage}`, this.formData).then(response => {
let { page, result } = response.data
this.tableData = result
this.tablePage.totalResult = page.totalResult
this.loading = false
}).catch(e => {
this.loading = false
})
},
handlePageChange ({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.findList()
}
}
}
</script>