|
@@ -18,7 +18,7 @@ let tree_Data_Helper = {
|
|
|
return tmpNodeRst;
|
|
|
};
|
|
|
let private_buildNodeData = function(parentItem, idArr, treeLevel, tbID) {
|
|
|
- let iter = [], nextNode = private_getStartNode(idArr);
|
|
|
+ let iter = [], nextNode = private_getStartNode(idArr), pushedIds = [];
|
|
|
while (nextNode !== null && nextNode !== undefined ) {
|
|
|
if (parentItem) {
|
|
|
parentItem[CHILDREN_NODE].push(nextNode);
|
|
@@ -26,6 +26,7 @@ let tree_Data_Helper = {
|
|
|
rst.push(nextNode);
|
|
|
}
|
|
|
iter.push(nextNode);
|
|
|
+ pushedIds.push(nextNode[NODE_ID]);
|
|
|
nextNode[TOP_BILL_ID] = tbID;
|
|
|
if (parentItem === null) {
|
|
|
nextNode[TOP_BILL_ID] = nextNode[NODE_ID];
|
|
@@ -40,7 +41,44 @@ let tree_Data_Helper = {
|
|
|
}
|
|
|
if (addLevel) nextNode[TREE_LEVEL] = treeLevel;
|
|
|
nextNode = tmpNodes[prefix + nextNode[NEXT_ID]];
|
|
|
+ if (nextNode === null || nextNode === undefined) {
|
|
|
+ //备注: 考虑到实际数据的健壮性,有些节点会掉链子,需要用 parentItem[SUB_ID] 比对已经加上的节点,如发现加上的节点数量不够,那就得在这里补充上去
|
|
|
+ if (parentItem) {
|
|
|
+ if (parentItem[SUB_ID].length > iter.length) {
|
|
|
+ for (let subId of parentItem[SUB_ID]) {
|
|
|
+ if (pushedIds.indexOf(subId) < 0) {
|
|
|
+ let restNode = tmpNodes[prefix + subId];
|
|
|
+ if (addLevel) restNode[TREE_LEVEL] = treeLevel;
|
|
|
+ restNode[TOP_BILL_ID] = tbID;
|
|
|
+ parentItem[CHILDREN_NODE].push(restNode);
|
|
|
+ iter.push(restNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (idArr.length > iter.length) {
|
|
|
+ for (let topId of idArr) {
|
|
|
+ if (pushedIds.indexOf(topId) < 0) {
|
|
|
+ let restNode = tmpNodes[prefix + topId];
|
|
|
+ if (addLevel) restNode[TREE_LEVEL] = treeLevel;
|
|
|
+ restNode[TOP_BILL_ID] = restNode[NODE_ID];
|
|
|
+ if (restNode.flags && restNode.flags.length > 0) {
|
|
|
+ for (let flag of restNode.flags) {
|
|
|
+ if (flag.fieldName === "fixed") {
|
|
|
+ restNode[TOP_BILL_ID] = flag.flag;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rst.push(restNode);
|
|
|
+ iter.push(restNode);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ pushedIds = [];
|
|
|
for (let i = 0; i < iter.length; i++) {
|
|
|
let rtbID = tbID;
|
|
|
if (parentItem === null) {
|