|  |  | 
 |  |  |             } | 
 |  |  |             // 项目时间单元格 | 
 |  |  |             for(let i=0;i<days;i++){ | 
 |  |  |                 str = '<td class="loadBox-2">'+dateArr[i]+'</td>' | 
 |  |  |                 str = '<th class="loadBox-2">'+dateArr[i]+'</th>' | 
 |  |  |                 $("#tot").append(str); | 
 |  |  |                 // $(".loadBox").attr('style','width:50px') | 
 |  |  |             } | 
 |  |  |             // 节点时间单元格 | 
 |  |  |             for (let j=0;j<days;j++){ | 
 |  |  |                 tds = '<td class="gz-color">'+'</td>' | 
 |  |  |                 tds = '<td class="gz-color'+j+' time-color">'+'</td>' | 
 |  |  |                 for(let k in nodeId){ | 
 |  |  |                     $(nodeId[k]).append(tds) | 
 |  |  |                 } | 
 |  |  | 
 |  |  |             var runDay = Math.ceil((currT - staT)/ day) | 
 |  |  |             if(runDay>0){ | 
 |  |  |                 for(var j = 0;j < runDay;j++){ | 
 |  |  |                     $("#tot-2").find("td").eq(j).attr("style","background:#0f9a84") | 
 |  |  |                     $("#tot-2").find("td").eq(j).attr("style","background:#8bddde") | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             for(var i = 0;i<nodes.length;i++){ | 
 |  |  |                 var proST = new Date(nodes[i].startTime.substring(0,10)) // 计划开始日期 | 
 |  |  |                 var proET = new Date(nodes[i].endTime$.substring(0,10)) // 计划结束日期 | 
 |  |  |                 var proET2 = new Date(proET.getTime()+day*2) // 计划结束日期+2天 | 
 |  |  |                 var proET2 = new Date(proET.getTime()-day*2) // 计划结束日期-2天 | 
 |  |  |                 var proRST =new Date(nodes[i].realStartTime$.substring(0,10)) // 实际开始日期 | 
 |  |  |                 var proRET =new Date(nodes[i].realEndTime$.substring(0,10)) // 实际结束日期 | 
 |  |  |                 var nodeDay = (proET-proST+day)/day // 计划工作天数 | 
 |  |  |                 var nodeRSDay = (proET-proRST+day)/day // 节点实际工作天数 | 
 |  |  |                         var nodeREDay = (proRET-proST+day)/day // 预计开始-实际结束时间段 | 
 |  |  |                         var nodeREDay = (proRET-proST+day)/day // 实际结束减计划开始时间 | 
 |  |  |                 var nodeRealDay = (proRET-proRST+day)/day //实际时间段 | 
 |  |  |                 var intDay = (proST-staT)/day // 预计开始时间与项目开始时间的间隔 | 
 |  |  |                 var intRealDay = (proRST-staT)/day // 实际开始与项目开始时间的间隔 | 
 |  |  | 
 |  |  |  | 
 |  |  |                 // 与当前时间的时间差 | 
 |  |  |                 for(var j=0;j<nodeDay;j++){ | 
 |  |  |                     $(nodeId2[i]).find('td').eq(intDay+j).attr("style","background:#3597D6") | 
 |  |  |                     $(nodeId2[i]).find('td').eq(intDay+j).attr("style","background:#5998f5") | 
 |  |  |                 } | 
 |  |  |                     // 实际开始日期与实际结束日期都填写  按实际时间进渲染 | 
 |  |  |                 if(proRST != "Invalid Date" && proRET !="Invalid Date"){ | 
 |  |  |                     // 实际结束时间超过计划结束时间  超过的时间变红色 | 
 |  |  | 					 | 
 |  |  |                     for(var j=0;j<nodeRealDay;j++){ | 
 |  |  |                         if(proRET<=proET){ // 实际结束日期<=计划结束日期 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#49C7D3") | 
 |  |  |                         }else if(proRET>proET && proRET<=proET2){ // 实际结束日期>计划结束日期 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#ccc739") | 
 |  |  |                         if(proRET<=proET2){ // 实际结束日期<=计划结束日期 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#00cc88") | 
 |  |  |                         }else if(proRET>proET2 && proRET<=proET){ // 实际结束日期>计划结束日期 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#00cc88") | 
 |  |  |                         }else { // 实际结束日期>计划结束日期+2天 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#CC3333") | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#e63939") | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     // 实际开始时间已填 实际结束时间未填  (实际结束时间按预计结束时间填)改 当前时间与实际开始时间的间隔 | 
 |  |  | 
 |  |  |                     for(var j=0;j<nodeRealRunDay;j++){ | 
 |  |  |                         if(nodeRun>0){ | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#CC3333") | 
 |  |  |                         }else if(nodeRun>-2 && nodeRun<=0){ | 
 |  |  |                         }else if(nodeRun>-3 && nodeRun<=0){ | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#ccc739") | 
 |  |  |                         }else{ | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#49C7D3") | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intRealDay+j).attr("style","background:#8bddde") | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                         // 实际开始时间未填 实际结束时间已填  实际开始时间按计划时长往前移 | 
 |  |  |                         // 实际开始时间未填 实际结束时间已填  实际开始时间按计划开始时间 | 
 |  |  |                 }else if(proRST == "Invalid Date" && proRET !="Invalid Date"){ | 
 |  |  |                     if(proRET<=proET){ // 实际结束日期<=计划结束日期 | 
 |  |  |                         for(var j=0;j<nodeDay;j++){ // 天数是节点计划天数 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intNotRealStartTime+j).attr("style","background:#49C7D3") // 实际开始日期是 实际结束日期-计划天数 | 
 |  |  |                     if(proRET<=proST){ // 实际结束日期<=计划开始日期  暂时不填充 | 
 |  |  |                         // for(var j=0;j<nodeDay;j++){ // 天数是节点计划天数 | 
 |  |  |                         //     $(nodeId3[i]).find('td').eq(intNotRealStartTime+j).attr("style","background:#49C7D3") // 实际开始日期是 实际结束日期-计划天数 | 
 |  |  |                         // } | 
 |  |  |                     }else if(proRET<=proET){ //实际结束日期<=计划结束日期 | 
 |  |  |                         for(var j=0;j<nodeREDay;j++) { // 天数是 实际结束日期-计划开始日期 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intDay + j).attr("style", "background:#00cc88")// 实际开始日期是 实际结束日期-计划天数 | 
 |  |  |                         } | 
 |  |  |                     }else if(proRET<=proET2){ //实际结束日期<=计划结束日期+2天 | 
 |  |  |                         for(var j=0;j<nodeDay;j++) { // 天数是节点计划天数 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intNotRealStartTime + j).attr("style", "background:#ccc739")// 实际开始日期是 实际结束日期-计划天数 | 
 |  |  |                         } | 
 |  |  |                     }else{ // 实际结束日期>计划结束日期+2天 | 
 |  |  |                         for(var j=0;j<nodeDay;j++) { // 天数是节点计划天数 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intNotRealStartTime + j).attr("style", "background:#CC3333")// 实际开始日期是 实际结束日期-计划天数 | 
 |  |  |                     }else{ // 实际结束日期>计划结束日期 | 
 |  |  |                         for(var j=0;j<nodeREDay;j++) { // 天数是 实际结束日期-计划开始日期 | 
 |  |  |                             $(nodeId3[i]).find('td').eq(intDay + j).attr("style", "background:#CC3333")// 实际开始日期是 实际结束日期-计划天数 | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                     // 实际开始时间未填 实际结束时间未填 | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             // 鼠标经过 | 
 |  |  |             // $("#tabBody").find("tr").eq(3).find("td").eq(30).attr("style","background:#354352") | 
 |  |  |             // $("#tabBody").find("td").eq(30).attr("style","background:#f60313") | 
 |  |  |             $(document).on('mouseover','.time-color',function () { | 
 |  |  |                 // console.log($(this).attr('class')) | 
 |  |  |                 var cls = $(this).attr('class').split(' ')[0] | 
 |  |  |                 var cll = '.'+cls | 
 |  |  |                 $(cll).addClass('over-color') | 
 |  |  |             }) | 
 |  |  |             // 鼠标离开 | 
 |  |  |             $(document).on('mouseout','.time-color',function () { | 
 |  |  |                 // console.log($(this).attr('class')) | 
 |  |  |                 var cls = $(this).attr('class').split(' ')[0] | 
 |  |  |                 var cll = '.'+cls | 
 |  |  |                 $(cll).removeClass('over-color') | 
 |  |  |             }) | 
 |  |  |             // 滚轮 | 
 |  |  | 			 | 
 |  |  | 			 | 
 |  |  | 			 | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |             function getDateArr(start,end) { | 
 |  |  |                     let option = new Date(start) // 开始时间 | 
 |  |  |                     let nowDate = new Date(end) // 结束时间 | 
 |  |  | 
 |  |  |             } | 
 |  |  |             } | 
 |  |  |             }) | 
 |  |  | 			 | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  |