FullCalendar重复事件后不持续显示问题

FullCalendar rrule设置重复事件后 连续日程只显示一天问题

遇见的深坑问题

在这里插入图片描述

用来展示的数据格式
以下是常规显示

     events: [{
                    id: 4,
                    title: '使用className:done',
                    start: '2018-12-10 09:00',
                    end: '2018-12-11 18:00',
                    color: 'blue',
                    className: 'done'

                },
                {id: 1,
                    title: '这是一个all-day数据',
                    allDay: true,
                    start: '2018-12-11'
                    }
                ]

重复事件 每周重复或者每年重复
用以下转换,会出现如果该事件连续两天的事件,只会显示到第一天 例如 20-23的事件,只会显示20

     events: [{
                    id: 4,
                    title: '使用className:done',
                    start: '2018-12-10 09:00',
                    end: '2018-12-11 18:00',
                    color: 'blue',
                    className: 'done',
                    *** rrule ***:this.transRrule(data)

                },
                {id: 1,
                    title: '这是一个all-day数据',
                    allDay: true,
                    start: '2018-12-11'}
                ]

    // 转换rrule规则
    transRrule(rule) {
      //转换事件重复规则
      let freqRules = undefined;
      // 是否为工作日重复
      let byweekday = undefined;
      switch (rule.repeatType) {
        case 0:
          freqRules = "DAILY";
          break;
        case 1:
          freqRules = "WEEKLY";
          break;
        case 2:
          freqRules = "MONTHLY";
          break;
        case 5:
          freqRules = "YEARLY";
          break;
        case 7:
          freqRules = undefined;
          byweekday = ["mo", "tu", "we", "th", "fr"];
          break;
        case -1:
          freqRules = undefined;
          break;
        default:
          break;
      }
      return {
         dtstart: rule.start,
        freq: freqRules,
        byweekday,
        until:
          rule.repeatUntil !== null && rule.repeatUntil!=0
            ? formatDate(rule.repeatUntil).split(" ")[0]
            : undefined,
      };
    },

用以下方法可以正常显示连续的天数
20-23 显示20-23 并且每周每天每年每月展示没问题

 events: [{
                    id: 4,
                    title: '使用className:done',
                    start: '2018-12-10 09:00',
                    end: '2018-12-11 18:00',
                    color: 'blue',
                    className: 'done',
                    **rrule**:this.transRrule(data),
                    //求两个日期之间的天数
            let allTime = this.getAllTime(startTime.substring(0,10),endTime.substring(0,10));
                    ***duration***: {
                days:allTime.length
            },

                },
                {id: 1,
                    title: '这是一个all-day数据',
                    allDay: true,
                    start: '2018-12-11'}
                ]

//获取两个时间之间具体有哪天
getAllTime(begin, end) {
var ab = begin.split(“-”);
var ae = end.split(“-”);
var db = new Date();
db.setUTCFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setUTCFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime();
var unixDe = de.getTime();
let temp =[];
for (var k = unixDb; k <= unixDe;) {
temp.push(this.format((new Date(parseInt(k)))));
k = k + 24 * 60 * 60 * 1000;
}
return temp;
},

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值