笔记记录Vue+Element-ui+Fullcalendar简约日历排班

这篇具有很好参考价值的文章主要介绍了笔记记录Vue+Element-ui+Fullcalendar简约日历排班。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官方文档地址:https://fullcalendar.io/docs/vue

1. 安装一下Fullcalendar依赖

npm install --save "@fullcalender/core"
npm install --save "@fullcalender/interaction"
npm install --save "@fullcalender/timegrid"
npm install --save "@fullcalender/vue"

 2. 引入

import FullCalendar from '@fullcalendar/vue'
import dayGridPlugin from '@fullcalendar/daygrid'
import timeGridPlugin from '@fullcalendar/timegrid'
import interactionPlugin from '@fullcalendar/interaction'
import { INITIAL_EVENTS, createEventId } from './event-utils'

3. 编写组件

<div class="demo-app-main">
      <FullCalendar class="demo-app-calendar" :options="calendarOptions">
        <template v-slot:eventContent="arg">
          <b>{{ arg.timeText }}</b>
          <i>{{ arg.event.title }}</i>
        </template>
      </FullCalendar>
    </div>
    <el-dialog :title="optTitle" :visible.sync="dialogFormVisible">
      <el-form :model="form">
        <el-form-item label="员工名称班次" label-width="100px">
          <el-input
            v-model="form.title"
            auto-complete="off"
            placeholder="请输入员工名称班次"
          ></el-input>
        </el-form-item>
        <el-form-item label="开始时间" label-width="100px">
          <el-date-picker
            v-model="form.start"
            type="datetime"
            placeholder="选择日期时间"
          >
          </el-date-picker>
        </el-form-item>
        
        <el-form-item label="结束时间" label-width="100px">
          <el-date-picker
            v-model="form.end"
            type="datetime"
            placeholder="选择日期时间"
          >
          </el-date-picker>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button
          type="warning"
          @click="delEvent"
          v-if="form.id"
          style="float: left"
          >删 除</el-button
        >
        <el-button @click="handleClose">取 消</el-button>
        <el-button type="primary" @click="handleSave">确 定</el-button>
      </div>
    </el-dialog>

4. data中的属性配置

form: {},
      dialogFormVisible: false,
      optTitle: '',
      calendarOptions: {
        plugins: [
          dayGridPlugin,
          timeGridPlugin,
          interactionPlugin, // needed for dateClick
        ],
        headerToolbar: {
          left: 'prev,next today',
          center: 'title',
          right: 'dayGridMonth,timeGridWeek,timeGridDay',
        },
        initialView: 'dayGridMonth',
        initialEvents: INITIAL_EVENTS, // alternatively, use the `events` setting to fetch from a feed
        editable: true,
        selectable: true,
        selectMirror: true,
        dayMaxEvents: true,
        weekends: true,
        select: this.handleDateSelect,
        eventClick: this.handleEventClick,
        eventsSet: this.handleEvents,
        // 点击事件对象事件
        /* you can update a remote database when these fire:
        eventAdd:
        eventChange:
        eventRemove:
        */
      },
      currentEvents: [],

5. 这里编辑弹框是element-ui的el-dialog

handleWeekendsToggle() {
      this.calendarOptions.weekends = !this.calendarOptions.weekends // update a property
    },
    // 点击编辑
    handleEventClick(info) {
      this.dialogFormVisible = true
      this.optTitle = '编辑'
      this.form = {
        id: info.event.id,
        title: info.event.title,
        start: info.event.start,
        end: info.event.end,
      }
    },
    // 新增
    handleDateSelect(selectInfo) {
      let title = prompt('Please enter a new title for your event')
      let calendarApi = selectInfo.view.calendar

      calendarApi.unselect() // clear date selection

      if (title) {
        calendarApi.addEvent({
          id: createEventId(),
          title,
          start: selectInfo.startStr,
          end: selectInfo.endStr,
          allDay: selectInfo.allDay,
        })
      }
    },
    // 删除
    delEvent() {
      this.dialogFormVisible = false
    },
    handleEvents(events) {
      this.currentEvents = events
    },
    // 关闭弹框
    handleClose() {
      this.dialogFormVisible = false
    },
    // 确定
    handleSave() {
      this.dialogFormVisible = false
    },

6. css样式

h2 {
  margin: 0;
  font-size: 16px;
}

ul {
  margin: 0;
  padding: 0 0 0 1.5em;
}

li {
  margin: 1.5em 0;
  padding: 0;
}

b {
  /* used for event dates/times */
  margin-right: 3px;
}

.demo-app {
  display: flex;
  min-height: 100%;
  font-family: Arial, Helvetica Neue, Helvetica, sans-serif;
  font-size: 14px;
}

