element?ui?el-calendar日歷組件使用方法總結(jié)
1. 需求說明
按月顯示,每次只顯示一個月的日期,其余隱藏
日歷組件的顯示時間隨著上方選擇框的變化(比如我切換到6月份,下面也要同步切換到6月份)

點擊某一天可以添加事項(如果是空白的,未添加的),展示在對應的框里,同時添加懸浮展示的組件

如果是點擊有事項的,則是編輯事項(這里展示的是不同的彈框)

每一月的數(shù)據(jù)存到數(shù)據(jù)庫
2. 基礎實現(xiàn)
這里做的是數(shù)據(jù)渲染,以及事件綁定,新增與編輯是點擊不同的地方
<el-calendar v-model="value">
<template slot="dateCell" slot-scope="{ date, data }">
<div class="main-cd" @click="addPlan()">
<div class="calendar-day">
{{ data.day.split("-").slice(2).join("-") }}
</div>
<div
v-for="(item, index) in calendarData"
:key="index"
class="is-selected"
@click.stop="addPlan(item)"
>
<span v-if="item.day == data.day && item.timeDetailsList">
<el-tooltip placement="top">
<div slot="content">
<div
v-for="items in item.timeDetailsList"
:key="items.day"
>
{{ items.channelName }} :
{{ items.wechatNumber }}個微信號,
計劃投放{{ items.planNumber }},
實際加人
{{ items.realityNumber }}
</div>
</div>
// 這里寫兩遍是因為一個是框里展示,一個是懸浮組件內(nèi)展示的內(nèi)容
<div v-for="items in item.timeDetailsList" :key="items.day">
{{ items.channelName }} :
{{ items.wechatNumber }}個微信號,
計劃投放{{ items.planNumber }},
實際加人
{{ items.realityNumber }}
</div>
</el-tooltip>
</span>
</div>
</div>
</template>
</el-calendar>3. 只展示當月數(shù)據(jù)
這個其實官網(wǎng)有說明

但實際做起來是比較麻煩的,后面審查元素,找到了新大陸:

不同月份的日期是有不同的 class 標識的,一個邪惡的想法便出來了,那用 css 就可以搞定,何必費勁巴拉的寫 js
算是走了個捷徑吧,僅供參考,代碼如下:
::v-deep .el-calendar-table:not(.is-range) td.next {
display: none;
}
::v-deep .el-calendar-table:not(.is-range) td.prev {
visibility: hidden;
}4. 動態(tài)切換日歷里的數(shù)據(jù)實現(xiàn)
這個就更簡單了,監(jiān)聽輸入框的時間變化,傳入 日歷組件的model 即可,代碼如下:
monthChange(val) {
// 這里是監(jiān)聽時間變化 => @change="monthChange",然后傳入日歷組件
this.value = val;
// 時間切換的時候,順便調(diào)個接口查詢當月數(shù)據(jù)
this.editDetail();
},5. 順便把快捷方式隱藏了,不讓用戶選擇上一個月下一個月

- 因為在此處的需求,需要手動查詢,根據(jù)上方時間變化匹配對應數(shù)據(jù)
- 所以用戶點這個玩意也費勁,還要加事件監(jiān)聽,費力不討好了
- 實現(xiàn)也很簡單,還是 css 搞定(審查元素就行了),代碼如下:
::v-deep .el-calendar__button-group {
display: none;
}總結(jié)
到此這篇關(guān)于element ui el-calendar日歷組件使用方法的文章就介紹到這了,更多相關(guān)elementui el-calendar日歷組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue中axios的封裝問題(簡易版攔截,get,post)
這篇文章主要介紹了vue中axios的封裝問題(簡易版攔截,get,post),需要的朋友可以參考下2018-06-06

