精彩文章免费看

2021-04-20

作者:zlf_j
链接: https://www.jianshu.com/p/3e652dc44633
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
引用怕自己找不到

npm install vue-fullcalendar

https://www.jianshu.com/p/1b4858e06662

二、显示在页面上

1、main.js

import FullCalendar from 'vue-fullcalendar'
Vue.use(FullCalendar)

2、用到日历的组件

<template>
   <full-calendar :events="monthData" class="test-fc"
                     first-day='1' locale="fr"
                     @changeMonth="changeMonth"    // 切换月时的事件,可自己定义事件
                     @eventClick="eventClick"      // 点击当天的事件,可自己定义事件
                     @dayClick="dayClick"          // 点击当月的事件,可自己定义事件
                     @moreClick="moreClick"></full-calendar>    // 点击 more, 展示当天所有事件,可自己定义事件
</template>
<script>
import { FullCalendar } from 'vue-fullcalendar'
export default {
  data() {
      return {
        monthData: []
  methods: {
     // 选择月份
      changeMonth (start, end, current) {
       console.log('changeMonth', start.format(), end.format(), current.format())
      // 点击事件
      eventClick (event, jsEvent, pos) {
        console.log('eventClick', event, jsEvent, pos)
      // 点击当天
      dayClick (day, jsEvent) {
         console.log('dayClick', day, jsEvent)
      // 查看更多
      moreClick (day, events, jsEvent) {
        console.log('moreCLick', day, events, jsEvent)
  components: {
      'full-calendar': require('vue-fullcalendar')
</script>

参考:https://github.com/Wanderxx/vue-fullcalendar

3、事件返回的值,可依照以下格式(可以添加值,显示出来的值,可从插件中自行修改)

monthData: [
      title : 'eeeeeeeee',  // 事件内容
      start : '2018-12-11', // 事件开始时间
      end : '2018-12-30',   // 事件结束时间
      cssClass: 'red'       // 事件的样式   class名(由后台返回数据)  red为自己定义的class名
      title : 'sssss',
      start : '2018-12-25',
      end : '2018-12-30',
      cssClass: 'blue'  
      title : 'dddddddd',
      start : '2018-12-09',
      end : '2018-12-30',
      cssClass: 'blue'  
      title : 'cccccc',
      start : '2018-12-20',
      end : '2018-12-30'
      cssClass: 'red'  
      title : 'aaaaaa',
      start : '2018-12-01',
      end : '2018-12-30',
      cssClass: 'red'  
      title : 'bbbbbb',
      start : '2018-12-05',
      end : '2019-1-10',
      cssClass: 'blue'
<style>
.red {
  background: red;
.blue {
  background: blue;
</style>

4、修改点击事件(添加删除等功能,可以通过插件所给事件自行修改)

5、插件显示效果

  • npm install vue-fullcalendar 下载插件,只引用node_modules/vue-fullcalendar/src文件夹,改名为vue-fullcalendar

  • 修改下载的插件,并在本地引入(不是全局引入),是为了防止 npm install 覆盖掉修改

    按以下结构引入了src/assets中

    import FullCalendar from '../../../../assets/vue-fullcalendar/fullCalendar.vue'
    export default {
        ......
        components: {
            'full-calendar': FullCalendar
    
  • 修改案例:(改本地引入的vue-fullcalendar)
  • 1、修改 点击更多时,显示的内容及样式 (body.vue)
    判断显示title还是content值,cssClass为后台返回,用于自定义样式

    <ul class="body-list"> <li v-for="event in selectDay.events" v-show="event.isShow" :class="event.cssClass" @click="dayClick(event,$event)"> {{event.content ? event.content: event.title}} <!--显示条数--> <p v-if="day.events.length > eventLimit" class="more-link" @click.stop="selectThisDay(day, $event)"> {{day.events.length - getEventsLength(day.events)}} 条 <!--获取事件个数--> methods : { getEventsLength (events) { let arr = [] events.forEach((item, index) => { if (item.isShow == false) { arr.push(item) }, this) return arr.length
  •