vue下使用fullcalendar案例讲解

 更新时间:2024年01月17日 11:32:10   作者:林深时见鹿7  
这篇文章主要介绍了vue下使用fullcalendar及简单案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

ps:我真的感觉自己是个前端了,最近天天在写前端。不过很多复杂逻辑,后台处理起来比较麻烦,所以只让后台提供简单数据,前端封装处理数据确实比较方便!
引子:最近公司要做个人日程管理,故鄙人思前想后,选择了fullcalendar组件。但!官方文档全是英文,对于英语四级都没过的我,真是很心累。只能发扬面向百度编程的优良传统,找了好多案例做出来了。现总结如下:

vue下使用fullcalendar及简单案例

  • 使用版本:5.3.0
  • 效果图

安装

在package.json中引入如下,运行“npm i”

    "@fullcalendar/daygrid": "^5.3.0",
    "@fullcalendar/interaction": "^5.3.0",
    "@fullcalendar/list": "^5.3.0",
    "@fullcalendar/timegrid": "^5.3.0",
    "@fullcalendar/vue": "^5.3.0",

或者直接 “npm install -save *****”
运行报错,多半是因为乱七八糟的依赖版本冲突,要更换依赖版本。对了!安装前请把npm改成阿里云依赖下载,否则卡死。
安装成功的话,在package-lock.json中会有一条记录:

无需再main.js中引入

使用

基本使用

创建vue文件,在script中引入fullcalendar(哪个页面用哪里引)

<template>
   <FullCalendar ref="fullCalendar"></FullCalendar>
</template>
<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import listPlugin from '@fullcalendar/list'
export default {
  //import引入的组件需要注入到对象中才能使用
  components: { FullCalendar }  
}
</script>

此时可以显示一个简单的日历了,但远远不是我们想要的。

注入事件和属性

代码:

<template>
   <FullCalendar ref="fullCalendar" :options="calendarOptions"></FullCalendar>
</template>
<script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import listPlugin from '@fullcalendar/list'
export default {
  //import引入的组件需要注入到对象中才能使用
  components: { FullCalendar }  
  data() {
    return {
      calendarOptions: {
        plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin, listPlugin],
        initialView: 'dayGridMonth',
        locale: 'zh',
        firstDay: 1,
        buttonText: {
          today: '今天',
          month: '月',
          week: '周',
          day: '日',
          list: '周列表',
        },
        headerToolbar: {
          left: 'prev,next today',
          center: 'title',
          right: 'dayGridMonth,timeGridWeek,timeGridDay listWeek',
        },
        height: 650,
        validRange: this.validRange,  //设置可显示的总日期范围
        events: [], //背景色 (添加相同时间的背景色时颜色会重叠) 
        datesSet: this.datesSet, //日期渲染;修改日期范围后触发
        eventClick: this.handleEventClick, //点击日程触发
        dateClick: this.handleDateClick, //点击日期触发
        eventDrop: this.calendarEventDropOrResize, //拖动事件触发
        eventResize: this.calendarEventDropOrResize, //缩放事件触发
        displayEventTime: false, //不显示具体时间
      },
      validRange: {
        start: '2021-09-01',
        end: moment().add(6, 'months').format('YYYY-MM-DD'),
      }
    }
  },
   methods: {
    datesSet(info) {   //注意:该方法在页面初始化时就会触发一次
        console.log(info)
        // this.search()  //请求本页数据
        //虚拟数据
        this.calendarOptions.events = [{
              id: 111,
              title: '任务1',
              start: ‘2021-10-01',
              end: ‘2021-10-11'
              color: ‘#ffcc99',
              editable: true, //允许拖动缩放,不写默认就是false
              overlap: true, //允许时间重叠,即可以与其他事件并存,不写默认就是false
          },{
			id: 222,
              title: '任务2',
              start: ‘2021-10-12',
              end: ‘2021-10-20'
              color: ‘#ffcc99',
              editable: true, //允许拖动缩放
		}] 
      },
    handleEventClick(info) {},
    handleDateClick(info){},
    calendarEventDropOrResize(info){}
  }
}
</script>

