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

 更新时间:2022年08月29日 09:46:25   作者:程序媛na  
这篇文章主要为大家详细介绍了基于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>

结果如图:

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

相关文章

  • ElementPlus表单rules校验的方法步骤

    ElementPlus表单rules校验的方法步骤

    相信大家经常都会遇到要处理表单验证的环节,而我在最近的项目中也遇到需要做表单验证的业务,下面这篇文章主要给大家介绍了关于ElementPlus表单rules校验的方法步骤,需要的朋友可以参考下
    2023-04-04
  • vue3+vite使用vite-plugin-svg-icons插件显示本地svg图标的方法

    vue3+vite使用vite-plugin-svg-icons插件显示本地svg图标的方法

    这篇文章主要介绍了vue3+vite使用vite-plugin-svg-icons插件显示本地svg图标的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-12-12
  • vue全局接入百度地图的实现示例

    vue全局接入百度地图的实现示例

    本文主要介绍了vue全局接入百度地图的实现示例,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • 浅析Vue中method与computed的区别

    浅析Vue中method与computed的区别

    在new Vue的配置参数中的computed和methods都可以处理大量的逻辑代码,但是什么时候用哪个属性,要好好区分一下才能做到正确的运用vue。这篇文章主要介绍了Vue中method与computed的区别,需要的朋友可以参考下
    2018-03-03
  • Vue Router history模式的配置方法及其原理

    Vue Router history模式的配置方法及其原理

    这篇文章主要介绍了Vue Router history模式的配置方法及其原理,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • vue实现标签云效果的方法详解

    vue实现标签云效果的方法详解

    这篇文章主要介绍了vue实现标签云效果的方法,结合实例形式详细分析了vue标签云的实现技巧与相关操作注意事项,需要的朋友可以参考下
    2019-08-08
  • Element Notification通知的实现示例

    Element Notification通知的实现示例

    这篇文章主要介绍了Element Notification通知的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • vue中后端做Excel导出功能返回数据流前端的处理操作

    vue中后端做Excel导出功能返回数据流前端的处理操作

    这篇文章主要介绍了vue中后端做Excel导出功能返回数据流前端的处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue实现吸壁悬浮球

    vue实现吸壁悬浮球

    这篇文章主要为大家详细介绍了vue实现吸壁悬浮球,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 使用Vant框架list组件遇到的坑及解决

    使用Vant框架list组件遇到的坑及解决

    这篇文章主要介绍了使用Vant框架list组件遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论