|  | @@ -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();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  |  });
 |