elementui 树,多个查询条件搜索筛选

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);
        },
}

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,对于您的问题,可以使用elementui中的el-checkbox和el-checkbox-group组件来实现多选框的筛选功能,同时使用el-select组件来实现单选框的筛选功能。下面是一个示例代码,您可以参考一下: ```html <template> <div> <!-- 多选框筛选 --> <el-checkbox-group v-model="selectedCategories"> <el-checkbox label="category1">类别1</el-checkbox> <el-checkbox label="category2">类别2</el-checkbox> <el-checkbox label="category3">类别3</el-checkbox> </el-checkbox-group> <el-button type="primary" @click="handleFilter">筛选</el-button> <!-- 单选框筛选 --> <el-select v-model="selectedType" placeholder="请选择"> <el-option label="类型1" value="type1"></el-option> <el-option label="类型2" value="type2"></el-option> <el-option label="类型3" value="type3"></el-option> </el-select> </div> </template> <script> export default { data() { return { selectedCategories: [], // 存放多选框选中的值 selectedType: '' // 存放单选框选中的值 } }, methods: { handleFilter() { // 处理筛选逻辑 console.log(this.selectedCategories, this.selectedType) } } } </script> ``` 在上面的代码中,我们定义了两个变量`selectedCategories`和`selectedType`来分别存放多选框和单选框选中的值。在`handleFilter`方法中,我们可以获取到这两个变量的值,然后根据具体的筛选逻辑进行处理。 希望这个示例代码可以帮助到您,如果您有任何问题,请随时向我提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值