layui 动态表头实现

最近写公司的 OA 遇到很多麻烦问题
公司给我配的前端是个新来的实习生, 而且还不会用 layUI, 遇到问题从来不查文档, 都是张口就问: 这咋回事 这里数据怎么没出来 这里为什么报错
一次两次还能耐心的给他说一下, 时间久了我还真有点招架不住, 最后干脆全部自己来了, 之前我也没接触过 layUI,这个表格渲染就算是一个小总结吧

首先说一下我的使用场景:
在这里插入图片描述
这里是产品给的原型, 场景是人事进入员工工时录入时,显示所有员工当前月份所有星期的工时汇总
可以看出表头是动态的,因为每个月份内周的数量是不一样的, 起初我是打算用freemarker来做的 , 后来想想算了 ,既然用的 layUI 框架,那就用 layUI 框架来写.

下面是 js 部分

$.ajax({
//我这里的思路是先用ajax 请求表头数据
    url: '/working/month?monthTime=' + currentDate,
    success: function (data) {
        if (data.code == 0) {
            var result = data.data;
            var hoursList = result[0].list;
            var cols = [];
            var temp = {
                field: 'name',
                title: '姓名',
                width: 80
            }
            cols.push(temp);
            //遍历表头数据, 添加到数组中
            for (var k = 0, len = hoursList.length; k < len; k++) {
                var h = hoursList[k].startTime + '--' + hoursList[k].endTime;
                var t = {
                    field: h,
                    title: h,
                };
                cols.push(t);
            }
            // 然后开始渲染表格
            table.render({
                elem: '#employeesTable'
                , height: 420
                , url: '/working/getMonthHours?monthTime=' + currentDate//数据接口
                , title: '用户表'
                , cols: [cols],
                done: function (res) {
                }
            });
        }
    }
});

下面是业务层

@RequestMapping("/getMonthHours")
public ResultMsg<List<Map<String, String>>> getMonthHours(@RequestParam @DateTimeFormat(pattern = “yyyy-MM-dd”) LocalDate monthTime) {
List responseList = service.selectWorkingHoursInMonth(monthTime);
List<Map<String, String>> maps = new ArrayList<>();
responseList.forEach(monthOverviewResponse -> {
Map<String, String> map = new HashMap<>();
map.put(“name”, monthOverviewResponse.getRealName());
map.put(“username”, monthOverviewResponse.getUsername());
monthOverviewResponse.getList().forEach(workingHoursResponse -> {
StringBuffer sb = new StringBuffer();
sb.append(workingHoursResponse.getStartTime()).append("–").append(workingHoursResponse.getEndTime());
Double hours = workingHoursResponse.getHours();
if (Objects.isNull(hours)) {
map.put(sb.toString(), “<span style=“color: red”>未录入”);
} else {
map.put(sb.toString(), hours.toString());
}
});
maps.add(map);
});
return ResultMsg.success(maps);
}

实现方式并没有什么难度, 主要是思路 , 遇到问题还是不能钻牛角尖, 在没有想到用 ajax 先请求表头的时候, 我也是苦于如何设置 field 和 title . 也可能是前端写经验比较少, 以后还需要多学习学习 ,当然我更希望能给我配个好前端, 可以让我安心研究后台代码…
————————————————
版权声明:本文为CSDN博主「生活如此多娇!」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42438858/article/details/87621375

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值