Files
vxe-table/examples/views/table/tree/Selection.vue
xuliangzhan 9a2a3bca1d update
2019-08-29 22:02:02 +08:00

198 lines
6.7 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">多选树表格</p>
<vxe-table
resizable
:tree-config="{children: 'children'}"
:data="tableData"
@select-change="selectChangeEvent">
<vxe-table-column type="selection" width="120" tree-node></vxe-table-column>
<vxe-table-column field="name" title="Name"></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">默认选中通过指定 <table-api-link prop="checkRowKeys"/> 设置默认选中的行</p>
<vxe-table
resizable
row-id="id"
:data="tableData"
:tree-config="{children: 'children'}"
:select-config="{labelField: 'name', checkRowKeys: ['122000', '20000']}"
@select-change="selectChangeEvent">
<vxe-table-column type="selection" title="Sex" width="180" 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="checkStrictly"/> 设置父子节点不互相关联</p>
<vxe-table
resizable
:data="tableData"
:tree-config="{children: 'children'}"
:select-config="{checkStrictly: true}">
<vxe-table-column type="selection" width="120" tree-node></vxe-table-column>
<vxe-table-column field="name" title="Name"></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">还可以通过 <table-api-link prop="checkMethod"/> 方法控制 CheckBox 是否允许用户手动勾选还可以配置 <table-api-link prop="labelField"/> 列显示属性禁止用户手动勾选但是可以通过函数式调用强制勾选该功能对于某些场景需要强制勾选指定行时非常有用</p>
<vxe-table
resizable
:data="tableData"
:tree-config="{children: 'children'}"
:select-config="{labelField: 'name', checkMethod}"
@select-change="selectChangeEvent">
<vxe-table-column type="selection" width="180" title="Sex" 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> -->
</div>
</template>
<script>
import hljs from 'highlight.js'
export default {
data () {
return {
tableData: [],
demoCodes: [
`
<vxe-table
resizable
:tree-config="{children: 'children'}"
:data="tableData"
@select-change="selectChangeEvent">
<vxe-table-column type="selection" tree-node></vxe-table-column>
<vxe-table-column field="name" title="Name"></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)
},
methods: {
selectChangeEvent ({ selection }) {
console.info(\`勾选\${selection.length}个树形节点\`, selection)
}
}
}
`,
`
<vxe-table
resizable
row-id="id"
:data="tableData"
:tree-config="{children: 'children'}"
:select-config="{labelField: 'name', checkRowKeys: ['122000', '20000']}"
@select-change="selectChangeEvent">
<vxe-table-column type="selection" title="Sex" width="180" 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)
},
methods: {
selectChangeEvent ({ selection }) {
console.info(\`勾选\${selection.length}个树形节点\`, selection)
}
}
}
`,
`
<vxe-table
resizable
:data="tableData"
:tree-config="{children: 'children'}"
:select-config="{checkStrictly: true}">
<vxe-table-column type="selection" width="120" tree-node></vxe-table-column>
<vxe-table-column field="name" title="Name"></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)
}
}
`
]
}
},
created () {
this.tableData = this.$utils.clone(window.MOCK_TREE_DATA_LIST, true)
},
mounted () {
Array.from(this.$el.querySelectorAll('pre code')).forEach((block) => {
hljs.highlightBlock(block)
})
},
methods: {
checkMethod ({ row }) {
return !['js', 'mp4'].includes(row.type)
},
selectChangeEvent ({ selection }) {
console.info(`勾选${selection.length}个树形节点`, selection)
}
}
}
</script>