| 
					
				 | 
			
			
				@@ -65,7 +65,7 @@ let zlfb_object={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let controller = projectObj.mainController, project = projectObj.project; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let Bill = project.Bills; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let FBFX = Bill.getFBFXNode(controller);//取分部分项工程节点; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let resort = $('#bill_resort').prop('checked'),recode=$('#bill_recode').prop('checked'),first=$('#bill_first').prop('checked'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let resort = true,recode=false,first=$('#bill_first').prop('checked');//清单排序和重新编码放到另外的页面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let second =$('#bill_second').prop('checked'), third =$('#bill_third').prop('checked'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let needSelf = first==true||second==true||third==true;//需要补充分部节点; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(me.sectionInfo){ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -146,6 +146,131 @@ let zlfb_object={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             me.submitRequest(newDataMap,allNewNode,updateData,FBFX,controller); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ZLQD:async function(){//只清单排序或者重新编码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let me = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let selected = projectObj.project.mainTree.selected; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let resort = $('#bill_resort').prop('checked'),recode=$('#bill_recode').prop('checked') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let startNum = parseInt($('#bill_recode_start').val()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let FBNodes = [],updateMap = {},codeMap={}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let recoverMap = {};//排序失败后用来恢复原状的缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let tree = projectObj.mainController.tree; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(resort||recode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //先找出需要排序和重新编码的节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for(let node of tree.items){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(node.sourceType===ModuleNames.bills){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(node.data.type == billType.FB && node.children.length > 1){//有两个以上的才需要排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        let subType = node.children[0].data.type; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(subType ===  billType.FX || subType ===  billType.BX){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            FBNodes.push(node); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            recoverMap[node.data.ID] = node.children; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                   }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(resort){//如果需要重新排序  -- 重新排序还必须得先改变缓存,如果勾选了重新编码,顺序依赖于排好序的清单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for(let FB of FBNodes){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        me.resortChildren(FB,updateMap) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    tree.sortTreeItems(tree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if(recode){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if(!(startNum >= 1)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        return alert("起始编码必须大于1!") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    for(let node of tree.items){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if(node.data.billsLibId){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            let l_code = me.getLibCode(node.data.code);  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            if(l_code !== false){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if(codeMap[l_code]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    codeMap[l_code]+=1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                }else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    codeMap[l_code]=startNum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                newCode = l_code+me.getEndCode(codeMap[l_code],3); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                if(updateMap[node.data.ID]){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    updateMap[node.data.ID].data.code = newCode; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    updateMap[node.data.ID] =  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        type:'bills', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        data:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                               projectID:node.data.projectID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                               ID:node.data.ID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                               code :newCode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                            }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let datas = []; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(let ID in updateMap){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    datas.push(updateMap[ID]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               if(datas.length > 0) await projectObj.project.syncUpdateNodesAndRefresh(datas); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               for(let FB of FBNodes){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                projectObj.mainController.refreshTreeNode([FB],true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               let sel = projectObj.mainController.sheet.getSelections()[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               sel.row = selected.serialNo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               projectObj.mainController.sheet.setSelection(sel.row,sel.col,sel.rowCount,sel.colCount); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               projectObj.mainController.setTreeSelected(selected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } catch (error) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alert('清单排序/重新编码失败,请重试!'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log(error); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //恢复排序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for(let FB of FBNodes){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    me.resortChildren(FB,{},recoverMap[FB.data.ID]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tree.sortTreeItems(tree); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    resortChildren:function(node,updateMap,recoverChildren){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(recoverChildren){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            node.children = recoverChildren; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            node.children = _.sortBy(node.children,'data.code'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       for(let i=0;i<node.children.length;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           let subNode = node.children[i]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           let tem = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            type:'bills', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            data:{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                projectID:subNode.data.projectID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ID:subNode.data.ID, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            };  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(i===0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                subNode.preSibling == 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                subNode.preSibling = node.children[i-1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           if(i == node.children.length-1){//如果是最后一个节点 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tem.data.NextSiblingID=-1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            subNode.nextSibling = null 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            tem.data.NextSiblingID= node.children[i+1].data.ID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            subNode.nextSibling = node.children[i+1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          updateMap[subNode.data.ID] = tem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       }  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     addSubNode:function (parentNode,oldChildren,allNewNode,controller) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for(let c of oldChildren){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let newChild = controller.tree.insert(parentNode.getID(), -1,c.getID()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -300,6 +425,7 @@ let zlfb_object={ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     $('#zlfb_confirm').click(function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         $("#zlfb").modal('hide'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         zlfb_object.reorganizeNodes(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -308,4 +434,11 @@ $(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         zlfb_object.sectionInfo=null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#ZLQD_btn').click(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $("#zlqd").modal('show'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    $('#zlqd_confirm').click(function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $("#zlqd").modal('hide'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        zlfb_object.ZLQD(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 |