前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mpvue实现周日历插件

mpvue实现周日历插件

原创
作者头像
anna
发布2019-01-29 17:54:24
2.3K0
发布2019-01-29 17:54:24
举报
代码语言:javascript
复制
<template>
  <view class="page">
    <view class="page_bd" v-for="(item,index) in data ">
      <view class="weui-loadmore ">
        <view class="weui-loadmore__tips ">{{item.month}}月</view>
      </view>
      <view class="weui-flex" style="padding:0 60rpx;">
        <view class="weui-flex__item" v-for="(week,inx) in item.week" :class="[week.time[2] ? 'gray': '']">
          <view class="placeholder">第{{week.time[1]}}周</view>
          <view class="placeholder">{{week.time[0]}}</view>
        </view>
      </view>

    </view>
  </view>

</template>

<script scoped>
  import format from '@/utils/date.format.js'

  export default {
    data() {
      return {
        data: ''
      }
    },
    onLoad: function() {
      let date = new Date() //当前日期
      let year = date.getFullYear() //当前年

      var days = []
      var counts = []
      for (var i = 1; i <= 12; i++) {
        days.push({
          month: i,
          week: this.get_week_list(year, i)
        })
      }
      this.data = days
      console.log('days', days)
    },
    methods: {
      //获取每月的周数&&起始日期
      get_week_list(year, month) {
        var week_count = ''
        var day_count = []
        week_count = this.getWeeks(year, month)
        for (var j = 1; j <= week_count; j++) {
          day_count.push({
            month: month,
            time: this.getWeekTime(year, month, j)
          })
        }
        return day_count
      },
      //获取每月有几周
      getWeeks(year, month) {
        var d = new Date()
        // 该月第一天
        d.setFullYear(year, month - 1, 1)
        var w1 = d.getDay()
        if (w1 == 0) w1 = 7
        // 该月天数
        d.setFullYear(year, month, 0)
        var dd = d.getDate()
        // 第一个周一
        let d1
        if (w1 != 1) d1 = 7 - w1 + 2
        else d1 = 1
        let week_count = Math.ceil((dd - d1 + 1) / 7)
        return week_count
      },
      //根据年月周获取该周从周一到周日的日期
      getWeekTime(year, month, weekday) {
        var d = new Date()
        // 该月第一天
        d.setFullYear(year, month - 1, 1)
        var w1 = d.getDay()
        if (w1 == 0) w1 = 7
        // 该月天数
        d.setFullYear(year, month, 0)
        var dd = d.getDate()
        // 第一个周一
        let d1
        if (w1 != 1) d1 = 7 - w1 + 2
        else d1 = 1
        var monday = d1 + (weekday - 1) * 7
        var sunday = monday + 6
        var from = year + '-' + month + '-' + monday
        var to
        if (sunday <= dd) {
          to = year + '-' + month + '-' + sunday
        } else {
          d.setFullYear(year, month - 1, sunday)
          let days = d.getDate()
          to = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + days
        }

        //拼接每周的起始时间
        var a =
          from.split('-')[1] +
          '.' +
          from.split('-')[2] +
          '-' +
          to.split('-')[1] +
          '.' +
          to.split('-')[2] +
          ''

        //判断当前标志是否该灰掉
        let date = new Date() //当前日期
        let years = date.getFullYear() //当前年
        let months = date.getMonth() + 1 //当前月份
        let days = date.getDate() //当天
        var flag = 0 //灰色背景标记,1代表灰度,0代表正常
        if (
          years < year ||
          (years == year && months < month) ||
          (years == year &&
            months == month &&
            (from.split('-')[2] <= days && days <= to.split('-')[2]))
        ) {
          flag = 1
        } else {
          flag = 0
        }
        return [a, weekday, flag]
      }
    },
    mounted: function() {
      wx.setNavigationBarTitle({
        title: '选择时间'
      })
    }
  }
</script>
<style scoped>
  .page,
  .page_bd,
  .weui-loadmore {
    background-color: #fff;
  }
  .weui-flex {
    display: flex;
    flex-flow: row wrap; /* 换行 */
    align-items: center;
    background-color: #fff;
  }
  .weui-flex__item {
    flex: 0 1 25%; /* 宽度 */
    padding: 15px 0;
    text-align: center; /*  或者 display: flex; */
    box-sizing: border-box;
    float: left;
  }
  .weui-flex__item:nth-of-type(4n + 4) {
    border-right: none;
  }
  .placeholder {
    font-size: 24rpx;
  }
  .gray {
    color: #808080;
  }
</style>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档