element日历calendar组件上月、今天、下月、日历块点击事件及模板源码


Posted in Javascript onJuly 27, 2020

  辰小白小白最近在写日历模板,项目已经用了element组件,奈何element日历组件官方文档提供的资料实在太少了。所以这里希望有相关开发需要的朋友能够少走一些辰小白踩过的坑。

首先展示一些模板效果图:

element日历calendar组件上月、今天、下月、日历块点击事件及模板源码

 这个项目的详细介绍可以下辰小白的这篇文章:后端开发的福音,vue+element实现的vue-element-admin前台框架,开箱即用

下面是日历模板首页源码

<template>
 <div>
  <el-card class="_calendar">
   <el-container>
    <el-main>
     <el-card>
      <el-calendar v-model="value" :first-day-of-week="7">
       <!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法-->
       <template slot="dateCell" slot-scope="{date, data}">
        <div slot="reference" class="div-Calendar" @click="calendarOnClick(data)">
         <p :class="data.isSelected ? 'is-selected' : ''">
          {{ data.day.split('-').slice(1).join('-') }}
          <i
           :class="[data.isSelected ?'el-icon-check':'']"
          ></i>
          <i v-if="_.indexOf(isArrange, data.day)>0" class="el-icon-s-claim"></i>
          <!-- <i class="el-icon-coffee-cup"></i> -->
         </p>
        </div>
       </template>
      </el-calendar>
     </el-card>
    </el-main>
 
    <el-aside width="40%" style="overflow: hidden;">
     <el-card>
      <div class="el-calendar__header">
       <div class="el-calendar__title">排班详情</div>
       <div class="el-calendar__button-group">
        <div class="el-button-group">
         <button
          type="button"
          class="el-button el-button--plain el-button--mini"
          @click="saveOnClick"
         >
          <span>新增</span>
         </button>
        </div>
       </div>
      </div>
      <div class="calendar-info">
       <div style="padding: 15px;">
        <div role="alert" class="el-alert el-alert--success is-dark" @click="infoOnClick">
         <i class="el-alert__icon el-icon-success is-big"></i>
         <div class="el-alert__content">
          <span class="el-alert__title is-bold">2020-06-19 9:00~11:00</span>
          <p class="el-alert__description">值班人员:张三、李四、王五</p>
          <p class="el-alert__description">携带设备:123547、985431、745481</p>
          <i class="el-alert__closebtn el-icon-close" @click.stop="infoDel"></i>
         </div>
        </div>
        <div role="alert" class="el-alert el-alert--info is-dark" @click="infoOnClick">
         <i class="el-alert__icon el-icon-info is-big"></i>
         <div class="el-alert__content">
          <span class="el-alert__title is-bold">2020-06-19 9:00~11:00(待审核)</span>
          <p class="el-alert__description">值班人员:张三、李四、王五</p>
          <p class="el-alert__description">携带设备:123547、985431、745481</p>
          <i class="el-alert__closebtn el-icon-close"></i>
         </div>
        </div>
        <div role="alert" class="el-alert el-alert--warning is-dark" @click="infoOnClick">
         <i class="el-alert__icon el-icon-warning is-big"></i>
         <div class="el-alert__content">
          <span class="el-alert__title is-bold">警告提示的文案</span>
          <p class="el-alert__description">文字说明文字说明文字说明文字说明文字说明文字说明</p>
          <i class="el-alert__closebtn el-icon-close"></i>
         </div>
        </div>
        <div role="alert" class="el-alert el-alert--error is-dark" @click="infoOnClick">
         <i class="el-alert__icon el-icon-error is-big"></i>
         <div class="el-alert__content">
          <span class="el-alert__title is-bold">错误提示的文案</span>
          <p class="el-alert__description">文字说明文字说明文字说明文字说明文字说明文字说明</p>
          <i class="el-alert__closebtn el-icon-close"></i>
         </div>
        </div>
       </div>
      </div>
     </el-card>
    </el-aside>
   </el-container>
  </el-card>
  <calendarDrawer ref="calendarDrawer"></calendarDrawer>
  <calendarForm ref="calendarForm"></calendarForm>
 </div>
