vuefullcalendar 知识总结

FullCalendar是一个功能丰富的日历插件,适用于Vue等框架,支持日、周、月视图及任务展示。文章介绍了如何引入和配置插件,包括基础参数设置、日程创建、外部拖拽事件处理、定位显示日期以及日历事件监听等。此外,还强调了官方文档和社区资源在解决特定问题时的重要性。
摘要由CSDN通过智能技术生成

fullcalendar是一款灵活的功能全面的插件,可以将事件与任务以日立的形式展现,满足日常的日历开发。

此文章只总结大概的基础内容和本此用到内容的详讲!

官方文档(英文模式):文档 |完整日历 (fullcalendar.io)

中文文档(非官方):(63条消息) FullCalendar中文文档:API_Hesper_Pan的博客-CSDN博客

基础用法:

1、引入日历库

在项目中引入

npm install @fullcalendar/core

npm install @fullcalendar/vue

npm install @fullcalendar/daygrid

npm install @fullcalendar/interaction

npm install @fullcalendar/timegrid

npm install @fullcalendar/list

在页面中引入

import '@fullcalendar/core'; // solves problem with Vite
import FullCalendar from '@fullcalendar/vue';
import dayGridPlugin from '@fullcalendar/daygrid';
import interactionPlugin,{ Draggable } from '@fullcalendar/interaction';
import timeGridPlugin from '@fullcalendar/timegrid';
import listPlugin from '@fullcalendar/list';
import moment from "moment";

在组件调用方法中

 

2、页面调用

html:

 

script:(日历中的基础参数)

calendarOptions: {
        // 日历插件配置
        plugins: [rrulePlugin, dayGridPlugin, timeGridPlugin, interactionPlugin, listPlugin],
        // 日历模式
        initialView: 'dayGridMonth(月)'/dayGridWeek(周)/timeGridDay(时)/listWeek(周列表),
        //  配置中文
        locale: 'zh-cn',

        //包含资源列表的区域的宽度
        resourceAreaWidth: 200,

        //日历视图区域的高度
        contentHeight: 200,        // 自定义设置背景颜色时一定要初始化日期时间
        initialDate: new Date(),
        // 日历头部
        headerToolbar: {
          left: '',
          center: '',
          right: ''
        },
        // 日历触发拖拽的钩子
        drop: this.newEventDrop,
        // 日期是否可以编辑
        selectable: true,
        // 日历上是否可拖拽
        editable: false,
        // 拖拽位置
        droppable: true,
        // 拖拽元素
        dropAccept: ['.drop-item', '.type-item'],
        // 点击日期文字连接
        navLinks: true,

        //日历事件设置
        events: [

          // 周期性事件
          {           

              rrule: {             

              freq: 'weekly',  // 周周期
              byweekday: [], // 周期性星期,星期简称
              dtstart:‘2023-01-01’ //周期开始时间
            },
            exdate: [] // 排除掉周期内日期数组
          },

        {

           //日程开始时间

           start: ’2023-01-01‘,
           //日程颜色
            color: #999,
            // 日程id
            id: ’1‘,
            // 日程标题
            title: ’日程标题‘,
            // 日程持续时长
            antualTime: 'All'

        }
        ],
        // 点击日程触发钩子
        eventClick: this.handleEventClick,
        // 日期选择触发钩子
        select: this.handleDateClick,
        // 日历取消选择触发
        unselect: this.unselect,
       // 日程鼠标离开
        eventMouseout: this.handleMouseLeave,
        // 不显示具体时间
        displayEventTime: false
      }

以上属性不必全都要,已经可以调取出基础的日历了!

以下为日历的其他功能:

1、生成日程

新建日程常量:

const eventOnce:{

start:’2023-05-01‘,

color:’#999999‘,

title:’新建的日程哦!‘

}

this.calendarOptions.events.push(eventOnce);

日程支持批量插入,不给持续时长默认全天效果如下:

 

而插入周期性事件则是向rrule中的byweekday中添加,示例如下:

 

 

2、外部拖拽事件

目的是为了实现将外部的元素拖拽至日历生成日程:

首先在配置日历时要有拖拽配置

 

前者是拖拽时触发的钩子,后者是拖拽时能够触发钩子的元素

不论你的元素与日历组件同页面还是不同页面,往日历上拖拽都属于外部拖拽事件

首先要在拖拽的元素外围给他一个id

 

他的id一定要包含在可拖拽元素属性配置中,然后在你希望拖拽的样式,要在class上给他与id一样的名称,不然拖拽了个空白过去

 

给他class不给内联样式的话,内容会被拖拽过去,不包含样式,只有内联样式会被显示在拖拽过程中。

然后拖拽到日历上,要在包含日历插件的页面,为拖拽准备好生成dom元素

 

之后只要拖拽至日历就会触发到日历拖拽时触发的钩子

你就可以在钩子里做你想做的事

钩子的参数

 

可以获取到放置的日历日期

 

以及你的拖拽元素。

3、定位日历显示日期

日历默认显示系统日期,若需要特殊定位至某年某月,可以使用:

 

提示:ref在created周期内还未生成,内时候无法调用该方法

4、日历内部插槽,插入日历日程的内容

示例:

 

参数可以获取到日程的信息

 

7、日历组件的事件

日历组件的事件很多,没有办法全都说清楚

 

本此用到的有这些,具体可以上官网上看。

关于日历插件,本次用到的就是这些,若还有什么疑问可以1、问作者(不过作者知道的不多)2、查官方文档(英文的而且还对功能点介绍的很笼统)3、问度娘(网络上对日历的功能示例很片面,不全,不过基本功能讲解很全面)4、嗯。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值