FullCalendar日历组件集成实战(3)

背景

有一些应用系统或应用功能,如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件,但功能比较简单,用来做数据展现勉强可用。但如果需要进行复杂的数据展示,以及互动操作如通过点击添加事件,则需要做大量的二次开发。
FullCalendar是一款备受欢迎的开源日历组件,以其强大的功能而著称。其基础功能不仅免费且开源,为开发者提供了极大的便利,仅有少量高级功能需要收费。然而,尽管该组件功能卓越,其文档却相对简洁,导致在集成过程中需要开发者自行摸索与探索,这无疑增加了不少学习和验证的时间成本。
为此,本专栏通过日程管理系统的真实案例,手把手带你了解该组件的属性和功能,通过需求导向的方式,详细阐述FullCalendar组件的集成思路和实用解决方案。
在介绍过程中,我们将重点关注集成要点和注意事项,力求帮助开发者在集成过程中少走弯路,提供有效的避坑指南,从而提升开发效率,更好地利用这款优秀的日历组件。

官网:https://fullcalendar.io/
image.png
环境Vue3+Element Plus+FullCalendar 6.1.11。

使用

设置主题风格

当前外观风格与我们系统以蓝色为主色调的风格不太和谐,演示页面有诸多风格可选。
image.png
但是通过设置themeSystem属性,不起作用,认真琢磨了下,其实官方默认就只带了一种样式,就是上面截图显示的那种暗色调,其他包括bootstrap在内的样式,都需要额外配置。
经查看和对比,Bootstrap5的蓝色色调就不错,动手安装吧。

pnpm install @fullcalendar/bootstrap5
pnpm install  bootstrap
pnpm install  bootstrap-icons

经测试,以上3个一个都不能少,然后在配置中引入:

import bootstrap5Plugin from '@fullcalendar/bootstrap5'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-icons/font/bootstrap-icons.css'

image.png
刷新页面,效果终于出来了:
image.png

更改all-day 显示文本

在周视图和日视图顶部有个全天区域,显示为英文 all-day
image.png
通过以下属性调整:

// 更改all-day 显示文本
allDayText: '全天',

新增事件

我们希望日历组件的各视图中点击单元格区域或拖放单元格区域,新增事件,根据点击或拖放区域自动设置开始时间和结束时间。
默认单元格都是只读的,需要首先配置属性,让其可选中,然后配置选中事件,如下:

// 是否可以选中日历格
selectable: true,
//选中日历格事件
select: this.selectCell

如官方所说,对于封装的vue组件,不再区分vue的属性props和事件event,都以键值对方式放在配置选项options中。
事件回调参数是1个对象,输出log看下大致的数据结构如下:
image.png
注:这里我们集成日历组件,是为了做日程、任务管理,因此任务与日历组件中的事件概念等同。
从需求出发,通过日历的方式来新增任务,主要是想拿到起止时间,从start和end两个属性里就可以获取到,另外,allDay属性和view对象中的type可能会用到。

引入新增和修改任务的页面(修改任务后面会用到,一块引入进来),然后在日历组件的select事件中调用,传入起止时间。

//选中日历格事件
selectCell(arg) {
  // 转换时间格式
  const startTime = this.$dateFormatter.formatUTCTime(arg.start)
  const endTime = this.$dateFormatter.formatUTCTime(arg.end)
  // 调用新增任务
  this.$refs.addPage.init({ startTime, endTime })
}

拖放结束后,弹出对话框,新增任务,自动填充时间,效果如下:
image.png
搞定了事件添加,接下来的重点就是事件的展示以及修改了。

加载事件

调用后端服务获取任务清单简单,拿到数据后,需要转换为日历组件需要的数据结构。
日历组件称之为事件event,属性参见官网介绍https://fullcalendar.io/docs/event-parsing。
经分析,核心属性是三个,标题、开始时间和结束时间,此外,数据标识id组件也很贴心的预置了,在点击事件时通过该属性调用后端服务查询数据非常方便。
最后,需要将转换后的数据赋值给日历组件配置选项的events属性。

通过下面方法来完成数据加载、数据转换和属性赋值。

 // 加载数据
loadData() {
  this.$api.task.task.listWithChildren().then((res) => {
    this.taskList = res.data
    if (res.data) {
      const eventArray = res.data.map((item) => {
        return {
          id: item.id,
          title: item.name,
          start: item.startTime,
          end: item.endTime
        }
      })
      this.calendarOptions.events = eventArray
    }
  })
}

刷新页面,效果出来了
image.png

修改事件

点击事件时,希望打开事件查看界面,如需调整也可以直接修改,这时候调用的就是任务修改页面了。

// 事件点击
eventClick: this.showModifyForm


// 显示修改表单
showModifyForm(arg) {
  this.$refs.modifyPage.init(arg.event.id)
}

效果如下:
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

什么是工具? 从语言模型视角的综述

24年3月CMU和上海交大的论文“What Are Tools Anyway? A Survey from the Language Model Perspective”。 到底什么是工具? 接下来,工具在哪里以及如何帮助语言模型? 在综述中,对语言模型使用的外部程序工具进行了统一定义&…

Redis-分片集群存储及读取数据详解

文章目录 Redis分片集群是什么?Redis分片集群的存储及读取数据? 更多相关内容可查看 Redis分片集群是什么? Redis分片集群是一种分布式部署方式,通过将数据分散存储在多个Redis节点上,从而提高了系统的性能、扩展性和…

解密跨境电商ERP开发的5大常见问题及解决方案

