vue3+element plus +el-tree-v2实现树形单选

需求:仅叶子节点可点击,非叶子节点只可展开收起

实现代码:

html 复制代码
<template>
  <el-tree-v2
    :data="data"
    :props="props"
    :node-key="nodeKey"
    :default-expand-all="true"
  >
    <template #default="{ node, data }">
      <div class="custom-tree-node">
        <!-- 只有叶子节点显示单选框 -->
        <el-radio
          v-if="!node.children || node.children.length === 0"
          :model-value="selectedNodeId"
          :label="data.id"
          @click.stop="handleRadioClick(data.id)"
        >
          {{ node.label }}
        </el-radio>
        <!-- 非叶子节点只显示文本 -->
        <span v-else>
          {{ node.label }}
        </span>
      </div>
    </template>
  </el-tree-v2>
</template>

<script setup>
import { ref } from 'vue'

const data = [
  // 你的树形数据
  {
    id: 1,
    label: '一级节点',
    children: [
      {
        id: 2,
        label: '二级节点',
        children: [
          { id: 3, label: '三级节点1' },
          { id: 4, label: '三级节点2' }
        ]
      }
    ]
  }
]

const props = {
  label: 'label',
  children: 'children',
}

const nodeKey = 'id'
const selectedNodeId = ref(null)

const handleRadioClick = (id) => {
  selectedNodeId.value = id
  console.log('选中的节点ID:', id)
}
</script>

<style>
.custom-tree-node {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-right: 8px;
}
</style>

实现效果:

相关推荐
观无11 分钟前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
愚公搬代码36 分钟前
【愚公系列】《Web应用安全》001-VMware的安装
前端·安全
xiaohaiAIgeo37 分钟前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
立少→万能汉编39 分钟前
用“立少→超文本”写静态网页,标签<倍>
服务器·前端·javascript
weixin_431600441 小时前
NestJS 入门(7):生命周期钩子——构造函数和 `OnModuleInit` 差在哪?
前端·后端·学习·node.js·nest.js
你挚爱的强哥1 小时前
【chromeDownload】自定义组件:多用于登录框底部提供下载Chrome谷歌浏览器的链接
前端·vue.js·chrome
cindershade2 小时前
用原生 HTML5 视频与 Canvas 实现浏览器端视频抽帧封面
前端
笨鸟先飞,勤能补拙2 小时前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
NutShell Wang2 小时前
Wails v3 Beta 实战:用显式对象模型重写你的第一个 Go 桌面应用
前端·人工智能·go·vibe coding
daols882 小时前
vue 甘特图 vxe-gantt 任务条拖拽自动更新日期
javascript·vue.js·甘特图