|  |  | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         List<String> columns = new ArrayList<>(); | 
 |  |  |         //如果变量包含Final,Static,transient修饰符, 跳过该变量 | 
 |  |  |         for (Field field :Cools.getAllFields(cls)){ | 
 |  |  |             if (Modifier.isFinal(field.getModifiers()) | 
 |  |  |                     || Modifier.isStatic(field.getModifiers()) | 
 |  |  |                     || Modifier.isTransient(field.getModifiers())){ | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             String column = null; | 
 |  |  |             if (field.isAnnotationPresent(TableField.class)) { | 
 |  |  |                 column = field.getAnnotation(TableField.class).value(); | 
 
 |  |  | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         hostEq(wrapper); | 
 |  |  |         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
 |  |  | //        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} | 
 |  |  |         wrapper.orderBy("create_time",false); | 
 |  |  |         return R.ok(cstmrService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 
 |  |  | 
 |  |  |                   @RequestParam(required = false)String orderByType, | 
 |  |  |                   @RequestParam Map<String, Object> param){ | 
 |  |  |         EntityWrapper<Item> wrapper = new EntityWrapper<>(); | 
 |  |  | //        allLike(Item,null,wrapper,param.get("id")); | 
 |  |  |         HashSet<String> excludeField = new HashSet<>(); | 
 |  |  |  | 
 |  |  | //        allLike(Item.class,excludeField,wrapper, (String) param.get("id")); | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |         hostEq(wrapper); | 
 |  |  | 
 |  |  |         if (!Cools.isEmpty(name)) { | 
 |  |  |             throw new CoolException("不可有重复项目名"); | 
 |  |  |         } | 
 |  |  |         if (item.getRealMonth() < 0){ | 
 |  |  |             throw new CoolException("实施周期不可为负数"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         item.setHostId(getHostId()); | 
 |  |  |         item.setCreateBy(getUserId()); | 
 |  |  | 
 |  |  |         if (!item.getType().equals("1")) { | 
 |  |  |             throw new CoolException("目前仅支持集成项目"); | 
 |  |  |         } | 
 |  |  |         if (item.getRealMonth() < 0){ | 
 |  |  |             throw new CoolException("实施周期不可为负数"); | 
 |  |  |         } | 
 |  |  |         item.setUpdateBy(getUserId()); | 
 |  |  |         item.setUpdateTime(new Date()); | 
 |  |  |         itemService.update(item,new EntityWrapper<Item>() | 
 
 |  |  | 
 |  |  |         } | 
 |  |  |         excludeTrash(param); | 
 |  |  |         convert(param, wrapper); | 
 |  |  |  | 
 |  |  | //        HashSet<String> excludeItems = new HashSet<>(); | 
 |  |  | //        excludeItems.add("id"); | 
 |  |  | //        excludeItems.add("item_id"); | 
 |  |  | //        excludeItems.add("weight_num"); | 
 |  |  | //        excludeItems.add("create_time"); | 
 |  |  | //        excludeItems.add("create_id"); | 
 |  |  | //        excludeItems.add("modify_time"); | 
 |  |  | //        excludeItems.add("modify_id"); | 
 |  |  | // | 
 |  |  | //        allLike(ProjectPlan.class,excludeItems,wrapper, (String) param.get("id")); | 
 |  |  |         wrapper.orderBy("item_id"); | 
 |  |  |  | 
 |  |  |  | 
 |  |  | //        if (!Cools.isEmpty(orderByField)) { | 
 |  |  | //            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); | 
 |  |  | //        } | 
 |  |  |  | 
 |  |  |         return R.ok(projectPlanService.selectPage(new Page<>(curr, limit), wrapper)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         if (!Cools.isEmpty(checkExist)) { | 
 |  |  |             throw new CoolException("权重值冲突,请检查"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         FlowStatus id = flowStatusService.selectOne(new EntityWrapper<FlowStatus>() | 
 |  |  |                 .eq("id", projectPlan.getFlowId())); | 
 |  |  |         if (!Cools.isEmpty(id)) { | 
 |  |  | 
 |  |  |  | 
 |  |  |         if (Cools.isEmpty(projectPlan) || null == projectPlan.getId()) { | 
 |  |  |             return R.error(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (projectPlan.getDelay() < 0){ | 
 |  |  |             throw new CoolException("延期天数不可为负数"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         projectPlan.setModifyTime(new Date()); | 
 |  |  | 
 |  |  |         List<Item> items = itemService.selectList(new EntityWrapper<Item>() | 
 |  |  |                 .eq("status","1")); | 
 |  |  |         List<ItemsDTO> itemsDTOs = new ArrayList<>(); | 
 |  |  |         for (Item item : items) { | 
 |  |  |             ItemsDTO itemsDTO = new ItemsDTO(); | 
 |  |  |  | 
 |  |  |         for (Item item : items) { | 
 |  |  |  | 
 |  |  |             ItemsDTO itemsDTO = new ItemsDTO(); | 
 |  |  |             List<FlowsDTO> flows = new ArrayList<>(); | 
 |  |  |             itemsDTO.setId(item.getName()); | 
 |  |  |             itemsDTO.setStartDay(item.getStartTime()); | 
 |  |  |             itemsDTO.setEndDay(item.getEndTime()); | 
 |  |  |             itemsDTO.setStartDay(item.getStartTime$()); | 
 |  |  |             itemsDTO.setEndDay(item.getEndTime$()); | 
 |  |  |             List<ProjectPlan> allPlans = projectPlanService.selectList(new EntityWrapper<ProjectPlan>() | 
 |  |  |                     .eq("item_id", item.getId())); | 
 |  |  |             for (ProjectPlan projectPlan : allPlans) { | 
 |  |  |                 projectPlan.setFlowName(projectPlan.getFlowId$()); | 
 |  |  |                 FlowsDTO flowsDTO = new FlowsDTO(); | 
 |  |  |                 flowsDTO.setName(projectPlan.getFlowId$()); | 
 |  |  |                 flowsDTO.setStartTime(projectPlan.getStartTime$()); | 
 |  |  |                 flowsDTO.setEndTime$(projectPlan.getEndTime$()); | 
 |  |  |                 flowsDTO.setRealStartTime$(projectPlan.getRealStartTime$()); | 
 |  |  |                 flowsDTO.setRealEndTime$(projectPlan.getRealEndTime$()); | 
 |  |  |                 flows.add(flowsDTO); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             itemsDTO.setNodes(allPlans); | 
 |  |  |             itemsDTO.setNodes(flows); | 
 |  |  |             itemsDTOs.add(itemsDTO); | 
 |  |  |         } | 
 |  |  |         return R.ok().add(itemsDTOs); | 
 
 |  |  | 
 |  |  | @NoArgsConstructor | 
 |  |  | public class FlowsDTO { | 
 |  |  |     private String name; | 
 |  |  |     private Date deadline; | 
 |  |  |     private Date realDeadline; | 
 |  |  |     private int extraDay; | 
 |  |  |     private String startTime; | 
 |  |  |     private String endTime$; | 
 |  |  |     private String realStartTime$; | 
 |  |  |     private String realEndTime$; | 
 |  |  | } | 
 
 |  |  | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableField; | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableId; | 
 |  |  | import com.baomidou.mybatisplus.annotations.TableName; | 
 |  |  | import com.baomidou.mybatisplus.enums.FieldStrategy; | 
 |  |  | import com.baomidou.mybatisplus.enums.IdType; | 
 |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | 
 |  |  |      * 开始时间 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "开始时间") | 
 |  |  |     @TableField("start_time") | 
 |  |  |     @TableField(value = "start_time", strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date startTime; | 
 |  |  |  | 
 |  |  | 
 |  |  |      * 结束时间 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "结束时间") | 
 |  |  |     @TableField("end_time") | 
 |  |  |     @TableField(value = "end_time" ,strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date endTime; | 
 |  |  |  | 
 |  |  | 
 |  |  |     private String type; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @TableField("real_start_time") | 
 |  |  |     @TableField(value = "real_start_time", strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date realStartTime; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @TableField("real_end_time") | 
 |  |  |     @TableField(value = "real_end_time", strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date realEndTime; | 
 |  |  |  | 
 |  |  | 
 |  |  |         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getStartTime0$(){ | 
 |  |  |         if (Cools.isEmpty(this.startTime)){ | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |         return new SimpleDateFormat("yyyy-MM-dd").format(this.startTime); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void setStartTime(Date startTime) { | 
 |  |  |         this.startTime = startTime; | 
 |  |  |     } | 
 |  |  | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); | 
 |  |  |     } | 
 |  |  |     public String getEndTime0$(){ | 
 |  |  |         if (Cools.isEmpty(this.endTime)){ | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |         return new SimpleDateFormat("yyyy-MM-dd").format(this.endTime); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public void setEndTime(Date endTime) { | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getRealStartTime0$(){ | 
 |  |  |         if (!Cools.isEmpty(this.realStartTime)) { | 
 |  |  |             return new SimpleDateFormat("yyyy-MM-dd").format(this.realStartTime); | 
 |  |  |         }else { | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getRealEndTime$(){ | 
 |  |  |         if (!Cools.isEmpty(this.realEndTime)) { | 
 |  |  |             return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.realEndTime); | 
 |  |  | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     public String getRealEndTime0$(){ | 
 |  |  |         if (!Cools.isEmpty(this.realEndTime)) { | 
 |  |  |             return new SimpleDateFormat("yyyy-MM-dd").format(this.realEndTime); | 
 |  |  |         }else { | 
 |  |  |             return ""; | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     public String getType$(){ | 
 |  |  |         ProjectTypeService bean = SpringUtils.getBean(ProjectTypeService.class); | 
 |  |  |         ProjectType id = bean.selectOne(new EntityWrapper<ProjectType>() | 
 
 |  |  | 
 |  |  | @NoArgsConstructor | 
 |  |  | public class ItemsDTO { | 
 |  |  |     private String id; | 
 |  |  |     private Date startDay; | 
 |  |  |     private Date endDay; | 
 |  |  |     private List<ProjectPlan> nodes; | 
 |  |  |     private String startDay; | 
 |  |  |     private String endDay; | 
 |  |  |     private List<FlowsDTO> nodes; | 
 |  |  | } | 
 
 |  |  | 
 |  |  | package zy.cloud.wms.manager.entity; | 
 |  |  |  | 
 |  |  | import com.baomidou.mybatisplus.enums.FieldStrategy; | 
 |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
 |  |  | import com.core.common.Cools; | 
 |  |  | import com.core.common.SpringUtils; | 
 |  |  | 
 |  |  |  | 
 |  |  | @Data | 
 |  |  | @TableName("sys_project_plan") | 
 |  |  |  | 
 |  |  | public class ProjectPlan implements Serializable { | 
 |  |  |  | 
 |  |  |     private static final long serialVersionUID = 1L; | 
 |  |  | 
 |  |  |     @ApiModelProperty(value= "项目ID") | 
 |  |  |     @TableId(value = "item_id", type = IdType.INPUT) | 
 |  |  |     @TableField("item_id") | 
 |  |  |  | 
 |  |  |     private Long itemId; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |      * 启动日期 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "启动日期") | 
 |  |  |     @TableField("start_time") | 
 |  |  |     @TableField(value = "start_time",strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |  | 
 |  |  |     private Date startTime; | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 实际启动日期 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "实际启动日期") | 
 |  |  |     @TableField("real_start_time") | 
 |  |  |     @TableField(value = "real_start_time", strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date realStartTime; | 
 |  |  |  | 
 |  |  | 
 |  |  |      * 结束日期 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "结束日期") | 
 |  |  |     @TableField("end_time") | 
 |  |  |     @TableField(value = "end_time", strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date endTime; | 
 |  |  |  | 
 |  |  | 
 |  |  |      * 实际结束日期 | 
 |  |  |      */ | 
 |  |  |     @ApiModelProperty(value= "实际结束日期") | 
 |  |  |     @TableField("real_end_time") | 
 |  |  |     @TableField(value = "real_end_time", strategy = FieldStrategy.IGNORED) | 
 |  |  |     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") | 
 |  |  |     private Date realEndTime; | 
 |  |  |  | 
 
 |  |  | 
 |  |  |   var t = null; | 
 |  |  |         t = setTimeout(time,0); | 
 |  |  |         function time() { | 
 |  |  |             clearTimeout(t); | 
 |  |  |             dt = new Date(); | 
 |  |  |             var y = dt.getFullYear(); | 
 |  |  |             var mt = dt.getMonth()+1; | 
 |  |  |             var day = dt.getDate(); | 
 |  |  |             var h = dt.getHours(); | 
 |  |  |             var m = dt.getMinutes(); | 
 |  |  |             var s = dt.getSeconds(); | 
 |  |  |             document.getElementById('showTime').innerHTML = y+'年'+mt+'月'+day+'日'+h+'时'+m+'分'+s+'秒'; | 
 |  |  |             t=setTimeout(time,1000); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  | setInterval(function () { | 
 |  |  |     let dt = new Date(); | 
 |  |  |     var y = dt.getFullYear(); | 
 |  |  |     var mt = dt.getMonth()+1; | 
 |  |  |     var day = dt.getDate(); | 
 |  |  |     var h = dt.getHours(); | 
 |  |  |     var m = dt.getMinutes(); | 
 |  |  |     var s = dt.getSeconds(); | 
 |  |  |     document.getElementById('showTime').innerHTML =y+'年'+mt+'月'+day+'日'+h+'时'+m+'分'+s+'秒'; | 
 |  |  | }, 1000); | 
 
 |  |  | 
 |  |  |  | 
 |  |  |             // ,{field: 'member', align: 'center',title: '项目成员'} | 
 |  |  |             // ,{field: 'leader', align: 'center',title: '项目经理'} | 
 |  |  |             ,{field: 'startTime$', align: 'center',title: '计划开始时间', | 
 |  |  |                 templet : "<div>{{layui.util.toDateString(d.startTime$, 'yyyy-MM-dd')}}</div>" | 
 |  |  |             } | 
 |  |  |             ,{field: 'endTime$', align: 'center',title: '计划结束时间', | 
 |  |  |                 templet : "<div>{{layui.util.toDateString(d.endTime$, 'yyyy-MM-dd')}}</div>"} | 
 |  |  |             ,{field: 'realStartTime$', align: 'center', title: '实际开始时间', | 
 |  |  |                 templet : "<div>{{layui.util.toDateString(d.realStartTime$, 'yyyy-MM-dd')}}</div>"} | 
 |  |  |             ,{field: 'realEndTime$', align: 'center', title: '实际结束时间', | 
 |  |  |                 templet : "<div>{{layui.util.toDateString(d.realEndTime$, 'yyyy-MM-dd')}}</div>"} | 
 |  |  |             ,{field: 'startTime0$', align: 'center',title: '计划开始时间'} | 
 |  |  |             ,{field: 'endTime0$', align: 'center',title: '计划结束时间'} | 
 |  |  |             ,{field: 'realStartTime0$', align: 'center', title: '实际开始时间'} | 
 |  |  |             ,{field: 'realEndTime0$', align: 'center', title: '实际结束时间'} | 
 |  |  |             ,{field: 'type$', align: 'center', title: '项目类型'} | 
 |  |  |             ,{field: 'originArea', align: 'center', title: '生产地'} | 
 |  |  |             ,{field: 'realMonth', align: 'center', title: '时间跨度(月)'} | 
 |  |  | 
 |  |  |             statusCode: 200 | 
 |  |  |         }, | 
 |  |  |         done: function(res, curr, count) { | 
 |  |  |  | 
 |  |  |             console.log(res) | 
 |  |  |             if (res.code === 403) { | 
 |  |  |                 top.location.href = baseUrl+"/"; | 
 |  |  |             } | 
 |  |  | 
 |  |  |             title: (mData ? '修改' : '添加') + '项目信息', | 
 |  |  |             content: $('#editDialog').html(), | 
 |  |  |             success: function (layero, dIndex) { | 
 |  |  |                 layDateRender(); | 
 |  |  |                 layDateRender(mData); | 
 |  |  |                 form.val('detail', mData); | 
 |  |  |                 form.on('submit(editSubmit)', function (data) { | 
 |  |  |                     var loadIndex = layer.load(2); | 
 |  |  | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  |     // 时间选择器 | 
 |  |  |     function layDateRender() { | 
 |  |  |     function layDateRender(mData) { | 
 |  |  |         console.log(mData) | 
 |  |  |         setTimeout(function () { | 
 |  |  |             layDate.render({ | 
 |  |  |         elem: '#startTime\\$', | 
 |  |  |         type: 'datetime' | 
 |  |  |     }); | 
 |  |  |         layDate.render({ | 
 |  |  |         elem: '#endTime\\$', | 
 |  |  |         type: 'datetime' | 
 |  |  |     }); | 
 |  |  |         layDate.render({ | 
 |  |  |         elem: '#createTime\\$', | 
 |  |  |         type: 'datetime' | 
 |  |  |     }); | 
 |  |  |         layDate.render({ | 
 |  |  |         elem: '#updateTime\\$', | 
 |  |  |         type: 'datetime' | 
 |  |  |     }); | 
 |  |  |     layDate.render({ | 
 |  |  |         elem: '#realStartTime\\$' | 
 |  |  |         ,type: 'datetime' | 
 |  |  |     }); | 
 |  |  |     layDate.render({ | 
 |  |  |         elem: '#realEndTime\\$' | 
 |  |  |         ,type: 'datetime' | 
 |  |  |     }); | 
 |  |  |                 elem: '#startTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['startTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#realStartTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['realStartTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#endTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['endTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#realEndTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['realEndTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#createTime\\$', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['createTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#modifyTime\\$', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['modifyTime$']):null | 
 |  |  |             }); | 
 |  |  |         }, 500); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |     layDateRender(); | 
 |  |  |  | 
 
 |  |  | 
 |  |  | var items; | 
 |  |  | getItems(); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  | layui.config({ | 
 |  |  |     base: baseUrl + "/static/layui/lay/modules/" | 
 |  |  | }).use(['table','laydate', 'form', 'admin'], function(){ | 
 |  |  | 
 |  |  |     // 重置 | 
 |  |  |     form.on('submit(reset)', function (data) { | 
 |  |  |         pageCurr = 1; | 
 |  |  |         clearFormVal($('#search-box')); | 
 |  |  |         $('#mysearch').val(''); | 
 |  |  |         tableReload(false); | 
 |  |  |     }); | 
 |  |  |  | 
 |  |  | 
 |  |  |     function layDateRender(mData) { | 
 |  |  |         setTimeout(function () { | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#startTime\\$', | 
 |  |  |                 elem: '#startTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['startTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#realStartTime\\$', | 
 |  |  |                 elem: '#realStartTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['realStartTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#endTime\\$', | 
 |  |  |                 elem: '#endTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['endTime$']):null | 
 |  |  |             }); | 
 |  |  |             layDate.render({ | 
 |  |  |                 elem: '#realEndTime\\$', | 
 |  |  |                 elem: '#realEndTime', | 
 |  |  |                 type: 'datetime', | 
 |  |  |                 value: mData!==null&&mData!==undefined?strToDate(mData['realEndTime$']):null | 
 |  |  |             }); | 
 
 |  |  | 
 |  |  | setTimeout(function(){ | 
 |  |  |     getTheaddData() | 
 |  |  |  | 
 |  |  | },500) | 
 |  |  |     getThbodyData() | 
 |  |  | },0) | 
 |  |  | setInterval(function(){ | 
 |  |  |  | 
 |  |  |     getThbodyData() | 
 |  |  |  | 
 |  |  | },500) | 
 |  |  | },50000) | 
 |  |  |  | 
 |  |  |     var proData = ["项目名称","开始时间","结束时间",] | 
 |  |  |     var getTheaddData = function(){ | 
 
 |  |  | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label layui-form-required">计划开始时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="startTime$" id="startTime$" placeholder="请输入计划开始时间" lay-vertype="tips" lay-verify="required"> | 
 |  |  |                         <input class="layui-input" name="startTime" id="startTime" placeholder="请输入计划开始时间" lay-vertype="tips" lay-verify="required"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">实际开始时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="realStartTime$" id="realStartTime$" placeholder="请输入实际开始时间"> | 
 |  |  |                         <input class="layui-input" name="realStartTime" id="realStartTime" placeholder="请输入实际开始时间"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |  | 
 |  |  | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">实施周期(月): </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字月份" type="number"> | 
 |  |  |                         <input class="layui-input" name="realMonth" id="realMonth$" placeholder="填写数字月份" type="number" onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |             </div> | 
 |  |  | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label layui-form-required">计划结束时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="endTime$" id="endTime$" placeholder="请输入计划结束时间" lay-vertype="tips" lay-verify="required"> | 
 |  |  |                         <input class="layui-input" name="endTime" id="endTime" placeholder="请输入计划结束时间" lay-vertype="tips" lay-verify="required"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |  | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">实际结束时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="realEndTime$" id="realEndTime$" placeholder="请输入实际结束时间"> | 
 |  |  |                         <input class="layui-input" name="realEndTime" id="realEndTime" placeholder="请输入实际结束时间"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |  | 
 
 |  |  | 
 |  |  |             </select> | 
 |  |  |         </div> | 
 |  |  |     </div> | 
 |  |  |     <!--    <div class="layui-inline">--> | 
 |  |  |     <!--        <div class="layui-input-inline">--> | 
 |  |  |     <!--            <input class="layui-input" type="text" name="id" placeholder="编号" autocomplete="off">--> | 
 |  |  |     <!--        </div>--> | 
 |  |  |     <!--    </div>--> | 
 |  |  |     <!--    <!– 待添加 –>--> | 
 |  |  |     <!--    <div id="data-search-btn" class="layui-btn-container layui-form-item">--> | 
 |  |  |     <!--        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button>--> | 
 |  |  |     <!--        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button>--> | 
 |  |  |     <!--    </div>--> | 
 |  |  |         <div class="layui-inline"> | 
 |  |  |             <div class="layui-input-inline"> | 
 |  |  |                 <input class="layui-input" id="mysearch" type="text" name="id" placeholder="编号" autocomplete="off"> | 
 |  |  |             </div> | 
 |  |  |         </div> | 
 |  |  |         <!-- 待添加 --> | 
 |  |  |         <div id="data-search-btn" class="layui-btn-container layui-form-item"> | 
 |  |  |             <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> | 
 |  |  |             <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">重置</button> | 
 |  |  |         </div> | 
 |  |  | </div> | 
 |  |  |  | 
 |  |  | <!-- 表格 --> | 
 |  |  | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">计划开始时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="startTime$" id="startTime$" placeholder="请输入计划开始时间"> | 
 |  |  |                         <input class="layui-input" name="startTime" id="startTime" placeholder="请输入计划开始时间"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">计划结束时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="endTime$" id="endTime$" placeholder="请输入计划结束时间"> | 
 |  |  |                         <input class="layui-input" name="endTime" id="endTime" placeholder="请输入计划结束时间"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">实际开始时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="realStartTime$" id="realStartTime$" placeholder="请输入实际开始时间"> | 
 |  |  |                         <input class="layui-input" name="realStartTime" id="realStartTime" placeholder="请输入实际开始时间"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |  | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">实际结束时间: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="realEndTime$" id="realEndTime$" placeholder="请输入实际结束时间"> | 
 |  |  |                         <input class="layui-input" name="realEndTime" id="realEndTime" placeholder="请输入实际结束时间"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  |                     <label class="layui-form-label">延期天数: </label> | 
 |  |  |                     <div class="layui-input-block"> | 
 |  |  |                         <input class="layui-input" name="delay" placeholder="请输入延期天数"> | 
 |  |  |                         <input class="layui-input" name="delay" placeholder="请输入延期天数" type="number" onkeyup="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}" onafterpaste="if(this.value.length==1){this.value=this.value.replace(/[^1-9]/g,'')}else{this.value=this.value.replace(/\D/g,'')}"> | 
 |  |  |                     </div> | 
 |  |  |                 </div> | 
 |  |  |                 <div class="layui-form-item"> | 
 |  |  | 
 |  |  |     </form> | 
 |  |  | </script> | 
 |  |  | <script type="text/template" id="parentNodeGroup"> | 
 |  |  |     <option value="0">显示全部</option> | 
 |  |  |     <option value="0" selected>显示全部</option> | 
 |  |  |     {{#each data}} | 
 |  |  |     <option value="{{this.key}}">{{this.val}}</option> | 
 |  |  |     {{/each}} |