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 相关文章推荐
激活 ActiveX 控件
Oct 09 Javascript
javascript 跳转代码集合
Dec 03 Javascript
JavaScript 上万关键字瞬间匹配实现代码
Jul 07 Javascript
利用javascript实现web页面中指定区域打印
Oct 30 Javascript
用JQuery实现全选与取消的两种简单方法
Feb 22 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
Oct 10 Javascript
JavaScript中日常收集常见的10种错误(推荐)
Jan 08 Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 Javascript
vue-router 学习快速入门
Mar 01 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
Sep 25 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 创建标签云函数代码
2010/05/26 PHP
php中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
JS 实现导航栏悬停效果(续2)
2013/09/24 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
js钢琴按钮波浪式图片排列效果代码分享
2015/08/26 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
vue学习之mintui picker选择器实现省市二级联动示例
2017/10/12 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
详解如何使用PM2将Node.js的集群变得更加容易
2017/11/15 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
JS扁平化输出数组的2种方法解析
2019/09/17 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
Python 中 -m 的典型用法、原理解析与发展演变
2019/11/11 Python
浅谈python输出列表元素的所有排列形式
2020/02/26 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
Python新手学习标准库模块命名
2020/05/29 Python
Django视图、传参和forms验证操作
2020/07/15 Python
Python经典五人分鱼实例讲解
2021/01/04 Python
Numpy中的数组搜索中np.where方法详细介绍
2021/01/08 Python
python绘图模块之利用turtle画图
2021/02/12 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
自我评价优秀范文分享
2013/11/30 职场文书
大学生求职自我评价
2014/01/16 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
html网页引入svg图片的4种方式
2022/08/05 HTML / CSS