: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();
}