</template>
<script>
import calendarDrawer from "./calendar-drawer.vue";
import calendarForm from "./calendar-form.vue";
export default {
 components: { calendarDrawer, calendarForm },
 data: function() {
  return {
   value: new Date(),
   isArrange: [
    "2020-06-08",
    "2020-06-09",
    "2020-06-10",
    "2020-06-11",
    "2020-06-17",
    "2020-06-18"
   ]
  };
 },
 created: function() {
  this.$nextTick(() => {
   // 点击前一个月
   let prevBtn = document.querySelector(
    ".el-calendar__button-group .el-button-group>button:nth-child(1)"
   );
   prevBtn.addEventListener("click", e => {
    console.log(this.data);
    this.$notify({
     title: "上一月",
     message: "上个月头天:" + this.value,
     type: "success",
     position: "top-left"
    });
   });
 
   //点击下一个月
   let nextBtn = document.querySelector(
    ".el-calendar__button-group .el-button-group>button:nth-child(3)"
   );
   nextBtn.addEventListener("click", () => {
    console.log(this.value);
    this.$notify({
     title: "下一月",
     message: "下个月头天:" + this.value,
     type: "warning",
     position: "top-left"
    });
   });
 
   //点击今天
   let todayBtn = document.querySelector(
    ".el-calendar__button-group .el-button-group>button:nth-child(2)"
   );
   todayBtn.addEventListener("click", () => {
    this.$notify.info({
     title: "今天",
     message: "今天:" + this.value,
     position: "top-left"
    });
   });
  });
 },
 mounted: function() {},
 methods: {
  //点击日期块
  calendarOnClick(e) {
   console.log(e);
   // this.isArrange.push("2020-06-19");
   this.$notify.error({
    title: "日历块点击",
    message: e,
    position: "top-left"
   });
  },
  //点击信息块
  infoOnClick() {
   this.$refs.calendarDrawer.drawer = true;
  },
  //新增排班
  saveOnClick() {
   this.$refs.calendarForm.dialogFormVisible = true;
  },
  //删除排班
  infoDel() {
   this.$confirm("此操作将永久删除该排班, 是否继续?", "提示", {
    confirmButtonText: "确定",
    cancelButtonText: "取消",
    type: "warning"
   })
    .then(() => {
     this.$message({
      type: "success",
      message: "删除成功!"
     });
    })
    .catch(() => {
     this.$message({
      type: "info",
      message: "已取消删除"
     });
    });
  }
 }
};
</script>
<style scoped>
.is-selected {
 color: #1989fa;
}
.p-popover {
 text-align: center;
}
._calendar {
 height: 99.5%;
 width: 100%;
}
.el-main {
 padding: 0px;
 overflow: hidden;
}
.calendar-info {
 height: 94%;
 overflow: auto;
}
.el-alert {
 margin: 15px 0px;
}
.el-alert:hover {
 transform: scale(1.02);
}
.el-alert:active {
 transform: scale(1.01);
}
</style>
<style >
._calendar .div-Calendar {
 height: 125px;
 box-sizing: border-box;
 padding: 8px;
}
._calendar .el-calendar-table .el-calendar-day {
 padding: 0px;
 height: 125px;
}
._calendar .el-container,
._calendar .el-calendar {
 height: 100%;
}
._calendar .el-card__body {
 padding: 0px;
}
</style>

 具体的几个点击事件都有备注,这里不细说了

到此这篇关于element日历calendar组件上月、今天、下月、日历块点击事件及模板源码的文章就介绍到这了,更多相关element calendar组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
May 06 Javascript
JQuery选择器特辑 详细小结
May 14 Javascript
jqplot通过ajax动态画折线图的方法及思路
Dec 08 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
jQuery实现下拉框选择图片功能实例
Aug 08 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
Nov 23 Javascript
基于jquery实现百度新闻导航菜单滑动动画
Mar 15 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
Bootstrap面板学习使用
Feb 09 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
JS图片懒加载技术实现过程解析
Jul 27 #Javascript
Element Notification通知的实现示例
Jul 27 #Javascript
Vue中watch、computed、updated三者的区别及用法
Jul 27 #Javascript
Element Backtop回到顶部的具体使用
Jul 27 #Javascript
解决vue中的无限循环问题
Jul 27 #Javascript
Element MessageBox弹框的具体使用
Jul 27 #Javascript
Vue 组件复用多次自定义参数操作
Jul 27 #Javascript
You might like
php中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
一个简单的js鼠标划过切换效果
2010/06/30 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
javascript 利用arguments实现可变长参数
2016/11/21 Javascript
JS日程管理插件FullCalendar简单实例
2017/02/07 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
js console.log打印对象时属性缺失的解决方法
2019/05/23 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
vue-cli+webpack项目打包到服务器后,ttf字体找不到的解决操作
2020/08/28 Javascript
vue实现按钮切换图片
2021/01/20 Vue.js
原生JavaScript实现幻灯片效果
2021/02/19 Javascript
py2exe 编译ico图标的代码
2013/03/08 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
Python 实现数据库更新脚本的生成方法
2017/07/09 Python
python的exec、eval使用分析
2017/12/11 Python
Python+OpenCV图片局部区域像素值处理改进版详解
2019/01/23 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python函数和模块的使用总结
2019/05/20 Python
django写用户登录判定并跳转制定页面的实例
2019/08/21 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
python爬虫中PhantomJS加载页面的实例方法
2020/11/12 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
python re模块和正则表达式
2021/03/24 Python
我的中国梦演讲稿初中篇
2014/08/19 职场文书
大一新生检讨书
2014/10/29 职场文书
2015年话务员工作总结
2015/04/29 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL