el-tree过滤之后点击全选,会把隐藏的数据勾中

146 阅读1分钟

<el-tree

                            ref="treeRef"

                            show-checkbox

                            node-key="id"

                            :data="allSpuList"

                            @check-change="onCheckChange"

                            :filter-node-method="filterNode"

                            :props="defaultProps"

                        >

                       

setCheckedNodes(node) {
            let checkedNodes = this.$refs.treeRef?.getCheckedNodes();
            if (this.filterText) {
                const text = this.filterText.toLowerCase(); //toLowerCase转为小写  保证了匹配不区分大小写
                // 筛选出可见节点的 ID
                const visibleKeys = checkedNodes
                    .filter((item) => item.name.toLowerCase().includes(text))
                    .map((item) => item.id);
                // 设置选中状态
                this.$refs.treeRef?.setCheckedKeys(this.treeCheckKeys.concat(visibleKeys));
            } else {
                this.$refs.treeRef?.setCheckedNodes(node);
            }
        },

onCheckChange(data, checked, children) {

            console.log(children);

            if (this.isInitCheck) {

                if (checked) {

                    this.setSpuAction(data, "add"); this.setCheckedNodes(data);

                } else {

                    if (this.deleteSPUIds.indexOf(data.typeId) === -1) {

                        this.deleteSPUIds.push(data.typeId);

                    }

                }

            }

        },