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 相关文章推荐
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
9个JavaScript评级/投票插件
Jan 18 Javascript
IE6 fixed的完美解决方案
Mar 31 Javascript
JS限制上传图片大小不使用控件在本地实现
Dec 19 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
JavaScript中的this陷阱的最全收集并整理(没有之一)
Feb 21 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
Jun 01 Javascript
jQuery实现的简单动态添加、删除表格功能示例
Sep 21 jQuery
浅谈如何使用webpack构建多页面应用
May 30 Javascript
Angular脚手架开发的实现步骤
Apr 09 Javascript
Vue+Express实现登录注销功能的实例代码
May 05 Javascript
vue-video-player 断点续播的实现
Feb 01 Vue.js
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模板类代码
2008/09/07 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
js tab效果的实现代码
2009/12/26 Javascript
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
快速学习jQuery插件 Cookie插件使用方法
2015/12/01 Javascript
深入理解js中this的用法
2016/05/28 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
解析Vue2 dist 目录下各个文件的区别
2017/11/22 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
使用classList来实现两个按钮样式的切换方法
2018/01/24 Javascript
Vue.js 点击按钮显示/隐藏内容的实例代码
2018/02/08 Javascript
Java Varargs 可变参数用法详解
2020/01/28 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
python&amp;MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
利用python如何处理nc数据详解
2018/05/23 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
python web框架中实现原生分页
2019/09/08 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
公务员职务工作的自我评价
2013/11/01 职场文书
会计助理的岗位职责
2013/11/29 职场文书
化学实验员岗位职责
2013/12/28 职场文书
售后前台接待岗位职责
2015/04/03 职场文书
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android