当前位置: 首页 > news >正文

VUE篇之树形特殊篇

根节点是level:1, level3及其子节点有关联,但是和level2和他下面的子节点没有关联

思路:采用守护风琴效果,遍历出level1和level2级节点,后面level3的节点,采用树形结构进行关联

<template><div :class="$style.root"><el-collapse v-model="activeName"><el-collapse-item v-for="item in treeData" :key="item.id" :name="item.id"><template slot="title"><el-checkbox v-model="item.checked" @change="changeData(item.id, item.children)"></el-checkbox>{{ item.label }}</template><el-collapse-item v-for="it in item.children" :key="it.id" :name="it.id"><template slot="title"><el-checkbox v-model="it.checked" @change="changeData(it.id, it.children)"></el-checkbox>{{ it.label }}</template><el-tree :ref="`tree-${it.id}`" :data="it.children" show-checkbox node-key="id" :props="defaultProps" /></el-collapse-item></el-collapse-item></el-collapse></div>
</template><script>
export default {data() {return {activeName: '1',checkedParentIds: [],treeData: [{id: 1,label: '根节点',level: 1,children: [{id: 11,label: '一级 1',level: 2,children: [{id: 4,label: '二级 1-1',level: 3,children: [{ id: 9, label: '三级 1-1-1', level: 4 },{ id: 10, label: '三级 1-1-2', level: 4 }]}]},{id: 2,label: '一级 2',level: 2,children: [{id: 5,label: '二级 2-1',level: 3,children: [{ id: 11, label: '三级 2-1-1', level: 4 }]},{id: 6,label: '二级 2-2',level: 3}]}]}],defaultProps: {children: 'children',label: 'label'}};},methods: {changeData(id, children) {if (this.checkedParentIds.includes(id)) {console.log('取消选中', id);this.checkedParentIds = this.checkedParentIds.filter(item => item !== id);this.setDisabled(children, false);} else {this.checkedParentIds = [...this.checkedParentIds, id];this.$refs[`tree-${id}`][0].setCheckedKeys([]); //取消勾选this.setDisabled(children, true);console.log('选中', id);}},//设置节点状态,true禁用false启用setDisabled(list, status) {list.forEach(item => {this.$set(item, 'disabled', status);if (item.children) {this.setDisabled(item.children, status);}});}}
};
</script>
<style lang="scss" module>
.root {padding: 20px;
}
:global {.el-collapse-item__content {padding: 0;padding-left:8px;}.el-collapse-item__header {padding-left: 20px;position: relative;height: 26px;line-height: 26px;.el-checkbox {position: absolute;right: 0;}.el-collapse-item__arrow {position: absolute;left: 0;}.el-icon-arrow-right:before {content: '\e791';color: #c0c4cc;}}.el-tree-node__content {position: relative;.el-checkbox {position: absolute;right: 0;margin-right: 0 !important;}}
}
</style>

相关文章:

  • 探寻软件稳定性的奥秘
  • 【最新 MCP 战神手册 09】利用资源和提示增强上下文
  • 【记录】Python调用大模型(以Deepseek和Qwen为例)
  • 使用 np.zeros_like(label) 保存预测概率时发现数据类型不匹配导致的隐式类型转换
  • 局域网视频会议软件BeeWorks Meet
  • 软考高项(信息系统项目管理师)第 4 版全章节核心考点解析(力扬老师课程精华版)
  • MES系列-ISO95 IEC/ISO 62264
  • 推荐系统中 Label 回收机制之【时间窗口设计】
  • Agent开源工具:mcp快速接入,mcp-use上手指南
  • 极客天成参与”AI助力智慧城市构建”主题演讲暨招商引智专题推介活动
  • 哈希表笔记(一 )
  • 使用C# ASP.NET创建一个可以由服务端推送信息至客户端的WEB应用(一)
  • 简单音频比较
  • 信息科技伦理与道德3-4:面临挑战
  • 前端与后端开发详解:从概念到就业技能指南
  • 【零基础】Ubuntu22.04本地部署Dify
  • Nginx 核心功能笔记
  • 案例解析:基于量子计算的分子对接-QDOCK(Quantum Docking)
  • 告别碎片化!两大先进分块技术如何提升RAG的语义连贯性?
  • ImageDataGenerator ()用法简介
  • 80后共青团云南省委副书记许思思已任迪庆州委副书记
  • 陈文清:推进扫黑除恶常态化走深走实,有力回应人民群众对安居乐业的新期待
  • 上海科创的三种品格
  • 纪念|海上金石学的兴盛与王昶《金石萃编》
  • 王星昊再胜连笑,夺得中国围棋天元赛冠军
  • 当AI开始深度思考,人类如何守住自己的慢思考能力?