add tree 可以不选中父子

This commit is contained in:
2023-05-17 08:56:58 +08:00
parent a19040aa60
commit adc3f9f7d3
6 changed files with 126 additions and 95 deletions

View File

@@ -17621,7 +17621,8 @@ const _sfc_main$K = defineComponent({
checkStrictly: { type: [Boolean, String] },
collapseTransition: { type: Boolean },
onlyIconControl: { type: Boolean },
hideicon: { type: Boolean }
hideicon: { type: Boolean },
selectParent: { type: Boolean }
},
emits: ["node-click"],
setup(__props, { emit }) {
@@ -17649,7 +17650,7 @@ const _sfc_main$K = defineComponent({
emit("node-click", node);
}
function handleChange(checked, node) {
props.tree.setCheckedKeys(checked, props.checkStrictly, node);
props.tree.setCheckedKeys(checked, props.checkStrictly || props.selectParent, node);
}
function handleIconClick(node) {
node.isLeaf = !node.isLeaf;
@@ -17669,17 +17670,16 @@ const _sfc_main$K = defineComponent({
}
const isChildAllSelected = computed$1(() => {
function _isChildAllSelected(node) {
if (!props.showCheckbox) {
return false;
}
let childSelectNum = 0;
let res = false;
for (const item of node.children) {
if (item.isChecked)
childSelectNum++;
}
if (childSelectNum > 0)
node.isChecked = true;
if (!props.selectParent) {
if (childSelectNum > 0)
node.isChecked = true;
}
if (childSelectNum == node.children.length) {
for (const item of node.children) {
res = _isChildAllSelected(item);
@@ -17692,11 +17692,14 @@ const _sfc_main$K = defineComponent({
return res;
}
return (node) => {
console.log(props.selectParent);
if (props.checkStrictly) {
return false;
} else {
} else if (props.selectParent) {
let res = _isChildAllSelected(node);
return res;
} else {
return false;
}
};
});
@@ -17763,6 +17766,7 @@ const _sfc_main$K = defineComponent({
checkStrictly: __props.checkStrictly,
"only-icon-control": __props.onlyIconControl,
hideicon: props.hideicon,
"select-parent": props.selectParent,
onNodeClick: recursiveNodeClick
}, createSlots({ _: 2 }, [
_ctx.$slots.title ? {
@@ -17774,7 +17778,7 @@ const _sfc_main$K = defineComponent({
]),
key: "0"
} : void 0
]), 1032, ["tree", "node-list", "show-checkbox", "show-line", "selected-key", "collapse-transition", "checkStrictly", "only-icon-control", "hideicon"])
]), 1032, ["tree", "node-list", "show-checkbox", "show-line", "selected-key", "collapse-transition", "checkStrictly", "only-icon-control", "hideicon", "select-parent"])
])) : createCommentVNode("", true)
]),
_: 2
@@ -17824,6 +17828,7 @@ class Tree {
checkStrictly,
replaceFields: { children, id, title }
} = this.config;
console.log(origin, "origin");
const nodeKey = Reflect.get(origin, id);
const nodeTitle = Reflect.get(origin, title);
const nodeChildren = Reflect.get(origin, children);
@@ -17861,6 +17866,7 @@ class Tree {
});
}
setChildrenChecked(checked, nodes) {
console.log("\u8D70\u8D4B\u503C\u5B50\u8282\u70B9\u4E86");
var ableCount = 0;
var checkCount = 0;
const len = nodes.length;
@@ -17881,6 +17887,7 @@ class Tree {
}
}
setParentChecked(checked, parent) {
console.log("\u8D70\u8D4B\u503C\u7236\u8282\u70B9\u4E86");
if (!parent) {
return;
}
@@ -17896,6 +17903,7 @@ class Tree {
}
setCheckedKeys(checked, checkStrictly, node) {
node.isChecked = checked;
console.log(node, checkStrictly, 186);
if (!checkStrictly) {
if (node.parentNode) {
this.setParentChecked(checked, node.parentNode);
@@ -17980,7 +17988,8 @@ const _sfc_main$J = defineComponent({
title: "title"
};
} },
hideicon: { type: Boolean }
hideicon: { type: Boolean },
selectParent: { type: Boolean, default: false }
},
emits: ["update:checkedKeys", "update:expandKeys", "node-click"],
setup(__props, { emit }) {
@@ -18043,7 +18052,8 @@ const _sfc_main$J = defineComponent({
"collapse-transition": __props.collapseTransition,
"only-icon-control": __props.onlyIconControl,
onNodeClick: handleClick,
hideicon: props.hideicon
hideicon: props.hideicon,
selectParent: props.selectParent
}, createSlots({ _: 2 }, [
_ctx.$slots.title ? {
name: "title",
@@ -18052,7 +18062,7 @@ const _sfc_main$J = defineComponent({
]),
key: "0"
} : void 0
]), 1032, ["tree", "node-list", "show-checkbox", "show-line", "selectedKey", "check-strictly", "collapse-transition", "only-icon-control", "hideicon"])
]), 1032, ["tree", "node-list", "show-checkbox", "show-line", "selectedKey", "check-strictly", "collapse-transition", "only-icon-control", "hideicon", "selectParent"])
], 2);
};
}