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 相关文章推荐
解决使用attachEvent函数时,this指向被绑定的元素的问题的方法
Aug 13 Javascript
Node.js中的事件驱动编程详解
Aug 16 Javascript
Vue.js使用v-show和v-if的注意事项
Dec 13 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
Jul 20 Javascript
微信小程序授权登录解决方案的代码实例(含未通过授权解决方案)
May 10 Javascript
ES6顶层对象、global对象实例分析
Jun 14 Javascript
微信小程序和H5页面间相互跳转代码实例
Sep 19 Javascript
vue实现将一个数组内的相同数据进行合并
Nov 07 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
微信小程序实现滚动Tab选项卡
Nov 16 Javascript
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 ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
强大的jquery插件jqeuryUI做网页对话框效果!简单
2011/04/14 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
2015/08/14 Javascript
详解JavaScript UTC时间转换方法
2016/01/07 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
学好js,这些js函数概念一定要知道【推荐】
2017/01/19 Javascript
jquery实现的table排序功能示例
2017/03/10 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
JS实现的添加弹出层并完成锁屏操作示例
2017/04/07 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
从零学Python之入门(二)基本数据类型
2014/05/25 Python
python进阶教程之循环相关函数range、enumerate、zip
2014/08/30 Python
Python使用CMD模块更优雅的运行脚本
2015/05/11 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python cookbook(数据结构与算法)将多个映射合并为单个映射的方法
2018/04/19 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
领导调研接待方案
2014/02/27 职场文书
珠宝店促销方案
2014/03/21 职场文书
python运算符之与用户交互
2022/04/13 Python