data() {
	return {
         level: "",
         type: "",
         keyName: "",
         filterObj: {
             level: "",
             type: "",
             keyName: ""
         },
	}
},
watch: {
	// 关键字
      keyName(val) {
            this.filterObj.keyName = val;
            if ( this.$refs.resourceTree ) {
                if ( this.ruleTimer ) {
                    clearTimeout(this.ruleTimer);
                    this.ruleTimer = null;
                }
                this.ruleTimer = setTimeout(() => {
                    this.$refs.resourceTree.filter(this.filterObj);
                    clearTimeout(this.ruleTimer);
                    this.ruleTimer = null;
                }, 300);
            }
        },
        // 筛选等级
        level(val) {
            this.filterObj.level = val;
            this.treeKind = 3;
            if(!val.length) {
                val = [1, 3, 5]
            }
            this.$refs.resourceTree.filter(this.filterObj);
        },
        // 筛选类型
        type(val) {
            this.filterObj.type = val;
            this.treeKind = 4;
            if(!val.length) {
                val = [1, 2, 3]
            }
            this.$refs.resourceTree.filter(this.filterObj);
        },
},
methods: {
	filterTree(value, data) {
            if (!value) return true;
                value.keyName = value.keyName.toLowerCase();
                let rulesLevel = data.level;
                let rulesType = data.type;
                let levelTrue = (value.level && value.level.length && value.level.indexOf(rulesLevel) > -1) || !(value.level && value.level.length) ? true : false;
                let typeTrue = (value.type && value.type.length && value.type.indexOf(rulesType) > -1) || !(value.type && value.type.length) ? true : false;
                return levelTrue && typeTrue && (!value.keyName || data.name.toLowerCase().indexOf(value.keyName) !== -1);
        },
}

直接传入一个对象进行判断就可以实现多个筛选的操作

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