project_property_compare.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. let compareObject = {
  2. setting:{
  3. header: [
  4. {headerName: "审定", headerWidth: 240, dataCode: "name", dataType: "String"},
  5. {headerName: "送审", headerWidth: 240, dataCode: "compare", dataType: "String"}
  6. ],
  7. view:{ lockColumns: ["name","compare"]}
  8. },
  9. initSpread:function(){
  10. if(!this.spread){
  11. this.spread = SheetDataHelper.createNewSpread($("#compareProjectSpread")[0]);
  12. sheetCommonObj.spreadDefaultStyle(this.spread);
  13. let sheet = this.spread.getSheet(0);
  14. sheetCommonObj.initSheet(sheet,this.setting,0);
  15. }else{
  16. this.spread.repaint();
  17. }
  18. },
  19. showDatas:function(){
  20. this.getCompareDatas();
  21. sheetCommonObj.showTreeData(this.spread.getSheet(0), this.setting,this.datas);
  22. },
  23. datas:[],
  24. getCompareDatas:function(){
  25. let datas = [];
  26. let me = compareObject;
  27. let compareID = projectObj.project.projectInfo.compareID;
  28. let rootProjectID = projectObj.project.property.rootProjectID;
  29. if(gljUtil.isNotEmpty(compareID)){
  30. let rootProject = _.find(me.projects,{'ID':rootProjectID});
  31. let compareProject = _.find(me.projects,{'ID':compareID});
  32. rootProject.compare = compareProject.name;
  33. rootProject.matchID = compareID;
  34. rootProject.collapsed = false;
  35. datas.push(rootProject);
  36. setDatas(rootProjectID,compareID,datas);
  37. }
  38. this.datas = datas;
  39. function setDatas(nID,cID,mdatas){
  40. let nameMap = {};
  41. if(cID && me.parentMap[cID]){
  42. for(let c of me.parentMap[cID]){
  43. nameMap[c.name] = c;
  44. }
  45. }
  46. if(me.parentMap[nID]){
  47. for(let n of me.parentMap[nID]){
  48. if(nameMap[n.name]){//找到同名的项目时,匹配上
  49. n.compare = n.name;
  50. n.matchID = nameMap[n.name].ID
  51. }else{//找不到时清空
  52. n.compare = '';
  53. n.matchID = '';
  54. }
  55. n.collapsed = false;
  56. mdatas.push(n);
  57. setDatas(n.ID,n.matchID,mdatas)
  58. }
  59. }
  60. }
  61. },
  62. initProjectDatas:async function(){
  63. let projects = await ajaxGet("/project/getCompareProjects");
  64. let parentMap=_.groupBy(projects, 'ParentID');
  65. for(let key in parentMap){
  66. parentMap[key] = sortTreeChildren(parentMap[key]);
  67. }
  68. compareObject.parentMap = parentMap;
  69. compareObject.projects = projects;
  70. let rootParjects = parentMap['-1'];
  71. let options = [];
  72. for(let r of rootParjects){
  73. setProjectPath(r,parentMap,"");
  74. //if(newPath && project)options.push({path:newPath,ID:project.ID})
  75. }
  76. compareObject.options = options;
  77. let rootProject = _.find(projects,{'ID':projectObj.project.property.rootProjectID});
  78. projectObj.project.projectInfo.compareID = rootProject.compareID;
  79. function setProjectPath(project,parentMap,namePath){
  80. let newPath = project.ParentID == -1?project.name:`${namePath}/${project.name}`;
  81. if(project.projType === commonConstants.projectType.Project){
  82. options.push({path:newPath,ID:project.ID});
  83. }
  84. if(parentMap[project.ID]){
  85. for(let c of parentMap[project.ID]){
  86. setProjectPath(c,parentMap,newPath);
  87. }
  88. }
  89. }
  90. },
  91. getCompareID:async function(){
  92. if(!this.parentMap){
  93. await this.initProjectDatas();
  94. }
  95. this.getCompareDatas();
  96. for(let d of this.datas){
  97. if(d.ID == projectObj.project.ID()) return d.matchID;
  98. }
  99. return null;
  100. }
  101. }
  102. $(document).ready(function () {
  103. $('#tab_compare').on('shown.bs.tab', async function () {
  104. await compareObject.initProjectDatas();
  105. let optionString = `<option value=""></option>`;
  106. for(let o of compareObject.options){
  107. if(o.ID === projectObj.project.property.rootProjectID) continue;
  108. optionString += `<option value="${o.ID}">${o.path}</option>`
  109. }
  110. $("#audiCompareID").html(optionString);
  111. $("#audiCompareID").val(projectObj.project.projectInfo.compareID);
  112. compareObject.initSpread();
  113. compareObject.showDatas();
  114. });
  115. $("#audiCompareID").change(async function(){
  116. //compareID 保存在建设项目上,为方便使用,获取后挂在projectInfo上
  117. let updateData = {type:ModuleNames.project,isInfo:true,data:{'ID' : projectObj.project.property.rootProjectID,compareID:parseInt(this.value)}};
  118. $.bootstrapLoading.start();
  119. await projectObj.project.syncUpdateNodesAndRefresh([updateData]);
  120. compareObject.showDatas();
  121. $.bootstrapLoading.end();
  122. })
  123. })