免费发布

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

  • 时间:2020-11-06 11:23:46
  • vue.js
  • 浏览量:0
  • 发布会员:newlegou
  • 举报
  •   辰小白小白最近在写日历模板,项目已经用了element组件,奈何element日历组件官方文档提供的资料实在太少了。所以这里希望有相关开发需要的朋友能够少走一些辰小白踩过的坑。

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

     这个项目的具体简介可以下辰小白的这篇文章:后端开发的福音,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组件内容请搜索乐购源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持乐购源码!

    提示:喜欢这个作品给它点个红心和关注吧
    newlegou