Files
vxe-table/examples/views/table/plugin/ShortcutKey.vue
xuliangzhan 9d1c36fd08 优化重构
2020-06-26 15:30:12 +08:00

154 lines
4.2 KiB
Vue

<template>
<div>
<p class="tip">具体兼容请查看 <a class="link" href="https://github.com/x-extends/vxe-table-plugin-shortcut-key" target="_blank">vxe-table-plugin-shortcut-key</a> 插件的 API</p>
<vxe-grid
border
resizable
height="530"
:loading="loading"
:pager-config="tablePage"
:columns="tableColumn"
:data="tableData"
@page-change="handlePageChange"></vxe-grid>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[0] }}</code>
<code class="javascript">{{ demoCodes[1] }}</code>
<code class="javascript">{{ demoCodes[2] }}</code>
</pre>
</div>
</template>
<script>
import XEAjax from 'xe-ajax'
import hljs from 'highlight.js'
export default {
data () {
return {
loading: false,
tablePage: {
total: 0,
currentPage: 1,
pageSize: 10,
pageSizes: [10, 20, 50, 100, 200, 500]
},
tableColumn: [
{ type: 'seq', width: 60 },
{ type: 'checkbox', width: 50 },
{ field: 'name', title: 'Name' },
{ field: 'nickname', title: 'Nickname' },
{ field: 'role', title: 'Role' },
{ field: 'describe', title: 'Describe', showOverflow: true }
],
tableData: [],
demoCodes: [
`
<vxe-grid
border
resizable
height="530"
:loading="loading"
:pager-config="tablePage"
:columns="tableColumn"
:data="tableData"
@page-change="handlePageChange"></vxe-grid>
`,
`
import VXETable from 'vxe-table'
import VXETablePluginShortcutKey from 'vxe-table-plugin-shortcut-key'
VXETable.use(VXETablePluginShortcutKey, {
custom: {
'pager.prevPage': 'ArrowLeft',
'pager.nextPage': 'ArrowRight'
}
})
`,
`
export default {
data () {
return {
loading: false,
tablePage: {
total: 0,
currentPage: 1,
pageSize: 10
},
tableColumn: [
{ type: 'seq', width: 60 },
{ type: 'checkbox', width: 50 },
{ field: 'name', title: 'Name' },
{ field: 'nickname', title: 'Nickname' },
{ field: 'role', title: 'Role' },
{ field: 'describe', title: 'Describe', showOverflow: true }
],
tableData: []
}
},
created () {
this.findList()
},
methods: {
findList () {
// 模拟后台接口
this.loading = true
XEAjax.get(\`/api/user/page/list/\${this.tablePage.pageSize}/\${this.tablePage.currentPage}\`).then(({ page, result }) => {
this.tableData = result
this.tablePage.total = page.total
this.loading = false
}).catch(e => {
this.loading = false
})
},
searchEvent () {
this.tablePage.currentPage = 1
this.findList()
},
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.get(`/api/user/page/list/${this.tablePage.pageSize}/${this.tablePage.currentPage}`).then(({ page, result }) => {
this.tableData = result
this.tablePage.total = page.total
this.loading = false
}).catch(() => {
this.loading = false
})
},
searchEvent () {
this.tablePage.currentPage = 1
this.findList()
},
handlePageChange ({ currentPage, pageSize }) {
this.tablePage.currentPage = currentPage
this.tablePage.pageSize = pageSize
this.findList()
}
}
}
</script>