Files
vxe-table/examples/views/table/tree/Sort.vue
xuliangzhan 706831f696 更新文档
2020-03-05 17:07:45 +08:00

123 lines
4.2 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">
实现树结构深层排序<br>
<span class="red">(树结构不支持大量数据如果数据量超过 500 请谨慎使用)</span>
</p>
<vxe-table
max-height="600"
:loading="loading"
:data="tableData"
:tree-config="{children: 'children'}"
@sort-change="sortChangeEvent">
<vxe-table-column field="id" title="ID" width="80"></vxe-table-column>
<vxe-table-column field="name" title="名称" tree-node></vxe-table-column>
<vxe-table-column field="size" title="大小" width="140"></vxe-table-column>
<vxe-table-column field="type" title="类型" width="140"></vxe-table-column>
<vxe-table-column field="date" title="修改日期" width="260" sortable remote-sort></vxe-table-column>
</vxe-table>
<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 XEUtils from 'xe-utils'
import hljs from 'highlight.js'
export default {
data () {
return {
filterName: '',
loading: false,
originData: [],
tableData: [],
demoCodes: [
`
<vxe-table
max-height="600"
:loading="loading"
:data="tableData"
:tree-config="{children: 'children'}"
@sort-change="sortChangeEvent">
<vxe-table-column field="id" title="ID" width="80"></vxe-table-column>
<vxe-table-column field="name" title="名称" tree-node></vxe-table-column>
<vxe-table-column field="size" title="大小" width="140"></vxe-table-column>
<vxe-table-column field="type" title="类型" width="140"></vxe-table-column>
<vxe-table-column field="date" title="修改日期" width="260" sortable remote-sort></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
loading: false,
originData: [],
tableData: []
}
},
created () {
this.originData = XEUtils.toTreeArray(window.MOCK_TREE_DATA_LIST)
this.findList()
},
methods: {
// 模拟后台接口
findList (order) {
this.loading = true
setTimeout(() => {
this.loading = false
// 将有关联的列表转成树结构
if (order === 'asc') {
this.tableData = XEUtils.toArrayTree(this.originData, { key: 'id', parentKey: 'parentId', sortKey: 'date', reverse: false })
} else if (order === 'desc') {
this.tableData = XEUtils.toArrayTree(this.originData, { key: 'id', parentKey: 'parentId', sortKey: 'date', reverse: true })
} else {
this.tableData = XEUtils.toArrayTree(this.originData, { key: 'id', parentKey: 'parentId' })
}
}, 300)
},
sortChangeEvent ({ column, property, order }) {
this.findList(order)
}
}`
]
}
},
created () {
this.originData = XEUtils.toTreeArray(XEUtils.clone(window.MOCK_TREE_DATA_LIST, true))
this.findList()
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
// 模拟后台接口
findList (order) {
this.loading = true
setTimeout(() => {
this.loading = false
// 将有关联的列表转成树结构
if (order === 'asc') {
this.tableData = XEUtils.toArrayTree(this.originData, { key: 'id', parentKey: 'parentId', sortKey: 'date', reverse: false })
} else if (order === 'desc') {
this.tableData = XEUtils.toArrayTree(this.originData, { key: 'id', parentKey: 'parentId', sortKey: 'date', reverse: true })
} else {
this.tableData = XEUtils.toArrayTree(this.originData, { key: 'id', parentKey: 'parentId' })
}
}, 300)
},
sortChangeEvent ({ order }) {
this.findList(order)
}
}
}
</script>