美文网首页
js 插件 fullCalendar日历 使用 多次调用

js 插件 fullCalendar日历 使用 多次调用

作者: 加冰宝贝 | 来源:发表于2020-08-28 17:48 被阅读0次

1.引入 css 文件和 js 文件

<link rel="stylesheet" type="text/css" href="/assets/css/rcss/fullcalendar.css"/>
<script type="text/javascript" src="/assets/js/rjs/moment.min.js"></script><!-- 日期处理时间工具 -->
<script type="text/javascript" src="/assets/js/rjs/fullcalendar.min.js"></script>

2.新建div

 <div class="calendar"></div>

3.js 这个插件最大的问题是 :

(1).结束时间一定要天数加一天 不然在日历显示就少一天
(2).动态调用组件 需要先做全局变量方便调用,然后销毁后在进行动态调用
<script>
        function formatDate(date) {
            var y = date.getFullYear();
            var m = date.getMonth() + 1;
            m = m < 10 ? '0' + m : m;
            var d = date.getDate();
            d = d < 10 ? ('0' + d) : d;
            return y + '-' + m + '-' + d;
        };

        $(".calendar").hide();
        setTimeout(()=>{
            calendar.fullCalendar('destroy'); //销毁
            setTimeout(()=>{
                $(".calendar").show();
                calendar.fullCalendar({
                    buttonText: { //各按钮的显示文本信息
                        today: '今天',
                    },
                    monthNames: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], //月份全称
                    monthNamesShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], //月份简写
                    dayNames: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], //周全称
                    dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], //周简写
                    height: 620, //设置日历的高度,包括header日历头部,默认未设置,高度根据aspectRatio值自适应。
                    handleWindowResize: true, //是否随浏览器窗口大小变化而自动变化。
                    render: function(view) { //method,绑定日历到id上。$('#id').fullCalendar('render');
                        console.log('render', view)
                    },
                    events: function(start, end,timezone, callback ,e) {
                        setTimeout(function (){
                            callback(list);
                        },500);
                        //上个月点击事件
                        $('.fc-prev-button').on('click', function (view) {
                            var m = calendar.fullCalendar('getView').title;
                            console.log("呵呵呵呵!",m);
                            let year = '';
                            let month = '';
                            if(m.length < 8){
                                month = m.slice(0,1)
                                year = m.slice(3,7)
                            }else{
                                month = m.slice(0,2)
                                year = m.slice(4,8)
                            }
                            $.ajax({
                                url: "",
                                dataType: 'json',
                                type: 'POST',
                                data: {
                                    equipment_id:equipment_id,
                                    year:year,
                                    month:month,
                                },
                                success: function(data) {
                                    // console.log("嗯呢",data.data)
                                    let aa=data.data
                                    for (var i = 0; i < aa.length; i++) {
                                        var y = aa[i].end.split("-")[0];
                                        var m = aa[i].end.split("-")[1];
                                        var r = aa[i].end.split("-")[2];
                                        aa[i].end = formatDate(new Date(Number(y)+ '-' +Number(m) + '-' +Number(Number(r) + 1)));
                                    }
                                    var event = [];
                                    $.each(aa, function(i) {
                                        event.push({
                                            title: aa[i].title,
                                            start: aa[i].start,
                                            end:aa[i].end,
                                            color:aa[i].color,
                                            editable: false
                                        });
                                    }); 
                                    callback(event);
                                },
                            }); 
                        });
                        // 下一个月按钮点击事件
                        $('.fc-next-button').on('click', function () {
                            var m = calendar.fullCalendar('getView').title;
                            // console.log("呵呵呵呵!",m.length);
                            let year = '';
                            let month = '';
                            if(m.length < 8){
                                month = m.slice(0,1)
                                year = m.slice(3,7)
                            }else{
                                month = m.slice(0,2)
                                year = m.slice(4,8)
                            }
                            $.ajax({
                                url: "",
                                dataType: 'json',
                                type: 'POST',
                                data: {
                                    equipment_id:equipment_id,
                                    year:year,
                                    month:month,
                                },
                                success: function(data) {
                                    // console.log("嗯呢",data.data)
                                    let aa=data.data
                                    for (var i = 0; i < aa.length; i++) {
                                        var y = aa[i].end.split("-")[0];
                                        var m = aa[i].end.split("-")[1];
                                        var r = aa[i].end.split("-")[2];
                                        aa[i].end = formatDate(new Date(Number(y)+ '-' +Number(m) + '-' +Number(Number(r) + 1)));
                                    }
                                    var event = [];
                                    $.each(aa, function(i) {
                                        event.push({
                                            title: aa[i].title,
                                            start: aa[i].start,
                                            end:aa[i].end,
                                            editable: false,
                                            color:aa[i].color
                                        });
                                        console.log("哈哈",event)
                                    });
                                    callback(event);
                                }
                            }); 
                        });
                    },
                    eventClick: function(event, element) {
                    },
                    eventMouseover: function(event, jsEvent) {
                        // alert(event.title + event.start.format() + '______' + event.end.format() + '_______' + " ——详情");
                        // $(".tankuang").css("top",jsEvent.offsetX)
                        // $(".tankuang").css("left",jsEvent.screenY)
                        console.log("想知道的",event);
                        $(".tankuang").css("top", 200);
                        $(".tankuang").css("left", 300);
                        $(".title").text(event.title);
                        $(".timeStart").text(event.start._i);
                        console.log("啥",event.mobile)
                        if( event.mobile == undefined){
                            $(".phoneA").hide();
                            $(".addressB").hide();
                            // $(".phone").remove();
                            // $(".address").remove();
                        }else{
                            $(".phoneA").show();
                            $(".phone").text(event.mobile);
                        }
                        if(event.address == undefined){
                            $(".addressB").hide();
                        }else{
                            $(".addressB").show();
                            $(".address").text(event.address);
                        }
                        
                        var y = event.end._i.split("-")[0];
                        var m = event.end._i.split("-")[1];
                        var r = event.end._i.split("-")[2];
                        event.end._i = formatDate(new Date(Number(y)+ '-' +Number(m) + '-' +Number(Number(r) - 1)));
                        $(".timeEnd").text(event.end._i);
                        $(".tankuang").show();
                    }, //鼠标划过和离开的事件,用法和参数同上
                    eventMouseout: function() {
                        $(".tankuang").hide()
                    },
                });
            });
        },500);
        

// 全局定义
let calendar;
    //日历
    $(document).ready(function () {
        calendar = $('.calendar');
        $('.calendar').fullCalendar({
            header: {
                right: 'prev,next',
            },
            height: 620,
            monthNames: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], //月份全称
            monthNamesShort: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], //月份简写
            dayNames: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], //周全称
            dayNamesShort: ["周日", "周一", "周二", "周三", "周四", "周五", "周六"], //周简写
            events: []
        });
    });
</script>

4.events 数据格式

var list=[
      {address: "",color: "orange",end: "2020-08-30",mobile: "*****",start: "2020-08-29",title: "001"},
      {address: "",color: "orange",end: "2020-08-30",mobile: "*****",start: "2020-08-29",title: "001"},
]

相关文章

网友评论

      本文标题:js 插件 fullCalendar日历 使用 多次调用

      本文链接:https://www.haomeiwen.com/subject/aujjsktx.html