84 lines
1.3 KiB
Vue
84 lines
1.3 KiB
Vue
|
|
<template>
|
||
|
|
<el-tree
|
||
|
|
style="max-width: 600px"
|
||
|
|
:data="data"
|
||
|
|
:props="defaultProps"
|
||
|
|
@node-click="handleNodeClick"
|
||
|
|
/>
|
||
|
|
</template>
|
||
|
|
|
||
|
|
<script lang="ts" setup>
|
||
|
|
defineOptions({ name: 'FolderTree' })
|
||
|
|
interface Tree {
|
||
|
|
label: string
|
||
|
|
children?: Tree[]
|
||
|
|
}
|
||
|
|
|
||
|
|
const handleNodeClick = (data: Tree) => {
|
||
|
|
console.log(data)
|
||
|
|
}
|
||
|
|
|
||
|
|
const data: Tree[] = [
|
||
|
|
{
|
||
|
|
label: 'Level one 1',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level two 1-1',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level three 1-1-1',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
label: 'Level one 2',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level two 2-1',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level three 2-1-1',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
label: 'Level two 2-2',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level three 2-2-1',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
label: 'Level one 3',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level two 3-1',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level three 3-1-1',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
{
|
||
|
|
label: 'Level two 3-2',
|
||
|
|
children: [
|
||
|
|
{
|
||
|
|
label: 'Level three 3-2-1',
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
],
|
||
|
|
},
|
||
|
|
]
|
||
|
|
|
||
|
|
const defaultProps = {
|
||
|
|
children: 'children',
|
||
|
|
label: 'label',
|
||
|
|
}
|
||
|
|
</script>
|