浏览代码

fixed: 实际项目出现清单嵌套问题,健壮性处理

Tony Kang 3 年之前
父节点
当前提交
cd3eeebd6a
共有 1 个文件被更改,包括 7 次插入0 次删除
  1. 7 0
      public/treeUtil.js

+ 7 - 0
public/treeUtil.js

@@ -20,6 +20,7 @@ const NODE_ID = "ID", P_ID = "ParentID", NEXT_ID = "NextSiblingID", ADHOC_PRE_ID
 let tree_Data_Helper = {
     buildTreeNodeDirectly: function(data, addLevel) {
         let topArr = [], rst = [], tmpNodes = {}, prefix = "id_";
+        let allNextIds = [];
         let private_getStartNode = function (idArr) {
             let tmpNodeRst = null;
             for (let i = 0; i < idArr.length; i++) {
@@ -33,6 +34,12 @@ let tree_Data_Helper = {
         let private_buildNodeData = function(parentItem, idArr, treeLevel, tbID) {
             let iter = [], nextNode = private_getStartNode(idArr), pushedIds = [];
             while (nextNode !== null && nextNode !== undefined ) {
+                if (allNextIds.includes(nextNode[NODE_ID])) {
+                    // 因实际项目数据出现过这种嵌套现象,这里做健壮性处理,如有重复兄弟节点,直接break循环
+                    break;
+                } else {
+                    allNextIds.push(nextNode[NODE_ID]);
+                }
                 if (parentItem) {
                     parentItem[CHILDREN_NODE].push(nextNode);
                 } else {