|  |  | 
 |  |  | } | 
 |  |  | body { | 
 |  |  |     height: 100%; | 
 |  |  |     position: absolute; | 
 |  |  | } | 
 |  |  | #container { | 
 |  |  |     padding: 10px 10px; | 
 
 |  |  | 
 |  |  | } | 
 |  |  | /* 画布 */ | 
 |  |  | #root { | 
 |  |  |     height: 100%; | 
 |  |  |     /*height: 100%;*/ | 
 |  |  |     min-height:100%; | 
 |  |  |     width: 100%; | 
 |  |  |     margin: 0; | 
 |  |  |     background-color: /* #2C3E50 */ #2e4e7e; | 
 |  |  |     position: absolute; | 
 |  |  |     position: relative; | 
 |  |  | } | 
 |  |  | #top-tab { | 
 |  |  |     width: 100%; | 
 |  |  | 
 |  |  | } | 
 |  |  |  | 
 |  |  | #details { | 
 |  |  |     position: relative; | 
 |  |  |     position: absolute; | 
 |  |  | } | 
 |  |  | #details .head { | 
 |  |  |     width: 100%; | 
 
 |  |  | 
 |  |  |         var index = $(".row").index(this) // 确定在表格中的第几行 | 
 |  |  |         var rowName = $(this).children(".projects").html() // 当前行中类名为projects的类中的文字 | 
 |  |  |         var project = data[index] // 把data中的第index个项目 赋值给project | 
 |  |  |         if(project.id==rowName){ | 
 |  |  |         if(project.projectName==rowName){ | 
 |  |  |             // 比较时间 | 
 |  |  |             var currT = new Date() // 当前时间 | 
 |  |  |             var staT = new Date(project.startDay.substring(0,10)) // 项目开始时间 | 
 |  |  |             var endT = new Date(project.endDay.substring(0,10)) // 项目结束时间 | 
 |  |  |             var nodes = project.nodes | 
 |  |  |             var staT = new Date(project.projectStartTime.substring(0,10)) // 项目开始时间 | 
 |  |  |             var endT = new Date(project.projectEndTime.substring(0,10)) // 项目结束时间 | 
 |  |  |             var nodes = project.projectPlans | 
 |  |  |             // 判断项目计划节点时间是否有空值 | 
 |  |  |             for(var i=0;i<nodes.length;i++){ | 
 |  |  |                 if(nodes[i].staT==''||nodes[i].endTime$==''){ | 
 |  |  | 
 |  |  |  | 
 |  |  |             var bigDays = [] | 
 |  |  |             for(var i = 0;i<nodes.length;i++){ | 
 |  |  |                 var projectsName = nodes[i].name // 节点名称                    改第一个请求用 | 
 |  |  |                 var projectsName = nodes[i].flowId$ // 节点名称                    改第一个请求用 | 
 |  |  |                 var proRET = new Date(nodes[i].realEndTime$.substring(0,10)) // 节点实际结束时间 | 
 |  |  |                 var tab2 ='<tr id="td-node'+i+'-gz">'+'<tr id="td-node'+i+'-gz-2">'+'</tr>' | 
 |  |  |                 tab = tab +tab2 | 
 |  |  | 
 |  |  |                             +'<tbody>' // 表身 (项目节点始末) | 
 |  |  |                                 +'<tr class="tab-body">' | 
 |  |  |                                     +'<td style="height: 50px">'+'项目总时长'+'</td>' | 
 |  |  |                                     +'<td style="height: 50px">'+project.startDay.substring(0,10)+'</td>' | 
 |  |  |                                     +'<td style="height: 50px">'+project.endDay.substring(0,10)+'</td>' | 
 |  |  |                                     +'<td style="height: 50px">'+project.projectStartTime.substring(0,10)+'</td>' | 
 |  |  |                                     +'<td style="height: 50px">'+project.projectEndTime.substring(0,10)+'</td>' | 
 |  |  |                                 +'</tr>' | 
 |  |  |  | 
 |  |  |             var tabLeft4 = tabLeft + tabLeft3 +'</tbody>' | 
 
 |  |  | 
 |  |  | /****************************************************************************************************************************************************************************/ | 
 |  |  |  | 
 |  |  | // 表头 | 
 |  |  | var proData = ["项目名称", "项目类型", "售前金额核算", "开始时间", "结束时间"] | 
 |  |  | var proData = ["项目名称", "项目类型", "开始时间", "结束时间"] | 
 |  |  | var getTheaddData = function () { | 
 |  |  |     //$.ajax({ | 
 |  |  |     //    url: baseurl + '/pms/flowStatus/list/auth', | 
 |  |  | 
 |  |  | } | 
 |  |  |  | 
 |  |  | /*****************************************************************************************************************************************************************************/ | 
 |  |  | var resMap = [ | 
 |  |  |     { | 
 |  |  |     endDay:"2023-01-16 00:00:00", | 
 |  |  |     id:"cs001", | 
 |  |  |     plandeAmt:10000, | 
 |  |  |     planinAmt: 50000, | 
 |  |  |     presaleAmt: 5000000, | 
 |  |  |     realdeAmt: 9000, | 
 |  |  |     realinAmt: 40000, | 
 |  |  |     startDay:"2022-09-15 00:00:00", | 
 |  |  |     type: "横梁式", | 
 |  |  |     nodes:[{name: '业务下单', startTime: '2022-09-10', endTime$: '2022-09-15', realStartTime$: '2022-09-10', realEndTime$: '2022-09-15'}, | 
 |  |  |         {name: '预付款', startTime: '2022-09-15', endTime$: '2022-09-26', realStartTime$: '2022-09-15', realEndTime$: '2022-09-26'}, | 
 |  |  |         {name: 'BOM上表', startTime: '2022-09-20', endTime$: '2022-09-30', realStartTime$: '2022-09-20', realEndTime$: '2022-09-30'}, | 
 |  |  |         {name: '物料请购', startTime: '2022-09-30', endTime$: '2022-10-10', realStartTime$: '2022-09-30', realEndTime$: '2022-10-10'}, | 
 |  |  |         {name: '施工计划书', startTime: '2022-10-05', endTime$: '2022-10-18', realStartTime$: '2022-10-05', realEndTime$: '2022-10-18'}, | 
 |  |  |         {name: '生产计划', startTime: '2022-10-18', endTime$: '2022-11-30', realStartTime$: '2022-10-18', realEndTime$: '2022-11-30'}, | 
 |  |  |         {name: '包装设计', startTime: '2022-10-25', endTime$: '2022-10-30', realStartTime$: '2022-10-25', realEndTime$: '2022-10-30'}, | 
 |  |  |         {name: '装车设计', startTime: '2022-10-26', endTime$: '2022-10-30', realStartTime$: '2022-10-26', realEndTime$: '2022-10-30'}, | 
 |  |  |         {name: '发货计划书', startTime: '2022-10-27', endTime$: '2022-10-28', realStartTime$: '2022-10-27', realEndTime$: '2022-10-28'}, | 
 |  |  |         {name: '生产制作', startTime: '2022-11-01', endTime$: '2022-12-05', realStartTime$: '2022-11-01', realEndTime$: '2022-12-05'}, | 
 |  |  |         {name: '发货', startTime: '2022-12-06', endTime$: '2022-12-10', realStartTime$: '2022-12-06', realEndTime$: '2022-12-10'}, | 
 |  |  |         {name: '安装队确认', startTime: '2022-12-15', endTime$: '2022-12-20', realStartTime$: '2022-12-15', realEndTime$: '2022-12-20'}, | 
 |  |  |         {name: '物流公司确认', startTime: '2022-12-20', endTime$: '2022-12-30', realStartTime$: '2022-12-20', realEndTime$: '2022-12-30'}, | 
 |  |  |         {name: '安装', startTime: '2022-12-01', endTime$: '2022-12-15', realStartTime$: '2022-12-01', realEndTime$: '2022-12-15'}, | 
 |  |  |         {name: '完工单签订', startTime: '2022-12-16', endTime$: '2022-12-18', realStartTime$: '2022-12-16', realEndTime$: '2022-12-18'}, | 
 |  |  |         {name: '验收', startTime: '2023-01-06', endTime$: '2023-01-10', realStartTime$: '2023-01-06', realEndTime$: '2023-01-10'}, | 
 |  |  |         {name: '总结报告', startTime: '2023-01-15', endTime$: '2023-01-16', realStartTime$: '2023-01-15', realEndTime$: '2023-01-16'} | 
 |  |  |     ] | 
 |  |  | }, | 
 |  |  |     { | 
 |  |  |         endDay:"2022-09-30 00:00:00", | 
 |  |  |         id:"cs001", | 
 |  |  |         plandeAmt:10000, | 
 |  |  |         planinAmt: 50000, | 
 |  |  |         presaleAmt: 5000000, | 
 |  |  |         realdeAmt: 9000, | 
 |  |  |         realinAmt: 40000, | 
 |  |  |         startDay:"2022-09-15 00:00:00", | 
 |  |  |         type: "横梁式", | 
 |  |  |         nodes:[{name: '业务下单', startTime: '2022-09-10', endTime$: '2022-09-10', realStartTime$: '2022-09-30', realEndTime$: '2022-09-09'}, | 
 |  |  |             {name: '预付款', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'}, | 
 |  |  |             {name: 'BOM上表', startTime: '2022-09-24', endTime$: '2022-09-24', realStartTime$: '2022-09-25', realEndTime$: '2022-09-25'}, | 
 |  |  |             {name: '物料请购', startTime: '2022-09-30', endTime$: '2022-09-30', realStartTime$: '2022-09-29', realEndTime$: '2022-09-29'}, | 
 |  |  |             {name: '施工计划书', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'}, | 
 |  |  |             {name: '生产计划', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'}, | 
 |  |  |             {name: '包装设计', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-06', realEndTime$: '2022-09-06'}, | 
 |  |  |             {name: '装车设计', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'}, | 
 |  |  |             {name: '发货计划书', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'}, | 
 |  |  |             {name: '生产制作', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'}, | 
 |  |  |             {name: '发货', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-06', realEndTime$: '2022-09-06'}, | 
 |  |  |             {name: '安装队确认', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-06', realEndTime$: '2022-09-06'}, | 
 |  |  |             {name: '物流公司确认', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-06', realEndTime$: '2022-09-06'}, | 
 |  |  |             {name: '安装', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-06', realEndTime$: '2022-09-06'}, | 
 |  |  |             {name: '完工单签订', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-06', realEndTime$: '2022-09-06'}, | 
 |  |  |             {name: '验收', startTime: '2022-09-06', endTime$: '2022-09-06', realStartTime$: '2022-09-27', realEndTime$: '2022-09-30'}, | 
 |  |  |             {name: '总结报告', startTime: '2022-09-26', endTime$: '2022-09-26', realStartTime$: '2022-09-26', realEndTime$: '2022-09-26'} | 
 |  |  |         ] | 
 |  |  |     }, | 
 |  |  |  | 
 |  |  | ]; | 
 |  |  | var getThbodyData = function () { | 
 |  |  |     $.ajax({ | 
 |  |  |         url: baseurl + '/pms/projectPlan/toFront', | 
 |  |  |         url: baseurl + '/pms/projectPlan/toFront/common', | 
 |  |  |         type: 'GET', | 
 |  |  |         dataType: 'JSON', | 
 |  |  |         data: {}, | 
 |  |  | 
 |  |  |             if (res.code == 200) { | 
 |  |  |                  console.log(res) | 
 |  |  |                 data = res.data | 
 |  |  |                 //data = resMap | 
 |  |  |                 // 判断时间是否有null  有null的改为 "" | 
 |  |  |                 for (var i = 0; i < data.length; i++) { | 
 |  |  |                     var dataNode = data[i].nodes | 
 |  |  |                     var dataNode = data[i].projectPlans | 
 |  |  |                     for (var j = 0; j < dataNode.length; j++) { | 
 |  |  |                         var dataNull = dataNode[j] | 
 |  |  |                         for (var k in dataNull) { | 
 |  |  | 
 |  |  |                 // 表身填充 | 
 |  |  |                 $('#tab-body').empty() | 
 |  |  |                 for (var i = 0; i < data.length; i++) { | 
 |  |  |                     var node = data[i].nodes | 
 |  |  |                     var node = data[i].projectPlans | 
 |  |  |                     for (var j = 0; j < node.length; j++) { | 
 |  |  |                         var dataNull = node[j] | 
 |  |  |                         for (var k in dataNull) { | 
 |  |  | 
 |  |  |                         str = str + str1 | 
 |  |  |                     } | 
 |  |  |                     var str2 = '<tr id="row' + i + '" class="row">' | 
 |  |  |                         + '<th class="projects">' + data[i].id + '</th>' | 
 |  |  |                         + '<th class="projects">' + data[i].type + '</th>' | 
 |  |  |                         + '<td class="nor-mal">' + data[i].presaleAmt + '</td>' | 
 |  |  |                         + '<td class="nor-mal">' + '<p>' + data[i].startDay.substring(0, 10) + '</p>' + '</td>' | 
 |  |  |                         + '<td class="nor-mal">' + '<p>' + data[i].endDay.substring(0, 10) + '</p>' + '</td>' | 
 |  |  |                         + '<th class="projects">' + data[i].projectName + '</th>' | 
 |  |  |                         + '<th class="projects">' + data[i].projectType + '</th>' | 
 |  |  |                         //+ '<td class="nor-mal">' + data[i].presaleAmt + '</td>' | 
 |  |  |                         + '<td class="nor-mal">' + '<p>' + data[i].projectStartTime.substring(0, 10) + '</p>' + '</td>' | 
 |  |  |                         + '<td class="nor-mal">' + '<p>' + data[i].projectEndTime.substring(0, 10) + '</p>' + '</td>' | 
 |  |  |                     var str9 = '<td class="normal">' + '<p>' + data[i].plandeAmt + '</p>' + '<p>' + data[i].realdeAmt + '</p>' + '</td>' | 
 |  |  |                         + '<td class="normal">' + '<p>' + data[i].planinAmt + '</p>' + '<p>' + data[i].realinAmt + '</p>' + '</td>' | 
 |  |  |                     str9 = '' |