<!-- 公共树组件 --> //新建的 tree.vue
<template>
<div style="font-size: 14px; font-weight: 600; height: 50px; border-bottom: 1px solid #eee;line-height: 50px; padding-left: 10px;">{{ props.name }}</div>
<div style="height: calc(100% - 51px); overflow: auto;" >
<el-tree node-key="id" :current-node-key="2" highlight-current="true" default-expand-all="true" :data="props.Tree" :props="defaultProps" @node-click="handleNodeClick" >
<template #default="scope">
<div class="custom-node" >
<el-icon v-if="scope.node.id == ''" style="color: #028CFF;"><Management /></el-icon>
<el-icon v-if="scope.node.id != 1" style="color: #028CFF;"><WalletFilled /></el-icon> 
<span>{{scope.node.label}}</span>
</div>
</template>
</el-tree>
</div>
</template>
<script lang="ts" setup>
import { defineEmits } from 'vue'
const emit = defineEmits(['childfun'])
const props = defineProps({
name: String,
Tree: null
})
const handleNodeClick = (data: Tree) => {
console.log(data.id)
emit("childfun",data.id);
}
const defaultProps = {
children: 'children',
label: 'label',
}
</script>
<style>
.el-tree-node__content {
display: flex;
align-items: center;
height: 46px;
cursor: pointer;
border-bottom: 1px dashed #eee ;
}
</style>
//node-key="id" :current-node-key="2" 设置默认选中节点
//在别的页面引用 站点树
<!-- 通知公告 -->
<template>
<div style="float: left; width: 250px;background: #fff; height: calc(100vh - 174px);">
<Tree name="通知公告" :Tree="data"/>
</div>
<div style="float: left; width: calc(100% - 260px);margin-left: 10px;background: #fff;height: 100%;">
通知公告
</div>
</template>
<script lang="ts" setup>
import Tree from './Tree.vue'
interface Tree {
id: number
label: string
children?: Tree[]
}
const data: Tree[] = [
{
id: 1,
label: '千程水利',
children: [
{id: 2,label: '决策层'},
{id: 3,label: '设计一所'},
{id: 4,label: '设计二所'},
{id: 5,label: '规划所'},
{id: 6,label: '总工办'},
{id: 7,label: '综合部'},
{id: 8,label: '法务部'},
{id: 9,label: '财务部'},
{id: 10,label: '人力资源部'},
],
},
]
</script>
element plus 设置tree默认选中
最新推荐文章于 2024-03-25 10:59:13 发布