Files
vxe-table/examples/views/table/grid/Toolbar.vue
xuliangzhan de31cff13c update
2019-07-31 16:36:25 +08:00

171 lines
5.8 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>工具栏通过 <grid-api-link prop="toolbar"/> 属性配置</p>
<p>支持显示/隐藏列列宽拖动状态的保存功能</p>
<p>可以通过 <toolbar-api-link prop="storage"/> 开启将列个性化的设置状态保存到本地</p>
<vxe-grid
border
resizable
height="530"
:pager-config="tablePage"
:proxy-config="tableProxy"
:columns="tableColumn"
:toolbar="toolbar"
:edit-config="{trigger: 'click', mode: 'row', showStatus: true}"
@toolbar-button-click="toolbarButtonClickEvent"></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>
</pre>
</div>
</template>
<script>
import XEAjax from 'xe-ajax'
import hljs from 'highlight.js'
export default {
data () {
return {
tablePage: {
pageSize: 15
},
tableProxy: {
props: {
result: 'data.result',
total: 'data.page.total'
},
ajax: {
// page 对象: { pageSize, currentPage }
query: ({ page }) => XEAjax.doGet(`/api/user/page/list/${page.pageSize}/${page.currentPage}`),
// body 对象: { removeRecords }
delete: ({ body }) => XEAjax.doPost('/api/user/save', body),
// body 对象: { insertRecords, updateRecords, removeRecords, pendingRecords }
save: ({ body }) => XEAjax.doPost('/api/user/save', body)
}
},
toolbar: {
id: 'toolbar_demo_1',
buttons: [
{ code: 'reload', name: 'app.body.button.refresh' },
{ code: 'insert_actived', name: '新增并激活' },
{ code: 'mark_cancel', name: 'app.body.button.markCancel' },
{ code: 'delete_selection', name: 'app.body.button.deleteSelectedRecords' },
{ code: 'remove_selection', name: '移除' },
{ code: 'save', name: 'app.body.button.save' },
{ code: 'export', name: '导出.csv' },
{ code: 'myBtn', name: '自定义按钮' }
],
resizable: {
storage: true
},
setting: {
storage: true
}
},
tableColumn: [
{ type: 'selection', width: 50 },
{ type: 'index', width: 60 },
{ field: 'name', title: 'Name', editRender: { name: 'input' } },
{ field: 'nickname', title: 'Nickname', editRender: { name: 'input' } },
{ field: 'role', title: 'Role', editRender: { name: 'input' } },
{ field: 'describe', title: 'Describe', showOverflow: true, editRender: { name: 'input' } }
],
demoCodes: [
`
<vxe-grid
border
resizable
height="530"
:pager-config="tablePage"
:proxy-config="tableProxy"
:columns="tableColumn"
:toolbar="toolbar"
:edit-config="{trigger: 'click', mode: 'row', showStatus: true}"
@toolbar-button-click="toolbarButtonClickEvent"></vxe-grid>
`,
`
export default {
data () {
return {
tablePage: {
pageSize: 15
},
tableProxy: {
// 配置响应的数据属性
props: {
result: 'data.result',
total: 'data.page.total'
},
ajax: {
// page 对象: { pageSize, currentPage }
query: ({ page }) => XEAjax.doGet(\`/api/user/page/list/\${page.pageSize}/\${page.currentPage}\`), // 模拟请求
// body 对象: { removeRecords }
delete: ({ body }) => XEAjax.doPost('/api/user/save', body),
// body 对象: { insertRecords, updateRecords, removeRecords, pendingRecords }
save: ({ body }) => XEAjax.doPost('/api/user/save', body)
}
},
toolbar: {
buttons: [
{ code: 'reload', name: 'app.body.button.refresh' },
{ code: 'insert_actived', name: '新增并激活' },
{ code: 'mark_cancel', name: 'app.body.button.markCancel' },
{ code: 'delete_selection', name: 'app.body.button.deleteSelectedRecords' },
{ code: 'remove_selection', name: '移除' },
{ code: 'save', name: 'app.body.button.save' },
{ code: 'export', name: '导出.csv' },
{ code: 'myBtn', name: '自定义按钮' }
],
resizable: {
storage: true
},
setting: {
storage: true
}
},
tableColumn: [
{ type: 'selection', width: 50 },
{ type: 'index', width: 60 },
{ field: 'name', title: 'Name', editRender: { name: 'input' } },
{ field: 'nickname', title: 'Nickname', editRender: { name: 'input' } },
{ field: 'role', title: 'Role', editRender: { name: 'input' } },
{ field: 'describe', title: 'Describe', showOverflow: true, editRender: { name: 'input' } }
]
}
},
methods: {
toolbarButtonClickEvent ({ button }, event) {
switch (button.code) {
case 'myBtn':
this.$XMsg.alert(button.name)
break
}
}
}
}
`
]
}
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
toolbarButtonClickEvent ({ button }, event) {
switch (button.code) {
case 'myBtn':
this.$XMsg.alert(button.name)
break
}
}
}
}
</script>