|  | @@ -86,34 +86,36 @@ var ration_glj = {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 提交数据后返回数据处理
 | 
	
		
			
				|  |  |          ration_glj.prototype.doAfterUpdate = function(err, data){
 | 
	
		
			
				|  |  | +            var me = this;
 | 
	
		
			
				|  |  |              if(!err){
 | 
	
		
			
				|  |  |                  if(data.updateTpye=='ut_update'){
 | 
	
		
			
				|  |  | -                    this.refreshAfterUpdate(data);
 | 
	
		
			
				|  |  | +                    me.refreshAfterUpdate(data);
 | 
	
		
			
				|  |  |                  }else if(data.updateTpye=='ut_delete'){
 | 
	
		
			
				|  |  | -                    this.refreshAfterDelete(data);
 | 
	
		
			
				|  |  | +                    me.refreshAfterDelete(data);
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  | -                    this.refreshAfterSave(data);
 | 
	
		
			
				|  |  | +                    me.refreshAfterSave(data);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                projectObj.project.projectGLJ.loadData();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            projectObj.project.projectGLJ.loadData();
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          ration_glj.prototype.refreshAfterSave=function(data){
 | 
	
		
			
				|  |  | +            let me = projectObj.project.ration_glj;
 | 
	
		
			
				|  |  |              let neRecodes=[];
 | 
	
		
			
				|  |  |              if(data){
 | 
	
		
			
				|  |  |                 // neRecodes=data.newRecords;//原来是显示和缓存分开的,后来发现会导致数据不一致的问题所以改成统一的了,这里也只是会作为显示。
 | 
	
		
			
				|  |  |                  neRecodes = data.showDatas;
 | 
	
		
			
				|  |  |                  gljOprObj.sheetData=neRecodes;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -            if(projectObj.project.ration_glj.datas&&Array.isArray(projectObj.project.ration_glj.datas)){
 | 
	
		
			
				|  |  | +            if(me.datas&&Array.isArray(me.datas)){
 | 
	
		
			
				|  |  |                  if(data){
 | 
	
		
			
				|  |  | -                    projectObj.project.ration_glj.datas = projectObj.project.ration_glj.datas.concat(neRecodes);
 | 
	
		
			
				|  |  | +                    me.datas = me.datas.concat(neRecodes);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }else {
 | 
	
		
			
				|  |  | -                projectObj.project.ration_glj.datas = neRecodes;
 | 
	
		
			
				|  |  | +                me.datas = neRecodes;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              gljOprObj.showRationGLJSheetData(true);
 | 
	
		
			
				|  |  |              //add to mainTree;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            me.addToMainTree(neRecodes);
 | 
	
		
			
				|  |  |              let node = project.mainTree.selected;
 | 
	
		
			
				|  |  |              project.calcProgram.calculate(node);
 | 
	
		
			
				|  |  |              project.calcProgram.saveNode(node);
 | 
	
	
		
			
				|  | @@ -121,6 +123,33 @@ var ration_glj = {
 | 
	
		
			
				|  |  |                  calcProgramObj.showData(node, false);
 | 
	
		
			
				|  |  |              };
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  | +        ration_glj.prototype.addToMainTree = function (datas) {
 | 
	
		
			
				|  |  | +            datas = sortRationGLJ(datas);
 | 
	
		
			
				|  |  | +            for(let data of datas){
 | 
	
		
			
				|  |  | +                if(this.needShowToTree(data)){
 | 
	
		
			
				|  |  | +                    this.transferToNodeData(data);
 | 
	
		
			
				|  |  | +                    let parentNode = _.find(projectObj.project.mainTree.items,function (n) {//找父节点
 | 
	
		
			
				|  |  | +                        return n.sourceType==ModuleNames.ration &&n.data.ID==data.rationID;
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    if(parentNode){
 | 
	
		
			
				|  |  | +                        let nextNodeID=null;
 | 
	
		
			
				|  |  | +                        if(parentNode.children.length>0){
 | 
	
		
			
				|  |  | +                            for(let br of parentNode.children){
 | 
	
		
			
				|  |  | +                                if(compareRationGLJ(data,br.data)){//如果有兄弟节点则找到添加位置。
 | 
	
		
			
				|  |  | +                                    nextNodeID = br.getID();
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                        nextNodeID = nextNodeID?nextNodeID:parentNode.tree.rootID();
 | 
	
		
			
				|  |  | +                        let newNode = projectObj.project.mainTree.insert(parentNode.getID(),nextNodeID);
 | 
	
		
			
				|  |  | +                        newNode.source = data;
 | 
	
		
			
				|  |  | +                        newNode.sourceType = this.getSourceType();
 | 
	
		
			
				|  |  | +                        newNode.data = data;
 | 
	
		
			
				|  |  | +                        ProjectController.syncDisplayNewRationGljNode(projectObj.mainController,newNode);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  |          ration_glj.prototype.refreshAfterUpdate=function(data){
 | 
	
		
			
				|  |  |              var me = this;
 | 
	
		
			
				|  |  |              if(data.quantityRefresh){
 | 
	
	
		
			
				|  | @@ -147,13 +176,29 @@ var ration_glj = {
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          ration_glj.prototype.refreshAfterDelete=function(data){
 | 
	
		
			
				|  |  |              var glj_list = projectObj.project.ration_glj.datas;
 | 
	
		
			
				|  |  | -            _.remove(glj_list,data.query);
 | 
	
		
			
				|  |  | +            var oldData = _.remove(glj_list,data.query);
 | 
	
		
			
				|  |  |              _.remove(gljOprObj.sheetData,data.query);
 | 
	
		
			
				|  |  |              gljOprObj.showRationGLJSheetData();
 | 
	
		
			
				|  |  |              projectObj.project.projectGLJ.loadData();
 | 
	
		
			
				|  |  | +            var rationNode = null;
 | 
	
		
			
				|  |  | +            var next = null;
 | 
	
		
			
				|  |  |              var selected = projectObj.project.mainTree.selected;
 | 
	
		
			
				|  |  | -            selected.data.adjustState=data.adjustState;
 | 
	
		
			
				|  |  | -            projectObj.mainController.refreshTreeNode([selected]);
 | 
	
		
			
				|  |  | +            if(selected.sourceType==ModuleNames.ration){ //如果选中的是定额,说明是右键删除工料机操作,如果选中的是定额工料机,则说明是在造价书主界面中点击了删除按钮
 | 
	
		
			
				|  |  | +                rationNode= selected;
 | 
	
		
			
				|  |  | +            }else if(selected.sourceType==ModuleNames.ration_glj){
 | 
	
		
			
				|  |  | +                rationNode = selected.parent;
 | 
	
		
			
				|  |  | +                next = true;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            rationNode.data.adjustState=data.adjustState;
 | 
	
		
			
				|  |  | +            projectObj.mainController.refreshTreeNode([rationNode]);
 | 
	
		
			
				|  |  | +            for(let o of oldData){
 | 
	
		
			
				|  |  | +                if(this.needShowToTree(o)){
 | 
	
		
			
				|  |  | +                    let node = _.find(projectObj.project.mainTree.items,function (n) {//找到对应的树节点
 | 
	
		
			
				|  |  | +                        return n.sourceType==ModuleNames.ration_glj &&n.data.ID==o.ID;
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                    projectObj.mainController.deleteNode(node,next);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          // CSL,2017.05.09
 | 
	
		
			
				|  |  |          ration_glj.prototype.modifyQuantity = function (data, newQuantity) {
 | 
	
	
		
			
				|  | @@ -298,7 +343,13 @@ var ration_glj = {
 | 
	
		
			
				|  |  |                      if(recode.subList&&recode.subList.length>0){
 | 
	
		
			
				|  |  |                          initShow = true;
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    node?"":me.refreshTreeNodeIfNeeded(recode);//如果不是在造价书页面直接编辑,则不用刷新
 | 
	
		
			
				|  |  | +                    if(node){//如果不是在造价书页面直接编辑,则不用刷新
 | 
	
		
			
				|  |  | +                        if(updateField=="type"&&!(newval == gljType.MAIN_MATERIAL||newval==gljType.EQUIPMENT)){//如果改变类型后不是主材或设备,则在造价书树中移除
 | 
	
		
			
				|  |  | +                            projectObj.mainController.deleteNode(node,true);
 | 
	
		
			
				|  |  | +                        }else {
 | 
	
		
			
				|  |  | +                            me.refreshTreeNodeIfNeeded(recode);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  if(initShow==false){//不需要初始化,只需耍新当前显示就可以了
 | 
	
		
			
				|  |  |                      gljOprObj.showRationGLJSheetData();
 | 
	
	
		
			
				|  | @@ -479,6 +530,7 @@ var ration_glj = {
 | 
	
		
			
				|  |  |             var gljList = _.filter(this.datas,function (n) {
 | 
	
		
			
				|  |  |                return n.rationID == rationID&&(n.type==gljType.MAIN_MATERIAL||n.type==gljType.EQUIPMENT)
 | 
	
		
			
				|  |  |             });
 | 
	
		
			
				|  |  | +           gljList = sortRationGLJ(gljList);
 | 
	
		
			
				|  |  |             return gljOprObj.combineWithProjectGlj(gljList);
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          ration_glj.prototype.transferToNodeData = function (data) {
 | 
	
	
		
			
				|  | @@ -513,10 +565,17 @@ var ration_glj = {
 | 
	
		
			
				|  |  |              projectObj.mainController.refreshTreeNode([node]);
 | 
	
		
			
				|  |  |          };
 | 
	
		
			
				|  |  |          ration_glj.prototype.refreshTreeNodeIfNeeded=function (data) {
 | 
	
		
			
				|  |  | -            if((data.type == gljType.MAIN_MATERIAL||data.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMateria==true){
 | 
	
		
			
				|  |  | +            if(this.needShowToTree(data)){
 | 
	
		
			
				|  |  |                  this.transferToNodeData(data);
 | 
	
		
			
				|  |  |                  gljOprObj.refreshTreeNode({"type":ModuleNames.ration_glj,"ID":data.ID});
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +        };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        ration_glj.prototype.needShowToTree=function(data){
 | 
	
		
			
				|  |  | +            if((data.type == gljType.MAIN_MATERIAL||data.type==gljType.EQUIPMENT)&&projectInfoObj.projectInfo.property.displaySetting.disPlayMainMateria==true){
 | 
	
		
			
				|  |  | +                return true
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            return false
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return new ration_glj(project);
 | 
	
		
			
				|  |  |      }
 |