Explorar o código

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

Tony Kang %!s(int64=3) %!d(string=hai) anos
pai
achega
cd3eeebd6a
Modificáronse 1 ficheiros con 7 adicións e 0 borrados
  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 {