element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼
辰小白小白最近在寫日歷模板,項(xiàng)目已經(jīng)用了element組件,奈何element日歷組件官方文檔提供的資料實(shí)在太少了。所以這里希望有相關(guān)開發(fā)需要的朋友能夠少走一些辰小白踩過的坑。
首先展示一些模板效果圖:

這個(gè)項(xiàng)目的詳細(xì)介紹可以下辰小白的這篇文章:后端開發(fā)的福音,vue+element實(shí)現(xiàn)的vue-element-admin前臺(tái)框架,開箱即用
下面是日歷模板首頁源碼
<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 語法,對(duì)于新項(xiàng)目請(qǐng)使用 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">攜帶設(shè)備: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">攜帶設(shè)備: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">錯(cuò)誤提示的文案</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(() => {
// 點(diǎn)擊前一個(gè)月
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: "上個(gè)月頭天:" + this.value,
type: "success",
position: "top-left"
});
});
//點(diǎn)擊下一個(gè)月
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: "下個(gè)月頭天:" + this.value,
type: "warning",
position: "top-left"
});
});
//點(diǎn)擊今天
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: {
//點(diǎn)擊日期塊
calendarOnClick(e) {
console.log(e);
// this.isArrange.push("2020-06-19");
this.$notify.error({
title: "日歷塊點(diǎn)擊",
message: e,
position: "top-left"
});
},
//點(diǎn)擊信息塊
infoOnClick() {
this.$refs.calendarDrawer.drawer = true;
},
//新增排班
saveOnClick() {
this.$refs.calendarForm.dialogFormVisible = true;
},
//刪除排班
infoDel() {
this.$confirm("此操作將永久刪除該排班, 是否繼續(xù)?", "提示", {
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>
具體的幾個(gè)點(diǎn)擊事件都有備注,這里不細(xì)說了
到此這篇關(guān)于element日歷calendar組件上月、今天、下月、日歷塊點(diǎn)擊事件及模板源碼的文章就介紹到這了,更多相關(guān)element calendar組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue+SpringBoot開發(fā)V部落博客管理平臺(tái)
V部落是一個(gè)多用戶博客管理平臺(tái)。這篇文章主要介紹了Vue+SpringBoot開發(fā)V部落博客管理平臺(tái),需要的朋友可以參考下2017-12-12
vue3實(shí)現(xiàn)el-table分批渲染表格
這篇文章主要為大家詳細(xì)介紹了vue3項(xiàng)目中如何實(shí)現(xiàn)el-table分批渲染表格,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-11-11
Vue 路由切換時(shí)頁面內(nèi)容沒有重新加載的解決方法
今天小編就為大家分享一篇Vue 路由切換時(shí)頁面內(nèi)容沒有重新加載的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09
vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問題
這篇文章主要介紹了vue動(dòng)態(tài)路由加載時(shí)出現(xiàn)Cannot?find?module?xxx問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
vue2.0實(shí)現(xiàn)音樂/視頻播放進(jìn)度條組件
這篇文章主要為大家詳細(xì)介紹了vue2.0實(shí)現(xiàn)音樂和視頻播放進(jìn)度條組件的思路及具體實(shí)現(xiàn)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-06-06
el-upload http-request使用 多個(gè)文件上傳攜帶其他參數(shù)方式
這篇文章主要介紹了el-upload http-request使用 多個(gè)文件上傳攜帶其他參數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vscode中使用vue的一些插件總結(jié)(方便開發(fā))
對(duì)于很多使用vscode編寫vue項(xiàng)目的新手同學(xué)來說,可能不知道使用什么插件,下面這篇文章主要給大家介紹了關(guān)于vscode中使用vue的一些插件,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
解決elementUI 切換tab后 el_table 固定列下方多了一條線問題
這篇文章主要介紹了解決elementUI 切換tab后 el_table 固定列下方多了一條線問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07

