基于el-tree添加标签

 实现如图的功能,点击选中复选框,实时渲染右侧标签,右侧标签由本身的内容和它的所有父级内容组成。

首先 实现左侧的树形分类,带复选框(只有最后一级有)

  <div class="dialog">
        <span>关键字:</span>
        <el-input placeholder="输入关键字进行过滤" v-model="filterText">
        </el-input>
        <el-tree
          :data="bussinessList"
          :props="defaultProps"
          default-expand-all
          :filter-node-method="filterNode"
          ref="tree"
          highlight-current
          show-checkbox
          node-key="value"
           @check="handleCheckChange"
        >
        </el-tree>
      </div>

实现只有三级带复选框代码 最简单的是设置css  样式

/deep/ .el-tree-node {
  .is-leaf + .el-checkbox .el-checkbox__inner {
    display: inline-block;
  }
  .el-checkbox .el-checkbox__inner {
    display: none;
  }
}

 

实现右侧标签功能

 <div  class="dialog" style="margin-left:30px">
            <el-tag type="success" v-for="(item) in tagList" :key="item.id">{{item.name}}</el-tag>
 </div>


handlecheckChange(data){
let tree = this.$refs.tree
//初始化三个数组:id,value,remarks
this.breadList = []
this.idList = []
this.remarksList = []
let booleean =  true 
//在此调用函数,通过data,或者key获得该节点的node,作为实参传入函数

this.getTreeNode(tree.getNode(data.value))

//判断标签的数组中有没有内容,如果有 判断是否重复,没有直接push

if(this.tagList.length>0){
  
  this.tagList.forEach((element,index) => {
  if(element.id == this.idLabel){
      boolean = false
     this.tagList.splice(index,1)//id重复删除
   }
 })
if(boolean){
this.tagList.push({
    id:this.idLabel,
    name:this.breadLabel,
    remarks:this.remarksLabel
   })
  }
}else{
 this.tagList.push({
    id:this.idLabel,
    name:this.breadLabel,
    remarks:this.remarksLabel
   })
  }
}

getTreeNode(node){
if(node){
   this.breadList.unshift(node.data.label),
   this.idList.unshift(node.data.value),
   this.remarksList.unshift(node.data.reamrks) 

   this.getTreeNode(node.parent)//在此递归获得父级内容

   this.breadLabel = this.breadList.join('-')
    this.idLabel = this.idList.join('-')
   this.reamarksLabel = this.remarksList[this.remarksList.length-1]
   
}
}

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值