首页 > 其他 > 详细

日历通讯录或者日历备忘录

时间:2020-06-18 22:40:41      阅读:76      评论:0      收藏:0      [点我收藏+]
日历通讯录 日历备忘录 组件

参考地址:https://www.cnblogs.com/520BigBear/p/11781495.html

<template>
    <div class="calender">
        <div class="top">
            <div class="btn_wrap">
                <ul>
                    <li @click="handleShowLastMonth" class="rotate-li">
                        <i class="icon-arrow-down iconfont"></i>
                    </li>
                    <li class="data-now-box">{{year}}年{{month}}月</li>
                    <li @click="handleShowNextMonth">
                        <i class="icon-arrow-down iconfont"></i>
                    </li>
                </ul>

                <div class="open-div">
                    <i @click="hiddentCalendarCont" class="icon-folding iconfont"></i>
                </div>
            </div>
            <!-- <li @click="handleShowToday">今可以得到今天的值  </li> -->
        </div>

        <el-collapse-transition>
            <div class="date_wrap" v-show="calendarFlag">
                <ul class="my-week">
                    <li>日</li>
                    <li>一</li>
                    <li>二</li>
                    <li>三</li>
                    <li>四</li>
                    <li>五</li>
                    <li>六</li>
                </ul>
                <ul class="day">
                    <li
                        class="item-data-cricle"
                        v-for="(item,index) in days"
                        :key="index"
                        :class="{now:nowLi==year.toString()+month.toString()+item}"
                    >{{item}}</li>
                </ul>

                <!-- 消息 -->
                <el-carousel
                    height="70px"
                    class="cont-swiper"
                    arrow="always"
                    indicator-position="none"
                    :autoplay="autoplayfalse"
                >
                    <el-carousel-item v-for="item in 4" :key="item">
                        <div class="bolck-div">
                            <div class="group-coommit-box">
                                <div class="group-coommit">
                                    <div class="circle-point"></div>教研组集体会议
                                </div>
                                <p>11:20~12:00</p>
                            </div>
                        </div>
                    </el-carousel-item>
                </el-carousel>
                <!-- 这一部分使用的是elementUI中的走马灯 
                always 箭头总是显示出来  autoplay是否是自动轮播
                indicator-position 只是等关闭
                -->
            </div>
        </el-collapse-transition>
    </div>
</template>

<script>
export default {
    name: ‘calender‘,
    data() {
        return {
            year: ‘‘,
            month: ‘‘,
            days: [],
            nowLi: ‘‘,
            calendarFlag: true,
            autoplayfalse: false,
        }
    },
    methods: {
        //控制当前日期显示特殊样式
        handleShowDateStyle() {
            let now = new Date()
            this.nowLi = now.getFullYear().toString() + (now.getMonth() + 1).toString() + now.getDate().toString()
            console.log(this.nowLi)
        },
        //得到当前年这个月分有多少天
        getDays(Y, M) {
            let day = new Date(Y, M, 0).getDate()
            return day;
        },
        //得到当前年,这个月的一号是周几
        getWeek(Y, M) {
            let now = new Date()
            now.setFullYear(this.year)
            now.setMonth(this.month - 1)
            now.setDate(1);
            let week = now.getDay();
            return week;
        },
        pushDays() {
            //将这个月多少天加入数组days
            for (let i = 1; i <= this.getDays(this.year, this.month); i++) {
                this.days.push(i)
            }
            //将下个月要显示的天数加入days
            // for(let i = 1;i<=42-this.getDays(this.year,this.month)-this.getWeek(this.year,this.month);i++){
            //   this.days.push(i)
            // }
            //将上个月要显示的天数加入days
            for (let i = 0; i < this.getWeek(this.year, this.month); i++) {
                var lastMonthDays = this.getDays(this.year, this.month - 1)
                this.days.unshift(lastMonthDays - i)
            }
            console.log(this.days)
            console.log(this.getWeek(this.year, this.month))
        },
        getDate() {
            let now = new Date();
            this.year = now.getFullYear();
            this.month = now.getMonth() + 1;
            this.pushDays();

        },
        changeDate() {

        },
        handleShowNextMonth() {
            this.days = [];
            if (this.month < 12) {
                this.month = this.month + 1;
                this.pushDays();
            } else {
                this.month = this.month = 1;
                this.year = this.year + 1;
                this.pushDays();
            }

        },
        handleShowToday() {
            this.days = [];
            let now = new Date();
            this.year = now.getFullYear();
            this.month = now.getMonth() + 1;
            this.pushDays();
        },
        handleShowLastMonth() {
            this.days = [];
            if (this.month > 1) {
                this.month = this.month - 1;
                this.pushDays();
            } else if (this.year > 1970) {
                this.month = 12;
                this.year = this.year - 1;
                this.pushDays();
            } else {
                alert("不能查找更远的日期")
            }

        },
        hiddentCalendarCont() {
            this.calendarFlag = !this.calendarFlag;
        }
    },
    mounted() {
        this.getDate();
        this.handleShowDateStyle();
    }
}
</script>
<style scoped>
.calender {
    border-radius: 10px;
    background: #fff;
}
.top {
    width: 100%;
    position: relative;
    display: flex;
}

.btn_wrap {
    display: flex;
    justify-content: space-between;
    width: 100%;
    height: 57px;
    line-height: 57px;
}

.btn_wrap ul {
    display: flex;
}
.data-now-box {
    margin-left: 28px;
    margin-right: 28px;
}
.open-div {
    flex: 1;
    text-align: right;
    margin-right: 20px;
}

.btn_wrap ul li {
    font-size: 14px;
    cursor: pointer;
}

.btn_wrap ul li:hover {
    background: #ddd;
    color: red;
}
.date_wrap {
    /* 因为日历可能是六行 这样稿库不就会发生改变 */
    height: 327px;
}

.my-week {
    display: flex;
    font-size: 16px;
    padding-left: 14px;
    padding-right: 28px;
    justify-content: space-between;
    background: #f8fafb;
    height: 40px;
    line-height: 40px;
    border: 1px solid #eff3f4;
}

.day {
    display: flex;
    font-size: 16px;
    flex-wrap: wrap;
}

.now {
    background: #f2f8fe;
    color: #1989fa;
}

.item-data-cricle {
    width: 36px;
    height: 36px;
    line-height: 36px;
    border-radius: 50%;
    text-align: center;
    margin-left: 6px;
    margin-right: 16px;
}

.rotate-li {
    transform: rotate(180deg);
    margin-left: 130px;
}

/* 轮播开始 */
.cont-swiper {
    background: #fff;
    line-height: 70px;
    border-top: 1px solid #eaeaea;
}
.cont-swiper >>> .el-carousel__container .el-carousel__arrow--left {
    display: none !important;
    /* 隐藏左边的轮播 箭头 */
}

.bolck-div {
    display: flex;
    height: 70px;
    padding-left: 24px;
}
.circle-point {
    width: 8px;
    height: 8px;
    border-radius: 4px;
    background: #3e8ef7;
    margin-right: 9px;
}
.group-coommit-box {
    height: 20px;
    line-height: 20px;
    padding-top: 15px;
    padding-bottom: 15px;
}
.group-coommit {
    display: flex;
    align-items: center;
}
</style>

技术分享图片

需要注意的是 
这个日历的高度会改变,因为有可能当前页的历史会显示5行
也有可能显示6行
所以历史的高度会发生改变

日历通讯录或者日历备忘录

原文:https://www.cnblogs.com/IwishIcould/p/13160477.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!