|  | @@ -0,0 +1,123 @@
 | 
	
		
			
				|  |  | +let compareObject = {
 | 
	
		
			
				|  |  | +    setting:{
 | 
	
		
			
				|  |  | +        header: [
 | 
	
		
			
				|  |  | +            {headerName: "审定", headerWidth: 240, dataCode: "name", dataType: "String"},
 | 
	
		
			
				|  |  | +            {headerName: "送审", headerWidth: 240, dataCode: "compare", dataType: "String"}
 | 
	
		
			
				|  |  | +        ],
 | 
	
		
			
				|  |  | +        view:{ lockColumns: ["name","compare"]}
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    initSpread:function(){
 | 
	
		
			
				|  |  | +        if(!this.spread){
 | 
	
		
			
				|  |  | +            this.spread = SheetDataHelper.createNewSpread($("#compareProjectSpread")[0]);
 | 
	
		
			
				|  |  | +            sheetCommonObj.spreadDefaultStyle(this.spread);
 | 
	
		
			
				|  |  | +            let sheet = this.spread.getSheet(0);
 | 
	
		
			
				|  |  | +            sheetCommonObj.initSheet(sheet,this.setting,0);
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            this.spread.repaint();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    showDatas:function(){
 | 
	
		
			
				|  |  | +        this.getCompareDatas();
 | 
	
		
			
				|  |  | +        sheetCommonObj.showTreeData(this.spread.getSheet(0), this.setting,this.datas);
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    datas:[],
 | 
	
		
			
				|  |  | +    getCompareDatas:function(){
 | 
	
		
			
				|  |  | +        let datas = [];
 | 
	
		
			
				|  |  | +        let me = compareObject;
 | 
	
		
			
				|  |  | +        let compareID = projectObj.project.projectInfo.compareID;
 | 
	
		
			
				|  |  | +        let rootProjectID = projectObj.project.property.rootProjectID;
 | 
	
		
			
				|  |  | +        if(gljUtil.isNotEmpty(compareID)){
 | 
	
		
			
				|  |  | +            let rootProject = _.find(me.projects,{'ID':rootProjectID});
 | 
	
		
			
				|  |  | +            let compareProject = _.find(me.projects,{'ID':compareID});
 | 
	
		
			
				|  |  | +            rootProject.compare = compareProject.name;
 | 
	
		
			
				|  |  | +            rootProject.matchID = compareID; 
 | 
	
		
			
				|  |  | +            rootProject.collapsed = false;
 | 
	
		
			
				|  |  | +            datas.push(rootProject);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            setDatas(rootProjectID,compareID,datas);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.datas = datas;
 | 
	
		
			
				|  |  | +        function setDatas(nID,cID,mdatas){
 | 
	
		
			
				|  |  | +            let nameMap = {};
 | 
	
		
			
				|  |  | +            if(cID && me.parentMap[cID]){
 | 
	
		
			
				|  |  | +                for(let c of me.parentMap[cID]){
 | 
	
		
			
				|  |  | +                    nameMap[c.name] = c;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(me.parentMap[nID]){
 | 
	
		
			
				|  |  | +                for(let n of me.parentMap[nID]){
 | 
	
		
			
				|  |  | +                    if(nameMap[n.name]){//找到同名的项目时,匹配上
 | 
	
		
			
				|  |  | +                       n.compare = n.name;
 | 
	
		
			
				|  |  | +                       n.matchID = nameMap[n.name].ID             
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    n.collapsed = false;
 | 
	
		
			
				|  |  | +                    mdatas.push(n);
 | 
	
		
			
				|  |  | +                    setDatas(n.ID,n.matchID,mdatas)
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    initProjectDatas:async function(){
 | 
	
		
			
				|  |  | +        let projects = await ajaxGet("/project/getCompareProjects");
 | 
	
		
			
				|  |  | +        let parentMap=_.groupBy(projects, 'ParentID');
 | 
	
		
			
				|  |  | +        for(let key in parentMap){
 | 
	
		
			
				|  |  | +            parentMap[key] = sortTreeChildren(parentMap[key]);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        compareObject.parentMap = parentMap;
 | 
	
		
			
				|  |  | +        compareObject.projects = projects;
 | 
	
		
			
				|  |  | +        let rootParjects = parentMap['-1'];
 | 
	
		
			
				|  |  | +        let options = [];
 | 
	
		
			
				|  |  | +        for(let r of rootParjects){
 | 
	
		
			
				|  |  | +            [newPath,project] =  setProjectPath(r,parentMap,"");
 | 
	
		
			
				|  |  | +            if(newPath && project)options.push({path:newPath,ID:project.ID})
 | 
	
		
			
				|  |  | +        }   
 | 
	
		
			
				|  |  | +        compareObject.options = options;
 | 
	
		
			
				|  |  | +        let rootProject  = _.find(projects,{'ID':projectObj.project.property.rootProjectID});
 | 
	
		
			
				|  |  | +        projectObj.project.projectInfo.compareID = rootProject.compareID;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        function setProjectPath(project,parentMap,namePath){
 | 
	
		
			
				|  |  | +            let newPath = project.ParentID == -1?project.name:`${namePath}/${project.name}`;
 | 
	
		
			
				|  |  | +            if(project.projType === commonConstants.projectType.Project) return [newPath,project];
 | 
	
		
			
				|  |  | +            
 | 
	
		
			
				|  |  | +            if(parentMap[project.ID]){
 | 
	
		
			
				|  |  | +                for(let c of parentMap[project.ID]){
 | 
	
		
			
				|  |  | +                   return setProjectPath(c,parentMap,newPath)
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    getCompareID:async function(){
 | 
	
		
			
				|  |  | +        if(!this.parentMap){
 | 
	
		
			
				|  |  | +           await this.initProjectDatas();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.getCompareDatas();
 | 
	
		
			
				|  |  | +        for(let d of this.datas){
 | 
	
		
			
				|  |  | +            if(d.ID == projectObj.project.ID()) return d.matchID;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return null;
 | 
	
		
			
				|  |  | +    } 
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +$(document).ready(function () {
 | 
	
		
			
				|  |  | +    $('#tab_compare').on('shown.bs.tab', async function () {
 | 
	
		
			
				|  |  | +        await compareObject.initProjectDatas();
 | 
	
		
			
				|  |  | +        let optionString = `<option value=""></option>`;
 | 
	
		
			
				|  |  | +        for(let o of compareObject.options){
 | 
	
		
			
				|  |  | +            if(o.ID === projectObj.project.property.rootProjectID) continue;
 | 
	
		
			
				|  |  | +            optionString += `<option value="${o.ID}">${o.path}</option>`
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        $("#audiCompareID").html(optionString);
 | 
	
		
			
				|  |  | +        $("#audiCompareID").val(projectObj.project.projectInfo.compareID);
 | 
	
		
			
				|  |  | +        compareObject.initSpread();
 | 
	
		
			
				|  |  | +        compareObject.showDatas();
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    $("#audiCompareID").change(async function(){
 | 
	
		
			
				|  |  | +        //compareID 保存在建设项目上,为方便使用,获取后挂在projectInfo上
 | 
	
		
			
				|  |  | +        let updateData = {type:ModuleNames.project,isInfo:true,data:{'ID' : projectObj.project.property.rootProjectID,compareID:parseInt(this.value)}};//,'property.locateSetting':outstd
 | 
	
		
			
				|  |  | +        $.bootstrapLoading.start();
 | 
	
		
			
				|  |  | +        await projectObj.project.syncUpdateNodesAndRefresh([updateData]);
 | 
	
		
			
				|  |  | +        compareObject.showDatas();
 | 
	
		
			
				|  |  | +        $.bootstrapLoading.end();
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +})
 |