基于element日历组件实现签卡记录

本文实例为大家分享了基于element日历组件实现签卡记录的具体代码,供大家参考,具体内容如下

使用element日历组件为基础,实现可以查看每天签卡记录

<template>
  <div class="n-container">
    <div style="padding: 40px">
      <el-col :span="24">
        <div class="title">
          <div class="tpadding">我的考勤</div>
          <el-divider></el-divider>
        </div>
      </el-col>
      <el-col :span="24">
        <div class="block">
          <el-calendar v-model="recordTime" :first-day-of-week="7">
            <!-- 这里使用的是 2.5 slot 语法,对于新项目请使用 2.6 slot 语法-->
            <template slot="dateCell" slot-scope="{ date, data }">
              <!--自定义内容-->
              <div slot="reference" class="histyle" @click="getDateAtte(data)">
                <div class="calendar-day">
                  <el-popover
                    placement="left"
                    visible-arrow="false"
                    width="500"
                    trigger="click"
                  >
                    <el-table :data="recordList">
                      <el-table-column
                        width="140"
                        property="signState"
                        label="状态类型"
                      ></el-table-column>                     
                      <el-table-column
                        width="140"
                        property="signTime"
                        label="实际签卡时间"
                      ></el-table-column>
                      <!-- <el-table-column
                        width="120"
                        property="checkintime"
                        label="应签卡时间"
                      ></el-table-column> -->
 
                      <el-table-column
                        
                        property="attmachinename"
                        label="考勤机名称"
                      ></el-table-column>
                    </el-table>
                    <div slot="reference">
                      {{ data.day.split("-").slice(2).join("-") }}
                      <!-- <i class="el-icon-warning-outline is_waring"></i> -->
                    </div>
                  </el-popover>
                </div>
              </div>
            </template>
          </el-calendar>
        </div>
      </el-col>
    </div>
  </div>
</template>
 
<script>
import { listRecord } from "@/api/self/attendance";
export default {
  data() {
    return {
      recordTime: this.selectofearmonth,
      nosignList: [],
      queryParams: {
        userId: this.userIdVal,
        signTime: this.dt,
      },
      recordList: [],
    };
  },
  props: ["selectofearmonth", "dt", "userIdVal"],
  created() {},
  watch: {
    selectofearmonth: {
      handler(newVal, oldVal) {
        this.recordTime = this.parseTime(newVal, "{y}-{m}");
        this.getDateAtte();
      },
    },
  },
  methods: {
    getDateAtte(data) {
      this.queryParams.signTime = data.day;
      if (
        this.queryParams.signTime == null ||
        this.queryParams.signTime == ""
      ) {
        return "时间不能为空";
      }
      if (this.queryParams.userId == null || this.queryParams.userId == "") {
        return "用户ID不能为空";
      }
      listRecord(this.queryParams).then((data) => {
        if (data.code != 200) {
          return;
        }
        this.recordList = data.rows;
      });
    },
    //处理请求回的数据,与日历数据相挂钩
    dealMyDate(v) {
      let len = this.saveMothData.length;
      let res = {};
      for (let i = 0; i < len; i++) {
        if (this.saveMothData[i].memoDate == v) {
          res.hasMemo = true;
          res.memoLevel = this.saveMothData[i].memoLevel;
          res.memoTime = this.saveMothData[i].memoTime;
          break;
        }
      }
      return res;
    },
    //点击日历上每一天更新备忘录列表
    updateMemo(data) {
      this.chooseDay = data.day;
      this.memorandumCurrentPage = 1;
      const param = {
        pageNum: this.memorandumCurrentPage,
        pageSize: this.memorandumPageSize,
        param: {
          day: data.day,
          emplId: this.emplId,
        },
      };
      this.queryMemoList(param);
    },
    //查询备忘录列表
    queryMemoList(data, flag) {
      var param;
      if (data) {
        //
        param = data;
        param.emplId = this.emplId;
      } else {
        //不传data的情况,有可能是初次加载或者不传month也不传day
        param = {
          param: {
            emplId: this.emplId,
          },
          pageNum: this.memorandumCurrentPage,
          pageSize: this.memorandumPageSize,
        };
      }
    },
  },
};
</script>
 
<style scope>
.n-container {
  padding: 0px;
  box-shadow: 0 2px 12px 0 rgb(0 0 0 / 10%);
  height: 500px;
  margin-bottom: 10px;
}
.title {
  font-size: 16px;
  font-weight: bold;
  text-align: left;
}
.tpadding {
  padding-top: 12px;
}
.is-selected {
  color: #2936f3;
  font-size: 17px;
  margin-top: 5px;
}
.histyle {
  height: 35px;
}
.el-calendar-table .el-calendar-day {
  height: 30px;
}
.is_waring {
  color: rgb(236, 134, 17);
}
.is_right {
  color: rgb(145, 176, 235);
}
</style>

