vue框架学习 -- 日历控件 FullCalendar 使用总结

news/2024/9/28 18:08:24 标签: vue.js, 前端, 日历控件, FullCalendar, javascript

最近在项目中要实现日期排班的功能,正好要用到日历视图的控件,经过对比发现,vue 中 使用 FullCalendar 可以实现相关需求,下面对使用过程做一个总结。

FullCalendar__2">一. 引入 FullCalendar 控件

package.json 中添加相关依赖

javascript">"dependencies": {
        "@fullcalendar/bootstrap5": "^6.1.15",
        "@fullcalendar/core": "^6.1.15",
        "@fullcalendar/daygrid": "^6.1.15",
        "@fullcalendar/interaction": "^6.1.15",
        "@fullcalendar/list": "^6.1.15",
        "@fullcalendar/timegrid": "^6.1.15",
        "@fullcalendar/vue": "^6.1.15",
        }

FullCalendar_15">二. 页面中引入 FullCalendar

<template>
  <div class="common-list">
    <!-- 日历控件 -->
    <div >
      <FullCalendar :options="calendarOptions" />
    </div>
  </div>
</template>

相应的 javascript 方法说明

javascript"><script>
import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import interactionPlugin from '@fullcalendar/interaction'
import timeGridPlugin from '@fullcalendar/timegrid'
import listPlugin from '@fullcalendar/list'

import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap-icons/font/bootstrap-icons.css';
import bootstrap5Plugin from '@fullcalendar/bootstrap5';
import { formatDate} from '@/utils'
import {
  listDutyPlanCalendar,
} from "@/api/duty/zbrl";
export default {
  components: {
    FullCalendar // make the <FullCalendar> tag available
  },
  data() {
    return {
      // 搜索参数
      queryParams: {
        pageNum: 1,
        pageSize: 100,
        startDate: '',
        endDate: '',
      },
      // 日历配置
      calendarOptions: {
        plugins: [dayGridPlugin, interactionPlugin, bootstrap5Plugin, listPlugin, timeGridPlugin],
        locale: 'zh-cn',
        themeSystem: 'bootstrap5',
        headerToolbar: {
          end: 'today prev next dayGridMonth dayGridWeek',
        },
        // 周一从星期一开始,0为星期日
        // firstDay: 1,
        buttonText: {
          today: '今天',
          month: '月',
          week: '周'
        },
        // 在日历的初始化完成后执行的事件
        datesSet: this.handleDateChange,
        /*customButtons: {
          myCustomButton: {
            text: 'custom!',
            click: function() {
              alert('Clicked the custom button in v6!');
            }
          }
        },*/
        views: ['dayGridMonth', 'dayGridWeek', 'dayGridDay'],
        initialView: 'dayGridMonth',
        //日期点击事件
        dateClick: this.handleDateClick,
        events: [
          { title: 'event 1', date: '2024-09-01'},
          { title: 'event 2', date: '2024-09-01' },
          { title: 'event 3', date: '2024-09-03' },
        ],
        // 添加事件点击处理
        eventClick: function(info) {
          // 这里是点击事件时执行的代码
          // alert('你点击了事件: ' + info.event.title);

          // 你可以在这里执行更多逻辑,比如打开模态框显示事件详情
        },
      }
    }
  },
  created() {
    this.handleQuery();
  },
  methods: {
  	//查询接口数据
    handleQuery() {
      listDutyPlanCalendar(this.queryParams).then(res => {
        if(res.code === 200){
          this.calendarOptions.events = res.rows;
        }
        console.log(res)
        console.log(this.calendarOptions.events)
      });
    },
    // 当日历的日期范围发生变化时,监听事件
    handleDateChange(info) {
      if(this.queryParams){
        console.log(this.queryParams.startDate)
        this.queryParams.startDate = formatDate(info.start).substring(0, 10);
        this.queryParams.endDate = formatDate(info.end).substring(0, 10);
        this.handleQuery();
      }
      // 当日历的日期范围发生变化时(包括翻页操作),这个函数会被调用
      // console.log('新的日期范围:', info.startStr, '到', info.endStr);
    },
    resetQuery() { },
    //某个日期点击监听方法
    handleDateClick(arg) {
      console.log(arg)
      alert('date click! ' + arg.dateStr)
    },
  }
}
</script>

三. 最终页面实现效果

在这里插入图片描述

四. 功能点实现总结

1. calendarOptions 详解

FullCalendar 的 calendarOptions 是一个非常重要的配置项,它包含了初始化 FullCalendar 日历所需的各种设置和参数。以下是对 calendarOptions 中一些常见属性的详细解析:

1. 插件列表(plugins)

作用:定义 FullCalendar 需要加载的插件。FullCalendar 的许多功能都是通过插件来实现的。
示例:

javascript">plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin]

这里加载了日视图(dayGridPlugin)、时间网格视图(timeGridPlugin)和交互插件(interactionPlugin),后者允许用户拖拽、缩放等交互操作。

2. 默认视图(initialView)

作用:设置日历初始化时显示的视图。
示例:

javascript">initialView: 'dayGridMonth'

这将日历的初始视图设置为月视图,并以日网格(dayGrid)的形式展示。

3. 语言(locale)

作用:设置日历的语言。FullCalendar 支持多种语言,通过设置 locale 属性可以实现界面的国际化。
示例:

