layui treetable插件子节点数据无法渲染,已解决

 

 

如图1所示,前端layui渲染:

var setMilestoneAfterViewTree = function (data) {
            treetable.render({
                treeColIndex: 1,          // 树形图标显示在第几列
                treeSpid: 0,             // 最上级的父级id
                treeIdName: 'id',   // id字段的名称
                treePidName: 'parentId',     // pid字段的名称
                treeDefaultClose: false,   // 是否默认折叠
                treeLinkage: true,        // 父级展开时是否自动展开所有子级
                elem: '#changeMilestoneAfterTable',
                data: data,
                page: false,
                cols: [[
                    {type: 'numbers'},
                    {field: 'name', title: '里程碑', minWidth: 130},
                    // {field: 'milestoneId', title: '里程碑ID', hide: true},
                    {field: 'versionNo', title: '版本号', hide: true},
                    {field: 'level', title: '层级', hide: true},
                    {field: 'sort', title: '序号', hide: true},
                    {
                        field: 'planStartTime', title: '计划开始时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.planStartTime || "";
                            if (val) {
                                val = util.toDateString(d.planStartTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'planEndTime', title: '计划结束时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.planEndTime || "";
                            if (val) {
                                val = util.toDateString(d.planEndTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'startTime', title: '实际开始时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.startTime || "";
                            if (val) {
                                val = util.toDateString(d.startTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'endTime', title: '实际结束时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.endTime || "";
                            if (val) {
                                val = util.toDateString(d.endTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'status', title: '状态', minWidth: 130, align: 'center', templet: function (d) {
                            var html = "";
                            milestoneStatusValue && $.each(milestoneStatusValue, function (key, val) {
                                if (key == d.status) {
                                    html += val;
                                }
                            });
                            return html;
                        }
                    },
                ]],
                done: function (res, curr, count) {
                    afterDataList = res.data;
                    //新老里程碑循环对比
                    for (var i = 0; i < afterDataList.length; i++) {
                        var afterData = afterDataList[i];
                        var isNewMilestone = true;//判断是否新里程碑
                        for (var j = 0; j < beforeDataList.length; j++) {
                            var beforeData = beforeDataList[j];
                            if (beforeData.milestoneId == afterData.milestoneId) {
                                if (!compareDate(beforeData.planStartTime, afterData.planStartTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="planStartTime"]').css("background-color", "yellow");
                                }
                                if (!compareDate(beforeData.planEndTime, afterData.planEndTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="planEndTime"]').css("background-color", "yellow");
                                }
                                if (!compareDate(beforeData.startTime, afterData.startTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="startTime"]').css("background-color", "yellow");
                                }
                                if (!compareDate(beforeData.endTime, afterData.endTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="endTime"]').css("background-color", "yellow");
                                }
                                isNewMilestone = false;
                            }
                        }
                        if (isNewMilestone) {
                            $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').css("background-color", "yellow");
                        }
                    }
                    layer.closeAll('loading');
                }
            });
            console.log(data);
        };

图2:可以看到前端接收了8条数据,但是渲染出来的只有6条,如图3

图3:

疑惑,是什么原因造成这样,无

法渲染子节点,数据库如下,数据库表结构设计如下:

 ========================================================分割线=========================================================================

前端页面treeIdName改为milestoneId,后端把id值set为null,要注意查看treetable的源码

  var afterDataList = [];
        var setMilestoneAfterViewTree = function (data) {
            treetable.render({
                treeColIndex: 1,          // 树形图标显示在第几列
                treeSpid: '0',             // 最上级的父级id
                treeIdName: 'milestoneId',   // id字段的名称
                treePidName: 'parentId',     // pid字段的名称
                treeDefaultClose: false,   // 是否默认折叠
                treeLinkage: true,        // 父级展开时是否自动展开所有子级
                elem: '#changeMilestoneAfterTable',
                data: data,
                page: false,
                cols: [[
                    {type: 'numbers'},
                    {field: 'name', title: '里程碑', minWidth: 130},
                    {field: 'versionNo', title: '版本号', hide: true},
                    {field: 'level', title: '层级', hide: true},
                    {field: 'sort', title: '序号', hide: true},
                    {
                        field: 'planStartTime', title: '计划开始时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.planStartTime || "";
                            if (val) {
                                val = util.toDateString(d.planStartTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'planEndTime', title: '计划结束时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.planEndTime || "";
                            if (val) {
                                val = util.toDateString(d.planEndTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'startTime', title: '实际开始时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.startTime || "";
                            if (val) {
                                val = util.toDateString(d.startTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'endTime', title: '实际结束时间', minWidth: 130, align: 'center', edit: false, templet: function (d) {
                            var val = d.endTime || "";
                            if (val) {
                                val = util.toDateString(d.endTime, "yyyy-MM-dd");
                            }
                            return val;
                        }
                    },
                    {
                        field: 'status', title: '状态', minWidth: 130, align: 'center', templet: function (d) {
                            var html = "";
                            milestoneStatusValue && $.each(milestoneStatusValue, function (key, val) {
                                if (key == d.status) {
                                    html += val;
                                }
                            });
                            return html;
                        }
                    },
                ]],
                done: function (res, curr, count) {
                    afterDataList = res.data;
                    //新老里程碑循环对比
                    for (var i = 0; i < afterDataList.length; i++) {
                        var afterData = afterDataList[i];
                        var isNewMilestone = true;//判断是否新里程碑
                        for (var j = 0; j < beforeDataList.length; j++) {
                            var beforeData = beforeDataList[j];
                            if (beforeData.milestoneId == afterData.milestoneId) {
                                if (!compareDate(beforeData.planStartTime, afterData.planStartTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="planStartTime"]').css("background-color", "yellow");
                                }
                                if (!compareDate(beforeData.planEndTime, afterData.planEndTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="planEndTime"]').css("background-color", "yellow");
                                }
                                if (!compareDate(beforeData.startTime, afterData.startTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="startTime"]').css("background-color", "yellow");
                                }
                                if (!compareDate(beforeData.endTime, afterData.endTime)) {
                                    $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').find('td[data-field="endTime"]').css("background-color", "yellow");
                                }
                                isNewMilestone = false;
                            }
                        }
                        if (isNewMilestone) {
                            $('#changeMilestoneAfterTable').next().find('.layui-table-main').find('tr[data-index="' + i + '"]').css("background-color", "yellow");
                        }
                    }
                    layer.closeAll('loading');
                }
            });
            // console.log(data);
        };

 

/**
     * 获取变更后的里程碑
     *
     * @param id
     * @return
     */
    @RequestMapping(value = "/getMilestoneAfterList", method = RequestMethod.POST)
    @ResponseBody
    public ResultBean<List<ProjectMilestoneEdit>> getMilestoneAfterList(String id) {
        List<ProjectMilestoneEdit> milestoneEditList = projectMilestoneEditService.getMilestoneAfterList(id);
        for (ProjectMilestoneEdit projectMilestoneEdit : milestoneEditList) {
            projectMilestoneEdit.setId(null);
        }
        return new ResultBean<List<ProjectMilestoneEdit>>(milestoneEditList);
    }

treetable源码,看懂就会改了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值