Tree 树形控件一级菜单没有复选框,子菜单有复选框,如何实现?

   <el-dialog
      title="技术职称选择"
      :visible.sync="isShow"
      width="30%"
      top="50px"
      :before-close="closeInputSelectedDepDialog">
      <div class="tree-content">
        <el-tree
          class="filter-tree my-left-tree"
          :props="defaultLeftProps"
          :load="loadNode1"
          lazy
          check-strictly
          :filter-node-method="filterNode"
          @node-click="nodeClick"
          @check-change="checkChangeClick"
          :highlight-current="isTrue"
          ref="departmentRoot"
          :show-checkbox="showCheckbox"
        >
        </el-tree>
      </div>
      <span slot="footer" class="dialog-footer">
          <el-button size="small" @click="closeInputSelectedDepDialog(0)">取 消</el-button>
          <el-button class="my-e-button"  size="small" @click="closeInputSelectedDepDialog(1)">确定选择</el-button>
     </span>
    </el-dialog>
  1. node-click:节点被点击时的回调,共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点对应的 Node、节点组件本身。
  2. check-change:节点选中状态发生变化时的回调,共三个参数,依次为:传递给 data 属性的数组中该节点所对应的对象、节点本身是否被选中、节点的子树中是否有被选中的节点。
  3. show-checkbox表示有复选框

现在的需求则是,A页面使用该组件不希望出现复选框,B页面使用该组件能进行多选,则需要用到复选框,并且根结点没有复选框,不支持选中的情况。

首先解决根结点没有复选框,不支持选中的情况,只需要使用css则可以完成!

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

第一行代码是当一个节点是叶子节点时,它的后面的复选框会以行内块级元素的方式显示出来。

第二行代码是当一个节点不是叶子节点时,它的复选框会被隐藏起来。

第三行的意思是如果一个节点既是叶子节点又是父节点,它会在树形结构中显示出来。

node-click:节点被点击时的回调,我用于单选。

  // 单选
      nodeClick(node){
        this.selectedDep = {
        name: node.name,
        id: node.nodeId,
        Order:node.Order
      };
        if(type == 1){
          if(!this.selectedDep.name){
            this.$message({
              showClose: true,
              message: '请选择级别!',
              type: 'warning'
            });
          }else {

            this.$emit('emitSubmit',this.selectedDep)
          }
        }else {
          this.selectedDep = {
            name:"",
            id:"",
            Order:''
          };
          this.$emit('emitSubmit',this.selectedDep)
        }

多选时,用的check-change,将每次选择的对象放进数组中,返回给需要的页面。

      checkChangeClick(data, checked, indeterminate){
      if(checked){
        this.selectedDepArr.push(data)
        console.log('selectedDepArr',this.selectedDepArr);
      }else {
        let newArr = [];
        this.selectedDepArr.map(ccvalue=>{
          if( data.nodeId != ccvalue.nodeId ){
            newArr.push(ccvalue)
          }
        });
        this.selectedDepArr =newArr;
      }
    },
 if(this.showChecked && this.isZyjszwInputSelect){
        this.$emit("emitSubmit", this.selectedDepArr);
      }

如何A页面打开是单选,B页面打开是多选的情况呢?

在父组件中,直接在引用子组件的地方,加上一个属性。  :showCheckbox="true"

并传入子组件

  props:{
      "isShow":false,
      showCheckbox:{
        default:false
    }

    },

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabVIEW是一种图形化编程语言开发环境,它提供了许多功能强大的控件,如树形控件复选框树形控件是LabVIEW常用的一种用户界面控件,它可以用来构建层次结构的树状列表。通过树形控件,用户可以方便地浏览和管理大量的数据。 在LabVIEW使用树形控件的过程比较简单。首先,在Front Panel选择"树形控件"控件,并在属性框设置相关属性,如树的根节点、节点等。然后,使用"树形控件"的相关方法和事件处理程序来操作和处理树形控件的数据。 而复选框是一种用来表示二进制选择的控件,它可以让用户选择某个选项,或者同时选择多个选项。 要在LabVIEW复选框添加到树形控件,可以使用"元件工具"来添加复选框控件,并设置相关属性,如复选框的文本、选状态等。然后,可以借助事件结构,在复选框的"值改变"事件处理程序,编写相应的代码逻辑,来处理复选框的选和取消选的情况。 通过将树形控件复选框结合使用,可以实现更丰富、灵活的用户界面功能。用户可以方便地选择和管理树形控件的数据项,并通过复选框来标记某些项的选状态,从而更好地满足具体应用的需求。 综上所述,LabVIEW的树形控件复选框可以帮助用户实现数据的层次展示和选择,提供更好的用户界面交互体验。使用这两个控件结合编写相应的代码逻辑,可以实现各种复杂的功能和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值