|
@@ -1,3 +1,4 @@
|
|
|
+
|
|
|
/**
|
|
|
* Created by Mai on 2017/4/1.
|
|
|
*/
|
|
@@ -542,10 +543,19 @@ var PROJECT = {
|
|
|
})
|
|
|
};
|
|
|
|
|
|
+ project.prototype.updateParentNode = function(node,parentID,addNodeDatas){
|
|
|
+ addNodeDatas.push({type:node.sourceType,data:node.data,parentID:parentID});
|
|
|
+ for(let c of node.children){
|
|
|
+ this.updateParentNode(c,node.getID(),addNodeDatas);
|
|
|
+ }
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
project.prototype.updateNodesCache =function (datas) {
|
|
|
let refreshNode = [];
|
|
|
let reclacQuantity = false;
|
|
|
let deleteNode=[],addNodeDatas=[];
|
|
|
+ let changeParentIDMap = {};
|
|
|
for(let d of datas){
|
|
|
let temObj = null;
|
|
|
if(d.type == ModuleNames.bills || d.type == ModuleNames.ration){//如果是树节点类型,直接取树节点更新
|
|
@@ -567,6 +577,12 @@ var PROJECT = {
|
|
|
temObj = temNode.data;
|
|
|
if(gljUtil.isDef(d.data.quantity))reclacQuantity = true;
|
|
|
refreshNode.push(temNode);
|
|
|
+ if(d.data.ParentID){//更新了父节点-相当于删了再添加
|
|
|
+ changeParentIDMap[temNode.data.ParentID] = true;
|
|
|
+ deleteNode.push(temNode);
|
|
|
+ this.updateParentNode(temNode,d.data.ParentID,addNodeDatas);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -590,22 +606,38 @@ var PROJECT = {
|
|
|
|
|
|
//对树节点的操作并删除、添加清单、删除添加定额、删除对应的定额工料机缓存
|
|
|
TREE_SHEET_HELPER.massOperationSheet(projectObj.mainController.sheet, function () {
|
|
|
- deleteTreeNodes(deleteNode);
|
|
|
- addNewNodes(addNodeDatas,refreshNode);
|
|
|
+ let rationsDatas=[];
|
|
|
+ let billsDatas=[];
|
|
|
+ for(let a of addNodeDatas){
|
|
|
+ if(a.type == ModuleNames.bills) billsDatas.push(a);
|
|
|
+ if(a.type == ModuleNames.ration) rationsDatas.push(a);
|
|
|
+ }
|
|
|
+ deleteTreeNodes(deleteNode);
|
|
|
+ addNewNodes(billsDatas,refreshNode);
|
|
|
+ addNewNodes(rationsDatas,refreshNode);
|
|
|
});
|
|
|
|
|
|
+ for(let pID in changeParentIDMap){
|
|
|
+ let pnode = this.mainTree.getNodeByID(pID);
|
|
|
+ getNextRefreshNode(pnode,refreshNode);
|
|
|
+ }
|
|
|
|
|
|
if(reclacQuantity) this.projectGLJ.calcQuantity();
|
|
|
return refreshNode;
|
|
|
|
|
|
|
|
|
-
|
|
|
+ function getNextRefreshNode(node,refreshNode){
|
|
|
+ if(node.nextSibling){
|
|
|
+ refreshNode.push(node.nextSibling)
|
|
|
+ getNextRefreshNode(node.nextSibling,refreshNode)
|
|
|
+ }
|
|
|
+ };
|
|
|
|
|
|
function deleteTreeNodes(deleteNodes) {
|
|
|
let controller = projectObj.mainController, project = projectObj.project;
|
|
|
let Bill = project.Bills, Ration = project.Ration;
|
|
|
for(let rd of deleteNodes){
|
|
|
- controller.sheet.deleteRows(rd.serialNo(),1);
|
|
|
+ controller.sheet.deleteRows(rd.serialNo(),rd.posterityCount + 1);
|
|
|
controller.tree.delete(rd);
|
|
|
if(rd.sourceType == Bill.getSourceType()) Bill.tree.delete(rd.source);
|
|
|
}
|
|
@@ -616,11 +648,12 @@ var PROJECT = {
|
|
|
let newAddNode = [];
|
|
|
for(let nr of newDatas){
|
|
|
let nextID = -1;
|
|
|
+ let parentID = nr.parentID || (nr.data && nr.data.ParentID || -1);
|
|
|
let preNode = projectObj.project.mainTree.getNodeByID(nr.preSiblingID);
|
|
|
if(preNode) nextID = preNode.getNextSiblingID();
|
|
|
- let newNode = projectObj.project.mainTree.insert(nr.parentID, nextID, nr.data.ID);
|
|
|
+ let newNode = projectObj.project.mainTree.insert(parentID, nextID, nr.data.ID);
|
|
|
if(nr.type == ModuleNames.bills){
|
|
|
- let newSource = Bill.tree.insertByData(nr.data, nr.ParentID, nextID, true);
|
|
|
+ let newSource = Bill.tree.insertByData(nr.data, parentID, nextID, true);
|
|
|
newNode.source = newSource;
|
|
|
}else {
|
|
|
newNode.source = nr.data;
|