javascript">locale: 'zh-cn'

这将日历的语言设置为中文。

4. 头部工具栏(headerToolbar)

作用:自定义日历头部的工具栏布局和按钮。
示例:

javascript">headerToolbar: {  
  left: 'today prev,next',  
  center: 'title',  
  right: 'dayGridMonth,timeGridWeek,timeGridDay'  
}

这将在日历头部左侧放置“今天”、“上一个”、“下一个”按钮,中间显示标题,右侧放置月视图、周视图和日视图的切换按钮。

5. 按钮文本(buttonText)

作用:自定义头部工具栏中各按钮的显示文本。
示例:

javascript">buttonText: {  
  today: '今天',  
  month: '月',  
  week: '周',  
  day: '日',  
  prev: '‹',  
  next: '›'  
}

这将把头部工具栏中的按钮文本替换为中文或自定义符号。

6. 周起始日(firstDay)

作用:设置一周中哪一天作为起始日。FullCalendar 默认周日为一周的开始,但可以通过此属性进行自定义。
示例:

javascript">firstDay: 1

这将把周一设置为一周的开始(注意:FullCalendar 中周日是 0,周一是 1,以此类推)。

7. 事件(events)

作用:定义日历中要展示的事件数组。每个事件对象可以包含日期、标题、描述等信息。
示例:

javascript">events: [  
  { title: '事件1', date: '2024-09-28' },  
  { title: '事件2', start: '2024-09-29T10:00:00', end: '2024-09-29T12:00:00' }  
]
8. 其他常用属性

aspectRatio:设置日历单元格的宽高比。
eventColor:设置所有日历事件的背景颜色。
editable:是否允许用户通过拖拽、缩放等方式修改事件。
selectable:是否允许用户选择日历上的日期范围。
eventClick:点击事件时触发的回调函数。
dateClick:点击日期时触发的回调函数。

2. 日历中添加 日期点击事件

javascript">//日期点击事件
        dateClick: this.handleDateClick,

http://www.niftyadmin.cn/n/5681598.html

相关文章

AI与大数据的结合:如何从海量数据中提取价值

引言 在当今数字化时代&#xff0c;数据如同新石油&#xff0c;成为推动社会与商业进步的重要资源。随着物联网、社交媒体和企业运营中数据生成的激增&#xff0c;我们正处在一个数据爆炸的时代。然而&#xff0c;面对海量且复杂的数据信息&#xff0c;仅依靠传统的分析方法已经…

千亿数据-异地容灾-查询打印——MySQL大数据优化

1. 数据备份策略 - 定期全量备份&#xff1a;制定周期性的全量数据备份计划&#xff0c;确保数据的完整性。 - 增量备份&#xff1a;在全量备份之间进行增量备份&#xff0c;减少备份时间和存储空间。 2. 数据存储 - 分布式存储&#xff1a;利用分布式存储系统来存…

58 深层循环神经网络_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录深度循环神经网络1. 模型复杂性增加2. 训练数据不足3. 梯度消失和爆炸4. 正则化不足5. 特征冗余总结 函数依赖关系简洁实现训练与预测小结练习 深度循环神经网络 &#x1f3f7;sec_deep_rnn 到目前为止&#xff0c;我们只讨论了具有一个单…

电脑上数据丢了怎么找回来 Win系统误删文件如何恢复

无论是在工作中&#xff0c;还是生活中&#xff0c;电脑都是不可缺少的重要工具&#xff0c;尤其是在工作中&#xff0c;电脑不仅可以高效的完成工作&#xff0c;还可以存储工作中的重要资料。不过在使用电脑的时候&#xff0c;也会遇到数据丢失的情况。针对这一问题&#xff0…

网络安全等级保护 | 规范企业网络系统安全使用 | 天锐股份助力等保制度落地

在当今数字化高速发展的时代&#xff0c;网络安全对于企业的重要性日益凸显。而近年来&#xff0c;数据泄露、网络攻击等安全事件频发&#xff0c;给企业和个人带来了前所未有的挑战。在这一背景下&#xff0c;网络安全等级保护制度&#xff08;简称“等保”&#xff09;作为国…

游戏厅计时器ps5计算时间的软件 佳易王电玩计时计费管理系统操作教程

一、前言 游戏厅计时器ps5计算时间的软件 佳易王电玩计时计费管理系统操作教程 软件为绿色免安装版&#xff0c;解压即可使用。 二、软件程序教程 计时的时候&#xff0c;点击 开始计时按钮 开台后可设置定时语音提醒的时间 时间设置好后&#xff0c;点击 开启提醒 即可 三、…

python单例和工厂模式

设计模式 设计模式是一种编程套路&#xff0c;可以极大的方便程序的开发 最常见、最经典的设计模式&#xff0c;就是学习的面向对象 除了面向对象之外&#xff0c;在编程中也有很多既定的套路可以方便开发&#xff0c;我们称之为设计模式&#xff1a; 单例、工厂模式建造者…

第四章 -课后练习7:一元线性回归 EXCEl实验与Python结合实现

1、首先使用excel录入数据&#xff0c;绘制散点图&#xff1a; 时序年份销售量&#xff08;件&#xff09;12012423.5022013433.3832014443.3242015450.8452016460.1462017467.5972018480.1682019483.7392020488.49102021494.28112022506.551 由散点图得出销售量数据大致符合线…