repetitionTime.js 8.82 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, day);
    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
    })
    // let weekList = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
    // if (this.data.timeYear[data[0]] == this.data.year && this.data.timeMonth[data[1]] == this.data.month) {
    //   // 修改日
    //   console.log('日')
    //   let date = new Date(this.data.year, this.data.month - 1, this.data.timeDay[data[2]])
    //   let week = weekList[date.getDay()]
    //   this.setData({
    //     day: this.data.timeDay[data[2]],
    //     week: week
    //   })
    // } else if (this.data.timeDay[data[2]] == this.data.day  && this.data.timeMonth[data[1]] == this.data.month) {
    //   debugger
    //   // 修改年
    //   console.log('年')
    //   let changeYearDate = new Date(this.data.timeYear[data[0]], this.data.timeMonth[data[1]], this.data.timeDay[data[2]]);
    //   let timeMonth = [];
    //   let timeDay = [];
    //   let isSameYear = this.data.timeYear[data[0]] == new Date().getFullYear()
    //   if (isSameYear) {
    //     for (let i = new Date().getMonth() + 1 > this.data.timeMonth[data[1]]  ? new Date().getMonth() + 1 : changeYearDate.getMonth(); i <= 12;i++) {
    //     timeMonth.push(i)
    //     }
    //     let day = this.getMonthLength(this.data.timeYear[data[0]],changeYearDate.getMonth(),1)
    //     for (let i = new Date().getMonth() + 1 == this.data.timeMonth[data[1]] ? new Date().getDate() : 1 ;i <= day;i++) {
    //       timeDay.push(i)
    //     }
    //     let week = weekList[changeYearDate.getDay()]
    //     this.setData ({
    //       timeMonth: timeMonth,
    //       timeDay: timeMonth,
    //       year: this.data.timeYear[data[0]],
    //       month: data[1] > timeMonth.length ? timeMonth[timeMonth.length] : timeMonth[data[1]],
    //       day: data[2] > timeDay.length ? timeDay[timeDay.length] : timeDay[data[2]],
    //       // pickerValue: pickerValue,
    //       week: week
    //     })
    //   } else {
    //     for (let i = 1; i <= 12;i++) {
    //       timeMonth.push(i)
    //     }
    //     let day = this.getMonthLength(this.data.timeYear[data[0]],timeMonth[data[1]],1)
    //     for (let i = 1 ;i <= day;i++) {
    //       timeDay.push(i)
    //     }
    //     let week = weekList[changeYearDate.getDay()]
    //     this.setData ({
    //       timeMonth: timeMonth,
    //       timeDay: timeMonth,
    //       year: this.data.timeYear[data[0]],
    //       month: data[1] > timeMonth.length ? timeMonth[timeMonth.length] : timeMonth[data[1]],
    //       day: data[2] > timeDay.length ? timeDay[timeDay.length] : timeDay[data[2]],
    //       // pickerValue: pickerValue,
    //       week: week
    //     })
    //   }
    //   // let pickerValue = [data[0],data[1] > timeMonth.length ? timeMonth.length : data[1],data[2] > timeDay.length ? timeDay.length : data[2]]
    // } else if (this.data.timeYear[data[0]] == this.data.year && this.data.timeDay[data[2]] == this.data.day) {
    //   // 修改月
    //   console.log('月')
    //   let changeMonthDate = new Date(this.data.timeYear[data[0]],this.data.timeMonth[data[1]]-1,1);
    //   let getMonthNum = this.getMonthLength(this.data.year,this.data.timeMonth[data[1]] - 1,1);
    //   let changeMonthTimeDay = [];
    //   if (this.data.timeYear[data[0]] == new Date().getFullYear()) {
    //     for (let i = this.data.timeMonth[data[1]] == new Date().getMonth() + 1 ? new Date().getDate() : 1 ;i < getMonthNum;i++){
    //       changeMonthTimeDay.push(i)
    //     }
    //     console.log(changeMonthTimeDay)
    //   } else {
    //     for (let i = 1;i<getMonthNum;i++){
    //       changeMonthTimeDay.push(i)
    //     }
    //     console.log(changeMonthTimeDay)
    //   }
    //   let weekMonthDate = new Date(this.data.timeYear[data[0]],this.data.timeMonth[data[1]],changeMonthTimeDay[data[2] > changeMonthTimeDay.length ? changeMonthTimeDay.length : data[2]])
    //   let week = weekList[weekMonthDate.getDay()];
    //   this.setData({
    //     month: this.data.timeMonth[data[1]],
    //     timeDay: changeMonthTimeDay,
    //     day: data[2] > changeMonthTimeDay.length ? changeMonthTimeDay[changeMonthTimeDay.length] : changeMonthTimeDay[data[2]],
    //     // pickerValue: [date[0], data[1],data[2] > timeDay.length ? timeDay.length : data[2]],
    //     week: week
    //   })
    // }
  }
});