参数说明:

  • plugins::绑定的控件
  • initialView:‘dayGridMonth’ 默认显示视图,月视图
  • locale:‘zh’ 国际化,中文
  • firstDay:1 星期的第一列显示,周一(0周日 1周一 2周二…)
  • buttonText:buttonText 按钮文本
  • headerToolbar:header 头部工具条

  • height:日历高度
  • validRange:validRange 全局日期范围;超出范围按钮会禁用
  • 数据来源:
  • events: [] 日程数据存放在这里,使用this.calendarOptions.events调用

事件说明:

datesSet:修改日期范围后触发,即点击

这三个按钮时触发eventClick:点击任务时触发dateClick: 点击日期触发eventDrop: 拖动事件触发eventResize: 缩放事件触发

  • datesSet:修改日期范围后触发,即点击

    这三个按钮时触发
  • eventClick:点击任务时触发
  • dateClick: 点击日期触发
  • eventDrop: 拖动事件触发
  • eventResize: 缩放事件触发

到此这篇关于vue下使用fullcalendar及简单案例的文章就介绍到这了,更多相关vue使用fullcalendar内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3.0中使用element的完整步骤

    vue3.0中使用element的完整步骤

    这篇文章主要给大家介绍了关于vue3.0中使用element的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Vue框架中如何调用模拟数据你知道吗

    Vue框架中如何调用模拟数据你知道吗

    这篇文章主要为大家详细介绍了Vue框架中如何调用模拟数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 基于Vue实现电商SKU组合算法问题

    基于Vue实现电商SKU组合算法问题

    这篇文章主要介绍了基于Vue实现电商SKU组合算法问题 ,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • VUE中的filters过滤器使用方法

    VUE中的filters过滤器使用方法

    这篇文章主要介绍了VUE中的filters过滤器使用方法,文章主要通过描述全局过滤器、全局过滤器之单一挂载、全局过滤器之批量挂载 、组件过滤器展开内容,具有一定的参考价值组要的小伙伴可以参考一下
    2022-03-03
  • Vue3+Vite项目部署后刷新白屏问题的解决方法

    Vue3+Vite项目部署后刷新白屏问题的解决方法

    Vue3 + Vite 项目部署后出现了手动刷新页面时出现白屏的问题,下面小编就来和大家探讨一下白屏出现的原因以及具体的解决方法,需要的可以参考下
    2025-03-03
  • vue中实现支持txt,docx,xlsx,mp4格式文件预览功能(纯前端)

    vue中实现支持txt,docx,xlsx,mp4格式文件预览功能(纯前端)

    对于Vue你可以实现文件的预览功能,这篇文章主要给大家介绍了关于vue中实现支持txt,docx,xlsx,mp4格式文件预览功能的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Vue Autocomplete 自动完成功能简单示例

    Vue Autocomplete 自动完成功能简单示例

    这篇文章主要介绍了Vue Autocomplete 自动完成功能,结合简单示例形式分析了Vue使用el-autocomplete组件实现自动完成功能相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • vue3中 provide 和 inject 用法及原理

    vue3中 provide 和 inject 用法及原理

    这篇文章主要介绍vue3中 provide 和 inject 用法及原理,provide 和 inject可以 解决多次组件传递数据的问题,下面文章是具体的用法和实现原理,具有一定的参考价值,需要的朋友可以参考一下,希望对大家有所帮助
    2021-11-11
  • Vue封装全局toast组件的完整实例

    Vue封装全局toast组件的完整实例

    组件(Component)是 Vue.js 最强大的功能之一,组件可以扩展 HTML 元素,封装可重用的代码,这篇文章主要给大家介绍了关于Vue封装全局toast组件,需要的朋友可以参考下
    2021-07-07
  • Vue技巧Element Table二次封装实战示例

    Vue技巧Element Table二次封装实战示例

    这篇文章主要为大家介绍了Vue技巧Element Table二次封装实战示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论