repetitionTime.js 4.65 KB
import create from 'dd-store'
import exampleStore from '/stores/exampleStore'
create.Page({
  store: exampleStore,
  useAll: true,
  data: {
    timeYear: [],
    timeMonth: ['01','02','03','04','05','06','07','08','09','10','11','12'],
    timeDay: [],
    pickerValue: [],
    year: '',
    month: '',
    day: '',
    week: '',
    isNeverStop: true,
    isBeOverdue: false,
  },
  onLoad() {
    if (!this.store.data.recurrenceModel.terminateTime || this.store.data.recurrenceModel.forever == '1') {
      let date = new Date();
      let year = date.getFullYear();
      let timeYear = [`${year}年`, `${year + 1}年`]
      let timeMonth = []
      let timeDay = []
      let thisDate = date.getDate()
      let weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
      for (let i = 1; i <= 12;i++) {
        timeMonth.push(`${i}月`)
      }
      let day = this.getMonthLength(year,date.getMonth(),1)
      for (let i = 1;i <= day;i++) {
        let thisweek = weekList[new Date(year,date.getMonth(),i).getDay()]
        timeDay.push(`${i}${thisweek}`)
      }
      this.setData({
        timeYear: timeYear,
        timeMonth: timeMonth,
        timeDay: timeDay,
        year: year,
        month: date.getMonth()+1,
        day: thisDate,
        week: weekList[date.getDay()],
        pickerValue: [timeYear.indexOf(`${date.getFullYear()}年`),timeMonth.indexOf(`${date.getMonth()+1}月`),timeDay.indexOf(`${date.getDate()}${weekList[date.getDay()]}`)]
      })
    } else {
      let date = new Date();
      let date2 = new Date(this.store.data.recurrenceModel.terminateTime.replace(/-/g, '/'))
      let year = date.getFullYear();
      let timeYear = [`${year}年`, `${year + 1}年`]
      let timeMonth = []
      let timeDay = []
      let thisDate = date2.getDate()
      let weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
      for (let i = 1; i <= 12;i++) {
        timeMonth.push(`${i}月`)
      }
      let day = this.getMonthLength(year,date2.getMonth(),1)
      for (let i = 1;i <= day;i++) {
        let thisweek = weekList[new Date(year,date2.getMonth(),i).getDay()]
        timeDay.push(`${i}${thisweek}`)
      }
      this.setData({
        timeYear: timeYear,
        timeMonth: timeMonth,
        timeDay: timeDay,
        year: year,
        month: date2.getMonth()+1,
        day: thisDate,
        week: weekList[date2.getDay()],
        pickerValue: [timeYear.indexOf(`${date2.getFullYear()}年`),timeMonth.indexOf(`${date2.getMonth()+1}月`),timeDay.indexOf(`${date2.getDate()}${weekList[date2.getDay()]}`)]
      })
    }
  },
  getMonthLength(year, month ,day) {
    let d = new Date(year, month ,day)
    // 将日期设置为下月一号
    d.setMonth(d.getMonth()+1)
    d.setDate('1')
    // 获取本月最后一天
    d.setDate(d.getDate()-1)
    return d.getDate()
  },
  switchChange(e) {
    this.store.data.recurrenceModel.forever = e.detail.value ? '1' : '0'
    this.update()
  },
  save(){
    if(this.data.isBeOverdue) {
      return false;
    } else {
      if (this.store.data.recurrenceModel.forever == '1') {
        let data = this.getTwoYearToday();
        this.store.data.recurrenceModel.terminateTime = data
      } else {
        this.store.data.recurrenceModel.terminateTime = `${this.data.year}-${this.data.month<10 ? '0' + this.data.month: this.data.month}-${this.data.day<10 ? '0'+ this.data.day : this.data.day}`
      }
      this.update();
      dd.navigateBack({
        delta: 1
      })
    }
  },
  getTwoYearToday(){
    let date = new Date()
    date.setYear(date.getFullYear() + 2)
    let year = date.getFullYear();
    let month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
    let day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
    return year + '-' + month + '-' + day
  },
  onChange(e) {
    let data = e.detail.value;
    let weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
    let year = new Date().getFullYear() + data[0];
    let month = data[1];
    let day = data[2] + 1;
    let date = new Date(year, month, day);
    let count = this.getMonthLength(year, month, 1);
    let timeDay = [];
    for (let i = 1; i <= count; i++) {
      let week = weekList[new Date(year,month,i).getDay()]
      timeDay.push(`${i}${week}`)
    }
    let isBeOverdue;
    if (date.getTime()< new Date().getTime()) {
      isBeOverdue = true
    } else {
      isBeOverdue = false
    }
    this.setData ({
      timeDay: timeDay,
      year: year,
      month: month + 1,
      day: day,
      week: weekList[date.getDay()],
      isBeOverdue: isBeOverdue,
      pickerValue: [data[0],data[1],data[2]]
    })
  }
});