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

news2024/9/29 10:08:35

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

一. 引入 FullCalendar 控件

package.json 中添加相关依赖

"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

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

相应的 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 的许多功能都是通过插件来实现的。
示例:

plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin]

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

2. 默认视图(initialView)

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

initialView: 'dayGridMonth'

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

3. 语言(locale)

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

locale: 'zh-cn'

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

4. 头部工具栏(headerToolbar)

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

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

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

5. 按钮文本(buttonText)

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

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

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

6. 周起始日(firstDay)

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

firstDay: 1

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

7. 事件(events)

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

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. 日历中添加 日期点击事件

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无人机专业实操重要性凸显,组装、调试、改装技术详解

无人机专业的实操性在当今技术飞速发展的背景下显得尤为重要&#xff0c;这不仅体现在无人机的日常应用上&#xff0c;还贯穿于无人机的组装、调试及改装等关键环节中。以下是对这些技术环节的详细解析&#xff1a; 一、无人机组装技术 无人机的组装是无人机技术的基础&#x…

828华为云征文|使用sysbench对Flexus X实例对mysql进行性能测评

目录 一、Flexus X实例概述 1.1 Flexus X实例 1.2 在mysql方面的优势 二、在服务器上安装MySQL 2.1 在宝塔上安装docker 2.2 使用宝塔安装mysql 2.3 准备测试数据库和数据库表 三、安装sysbench并进行性能测试 3.1 使用yum命令sysbench 3.2 运行 sysbench 并进行性能测…

Jumpserver堡垒机应用部署案例

本案例主要讲述了如何安装Jumpserver堡垒机应用&#xff0c;以及使用Jumpserver堡垒机对接OpenStack平台进行管理 一、OpenStack平台对接堡垒机 案例准备 1.规划节点 IP 主机名 节点 192.168.20.21 controller OpenStack Controller节点 192.168.20.22 jumpserver O…

0基础跟德姆(dom)一起学AI 机器学习02-KNN算法

【理解】KNN算法思想 K-近邻算法&#xff08;K Nearest Neighbor&#xff0c;简称KNN&#xff09;。比如&#xff1a;根据你的“邻居”来推断出你的类别 KNN算法思想&#xff1a;如果一个样本在特征空间中的 k 个最相似的样本中的大多数属于某一个类别&#xff0c;则该样本也属…

从事人工智能学习Python还是学习C++?

人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是当今科技领域最热门的研究方向之一。AI 涉及多个学科和技术&#xff0c;特别是机器学习、神经网络、深度学习等技术的应用。在AI的开发过程中&#xff0c;编程语言的选择对于开发效率和项目实现至…

戴尔电脑怎么开启vt虚拟化_戴尔电脑新旧机型开启vt虚拟化教程

最近使用戴尔电脑的小伙伴们问我&#xff0c;戴尔电脑怎么开启vt虚拟。大多数可以在Bios中开启vt虚拟化技术&#xff0c;当CPU支持VT-x虚拟化技术&#xff0c;有些电脑会自动开启VT-x虚拟化技术功能。而大部分的电脑则需要在Bios Setup界面中&#xff0c;手动进行设置&#xff…

C++ | Leetcode C++题解之第443题压缩字符串

题目&#xff1a; 题解&#xff1a; class Solution { public:int compress(vector<char>& chars) {int n chars.size();int write 0, left 0;for (int read 0; read < n; read) {if (read n - 1 || chars[read] ! chars[read 1]) {chars[write] chars[re…

QT九月28日

1.实现登录界面 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget>class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget(); }; #endif // WIDGET_H源文件 #include "widget.h" #include <QIcon> #in…

服务器分类极简理解

塔式服务器 塔式服务器外形类似于电脑主机机箱&#xff0c;它的特点有易于维护、灵活性高、噪音低、无需专门的机架 塔式服务器适用于中小型企业或办公室等环境 刀片服务器 刀片服务器是在标准高度的机架式机箱内可插装多个卡式的服务器单元&#xff0c;它的特点是高可用性、…

openEuler 下载rpm 包

有2种方式 1、使用dnf 下载软件包 2、或者开启缓存&#xff0c;安装自动获取rpm其他事项 3、dnf 安装数据库的机器&#xff0c;应屏蔽数据软件的更新 4、下载的rpm 莫名奇妙的不能安装1、dnf download 下载软件包 # resolve 解决依赖 ,destdir 指定下载路径 dnf download -…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于变分模态分解和组合深度神经网络的综合能源系统多元负荷预测》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

「漏洞复现」九块九付费进群系统 wxselect SQL注入漏洞

0x01 免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删…

数据结构与算法笔记7:最小生成树-Prim和Kruskal算法

常用的最小生成树的算法主要有两种&#xff0c;一种是Prim算法&#xff0c;一种是Kruskal算法。题目链接&#xff1a;KamaCoder 53. 寻宝&#xff08;第七期模拟笔试&#xff09; 这里假设有V个节点&#xff0c;因为我们的节点的标号是1~V&#xff0c;这样我们直接使用标号作…

JSON的C实现(上)

JSON的C实现&#xff08;上&#xff09; JSON的C实现&#xff08;上&#xff09;前言JSON简介JSON的C实现思路小结 JSON的C实现&#xff08;上&#xff09; 前言 JSON是众多项目中较为常见的数据交换格式&#xff0c;为不同项目、系统间的信息交换提供了一个规范化标准。JSON…

1.7 软件缺陷管理

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 缺陷介绍2 缺陷描述及提交3 缺陷跟踪流程4 案例分析 前言 在软件开发和测试过程中&#xff0c;缺陷&#xff08;通常称为“bug”&#xff09;是不可避免的。了解和有效管理这些…

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十二集:制作完整地图和地图细节设置以及制作相机系统的跟随玩家和视角锁定功能

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、制作完整的地图和地图细节设置 1.制作地图前的设置2.制作地图前期该做的事3.制作地图之堆叠素材4.制作地图后期该做的事5.制作地图之修复意想不到的Bug二、…

ping基本使用详解

在网络中ping是一个十分强大的TCP/IP工具。它的作用主要为&#xff1a; 用来检测网络的连通情况和分析网络速度根据域名得到服务器 IP根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。我们通常会用它来直接 ping ip 地址&#xff0c;来测试网络的连…

Cisco Secure Firewall Management Center Virtual 7.4.2 - 思科 Firepower 管理中心软件

Cisco Secure Firewall Management Center Virtual 7.4.2 - 思科 Firepower 管理中心软件 Firepower Management Center Software 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-fmc-7/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 实现管理任务…

第十三届蓝桥杯真题Java 斐波那契与7(持续更新)

博客主页&#xff1a;音符犹如代码系列专栏&#xff1a;蓝桥杯关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 问题描述 斐波那契数列的递推公式为: FnFn−1Fn−2Fn​Fn−1​Fn−2​, 其中 …

喜欢把家里打扫得很干净的人,大多活成了这样,不是迷信!

生活中&#xff0c;我们常常会遇到一些喜欢把家里打扫得干干净净的人。 对于这些人来说&#xff0c;整洁的环境不仅是一种生活习惯&#xff0c;更是一种对生活的态度。 其实&#xff0c;这种生活习惯背后&#xff0c;往往隐藏着他们的命运和未来发展。 以下是喜欢把家里打扫…