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
}else{//找不到时清空
n.compare = '';
n.matchID = '';
}
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 = ``;
for(let o of compareObject.options){
if(o.ID === projectObj.project.property.rootProjectID) continue;
optionString += ``
}
$("#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)}};
$.bootstrapLoading.start();
await projectObj.project.syncUpdateNodesAndRefresh([updateData]);
compareObject.showDatas();
$.bootstrapLoading.end();
})
})