树结构筛选,配合查询下拉框(下拉框数据全部来源于树结构)

:trigger-on-focus="false"设置此属性可设置在输入查询条件后再执行下拉条件。

<el-autocomplete
        clearable
        :trigger-on-focus="false"
        v-model="filterText"
        :fetch-suggestions="querySearchAsync"
        placeholder="请输入关键词"
        @select="handleSelect"
        @keyup.enter.native="submit"
      ></el-autocomplete>
<el-tree
      v-show="true"
      class="filter-tree"
      :props="defaultProps"
      accordion
      node-key="LABEL"
      :default-expanded-keys="[mydata]"
      :data="treedata2"
      :indent="0"
      :check-on-click-node="true"
      @check="setSelectedNode"
      :filter-node-method="filterNode"
      ref="tree2"
    >
      
    </el-tree>
 data() {
    return {
          filterText: "",
      searchList: [],
      mydata: "",
      restaurants: [],
      timeout: null,
      filterText: "",
      treedata2: [],
      
    };
  },

mounted() {

searchPvtreeTwo()
  .then(res => {
    this.treedata2 = res.data.data;
    //取出数据中所有LABEL
    this.setName(this.treedata2);
    //复制input下拉数据
    this.restaurants = this.searchList;
  })
  .catch(res => {});

},

methods:{
setName(datas) {
      //遍历树  获取label数组
      for (var i in datas) {
        this.searchList.push({ value: datas[i].LABEL });
        if (datas[i].children) {
          this.setName(datas[i].children);
        }
      }
    },
querySearchAsync(queryString, cb) {
      var restaurants = this.restaurants;
      var results = queryString
        ? restaurants.filter(this.createStateFilter(queryString))
        : restaurants;

      clearTimeout(this.timeout);
      this.timeout = setTimeout(() => {
        cb(results);
      }, 1000 * Math.random());
    },
    createStateFilter(queryString) {
      return filterText => {
      		//首字母匹配
        // return (filterText.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0);
        //非首字母匹配,包含及匹配
        return (
          filterText.value.toLowerCase().indexOf(queryString.toLowerCase()) !==
          -1
        );
      };
    },
    //选中一项时就触发树筛选
    handleSelect(item) {
      this.$refs.tree2.filter(this.filterText);
      //this.GL();
    },
    submit(){
     this.$refs.tree2.filter(this.filterText);
      //this.GL();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值