结果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • mpvue实现小程序签到金币掉落动画(api实现)

    这里使用小程序自带的api来实现,用小程序来写动画的恶心点在于,没有帧,只能用setimeout 来作为帧来使用, 下面是实现代码, 下面是简单用div代替了图片,需要什么图片,可以自行替换相应的div即可 需要变成原生小程序,则需要修改一下代码的写法 效果图: 创建金币动画组件 clockAnimation.vue <template> <div class="container" v-if='isShow'> <!-- 创建金币对象 --> &l

  • vue实现签到日历效果

    本文实例为大家分享了vue实现签到日历效果的具体代码,供大家参考,具体内容如下 先看看我们的效果图: 一.页面部分: <template>   <div class="test-page">     <div class="top">       <div class="button" v-if="!sign" @click="Sign">         &

  • 基于element日历组件实现签卡记录

    本文实例为大家分享了基于element日历组件实现签卡记录的具体代码,供大家参考,具体内容如下 使用element日历组件为基础,实现可以查看每天签卡记录 <template>   <div class="n-container">     <div style="padding: 40px">       <el-col :span="24">         <div class=&quo

  • 基于Element的组件改造的树形选择器(树形下拉框)

    前言:由于做项目需要一个树形选择器,项目用的也是element-ui框架,然而它自带的选择器组件没有树形选项,又不想引入其他的框架组件,于是自己利用el-select和el-tree改造了一个,感觉还挺好用的,就封装成了一个组件,如下图: element-ui的el-select组件的选项只能是列表形式: 改造后的树形选择器: 简介:此树形选择器组件是基于elment-ui框架的el-select和el-tree组件的基础上改造的,其解决了原el-select组件的选项列表不能是树形的问题,集合

  • vue中使用element日历组件的示例代码

    先看下效果图: 完整代码附上 <template> <div class="newSeeds" id="famerCalendar"> <div class="title-bottom"> <el-date-picker :clearable="false" prefix-icon="timeFilter" v-model="value2" ty

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

    辰小白小白最近在写日历模板,项目已经用了element组件,奈何element日历组件官方文档提供的资料实在太少了.所以这里希望有相关开发需要的朋友能够少走一些辰小白踩过的坑. 首先展示一些模板效果图: 这个项目的详细介绍可以下辰小白的这篇文章:后端开发的福音,vue+element实现的vue-element-admin前台框架,开箱即用 下面是日历模板首页源码 <template> <div> <el-card class="_calendar">

  • 基于Vue2-Calendar改进的日历组件(含中文使用说明)

    一,前言 我是刚学Vue的菜鸟,在使用过程中需要用到日历控件,由于项目中原来是用jQuery写的,因此用了bootstarp的日历控件,但是配合Vue实在有点蛋疼,不够优雅-- 于是网上搜了好久找到了Vue2-Calendar,不用说,挺好用的,但是同时也发现这个组件有些问题,有些功能挺不符合我们的要求,于是着手改了一版 二,改进的功能 在Vue2-Calendar v2.2.4 版基础上作了优化. 1.改进原控件无法切换语言的BUG,支持 lang='zh-CN'和'en'. 2.日历面板增加

  • 基于Element封装一个表格组件tableList的使用方法

    我们项目中使用的表格一般都比较类似,如果不进行封装的话,那么每个页面都可能有一些类似的代码.不仅浪费时间,而且由于开发人员不同的开发习惯.后期维护人员需要花费一点时间去看每个人的代码.所以我直接将表格做一个二次封装,只要一个人去维护这份代码即可.下面是我封装的内容 内容: 1.支持直接传入后台请求地址渲染列表,且参数修改之后自动刷新 2.支持自定义每一列的显示 3.支持根据内容自动撑开列宽 4.支持动态筛选表头 5.支持分页 6.防抖 7.列权限 ... 更多请自行尝试 以下是tableList

  • 详解基于element的区间选择组件校验(交易金额)

    需求: 这里以项目的需求为例,基本的需求如下: 分为左右值,包含左右值,正整数 左侧必须大于等于1,右侧无限大,右侧值必须不小于左侧 左侧填写数据,右侧标为必填:右侧填写数据,左侧标为必填 失焦校验成果: 代码如下:(页面) <el-col :span="8" v-if="item.qttccType === 1"> <el-col :span="14"> <el-form-item :label="ite

  • 基于element UI input组件自行封装“数字区间”输入框组件的问题及解决

    目录 问题描述 实现效果 实现代码 问题描述 在开发时遇到一个数字区间输入框的需求,如下图: 项目使用的是vue,组件库用的是element UI,但是element UI并没有提供数字区间组件,只提供了InputNumber 计数器输入框,如果用两个计数器输入框进行拼接也能满足需求,但是样式调试起来太过于复杂且不够灵活,不能令人满意,并且该数字区间输入框在其它界面也有这种需求,于是就在element input输入框的基础上自行封装了一个数字区间组件使用. 实现效果 实现效果如下: 使用方式如

  • vue基于Element构建自定义树的示例代码

    说明 做项目的时候要使用到一个自定义的树形控件来构建表格树,在github上搜了一下没有搜索到合适的(好看的)可以直接用的,查看Element的组件说明时发现它的Tree控件可以使用render来自定义节点样式,于是基于它封装了一个可以增.删.改的树形组件,现在分享一下它的使用与实现. 控件演示 github上挂的gif可能会比较卡,有没有大佬知道还有哪里可以挂静态资源的,谢谢..! 控件使用 概要 基于element-ui树形控件的二次封装 提供编辑.删除节点的接口 提供一个next钩子,在业

  • VUE实现日历组件功能

    哈哈, 就在昨天笔者刚刚在Github 上发布了一个基于VUE的日历组件.过去做日历都是需要引用 jquery moment 引用 fullCalendar.js 的.几者加起来体积庞大不说,也并不是很好使用在vue这种数据驱动的项目里.所以笔者经过一周的拍脑袋,做了一个十分简陋的版本. 简介 目前只支持月视图,该组件是 .vue 文件的形式.所以,大家在使用的时候 是需要node的咯~~~ 安装 npm install vue-fullcalendar DEMO 针对这个组件, 本人做了一个十

随机推荐