Files
vxe-table/examples/views/table/tree/Line.vue
xuliangzhan 933fcde314 更新文档
2020-01-02 14:44:24 +08:00

275 lines
8.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 class="tip">
树表格通过配置 <table-api-link prop="tree-config"/>={<table-api-link prop="line"/>: true} 属性来开启树节点连接线<br>
<span class="red">开启渲染节点线将会下降渲染性能具体取决于数据量</span>
</p>
<vxe-table
resizable
show-overflow
highlight-hover-row
row-key
:tree-config="{children: 'children', line: true}"
:data="tableData">
<vxe-table-column field="name" title="Name" tree-node></vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></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>
<p class="tip">复选框</p>
<vxe-table
resizable
show-overflow
highlight-hover-row
highlight-current-row
row-key
size="medium"
:tree-config="{children: 'children', accordion: true, line: true, iconOpen: 'vxe-icon--caret-right rotate45', iconClose: 'vxe-icon--caret-right'}"
:checkbox-config="{labelField: 'name'}"
:data="tableData">
<vxe-table-column type="checkbox" title="Name" width="280" tree-node></vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
<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">自定义图标通过设置 <table-api-link prop="tree-config"/>={<table-api-link prop="iconOpen"/>, <table-api-link prop="iconClose"/>} 局部替换默认的图标</p>
<vxe-table
resizable
show-overflow
highlight-hover-row
row-key
size="small"
:radio-config="{labelField: 'name'}"
:tree-config="{children: 'children', accordion: true, line: true, iconOpen: 'fa fa-minus-square-o', iconClose: 'fa fa-plus-square-o'}"
:data="tableData">
<vxe-table-column type="radio" title="Name" tree-node></vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
<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">更多自定义</p>
<vxe-table
resizable
show-overflow
highlight-hover-row
row-key
ref="xTree"
size="mini"
:checkbox-config="{labelField: 'name'}"
:tree-config="{children: 'children', accordion: true, line: true, iconOpen: 'fa fa-caret-down', iconClose: 'fa fa-caret-right'}"
:data="tableData">
<vxe-table-column type="checkbox" title="Name" tree-node>
<template v-slot="{ row }">
<span>
<template v-if="row.children && row.children.length">
<i class="tree-node-icon fa" :class="$refs.xTree.isTreeExpandByRow(row) ? 'fa-folder-open-o' : 'fa-folder-o'"></i>
</template>
<template v-else>
<i class="tree-node-icon fa fa-file-o"></i>
</template>
<span>{{ row.name }}</span>
</span>
</template>
</vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
<p class="demo-code">{{ $t('app.body.button.showCode') }}</p>
<pre>
<code class="xml">{{ demoCodes[6] }}</code>
<code class="javascript">{{ demoCodes[7] }}</code>
<code class="css">{{ demoCodes[8] }}</code>
</pre>
</div>
</template>
<script>
import XEUtils from 'xe-utils'
import hljs from 'highlight.js'
export default {
data () {
return {
tableData: [],
demoCodes: [
`
<vxe-table
resizable
show-overflow
highlight-hover-row
row-key
:tree-config="{children: 'children', line: true}"
:data="tableData">
<vxe-table-column field="name" title="Name" tree-node></vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_TREE_DATA_LIST.slice(0)
}
}
`,
`
<vxe-table
resizable
show-overflow
highlight-hover-row
highlight-current-row
row-key
size="medium"
:tree-config="{children: 'children', accordion: true, line: true, iconOpen: 'vxe-icon--caret-right rotate45', iconClose: 'vxe-icon--caret-right'}"
:checkbox-config="{labelField: 'name'}"
:data="tableData">
<vxe-table-column type="checkbox" title="Name" width="280" tree-node></vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_TREE_DATA_LIST.slice(0)
}
}
`,
`
<vxe-table
resizable
show-overflow
highlight-hover-row
row-key
size="small"
:radio-config="{labelField: 'name'}"
:tree-config="{children: 'children', accordion: true, line: true, iconOpen: 'fa fa-minus-square-o', iconClose: 'fa fa-plus-square-o'}"
:data="tableData">
<vxe-table-column type="radio" title="Name" tree-node></vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_TREE_DATA_LIST.slice(0)
}
}
`,
`
<vxe-table
resizable
show-overflow
highlight-hover-row
row-key
ref="xTree"
size="mini"
:tree-config="{children: 'children', accordion: true, line: true, iconOpen: 'fa fa-caret-down', iconClose: 'fa fa-caret-right'}"
:data="tableData">
<vxe-table-column field="name" title="Name" tree-node>
<template v-slot="{ row }">
<span>
<template v-if="row.children && row.children.length">
<i class="tree-node-icon fa" :class="$refs.xTree.isTreeExpandByRow(row) ? 'fa-folder-open-o' : 'fa-folder-o'"></i>
</template>
<template v-else>
<i class="tree-node-icon fa fa-file-o"></i>
</template>
<span>{{ row.name }}</span>
</span>
</template>
</vxe-table-column>
<vxe-table-column field="size" title="Size"></vxe-table-column>
<vxe-table-column field="type" title="Type"></vxe-table-column>
<vxe-table-column field="date" title="Date"></vxe-table-column>
</vxe-table>
`,
`
export default {
data () {
return {
tableData: []
}
},
created () {
this.tableData = window.MOCK_TREE_DATA_LIST.slice(0)
}
}
`,
`
.tree-node-icon {
width: 16px;
text-align: center;
}
`
]
}
},
created () {
this.tableData = XEUtils.clone(window.MOCK_TREE_DATA_LIST, true)
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
}
}
</script>
<style scoped>
.tree-node-icon {
width: 18px;
text-align: center;
}
</style>