el-select 中放置el-tree

<template>
    <div>
      <el-select v-model="form" placeholder="请选择" multiple collapse-tags  size="small"
        @focus="Focus"  :clearable="clearable">
        <el-option :value="value" disabled >
        <el-input style="margin-left: 2px;margin-right: 15px; 94%;" placeholder="输入关键字进行过滤" v-model="filterText" clearable   size="small"></el-input>
         <div>
            <el-tree
            :filter-node-method="filterNode"
              :data="dataall"
              :props="defaultProps"
               :default-expanded-keys="datatree"
              ref="eltree"
              :node-key="code"
               @node-click="getinfo"
              :default-expand-all="false"
            ></el-tree>
      </div>
        </el-option>
      </el-select>
    </div>
  </template>
  <script>
    var that;
  export default {
    props:{
          dates:String,
          childData:Array,
          name:String,
          code:String,
          childrenName:String,
          clearable:{
              type:Boolean,
              default:false
          },
          chooseparent:{  //默认等于false,只是获取叶子节点值
              type:Boolean,
              default:false
          },
          treeHeight:{//树形下拉的高度
              type:String,
              default:'150px'
          },
          selectFocus:Function//选择框获取焦点事件
      },
    data() {
      return {
        value: "",//默认值
        defaultProps: {
          children: this.childrenName,
          label: this.name
        },
        form: [],
        codeForm:[],
        isAll:false,
        x:true,
        data:[],
        datatree:[],
        dataall:[],
        list:[],
        filterText:''
      };
    },
    watch: {
      filterText(val) {
         if (val != "") {
        this.datatree = [];
        let data1 = [];
        this.data.forEach((items1) => {
          if (items1.name.search(val) != -1) {
            data1.push(items1);
            this.datatree.push(items1.id);
          } else {
            if (items1.children.length > 0) {
              items1.children.forEach((items2) => {
                if (items2.name.search(val) != -1) {
                  data1.push(items2);
                  this.datatree.push(items2.id);
                } else {
                  if (items2.children.length > 0) {
                    items2.children.forEach((items3) => {
                      if (items3.name.search(val) != -1) {
                        console.log("455")
                        data1.push(items3);
                        this.datatree.push(items3.id);
                      } else {
                        if (items3.children.length > 0) {
                          items3.children.forEach((items4) => {
                            if (items4.name.search(val) != -1) {
                              data1.push(items4);
                              this.datatree.push(items4.id);
                            } else {
                              if (items4.children.length > 0) {
                                items4.children.forEach((items5) => {
                                  if (items5.name.search(val) != -1) {
                                    data1.push(items5);
                                    this.datatree.push(items5.id);
                                  }
                                });
                              }
                            }
                          });
                        }
                      }
                    });
                  }
                }
              });
            }
          }
        });
        this.dataall = data1;
      }else{
         this.dataall = this.data;
        this.datatree.push(this.data[0].id);
      }
      },
      childData:function(a,b){
      //this.form.push(this.dates)
      that = this;
      this.dataall=this.childData
      this.data=this.childData
      this.datatree.push(this.data[0].id)
      },
      form:function(a,b){
         this.$emit("datas",a)
      }
    },
    created () {
      this.form.push(this.dates)

    },
    methods: {
      getinfo(node){
         this.value=node.name
        this.form=[]
        if(node.level=="L5"){
        this.form.push(node.name)
         this.$emit("data",node)
        }
       
      },
      //下拉框获取焦点
      Focus(){
       if(typeof(this.selectFocus)==='function'){ this.selectFocus();}
      },
      filterNode(value, data) {
        if (!value) return true;
        return data[this.name].indexOf(value) !== -1;
      },
    }
  };
  </script>
  
  <style scoped>
     
    .el-scrollbar .el-scrollbar__view .el-select-dropdown__item{
      height: auto;
      max-height: 274px;
      padding: 0;
      overflow: hidden;
      overflow-y: auto;
    }
    
    .el-select-dropdown__item.selected{
      font-weight: normal;
    }
    ul li >>>.el-tree .el-tree-node__content{
      height:auto;
      padding: 0 20px;
    }
    .el-tree-node__label{
      font-weight: normal;
    }
    .el-tree >>>.is-current .el-tree-node__label{
      color: #409EFF;
      font-weight: 700;
    }
    .el-tree >>>.is-current .el-tree-node__children .el-tree-node__label{
      color:#606266;
      font-weight: normal;
    }
  </style>
 
 
 
 
 
 
 
   <selects
                :childData="datatrees"
                :dates="dataals.refStandard"
                :name="name"
                :code="code"
                :childrenName="childrenName"
                @data="getData"
                @datas="getdatas"
                :chooseparent="true"
              />
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/hz1124/p/14714966.html