fullcalendar全局日历深度定制(自适应、月、周视图)
首先看效果:
把日程通过蓝色标记点标记出来,可展开收起日历。展开为月视图,收起为月-周视图,且把日程展示在日历下面。


涉及功能点有:
- 日历头部自定义
- 头部星期格式修改
- 主体样式修改
- 日程自定义
- 展开收起展示不同视图(月、月-周)
视图模式
type CalendarViewType = 'dayGridMonth' | 'dayGridWeek';
使用上面两种视图模型进行切换即可,展示为周视图时,固定高度。
核心代码
import {CalendarApi,CalendarOptions,EventContentArg,DateSelectArg,DayHeaderContentArg,
} from '@fullcalendar/core';
import FullCalendar from '@fullcalendar/vue';
import dayGridPlugin from '@fullcalendar/daygrid';
import interactionPlugin from '@fullcalendar/interaction';const calendarOptions = reactive<CalendarOptions>({plugins: [dayGridPlugin, interactionPlugin],locale: i18n.locale,headerToolbar: false,editable: props.editable, // 是否能编辑日期范围dayMaxEvents: false, // 是否显示更多按钮select: handleDateSelect,eventResize (arg) {arg.revert();},events: [],views: {dayGridWeek: {type: 'dayGrid',duration: { weeks: 1 },},dayGridMonth: {dayCellContent (item) {const date = moment(item.date).format('YYYY-M-D').split('-');const lDate = converter.solar2lunar(date[0], date[1], date[2]);return {html: `<div class="${prefixCls}-day"><label>${lDate.cDay}</label><span>${lDate.IDayCn +(lDate.lunarFestival ? ` ${lDate.lunarFestival}` : '')}</span></div>`,};},},},});// 日期单元格重写const dayCellContentSlot = (item) => {const date = moment(item.date).format('YYYY-M-D').split('-');const lDate = converter.solar2lunar(date[0], date[1], date[2]);let LunarTag;if (props.lunar) {let dayText;if (props.lunarTerm) {dayText = lDate.Term;}if (props.lunarFestival && !lDate.lunarFestival?.includes('小年')) {dayText = lDate.lunarFestival;}const textClass = dayText ? 'festival' : '';LunarTag = <span class={textClass}>{dayText || lDate.IDayCn}</span>;}const todayTag = <div class={`${prefixCls}-day`}><div class={`${prefixCls}-day-todaybox`}><p class={`${prefixCls}-day-today`}><label class={`${prefixCls}-day-label`}>{lDate.cDay}</label>{LunarTag}</p></div></div>;const dayTag = <div class={`${prefixCls}-day`}><label class={`${prefixCls}-day-label`}>{lDate.cDay}</label>{LunarTag}</div>;return item.isToday ? todayTag : dayTag;};// 日程标记const eventContentSlot = (arg: EventContentArg) => {const { isToday } = arg;return isToday ? '' : <a-badge status="processing"/>;};// 头部星期简化为:【日,六,五,四,三,二,一】const dayHeaderContent = (arg: DayHeaderContentArg) => {const textArr = arg.text.split('');return <span class={prefixCls + '__cell-header-text'}>{textArr[textArr.length - 1]}</span>;};<FullCalendarref={fullCalendarRef}options={calendarOptions}scopedSlots={{eventContent: eventContentSlot,dayCellContent: dayCellContentSlot,dayHeaderContent: dayHeaderContent,}}/>
dayGridMonth 处理农历节日 eventContentSlot重写事件 dayCellContentSlot 重写日期单元格 dayHeaderContent 重写星期格式
展开收起
// 展开收起日历const handleCollapse = () => {expand.value = !expand.value;const boxElem = el.value;if (expand.value) {viewTypeChange('dayGridMonth'); // 修改视图类型handleToDateAndSelect(curDate.value); // 跳转指定日期并选中boxElem.style.height = '100%'; // 设置容器高度} else {viewTypeChange('dayGridWeek'); // 修改视图类型handleToDateAndSelect(curDate.value); // 跳转指定日期并选中boxElem.style.height = '122px'; // 设置容器高度【周只显示一行】}};
通过修改视图类型和修改容器高度来实现
整体领域图

相关文章:
fullcalendar全局日历深度定制(自适应、月、周视图)
首先看效果: 把日程通过蓝色标记点标记出来,可展开收起日历。展开为月视图,收起为月-周视图,且把日程展示在日历下面。 涉及功能点有: 日历头部自定义头部星期格式修改主体样式修改日程自定义展开收起展示不同视图(月…...
TextWebSocketHandler 和 @ServerEndpoint 各自实现 WebSocket 服务器
TextWebSocketHandler 和 ServerEndpoint 都可以用于实现 WebSocket 服务器,但它们属于不同的技术栈,使用方式和功能有一些区别。以下是它们的对比: 1. 技术栈对比 特性TextWebSocketHandler (Spring)ServerEndpoint (Java EE/JSR-356)所属框…...
计算机毕业设计——Springboot的简历系统
📘 博主小档案: 花花,一名来自世界500强的资深程序猿,毕业于国内知名985高校。 🔧 技术专长: 花花在深度学习任务中展现出卓越的能力,包括但不限于java、python等技术。近年来,花花更…...
关于浏览器缓存的思考
问题情境 开发中要实现一个非原生pdf预览功能,pdf链接放在一个固定的后台地址,当重新上传pdf后,预览pdf仍然是上一次的pdf内容,没有更新为最新的内容。 查看接口返回状态码为 200 OK(from disk cache), 表示此次pdf返回…...
变量声明 vs 变量定义
变量声明(Declaration) vs 变量定义(Definition) 在 C 中,变量声明和变量定义是两个不同的概念。理解它们的区别对于链接错误的调试、多文件编程、外部变量的使用非常重要。 3. 变量声明 vs 变量定义 区别变量声明&…...
16vue3实战-----动态路由
16vue3实战-----动态路由 1.思路2.实现2.1创建所有的vue组件2.2创建所有的路由对象文件(与上述中的vue文件一一对应)2.3动态加载所有的路由对象文件2.4根据菜单动态映射正确的路由2.5解决main页面刷新的问题2.6解决main的第一个页面匹配显示的问题2.7根据path匹配menu 1.思路 …...
Linux常见命令——系统定时任务
文章目录 crontab 服务管理crontab -e :编辑crontab 定时任务crontab -l 查看crontab 任务crontab -r 删除当前用户所有的crontab 任务 crontab 服务管理 systemctl status crond该系统进程是开机自启动,并且被打开了,可以使用。 crontab -e :编辑cr…...
ARM Cortex-M3/M4 权威指南 笔记【一】技术综述
一、Cortex-M3/M4 处理器的一般信息 1.1 处理器类型 ARM Cortex-M 为 32 位 RISC(精简指令集)处理器,其具有: 32位寄存器32位内部数据通路32位总线接口 除了 32 位数据,Cortex-M 处理器(以及其他任何 A…...
常用的AI算法介绍
常用的AI算法介绍 自然语言生成(NLG):让机器写作,写诗 语言识别:语音模型的识别 虚拟现实:VR、增强现实(AR) 机器学习平台:针对AI优化的硬件和芯片(人脸识…...
Spring常用注解和组件
引言 了解Spring常用注解的使用方式可以帮助我们更快速理解这个框架和其中的深度 注解 Configuration:表示该类是一个配置类,用于定义 Spring Bean。 EnableAutoConfiguration:启用 Spring Boot 的自动配置功能,让 Spring Boo…...
android的ViewModel这个类就是业务逻辑层吗
android的ViewModel这个类就是业务逻辑层吗? 相似:业务逻辑代码应该放在ViewModel这个类吗? 嗯,我现在在学习Android架构组件,特别是ViewModel。用户问ViewModel是否就是业务逻辑层,我需要仔细思考这个问题…...
3、kubectl 命令详解
kubectl 命令详解 kubectl 简介kubectl 常用操作基本信息查看命名空间的增删改查操作查看 pod 信息 项目的生命周期创建发布更新回滚删除金丝雀发布(Canary Release) 声明式管理方法 kubectl 简介 kubernetes 集群管理集群资源的唯一入口是通过相应的方…...
Qt Pro、Pri、Prf
一、概述 1、在Qt中,通常使用.pro(project)、pri(private include)、prf(project file)三种文件扩展名来组织项目。对于模块化编程,Qt提供了Pro和Pri,Pro管理项目,Pri管理模块。 2、pro文件是Qt项目的核心文件,包含了…...
fps动作系统9:动画音频
文章目录 动画音频创建音频蓝图cue音量乘数 音效衰减衰减空间 绑定到动画动画序列轨道 动画音频 创建音频蓝图 cue 音量乘数 音量大小 音效衰减 空间音效 衰减 空间 绑定到动画 动画序列 轨道 横着的方向是有不同的轨道的,阴影的就是。...
1064 - You have an error in your SQL syntax;
在创建数据库表建立外键是遇到了如下报错 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near position(position_id) ) at line 8 数据库表sql如下: --职位表 CR…...
Java在大数据处理中的应用:从MapReduce到Spark
Java在大数据处理中的应用:从MapReduce到Spark 大数据时代的到来让数据的存储、处理和分析变得前所未有的重要。随着数据量的剧增,传统的单机计算方式已经无法满足处理需求。为了解决这个问题,许多分布式计算框架应运而生,其中Ma…...
SwiftUI 中 .overlay 两种写法的区别及拓展
SwiftUI 中 .overlay 两种写法的区别及拓展 一、.overlay 简介功能语法 二、写法 1:.overlay(Circle().stroke(Color.blue, lineWidth: 2))代码示例解释优点适用场景 三、写法 2:.overlay { Circle().stroke(.white, lineWidth: 4) }代码示例解释优点适用…...
深入理解QT的View-Model-Delegate机制和用法
文章目录 Model-View-Delegate机制Model(数据模型)设置模型属性访问元素操作元素数据排序封装好的模型View(视图)显示数据数据选择Delegate(代理)数据选择易用封装类QListWidgetQTreeWidgetQTableWidget元素拖拽代理模型参考示例Model-View-Delegate机制 Qt的View/Model/Deleg…...
C# ASP.NET 介绍
.NET学习资料 .NET学习资料 .NET学习资料 一、概述 ASP.NET是由微软创建的一个开源 Web 框架,用于使用.NET 构建现代化的 Web 应用程序和服务。它为开发者提供了一套丰富的工具、库和编程模型,使得创建功能强大、高效且安全的 Web 应用变得更加容易。…...
深入理解指针初阶:从概念到实践
一、引言 在 C 语言的学习旅程中,指针无疑是一座必须翻越的高峰。它强大而灵活,掌握指针,能让我们更高效地操作内存,编写出更优化的代码。但指针也常常让初学者望而生畏,觉得它复杂难懂。别担心,本文将用通…...
《手札·行业篇》开源Odoo MES系统与SKF Observer Phoenix API在化工行业的双向对接方案
一、项目背景 化工行业生产过程复杂,设备运行条件恶劣,对设备状态监测、生产数据采集和质量控制的要求极高。通过开源Odoo MES系统与SKF Observer Phoenix API的双向对接,可以实现设备状态的实时监测、生产数据的自动化采集以及质量数据的同步…...
oracle11g搭建主从集群
安装oracle11g参考:centos安装oracle11g数据库-CSDN博客 一、主库操作 sqlplus / as sysdba 1、开启归档模式和强制日志模式 shutdown immediate startup mount #开启归档模式和强制日志模式 alter database archivelog; alter database force logging; #开启补…...
暂未整理啊
测码学院 python的数据类型 不可变数据类型:字符串/数字/元组/ type(变量名) 获得数据的类型 str:字符串 int:整数 float:浮点数 bool:true/false 布尔类型 list:列表 dict&…...
重庆西站公路桥梁自动化监测
1.项目概述 重庆西站属于渝黔铁路的配套工程,是承担兰渝、川黔、渝昆等多条铁路的特级客运站,未来重庆铁路三大客运站之一。作为我国西部地区规模最大的火车站、重庆西站于2014年在沙坪坝区上桥开工建设,该站东临内环高速,西靠中梁山&#x…...
JavaScript系列(70)--响应式编程进阶详解
JavaScript响应式编程进阶详解 🔄 今天,让我们深入探讨JavaScript响应式编程的进阶内容。响应式编程是一种强大的编程范式,它能够帮助我们更好地处理异步数据流和状态管理。 响应式编程进阶概念 🌟 💡 小知识&#x…...
安装指定版本的pnpm
要安装指定版本的 pnpm,可以使用以下方法: 方法 1: 使用 pnpm 安装指定版本 你可以通过 pnpm 的 add 命令来安装指定版本: pnpm add -g pnpm<版本号>例如,安装 pnpm 的 7.0.0 版本: pnpm add -g pnpm7.0.0方法…...
Dockerfiles 的 Top 10 常见 DevOps/SRE 面试问题及答案
1. RUN 和 CMD 之间有什么区别? RUN : 在镜像构建过程中执行命令,创建一个新的层。通常用于安装软件包。 示例: RUN apt-get update && apt-get install -y curlCMD : 指定容器启动时默认运行的命令。它在运行时执行,而不是在构建过程…...
头条百度批量采集软件说明文档
旧版说明文档《头条号文章批量采集软件4.0版本说明文档!头条/微头条文章批量采集》 头条的采集软件已经更新了好多个版本了,一直没有做详细的介绍文档,最近更新了一些功能进去,一块来写一下说明文档。 1、主界面 2、头条作者采集…...
36.日常算法
1.最小栈 题目来源 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。 void push(int val) 将元素val推入堆栈。 void pop() 删除堆栈顶部的元素。 int top() 获取堆…...
计算机考研复试上机04
目录 6、向量 1)完数与盈数(清华大学复试上机题) 7、队列 1)约瑟夫问题 No. 2 8、栈 1)简单计算器(浙江大学复试上机题) 2)堆栈的使用(吉林大学复试上机题…...
