|
|
@@ -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 {
|