vue antd2 treeSelect多选自定义展示内容(父级名称+子级名称),当子级全部选中时只展示父级的名称,并且只获取子级的id

               <a-tree-select
                v-model="treeValue"
                style="width: 400px;"
                :tree-data="deptTree"
                allow-clear
                maxTagCount="3"
                @change ="handleChange"
                :showCheckedStrategy="SHOW_PARENT"
                multiple
                tree-checkable 
                :labelInValue="true" 
            >

SHOW_PARENT 选择父级展示父节点而不是全部,antd2 必须这么引入

import { TreeSelect } from 'ant-design-vue'

const SHOW_PARENT = TreeSelect.SHOW_PARENT

label-in-value改变value结构从[id],[{value:xxx,label:"xxx"}]

change函数修改label

//处理lable
     handleChange(value, label, extra) {
        this.formSearchu.area = [];
        value?.map((item) => {
          extra.allCheckedNodes?.map((item1) => {
            if (item.value === item1.node.data.props.value) {
              if(item1.node.data.props.level==3||item1.node.data.props.level==5){
                item.label = item1.node.data.props.parentName.trim()+'-'+item1.node.data.props.label;
              }
               if(item1.children){
                    this.getSelectAllId(item1.children)
               }else{
                   this.formSearchu.area.push(item1.node.key)
               }
              
            }
          });
        });
    },
   //递归查询获取子级id
    getSelectAllId(arr,type=0) {
        if(arr.length>0){
             arr.map(item=>{
                 if(item.children){
                    this.getSelectAllId(item.children,type)
                 }else{
                    if(type==1){
                        this.formSearchu.eqTypeIds.push(item.node.key)
                    }else{
                        this.formSearchu.area.push(item.node.key)
                    }
                 }
             })
        }
    },

树形结构处理,添加层级

export const buildTreeLabel = (list, arr = [], parentId = 0,parentName,level = 0) => {
    list.forEach(item => {
      if (item.parentId == parentId) {
        var child = {
          key: item.id,
          value: item.id + '',
          label: item.name,
          name: item.name,
          type: item.type,
          projectId: item.projectId,
          parentName:parentName,
          children: [],
          colData: item,
          scopedSlots: { icon: 'custom', },
          ...item,
          level:level
        }
        buildTreeLabel(list, child.children, item.id,item.name,parseInt(child.level)+parseInt(1))
        if (child.children.length === 0) {
          child['is-leaf'] = true
       
        }
        arr.push(child)
      }
    })
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值