前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >beego golang bootstrap-table做月度考勤(打卡、签到)统计表

beego golang bootstrap-table做月度考勤(打卡、签到)统计表

作者头像
hotqin888
发布2019-05-14 15:07:59
1.2K0
发布2019-05-14 15:07:59
举报
文章被收录于专栏:hotqin888的专栏hotqin888的专栏

涉及到知识点:

1.bootstrap table动态表头

每个月的天数不一样,所以要根据服务端的json数据,动态改变表头。

https://cloud.tencent.com/developer/article/1425263

2.golang动态结构体字段/用map

因为golang无法构建动态的结构体字段多少,所以才用mapintstring

比如某个用户某月1日已经签到:map1="1",2日没签到则为map1=""

3.golang求出每月天数

代码语言:javascript
复制
	//当月天数
	const base_format = "2006-01-02"
	year := c.Input().Get("year")
	month := c.Input().Get("month")
	if len(month) == 1 {
		month = "0" + month
	}
	SelectMonth1, err := time.Parse(base_format, year+"-"+month+"-01")//每月的第一天
	if err != nil {
		beego.Error(err)
	}
	SelectMonth2 := SelectMonth1.AddDate(0, 1, -1)//每月的最后一天,其实就是这个月加上1个月然后减1天,很巧妙
	//建立一个动态月日数组

	days := SelectMonth2.Sub(SelectMonth1) / 24   //这个月天数,其实应该是下个月第一天减这个月第一天。减出来的其实是duration类型,而且是小时单位,必须除以24,单位还是小时
	dayss := days.Hours()//小时转为float64
	daysss := strconv.FormatFloat(dayss, 'f', -1, 64) //float64转string
	dayssss, err := strconv.Atoi(daysss)              //string转int
	// beego.Info(reflect.TypeOf(dayss)) //float64
	beego.Info(dayssss)

4.给map赋值

定义一个map数组,一个map,记得给map0=username,第一列作为用户名的处理

代码语言:javascript
复制
s := []map[int]interface{}{}
var checkmap = make(map[int]interface{}, dayssss+2)
//给checkmap 赋值
//排序
//然后追加给数组
s = append(s, checkmap2)
//转成json
b, err := json.Marshal(s)

5.map排序

不写了。

6.前端bootstrap table处理第一列用户名

在前面第1点基础上加个判断

代码语言:javascript
复制
       var columnsArray = [];
        columnsArray.push({field: "state", checkbox: true});
        for (var i = 0; i < (Object.keys(json[0])).length; i++) {//Object.keys(obj) 获取key名称
          var property = (Object.keys(json[0]))[i];//id   username
          if (property==0) {
              columnsArray.push({
              "title": "name",
              "field": property,
              "align" : 'center',
              "valign" : 'middle',
              switchable: true,
            });
          }else{
            columnsArray.push({
              "title": property,
              "field": property,
              "align" : 'center',
              "valign" : 'middle',
              switchable: true,
            });
          }
        }

就是这么个样子了:name列应该用用户名表示。 

对应小程序打卡记录:用户9

我的git上有源码,engineercms和对应的小程序端。欢迎star。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.bootstrap table动态表头
  • 2.golang动态结构体字段/用map
  • 3.golang求出每月天数
  • 4.给map赋值
  • 5.map排序
  • 6.前端bootstrap table处理第一列用户名
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档