本文实例为大家分享了基于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>
结果如图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
查看更多关于基于element日历组件实现签卡记录的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did121414