如果想用fullcalendar实现排班功能,或者日历、日程功能。那么只需要简单的几步:
这里先挂官网链接:
fullcalendar
fullcalendar官网下载链接
一、下载及简单配置
1、这里先明确你想要的是哪种形式式:fullcalendar 提供多种日历形式:
你们可以在官网首页的演示里面看到,在这里我主要讲一下我这里使用的两种实现:
(1)日历模式(只是用fullcalendar实现)

(2)时间轴模式(除了fullcalendar还用了官网的另一个插件叫schedule

在下载了fullcalendar之后将其引入你自己的项目,只需要进行很简单的配置就可以进行使用了。
这是需要运行插件的几个基本的配置,将其引入页面

  1. <link rel='stylesheet' href='fullcalendar/fullcalendar.css' />
  2. <script src='lib/jquery.min.js'></script>
  3. <script src='lib/moment.min.js'></script>
  4. <script src='fullcalendar/fullcalendar.js'></script>

此处需要注意的是jquery和moment的js必须在fullcalendar的js之前引入。如果你也想做时间轴模式的日历,并且已经下载了schedule的话,那么你需要在在页面中引入schedule的js和css
也就是说不但要引入fullcalendar的还要引入schedule的。

  1. <link href='fullcalendar.css' rel='stylesheet' />
  2. <link href='scheduler.css' rel='stylesheet' />
  3. <script src='moment.js'></script>
  4. <script src='jquery.js'></script>
  5. <script src='fullcalendar.js'></script>
  6. <script src='scheduler.js'></script>

之后在页面定义一个div 这个div会被渲染成日历插件比如我建立一个div

  1. <div id='calendar'></div>

那么这时候就可以在js中进行配置了

  1. $('#calendar').fullCalendar({
  2. defaultView: 'month',
  3. height: 'auto',
  4. header: false,
  5. displayEventTime:true,
  6. displayEventEnd:true,
  7. weekMode:"liquid",
  8. aspectRatio:2,
  9. allDaySlot:false,
  10. timeFormat: 'HH:mm',
  11. locale:'zh-cn',
  12. })

这其中的一些配置根据自己的需求来定,具体官方文档
需要说明的是fullcalendar提供schedule的免费使用,不过在插件上会有水印。要想去掉水印可以在配置中加上这一句

  1. schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives',

加在上面的配置里就可以。
这样运行之后你可以得到一个日历了

其中的defaultView是决定显示是月 还是年 或者是星期的。对于fullcalendar有以下几种取值:

  1. month
  2. basicWeek
  3. basicDay
  4. agendaWeek
  5. agendaDay
  6. listYear
  7. listMonth
  8. listWeek
  9. listDay

如果你同时下载了schedule想要以小时来分割每日的时间那么你可以使用以下几种视图:

  1. timelineDay
  2. timelineWeek
  3. timelineMonth
  4. timelineYear

当然你也可以自定义视图 具体看文档自定义视图
这里我写一个例子

  1. views: {
  2. agendaFourDay: {
  3. type: 'timeline',
  4. duration: { days: 4 },
  5. buttonText: '4 day'
  6. },
  7. },

这里我设置了一个4天的区间,表明在这种模式下,我的日历显示跨度为四天。然后设置defaultView:agendaFourDay,就好了。完整写就是这样。

  1. $('#calendar').fullCalendar({
  2. defaultView: 'agendaFourDay',
  3. height: 'auto',
  4. header: false,
  5. displayEventTime:true,
  6. displayEventEnd:true,
  7. weekMode:"liquid",
  8. aspectRatio:2,
  9. allDaySlot:false,
  10. timeFormat: 'HH:mm',
  11. locale:'zh-cn',
  12. views: {
  13. agendaFourDay: {
  14. type: 'timeline',
  15. duration: { days: 4 },
  16. buttonText: '4 day'
  17. },
  18. },
  19. })

除了一开始在配置中写好,fullcalendar提供方法可以在js中更改视图,这样就能自定义按钮来控制视图了

  1. $('#calendar').fullCalendar("changeView","basicDay ");

这样就把视图类型更改为basicDay 了。
当然上述配置也可以在js中修改。体现在代码里就是
上面是一个例子 底下是格式。

  1. $('#calendar').fullCalendar('option','height',"600")
  2. $('#calendar').fullCalendar('option','属性',"属性值")

改代码把日历的高度定义为600px。
还有很多种方法 参看文档的(method)
以下就完成了插件的基本配置。
二、往插件里传数据
以下是我向日历里传数据的方法

  1. function drawCalendar(data) {
  2. $('#calendar').fullCalendar( 'removeEvents');
  3. var events=[];
  4. for(var i=0, len=data.length; i<len; i++){
  5. var timeDate=data[i];
  6. //如果非整天时间,则显示时分数据
  7. var isallDay=true;
  8. if(timeDate["end"] !=null && timeDate["start"] != null){
  9. if(moment(timeDate["start"].replace(" ","T")).format("HH:mm") !== "00:00" || moment(timeDate["end"].replace(" ","T")).format("HH:mm") !== "00:00"){
  10. isallDay = false;
  11. }
  12. }
  13. var item={
  14. title : timeDate["title"],
  15. start : timeDate["start"].replace(" ","T"),
  16. className : "event-bar",
  17. allDay : isallDay,
  18. end : timeDate["end"]==null ? "" : timeDate["end"].replace(" ","T"),
  19. backgroundColor : getCalendarColor(timeDate["user"]),
  20. user : timeDate["user"],
  21. startTime : timeDate["startTime"],
  22. endTime : timeDate["endTime"]
  23. };
  24. events.push(item);
  25. }
  26. $('#calendar').fullCalendar( 'addEventSource', events );
  27. }

其中

  1. $('#calendar').fullCalendar( 'removeEvents');

是用来先移除原来控件中的事件的。
event是事件数组,事件就是图里面一条一条的,把item(下面的属性各项,有设置事件条的颜色的,也有设置开始结束时间的,与英文意思相同这里不多做解释,有不懂得可以在评论中问我)

  1. var item={
  2. title : timeDate["title"],
  3. start : timeDate["start"].replace(" ","T"),
  4. className : "event-bar",
  5. allDay : isallDay,
  6. end : timeDate["end"]==null ? "" : timeDate["end"].replace(" ","T"),
  7. backgroundColor : getCalendarColor(timeDate["user"]),
  8. user : timeDate["user"],
  9. startTime : timeDate["startTime"],
  10. endTime : timeDate["endTime"]
  11. };

推入事件数组。
再用

  1. $('#calendar').fullCalendar( 'addEventSource', events );

控件提供的方法把事件数组推入事件,就可以了在图上显示你的事件了。

补充:vue中的实现

  1. <template>
  2. <div class="work-day-manage">
  3. <h3>工作日管理</h3>
  4. <div class="calendar-wrap">
  5. <FullCalendar defaultView="dayGridMonth"
  6. ref="fullCalendar"
  7. :header="{
  8. left: 'dayGridMonth,timeGridWeek, timeGridDay',
  9. center: 'title',
  10. right: 'today prev,next,'
  11. }"
  12. :events="events"
  13. :eventColor="'#378006'"
  14. :eventBackgroundColor="'#378006'"
  15. :eventResizableFromStart="true"
  16. @eventClick="handleEventClick"
  17. :editable="true"
  18. :droppable="true"
  19. :selectMirror="true"
  20. :selectAllow="selectAllow"
  21. :unselectAuto="false"
  22. :weekends="true"
  23. :selectable="true"
  24. :locale="zhLocale"
  25. @viewSkeletonRender="viewSkeletonRender"
  26. @dateClick="handleDateClick"
  27. @select="handleDateSelect"
  28. :plugins="calendarPlugins"/>
  29.  
  30. </div>
  31.  
  32. </div>
  33. </template>
  34.  
  35. <script>
  36. import FullCalendar from '@fullcalendar/vue'
  37. import dayGridPlugin from '@fullcalendar/daygrid'
  38. import interactionPlugin from '@fullcalendar/interaction'
  39. import timeGridPlugin from '@fullcalendar/timegrid'
  40. import zhLocale from '@fullcalendar/core/locales/zh-cn'
  41. import { formatDate } from '@/utils/common'
  42.  
  43. export default {
  44. data() {
  45. return {
  46. defaultView: 'dayGridMonth',
  47. calendarPlugins: [dayGridPlugin, interactionPlugin, timeGridPlugin],
  48. zhLocale,
  49. events: [
  50. // event data...
  51. {
  52. title: 'Event1',
  53. start: '2019-08-26 15:00:23',
  54. end: '2019-08-26 19:00:00',
  55. startTime: '2019-08-26 15:00:23',
  56. endTime: '2019-08-26 19:00:00',
  57. allDay: false,
  58. },
  59. {
  60. title: 'Event2',
  61. start: '2019-08-21',
  62. end: '2019-08-25',
  63. allDay: false,
  64. user: 'abc',
  65. backgroundColor: 'orange',
  66. className: 'event-bar',
  67. startTime: '2019-08-21',
  68. },
  69. {
  70. title: 'Event3',
  71. start: '2019-08-21',
  72. end: '2019-08-25',
  73. allDay: false,
  74. user: 'abc',
  75. backgroundColor: 'orange',
  76. className: 'event-bar',
  77. startTime: '2019-08-21',
  78. }
  79. ],
  80. }
  81. },
  82. components: {
  83. FullCalendar,
  84. },
  85. mounted() {
  86. console.log(formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'))
  87. },
  88. methods: {
  89. viewSkeletonRender(info) {
  90. this.defaultView = info.view.type
  91. },
  92. selectAllow() {
  93. if (this.defaultView === 'dayGridMonth') {
  94. return false
  95. }
  96. return true
  97. },
  98. handleDateClick(arg) {
  99. console.log(arg)
  100. // arg.dayEl.style.backgroundColor = 'red'
  101. // arg.dayEl.style.backgroundColor = 'red'
  102. console.log(this.$refs.fullCalendar.getApi().getEvents())
  103. },
  104. handleDateSelect(arg) {
  105. console.log(arg)
  106. },
  107. handleEventClick(eventInfo) {
  108. console.log(eventInfo.event)
  109. },
  110. }
  111. }
  112. </script>
  113.  
  114. <style lang="less">
  115. @import '~@fullcalendar/core/main.css';
  116. @import '~@fullcalendar/daygrid/main.css';
  117. @import '~@fullcalendar/timegrid/main.css';
  118.  
  119. .work-day-manage {
  120. padding: 0 20px;
  121. .calendar-wrap {
  122. width: 1000px;
  123. height: 2000px;
  124. .fc {
  125.  
  126. }
  127. }
  128. }
  129. </style>

js jquery 实现 排班,轮班,日历,日程。使用fullcalendar 插件的更多相关文章

  1. JS+Jquery自定义格式导出HTML为Word(下列插件同样可以用于Excel导出)

    这里的word导出主要采用了jquery.wordexport.js.FileSaver.js,做功能之前我也是找了很多网上的资料,里面涉及到js导出word的用的都是这个插件,只是在自定义样式这一块 ...

  2. ASP.NET MVC5+EF6+EasyUI 后台管理系统(86)-日程管理-fullcalendar插件用法

    前言 本文分享fullcalendar用法,最后面提供代码下载 说到日程管理,基于JQuery的插件FullCalendar当之无愧,完整的API稳定和调用方式,非常易于扩展!可以用于系统的个人历程管 ...

  3. fullcalendar插件日程管理

    日程管理-fullcalendar插件用法   前言 本文分享fullcalendar用法,最后面提供代码下载 说到日程管理,基于JQuery的插件FullCalendar当之无愧,完整的API稳定和 ...

  4. 详解 OneAlert 排班可以帮你做什么

    排班的存在,实质是通过有序安排,降低企业/团队人力成本,提升工作效率. 阅读导航(预计2min)   1. 详解排班功能 轮班机制 工作时间 双视图展示 灵活调整 2. 利用排班如何助力运维团队 排班 ...

  5. 使用.NET Core与Google Optimization Tools实现员工排班计划Scheduling

    上一篇说完<Google Optimization Tools介绍>,让大家初步了解了Google Optimization Tools是一款约束求解(CP)的高效套件.那么我们用.NET ...

  6. 25个有用的jQuery日历和日期选取插件

    jQuery被认为是最好的JavaScript库,因为它简单易用.灵活,并有大量的插件.本文介绍25个非常不错的jQuery日历和日期选取插件,希望对各位有用. 1. Simple JQuery Da ...

  7. c++实现医院检验科排班程序

    c++实现医院检验科排班程序 1.背景: 医院急诊检验科24h×7×365值班.工作人员固定.採取轮班制度.确保24h都有人值班. 本文就通过C++实现编敲代码自己主动排班,并能够转为Excel打印. ...

  8. vue日历/日程提醒/html5本地缓存

    先上图 功能: 1.上拉日历折叠,展示周 2.左右滑动切换月 2.“今天”回到今天:“+”添加日程 3.localStorage存储日程 index,html <body> <div ...

  9. UI自动化之js\jquery的应用

    js\jquery的应用,有很多难以定位到的,可以通过js或者jquery来处理 目录 1.js 2.jquery 1.js 1.1js有5种定位,最后execute_script(js)来执行js ...

随机推荐

  1. Part_four:redis主从复制

    redis主从复制 1.redis主从同步 Redis集群中的数据库复制是通过主从同步来实现的 主节点(Master)把数据分发从节点(slave) 主从同步的好处在于高可用,Redis节点有冗余设计 ...

  2. JavaScript之运算符

    (1)赋值运算符 // c+=1; // 相当于c=c+1; // console.log(a++); // 先将a的值赋值给表达式,a再加1 // console.log(++a); // a先加1 ...

  3. mybatis异常:nested exception is org.apache.ibatis.builder.BuilderException: Error resolving JdbcType

    异常详细 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.builder.Builde ...

  4. 社交类app开发( 仿陌陌 客户端+服务器端)

    一.开发所需要的技术 手机端需要Android/iOS开发人员,服务器端需要php/数据库开发人员, 如果再做网页版的话,WEB开发也是要的. 即时通讯 GPS地图 群聊 差不多 对 http  so ...

  5. MQTT的websockets应用_转

    转自:mosquitto 与websocket 的结合 前言 mosquitto 作为一个消息代理, 客户端与 mosquitto 服务端的通信时基于 MQTT 协议的, 而现在的主流 web 应用时 ...

  6. prometheus operator 部署

    prometheus operator 部署自定义记录 环境: k8s 1.11集群版本,kubeadm部署 docker 17.3.2版本 Centos 7系统 阿里云服务器 operator 源码 ...

  7. HTML&CSS基础-常用选择器

    HTML&CSS基础-常用选择器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.html源代码 <!DOCTYPE html> <html> & ...

  8. Linux中快速对字符串进行加密

    1)进行base64的加密和解密 [root@VM_0_10_centos opt]# echo hello |base64aGVsbG8K[root@VM_0_10_centos opt]# ech ...

  9. jmeter生成html报告详解

    Jmeter Dashboard详解 结果面板主要分为Dashboard和Charts两部分.Dashboard对信息进行汇总展示,Charts展示更多详细指标数据. Dashboard Test a ...

  10. tomcat访问manager

    在配置好Tomcat7/8后,我们往往需要访问Tomcat7/8的Manager以及Host Manager.就需要在tomcat-users.xml中配置用户角色来实现.在地址栏输入:localho ...