From bd3c5bd24f0d5c5b8669bb034a75d46d7a10599d Mon Sep 17 00:00:00 2001
From: 闫增涛 <1829501689@qq.com>
Date: 星期三, 10 四月 2024 11:15:39 +0800
Subject: [PATCH] 资源购买页tree组件勾选联通上下级功能完善

---
 packageBookService/pages/bookServices/detail/buyResource/index.js |   54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)

diff --git a/packageBookService/pages/bookServices/detail/buyResource/index.js b/packageBookService/pages/bookServices/detail/buyResource/index.js
index a6385ef..34db152 100644
--- a/packageBookService/pages/bookServices/detail/buyResource/index.js
+++ b/packageBookService/pages/bookServices/detail/buyResource/index.js
@@ -455,4 +455,58 @@
         });
     }
   },
+
+  // 绔犺妭鍕鹃�夋柟娉�
+  findAndUpdateItemsByIds(tree, ids, state) {
+    function findAndUpdate(node) {
+      if (ids.includes(node.id)) {
+        // console.log(node, 'node');
+        node.checked = state; // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
+      }
+      if (node.children && node.children.length > 0) {
+        for (let child of node.children) {
+          findAndUpdate(child); // 閫掑綊澶勭悊瀛愯妭鐐�
+        }
+      }
+    }
+    for (let node of tree) {
+      findAndUpdate(node); // 瀵规瘡涓《灞傝妭鐐规墽琛屾煡鎵惧拰鏇存柊鎿嶄綔
+    }
+    // console.log(tree, 'tree345');
+    return tree; // 杩斿洖淇敼鍚庣殑瀹屾暣鏁扮粍
+  },
+  // 鍗曚釜鍕鹃�夋柟娉�
+  checkResoucrceInfo(tree, id) {
+    function findAndUpdate(node) {
+      if (node.sysType == "CmsFolder" && node.children.length > 0) {
+        for (let index = 0; index < node.children.length; index++) {
+          const element = node.children[index];
+          findAndUpdate(element);
+        }
+      } else if (id == node.id && node.sysType == "CmsItem") {
+        node.checked = !node.checked; // 灏嗙洰鏍囬」鐨� check 灞炴�ц缃负 true
+      }
+    }
+    for (let node of tree) {
+      findAndUpdate(node); // 瀵规瘡涓《灞傝妭鐐规墽琛屾煡鎵惧拰鏇存柊鎿嶄綔
+    }
+    return tree; // 杩斿洖淇敼鍚庣殑瀹屾暣鏁扮粍
+  },
+  // 绔犺妭鍕鹃�変簨浠�
+  changeListChecked(e) {
+    const ids = e.detail.ids
+    const state = e.detail.flag
+    const updated = this.findAndUpdateItemsByIds(this.data.learn, ids, state)
+    this.setData({
+      learn: updated
+    })
+  },
+  // 鍗曚釜鍕鹃�変簨浠�
+  changeResourceChecked(e) {
+    const id = e.detail.id
+    const updated = this.checkResoucrceInfo(this.data.learn, id)
+    this.setData({
+      learn: updated
+    })
+  }
 });
\ No newline at end of file

--
Gitblit v1.9.1