Files
vxe-table/examples/views/table/advanced/Page.vue
xuliangzhan 0d3e5b33de 更新文档
2019-12-30 20:13:33 +08:00

471 lines
16 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 class="tip">
使用自带的分页 <pager-api-link name="vxe-pager"/><br>
如果要支持动态序号可以通过 <table-api-link prop="seq-config"/>={<table-api-link prop="startIndex"/>} 属性设置起始值<br>
如果要支持保留选中状态可以通过设置 <table-api-link prop="checkbox-config"/> <table-api-link prop="reserve"/> 属性<br>
启用 reserve 功能需要有 row-id 唯一主键可以通过调用 <table-api-link prop="getCheckboxReserveRecords"/> 方法获取获取已保留选中的行数据
</p>
<p class="tip">默认样式</p>
<vxe-table
show-overflow
height="200"
row-id="id"
:loading="loading"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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>
<p class="tip">设置分页 border 样式</p>
<vxe-table
border
show-overflow
height="200"
row-id="id"
size="medium"
:loading="loading"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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
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>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[2] }}</code>
<code class="javascript">{{ demoCodes[3] }}</code>
</pre>
<p class="tip">设置分页 background 样式</p>
<vxe-table
border
show-overflow
height="200"
row-id="id"
size="small"
:loading="loading"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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
background
size="small"
: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[4] }}</code>
<code class="javascript">{{ demoCodes[5] }}</code>
</pre>
<p class="tip">设置分页 perfect 样式</p>
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button size="mini" @click="getSelectReserveEvent">获取已保留选中的行数据</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
border
show-overflow
ref="xTable"
height="200"
row-id="id"
size="mini"
:loading="loading"
:seq-config="{startIndex: (tablePage.currentPage - 1) * tablePage.pageSize}"
:checkbox-config="{reserve: true}"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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
perfect
size="mini"
: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[6] }}</code>
<code class="javascript">{{ demoCodes[7] }}</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
show-overflow
height="200"
row-id="id"
:loading="loading"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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.get(\`/api/user/page/list/\${this.tablePage.pageSize}/\${this.tablePage.currentPage}\`, this.formData)then(({ page, result }) => {
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()
}
}
}
`,
`
<vxe-table
border
show-overflow
height="200"
row-id="id"
size="medium"
:loading="loading"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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
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>
`,
`
export default {
data () {
return {
loading: false,
tableData: [],
tablePage: {
currentPage: 1,
pageSize: 10,
totalResult: 0
}
}
},
created () {
this.findList()
},
methods: {
findList () {
this.loading = true
XEAjax.get(\`/api/user/page/list/\${this.tablePage.pageSize}/\${this.tablePage.currentPage}\`, this.formData)then(({ page, result }) => {
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()
}
}
}
`,
`
<vxe-table
border
show-overflow
height="200"
row-id="id"
size="small"
:loading="loading"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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
background
size="small"
: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.get(\`/api/user/page/list/\${this.tablePage.pageSize}/\${this.tablePage.currentPage}\`, this.formData)then(({ page, result }) => {
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()
}
}
}
`,
`
<vxe-toolbar>
<template v-slot:buttons>
<vxe-button size="mini" @click="getSelectReserveEvent">获取已保留选中的行数据</vxe-button>
</template>
</vxe-toolbar>
<vxe-table
border
show-overflow
ref="xTable"
height="200"
row-id="id"
size="mini"
:loading="loading"
:seq-config="{startIndex: (tablePage.currentPage - 1) * tablePage.pageSize}"
:checkbox-config="{reserve: true}"
:data="tableData">
<vxe-table-column type="checkbox" width="60"></vxe-table-column>
<vxe-table-column type="seq" 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
perfect
size="mini"
: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.get(\`/api/user/page/list/\${this.tablePage.pageSize}/\${this.tablePage.currentPage}\`, this.formData)then(({ page, result }) => {
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()
},
getSelectReserveEvent () {
let selectReserveRecords = this.$refs.xTable.getCheckboxReserveRecords()
this.$XModal.alert(selectReserveRecords.length)
}
}
}
`
]
}
},
created () {
this.findList()
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
findList () {
this.loading = true
XEAjax.get(`/api/user/page/list/${this.tablePage.pageSize}/${this.tablePage.currentPage}`, this.formData).then(({ page, result }) => {
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()
},
getSelectReserveEvent () {
let selectReserveRecords = this.$refs.xTable.getCheckboxReserveRecords()
this.$XModal.alert(selectReserveRecords.length)
}
}
}
</script>