fullcalendar weekNumberCalculation设置周五为一周的第一天并且根据特殊规则计算显示第几周

 $('#calendar').fullCalendar({
        header: {
            left: '',
            center: 'title',
            right: 'prev,next today'
        },
        weekNumbers:true,
        weekNumberCalculation:function(params){
            var d = params._d;
            var date = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
            var week;
            //console.log("date",date);
            $.ajax({
                type: "POST",
                url: siteurl + '/mes/productcalendar/queryWeekNum',
                data: JSON.stringify({date:date}),
                async: false,
                dataType: 'json',
                contentType: 'application/json;charset=UTF-8',
                success: function (r) { // 获取当前月的数据
                    //console.log("r",r.week);
                    week = r.week;
                }
            });
            return week;
        },
        firstDay: 5,
        editable: true,
        eventLimit: true,
        droppable: true, // this allows things to be dropped onto the calendar
        drop: function (event, dayDelta, minuteDelta, allDay) {
            var date_value = new Date(event._d);
            date = date_value.getFullYear() + '-' + ('00' + (date_value.getMonth() + 1)).slice(-2) + '-' + ('00' + (date_value.getDate())).slice(-2);
            if (minuteDelta.helper[0].innerHTML == '加班') {
                //弹出选择加班时长范围的弹窗
                //根据日期查找当天方案 再根据方案查找方案班组时间
                //$('#planname').val(planname);
                //console.log(date);
                if (event._d < new Date()) {//所选时间小于当前时间,不可以生成方案
                    layer.alert("过期日期不可生成方案排班");
                }
                else {
                    planname = '加班';
                    vm2.selelctTeamPlanName(date);
                    index2 = layer.open({
                        type: 1,
                        title: '加班',
                        area: ['350px', '380px'],
                        content: $('#overtime')
                    });
                    Initialize();
                    form.render();
                }

            } else {
                var planstr = minuteDelta.helper[0].innerHTML;
                planname = planstr.substr(0, planstr.indexOf(':'));
                //获取到所拖拽的方案的id
                planid = minuteDelta.helper[0].id;
                if (event._d < new Date()) {//所选时间小于当前时间,不可以生成方案
                    layer.alert("过期日期不可生成方案排班");
                }
                else {
                    //弹出选择作用范围的弹窗
                    $('#planname').val(planname);
                    index3 = layer.open({
                        type: 1,
                        title: '排班',
                        area: ['400px', '380px'],
                        content: $('#jump')
                    });
                    form.render();
                }
            }

        },
        eventDrop: function (event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
            //alert(dayDelta);
            //console.log(event);
        },
        selectable: true,
        selectHelper: true,
        select: function(start, end) {
            var date = new Date(end);//获取结束时间
            date.setDate(date.getDate()-1);
            startT = new Date(start).getFullYear() + '-' + (new Date(start).getMonth() + 1) + '-' + new Date(start).getDate();
            endT = new Date(date).getFullYear() + '-' + (new Date(date).getMonth() + 1) + '-' + (new Date(date).getDate());
            //alert(new Date(startT)+'              '+ new Date(endT));
            if (start < new Date() || end <new Date()) {//开始或者结束时间小于当前时间,不可以修改班组
                layer.alert("过期日期不可修改班组");
            }
            else {
                //根据开始结束时间 查询是不是同一个方案
                $.ajax({
                    type: "POST",
                    url: siteurl + '/mes/productcalendar/queryPlanTotal',
                    data: JSON.stringify({
                        starttime:startT,
                        endtime:endT
                    }),
                    async: false,
                    dataType: 'json',
                    contentType: 'application/json;charset=UTF-8',
                    success: function (r) { // 获取当前月的数据
                        if(r.mesCalendarScheduleEntities.length==1){
                            // 所选日期有方案的是同一个方案  则可以修改小组 选择班次、班组保存
                            index4 = layer.open({
                                type: 1,
                                title: '设置班组',
                                area: ['400px', '380px'],
                                content: $('#setteam')
                            });
                            form.render();
                        }else if(r.mesCalendarScheduleEntities.length>1){
                            //所选日期有方案的 不是同一个方案  选择班次、班组点击保存则弹出不可修改
                            layer.alert("所选日期内的方案不统一,无法批量修改班组!");
                        }else if(r.mesCalendarScheduleEntities.length<1){
                            //所选日期没有生成方案 一个方案都没有
                            layer.alert("所选日期内没有方案,请先添加方案再批量修改班组!");
                        }
                    }
                });
            }
        },
        editable: false, //不允许拖动
        events: function (start, end, timezone, callback) {
            events = [];
            vm.getEventList(callback);
            vm.getWorkOverList(callback);
        },
        eventRender: function (event, element) {//title以HTML显示(换行)
            element.html(event.title);
        },
        eventClick: function (event, jsEvent, view) {
            index1 = layer.open({
                type: 1,
                title: '事件详细信息',
                area: ['650px','600px'],
                content: $('#info')
            });
            //日期
            //点击查看详情时的日期和方案名
            curdate = event.start._i;
            curplname = event.title.substr(0, event.title.indexOf(':'));
            delplname = curplname;
            deldate = curdate;
            //方案名
            //console.log(plname);
            //根据方案名和日期查找所有事件
            vm.getAllEventList(curplname, curdate,1);
            vm.initTable();
            vm.initPage();
            //form.render();
        }
    });
  1. 日历显示以周五作为周的第一天
    设置firstDay: 5,
  2. 日历上显示第几周,根据官方文档查询到的资料显示,如果我们需要自定义可以通过weekNumberCalculation自定义方法来显示当前为第几周
    在这里插入图片描述
    weekNumberCalculation:function(params){
    var d = params._d;
    var date = d.getFullYear() + ‘-’ + (d.getMonth() + 1) + ‘-’ + d.getDate();
    var week;
    //console.log(“date”,date);
    $.ajax({
    type: “POST”,
    url: siteurl + ‘/mes/productcalendar/queryWeekNum’,
    data: JSON.stringify({date:date}),
    async: false,
    dataType: ‘json’,
    contentType: ‘application/json;charset=UTF-8’,
    success: function ® { // 获取当前月的数据
    //console.log(“r”,r.week);
    week = r.week;
    }
    });
    return week;
    },

    在这里插入图片描述
    ajax传第一列日期值 params._d 到后台进行计算当前为第几周,返回week为图中39,40,41,42,43
ps:由于规则特殊,所以需要算当前第几周,若显示自然周不需要自定义计算
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值