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.dataif (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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/12227.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/12227.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/12227.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SwiftUI中的常用圖形(Shapes)

概述 在SwiftUI中,常用的圖形(Shape)主要有: Circle:圓形 Ellipse:橢圓形 Capsule:膠囊形 Rectangle:矩形 RoundedRectangle:圓角矩形 上面的這些圖形都繼承了Shape協議…

DFA算法 敏感詞過濾方案匯總以及高效工具sensitive-word

敏感詞過濾方案匯總以及高效工具sensitive-word 導入pom文件 <dependency><groupId>com.github.houbb</groupId><artifactId>sensitive-word</artifactId><version>0.12.0</version> </dependency>接下來我們編寫相關測試類…

解四層負載和七層負載:Nginx 的應用示范

在網絡架構中&#xff0c;負載均衡是分配網絡或應用程序流量到多個服務器的技術&#xff0c;以優化資源使用、最大化吞吐量、最小化響應時間和避免任何單一資源的過載。Nginx&#xff0c;作為一款強大的HTTP和反向代理服務器&#xff0c;能夠處理七層&#xff08;應用層&#x…

深入剖析JVM、JDK和JRE的區別與聯系

在Java開發和運行過程中&#xff0c;JVM、JRE和JDK是三個核心組件。理解它們的區別和聯系是每個Java開發者的基礎技能。本文將深入探討這三個組件的作用、組成及其在實際應用中的重要性。 一、Java虛擬機&#xff08;JVM&#xff09; **JVM&#xff08;Java Virtual Machine&…

Hive讀寫文件機制

Hive讀寫文件機制 1.SerDe是什么&#xff1f; SerDe是Hive中的一個概念&#xff0c;代表著“序列化/反序列化” &#xff08;Serializer/Deserializer&#xff09;。 SerDe在Hive中是用來處理數據如何在Hive與底層存儲系統&#xff08;例如HDFS&#xff09;之間進行轉換的機制…

ceph糾刪碼精簡配置ec4+2:1與ec4+2的切換

概述 近期遇到項目&#xff0c;由于靈活配置&#xff0c;前期只有部分機器&#xff0c;后續擴容&#xff0c;想用ec42的糾刪碼&#xff0c;但前期只有3臺機器&#xff0c;需要做精簡ec。 erasure-code-profile 首先按照ceph創建糾刪碼池步驟進行操作。 創建ec42的rule cep…

2024國考行測、申論資料大全,做好備考真的很重要!

1. 國考是什么? 國考,全稱國家公務員考試,是選拔國家公務員的重要途徑。通過國考,你將有機會進入政府部門,為國家建設貢獻力量。 2. 國考難在哪里? 國考之所以難,主要體現在以下幾個方面: (1) 競爭激烈 每年國考報名人數都在百萬以上,而錄取率卻不足2%。千軍萬馬過獨木橋…

前端環境準備的一些注意事項

1. 安裝 node-sass4.x 需要python 2 和visual studio 2017&#xff0c;visual 2019版本不行。 2. python版本更新問題 python重新配置環境變量時&#xff0c;不會立馬生效&#xff0c;重啟可生效。 3. node版本問題 接觸一個新的項目&#xff0c;搞清楚node版本再開始準備…

node和npm版本太高導致項目無法正常安裝依賴以及正常運行的解決辦法:如何使用nvm對node和npm版本進行切換和管理

1&#xff0c;點擊下載 nvm 并且安裝 進入nvm的github&#xff1a; GitHub - coreybutler/nvm-windows: A node.js version management utility for Windows. Ironically written in Go. 這里下載發行版&#xff0c;Releases coreybutler/nvm-windows GitHub 找到 這個 nv…

洗地機哪款好用?希亦、追覓、順造、米家等高品質洗地機推薦

家用洗地機已經成為家庭清潔的重要利器&#xff0c;其多功能性能幫助您輕松應對各種清潔任務&#xff0c;從而保持家居環境的清潔整潔。然而&#xff0c;市場上品牌繁多、功能各異的洗地機讓人眼花繚亂。為了幫助大家做出明智的選擇&#xff0c;我們將在本文中提供全面的選購指…

4.3 將AX寄存器中的16位數分成4組,每組4位,然后把這四組數分別放在AL,BL,CL和DL中

思路&#xff1a; 主要是通過SHR指令對AX寄存器進行移位&#xff0c;有個容易出錯的地方就是&#xff0c;當移位數超過1時&#xff0c;不能直接用指令SHR&#xff0c;而應該先將移位數存入CL&#xff0c;再使用指令SHR AH,CL。舉個例子&#xff1a; SHR AX,1 ;是可以的 SHR A…

選擇法(數值排序)(C語言)

一、運行結果&#xff1b; 二、源代碼&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//聲明排序函數sort; void sort(int a[], int n);int main() {//初始化變量值&#xff1b;int i, a[10];//填充數組&#xff1b;printf("請輸入10個整數\n&…

win的開發環境配置(Java開發必備)

文章目錄 日常app工具類app開發類app環境類app 由于每次換新工作、用一臺臨時或者新的電腦時總是要想著要下載什么軟件&#xff0c;這次就一次性全部記錄下來&#xff0c;將必須下載的內容做個記錄。 日常app 百度網盤、微信、網易云、搜狗 工具類app office、bandizip&…

現代 c++ 一:c++11 ~ c++23 新特性匯總

所謂現代 c&#xff0c;指的是從 c11 開始的 c&#xff0c;從 c11 開始&#xff0c;加入一些比較現代的語言特性和改進了的庫實現&#xff0c;使得用 c 開發少了很多心智負擔&#xff0c;程序也更加健壯&#xff0c;“看起來像一門新語言”。 從 c11 開始&#xff0c;每 3 年發…

藍橋杯備戰22.k倍區間——前綴和

目錄 題目 分析 暴力求解 優化思路 AC代碼 題目鏈接&#xff1a; P8649 [藍橋杯 2017 省 B] k 倍區間 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 題目 分析 很明顯這題是一道前綴和的題 暴力求解 只得了28分 #include<iostream> using namespace std; co…

企業在實施RPA技術時,應如何確保其ROI評估的準確性和全面性?

企業在實施RPA&#xff08;Robotic Process Automation&#xff09;技術時&#xff0c;確保ROI&#xff08;投資回報率&#xff09;評估的準確性和全面性是至關重要的。以下是確保ROI評估準確性和全面性的一些關鍵步驟&#xff1a; ### 1. 明確業務目標 首先&#xff0c;企業需…

1、工廠模式

一、C常用設計模式 &#xff1a;工廠模式 1、why2、when3、what4、how 1、why #include <iostream>class Phone { };class XiaoMi : public Phone { };class Apple : public Phone { };class Huawei : public Phone { };class Oppo : public Phone { };class Vivo : pub…

求學生平均成績(C語言)

一、運行結果&#xff1b; 二、源代碼&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h>//聲明平均數函數average; float average(float score[10]);int main() {//初始化變量值&#xff1b;float score[10], aver;int i 0;//填充數組&#xff1b;pr…

探秘WebSQL:輕松構建前端數據庫

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事 探秘WebSQL&#xff1a;輕松構建前端數據庫 前言WebSQL簡介WebSQL的基本操作WebSQL的實際應用WebSQL的局限性和替代方案 前言 在Web的世界里&#xff0c;我們總是追求更好的用戶體驗和更快的響應速度…

添磚Java之路(其八)——繼承,final關鍵字

目錄 繼承&#xff1a; super關鍵字&#xff1a; 方法重寫&#xff1a; 繼承特點&#xff1a; 繼承構造方法&#xff1a; final關鍵字&#xff1a; 繼承&#xff1a; 意義&#xff1a;讓類于類之間產生父類于子類的關系&#xff0c;子類可以直接使用父類中的非私有成員(包…