Files
vxe-table/examples/views/table/tree/Selection.vue
xuliangzhan d976aec26b 内部重构
2020-01-13 18:31:50 +08:00

199 lines
6.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">多选树表格</p>
<vxe-table
resizable
:tree-config="{children: 'children'}"
:data="tableData"
:checkbox-config="{labelField: 'id', highlight: true}"
@checkbox-change="selectChangeEvent">
<vxe-table-column type="checkbox" title="ID" width="280" 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'}"
:checkbox-config="{labelField: 'name', checkRowKeys: ['122000', '20000']}"
@checkbox-change="selectChangeEvent">
<vxe-table-column type="checkbox" title="Sex" width="400" 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"/> 设置父子节点不互相关联默认不显示头部复选框可以通过 checkbox-config={<table-api-link prop="showHeader"/>} 设置</p>
<vxe-table
resizable
:data="tableData"
:tree-config="{children: 'children'}"
:checkbox-config="{labelField: 'name', checkStrictly: true}">
<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[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'}"
:checkbox-config="{labelField: 'name', checkMethod}"
@checkbox-change="selectChangeEvent">
<vxe-table-column type="checkbox" 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'
import XEUtils from 'xe-utils'
export default {
data () {
return {
tableData: [],
demoCodes: [
`
<vxe-table
resizable
:tree-config="{children: 'children'}"
:data="tableData"
:checkbox-config="{labelField: 'id', highlight: true}"
@checkbox-change="selectChangeEvent">
<vxe-table-column type="checkbox" title="ID" width="280" 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'}"
:checkbox-config="{labelField: 'name', checkRowKeys: ['122000', '20000']}"
@checkbox-change="selectChangeEvent">
<vxe-table-column type="checkbox" title="Sex" width="400" 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'}"
:checkbox-config="{labelField: 'name', checkStrictly: true}">
<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)
}
}
`
]
}
},
created () {
this.tableData = XEUtils.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>