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) {
{ handleChange(checked, node) }"
>
-
+
{{ 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))