From 520ac36d247ebe6c6c04bd64d1853efbba8080f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=BD=E5=B0=8F=E6=A2=85?= <425605679@qq.com> Date: Mon, 18 Oct 2021 19:09:17 +0800 Subject: [PATCH] =?UTF-8?q?refactor(tree):=20=E6=A0=91=E5=BD=A2=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=E9=87=8D=E6=9E=84=E4=BC=98=E5=8C=96=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/docs/zh-CN/components/tab.md | 10 ++++---- src/module/checkbox/index.vue | 2 +- src/module/tree/new-tree/TreeNode.vue | 33 ++++++++++++++++----------- src/module/tree/new-tree/tree.ts | 11 ++++----- 4 files changed, 30 insertions(+), 26 deletions(-) diff --git a/docs/docs/zh-CN/components/tab.md b/docs/docs/zh-CN/components/tab.md index d8ae0105..22954e1a 100644 --- a/docs/docs/zh-CN/components/tab.md +++ b/docs/docs/zh-CN/components/tab.md @@ -114,7 +114,7 @@ export default { ::: -::: field tab attributes +::: field tab attributes ::: @@ -124,11 +124,11 @@ export default { | type | 主题样式 | -- | | allow-close | 允许关闭 | `true` `false` | -::: field tab events +::: field tab events ::: | Name | Description | Accepted Params | -| -------- | ---- | ----------------------- | -| change | 选中切换 | -- | -| close | 关闭事件 | -- | \ No newline at end of file +| -------- | ---- | ----------------------- | +| change | 选中切换 | -- | +| close | 关闭事件 | -- | diff --git a/src/module/checkbox/index.vue b/src/module/checkbox/index.vue index 1cc85079..b94cd388 100644 --- a/src/module/checkbox/index.vue +++ b/src/module/checkbox/index.vue @@ -9,7 +9,7 @@ }" :lay-skin="skin" > - + diff --git a/src/module/tree/new-tree/TreeNode.vue b/src/module/tree/new-tree/TreeNode.vue index 9d715e26..880727b3 100644 --- a/src/module/tree/new-tree/TreeNode.vue +++ b/src/module/tree/new-tree/TreeNode.vue @@ -44,7 +44,7 @@ const emit = defineEmits() function renderLineShort(node: TreeData) { return ( !node.hasNextSibling && - node.parentKey && + node.parentNode && // 外层最后一个 (!node.parentNode.hasNextSibling || //上一层父级有延伸线 @@ -84,30 +84,31 @@ function setChildrenChecked (checked: boolean, nodes: TreeData[]) { } } -async function setParentChecked (checked: boolean, parent: TreeData) { +function setParentChecked (checked: boolean, parent: TreeData) { if (!parent) { return } parent.isChecked.value = checked + const pChild = parent.children + const pChildChecked = pChild.some(c => c.isChecked.value) + if (pChildChecked) { + parent.isChecked.value = true + } if (parent.parentNode) { - await setParentChecked(checked, parent.parentNode) - // todo - await nextTick() - const pChild = parent.children - const pChildChecked = pChild.some(c => c.isChecked.value) - console.log(pChildChecked) - if (pChildChecked) { - parent.isChecked.value = true - } + setParentChecked(checked, parent.parentNode) } } function handleChange(checked: boolean, node: TreeData) { node.isChecked.value = checked + // 处理上级 + if (node.parentNode) { + setParentChecked(checked, node.parentNode) + } + // 处理下级 if (node.children) { setChildrenChecked(checked, node.children) } - setParentChecked(checked, node.parentNode) } function handleIconClick (node: TreeData) { @@ -141,11 +142,17 @@ function handleIconClick (node: TreeData) { - + {{ node.title }} diff --git a/src/module/tree/new-tree/tree.ts b/src/module/tree/new-tree/tree.ts index 4d1064a4..457827a7 100644 --- a/src/module/tree/new-tree/tree.ts +++ b/src/module/tree/new-tree/tree.ts @@ -1,9 +1,3 @@ -/* - * @Date: 2021-10-16 02:50:17 - * @LastEditors: 落小梅 - * @LastEditTime: 2021-10-16 13:07:14 - * @FilePath: \layui-vue\src\module\tree\new-tree\tree.ts - */ import { OriginalTreeData, StringOrNumber, @@ -61,7 +55,10 @@ function getNode( const nodeDisabled = !!Reflect.get(origin, 'disabled') const nodeIsLeaf = !!Reflect.get(origin, 'spread') - // const parent = nodeMap.get(parentKey) + const parent = nodeMap.get(parentKey) + if (parent) { + console.log(parent.isChecked.value); + } // console.log((parent && parent.isChecked.value) || checkedKeys.includes(nodeKey))