.demo-app-sidebar {
  width: 300px;
  line-height: 1.5;
  background: #eaf9ff;
  border-right: 1px solid #d3e2e8;
}

.demo-app-sidebar-section {
  padding: 2em;
}

.demo-app-main {
  flex-grow: 1;
  padding: 3em;
}

.fc {
  /* the calendar root */
  max-width: 1100px;
  margin: 0 auto;
}

文章来源地址https://www.toymoban.com/news/detail-643040.html

到了这里,关于笔记记录Vue+Element-ui+Fullcalendar简约日历排班的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue与Element-UI

    Vue.js是一套用于构建用户界面的 渐进式 框架。 渐进式 是指,它既可以作为一个库使用,又可以作为一个框架使用 ,两个之间自如选择。库是不具有侵略性,在原有项目可以引入作为第三方依赖使用;框架是具有侵入性的,整个项目是用vue构建的。 前端技术栈的发展主要经

    2024年02月16日
    浏览(42)
  • vue element-ui悬浮显示

    1.输入框 这样添加的时候calculationFormulaName默认添加的undefined 会报错 需要更改为 2.列表显示

    2024年02月08日
    浏览(49)
  • Element-ui配合vue上传图片

    这里为大家介绍饿了吗ui配合vue封装一个图片上传的组件  首先大家先看一个饿了吗ui文档的各个钩子函数的介绍! on-preview这个属性我们一般用来预览图片时使用 on-remove这个属性时文件被删除时执行 一般我们在这里面进行数组的筛选 让它保证为最新数组 on-change当文件被选择

    2024年02月09日
    浏览(77)
  • vue element-ui 常用事件方法

    已安装 elementUI 并正确引入 参数 说明 :action 是执行上传动作的 后台接口 ,本文置空采用 http-request 取而代之拦截请求,进行文件上传 :multiple=\\\"true\\\" 设置 是否可以同时选中多个文件上传 ,这个也是input type=\\\'file\\\'的属性 :limit=\\\"1\\\" 上传文件数量,设置 最多可以上传的文件数量 ,

    2023年04月14日
    浏览(48)
  • Vue Element-ui表单校验规则

      Element-ui表单校验规则,使得错误提示可以直接在form-item下面显示,无需弹出框,因此还是很好用的。   我在做了登录页面的表单校验后,一度以为我已经很了解表单的校验规则。但我在深入使用表单校验规则时,遇到下列问题: 如何判断属性值是否在某个范围内,且

    2024年02月03日
    浏览(79)
  • vue怎么安装element-ui教程

    1.在项目中打开cmd命令窗口,输入命令---- npm i element-ui -S命令 图1 安装成功: 图2 2.安装成功,将其引入到自己的项目中,具体操作步骤如下: 在main.js文件中 引入 element 组件  : import ElementUI from \\\'element-ui\\\' import \\\'element-ui/lib/theme-chalk/index.css\\\'  Vue.use(ElementUI) 图3 (1)如何判断

    2023年04月18日
    浏览(37)
  • 【VUE】4、VUE项目中引入Element-UI

    1、element-ui 官方文档(中文版) 2、安装 element-ui 1、进入项目目录下 2、安装 element-ui 注意: VUE2 使用的是 element-ui,VUE3 使用的是 element-plus 3、引入 element-ui(完整引入) 1、打开 main.js 文件 在 main.js 文件中,引入 element-ui 2、注册 element-ui 以上代码便完成了 Element 的引入。需

    2024年02月01日
    浏览(51)
  • 【Vue框架】Vue2中element-ui/mint-ui组件库——element-ui引入组件以及使用案例、mint-ui引入组件及使用案例

    element-ui 提供了大量的组件,如:布局组件、表单组件、JS组件等等。 Element-ui官网: https://element.eleme.cn/#/zh-CN 安装 Element-ui: npm i element-ui -S 1.1.1 引入组件 引入 Element 完整引入(在 main.js 中写入以下内容): 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到

    2024年02月07日
    浏览(55)
  • Vue Element-ui Table表格排序

    一.表格中有时候会有排序的需求,如果只针对当前页进行排序,那么前端就可以实现排序,在对应需要排序的字段中,使用sortable字段即可。 二.存在分页的情况时,前端仅仅使用sortable当前页排序已经不能满足我们的需求,无法对所有数据进行排序。这时候我们就要使用后端

    2024年02月11日
    浏览(50)
  • vue:element-ui表单动态验证规则

    实现当是否发送消息选择是时,业务类型字段必填。 当你在一个表单中使用 el-form 和 el-form-item 来创建表单项时, el-form-item 的 :rules 属性可以用来设置该表单项的验证规则。我们希望根据用户在 \\\"是否发送消息\\\" 这个表单项中的选择动态设置 \\\"业务类型\\\" 这个表单项的验证规则

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包