跨境电商平台开发是一个充满挑战的领域,企业在此过程中常常面临着各种技术、管理和资源等方面的问题。下面是解析这些问题并提供解决方案的五大主要问题: 1. 集成难题: 在跨境电商平台开发中,一个最为常见的问题是集成不同系统和…

中国高分辨率国家土壤信息网格基本属性数据集(2010-2018)

中国高分辨率国家土壤信息网格基本属性数据集(2010-2018) 数据介绍 土壤是人类生存和发展的基础,多个联合国可持续发展目标(SDGs)与土壤资源利用和管理直接相关。然而,全球和我国现有土壤信息大多源于历史土…

酒厂做配送分销小程序商城的作用是什么

线上优势明显,酒厂零售批发需要多渠道进行,品牌宣传、酒水经营分销配送、会员管理以及拓展更多营收可能等,商家与客户都需要完善的体系触达对方。 运用【雨科】平台搭建酒厂商城,电脑手机网页端和微信小程序端,多渠道…

可重构柔性装配系统,为制造业的未来描绘出一幅崭新的蓝图

随着科技的飞速发展,传统的产线设计模式正面临着前所未有的挑战。在这个变革的时代,可重构柔性装配系统凭借其独特的优势,正引领着智能化生产的新浪潮,为制造业的未来描绘出一幅崭新的蓝图。 传统的产线设计往往固定且僵化&#x…

精品录播|电磁场数值仿真技术及天线设计与应用

电磁场数值仿真技术及天线设计与应用

失业,登上了网络悲惨排行榜热传?

几年前,有关“失业”这个话题早就频繁地出现在国内各大社交网站,原以为早已淡化了,殊不知今天浏览国内各大社交网站,惊讶地发现它竟然登上了“悲惨排行榜”并被热传,便认为对此话题有闲聊一会儿的必要。 截图&#xff…

2024年泰迪智能科技专业共建合作方案

泰迪智能科技打造基于产教融合就业育人综合服务平台,深化产教融合,持续完善三位一体的数据智能生态体系,促进教育链、人才链与产业链、创新链的有机衔接,为培养高素质创新人才及企业数据智能应用落地略尽绵薄之力。 2024年泰迪智…

ios与android上音频格式的推荐

首先贴一张官方对于ios与android上音频格式的推荐: 这里只给出了推荐格式,一般我们在实际运用中会使用如下方式: 一、IOS与安卓各一套:音乐:都使用MP3 音效:ios用caf Android用ogg 二、使用通用的MP3格式…

黑马新出的SpringBoot3项目后端总结

基础篇-00_SpringBoot3_Vue3导学课程_哔哩哔哩_bilibili 这个是视频链接 这个新课程里面用了一些企业里会用的注解例如Validated这种,业务流程清晰明了简单上手,算是可以了解最基本的Springboot开发流程,方便上手和快速入门 主要是下面这几…

prompt工程策略(一:使用 CO-STAR 框架来搭建 prompt 的结构)

原文:我是如何赢得GPT-4提示工程大赛冠军的 为了让 LLM 给出最优响应,为 prompt 设置有效的结构至关重要。CO-STAR 框架是一种可以方便用于设计 prompt 结构的模板。该模板考虑了会影响 LLM 响应的有效性和相关性的方方面面,从而有助于得到更…

【送书福利第八期】你好!Python(文末送书)

文章目录 编辑推荐内容简介作者简介目录前言/序言 🌤️ 粉丝福利 编辑推荐 适读人群 :程序员;相关院校师生 本书以轻松幽默的语言,从零开始介绍Python语言。书名来源于编程语言中最经典的Hello World程序,寓意带读者从入门到精通…

简单的mysql主从复制搭建

文章目录 准备工作用Docker安装MySQL主库配置【192.168.13.32】从库配置【192.168.13.108】小结 准备工作 用虚拟机提前准备两台服务器,并且在服务器中分别安装好MySQL,服务器的信息如下: 数据库IP主节点192.168.13.32从节点192.168.13.108…

使用python开发的闭运算调试器

使用python开发的开运算调试器 简介效果代码 简介 用来调试闭运算效果的小工具,滑动条可以控制滤波核的大小,用来查看不同滤波核下的闭运算效果。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayou…

MyBatis缓存的概念

缓存回顾 什么是缓存? 缓存就是内存中的数据,常常来自对数据库查询结果的保存。使用缓存可以避免频繁与数据库交互,进而提高 响应速度 。 MyBatis 对缓存的支持 MyBatis 也提供了对缓存的支持,分为 一级缓存 和 二级缓存。可以…

您的文件和驱动器上的“密码保护”有多安全?

某些行业(例如医疗保健、法律和公司)的人们在通过电子邮件发送文件时通常依赖密码保护,认为它可以提供足够的安全性来防止窥探。然而,对 PDF 或 Excel 文件进行简单的密码保护并不像看起来那样万无一失。 使用密码保护文件而不加…

稳态大面积光伏组件IV测试太阳光模拟器

稳态大面积光伏组件IV测试太阳光模拟器是太阳能光伏组件质量检测和评价的重要步骤之一。本文将介绍光伏组件IV测试的原理及标准板选择。 I. 光伏组件IV测试原理 光伏组件IV测试即电流电压特性测试,是评估光伏组件性能的重要手段。其测量的主要参数为组件的电流和电…

快速学习SpringAi

Spring AI是AI工程师的一个应用框架,它提供了一个友好的API和开发AI应用的抽象,旨在简化AI应用的开发工序,例如开发一款基于ChatGPT的对话应用程序。通过使用Spring Ai使我们更简单直接使用chatgpt 1.创建项目 jdk17 引入依赖 2.依赖配置 …

LeetCode394字符串解码

题目描述 给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格&#xf…