riku
8 小时以前 cf4787bc8188cd0acc8a42793730b076742f29c1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import taskApi from '../../api/taskApi';
import dayjs from 'dayjs';
 
Page({
  /**
   * 页面的初始数据
   */
  data: {
    minDate: new Date(2026, 0, 1).getTime(),
    maxDate: new Date(2026, 3, 30).getTime(),
    thisDate: new Date().getTime(),
 
    toptask: {
      options: [],
      value: '',
    },
    daytasks: [],
  },
 
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.fetchToptask();
  },
 
  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {},
 
  /**
   * 修改总任务事件处理函数
   */
  onToptaskChange(e) {
    console.log('onToptaskChange', e);
    this.setData({
      'toptask.value': e.detail.value,
    });
    this.fetchDayTasks();
  },
 
  /**
   * 切换月份或年份事件处理函数
   */
  handelMonthChange(e) {
    console.log('handelMonthChange', e);
    const { year, month } = e.detail;
    let thisDay = dayjs(this.data.thisDate);
    thisDay = thisDay.year(year);
    thisDay = thisDay.month(month - 1);
    this.setData({ thisDate: thisDay.toDate().getTime() });
    this.fetchToptask();
  },
 
  /**
   * 根据日任务情况,格式化对应日期的样式和内容
   * @param {TDate } day
   * TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string;}
   * type TDateType = 'selected' | 'disabled' | 'start' | 'start-end' |'centre' | 'end' | ''
   */
  _formatCalendarDay(day) {
    console.log('_formatCalendarDay', day);
    const { date } = day;
    const year = date.getFullYear();
    const month = date.getMonth() + 1;
    const curDate = date.getDate();
 
    const { daytasks } = this.data;
 
    // 查找当天是否有日任务
    const fdt = daytasks.find(d => {
      return dayjs(d.date).isSame(dayjs(date), 'day');
    });
 
    if (fdt) {
      day.suffix = `${fdt.completeTaskNum}/${fdt.totalTaskNum}`;
    }
    return day;
  },
 
  /**
   * 点击日期事件处理函数
   */
  handleSelectDay(e) {
    const date = new Date(e.detail.value);
    console.log('handleSelectDay', date);
  },
 
  /**
   * 根据所选时段获取总任务
   */
  fetchToptask() {
    this.setData({ pageLoading: true });
    const thisDay = dayjs(this.data.thisDate);
    const starttime = thisDay.startOf('month').format('YYYY-MM-DD HH:mm:ss');
    const endtime = thisDay.endOf('month').format('YYYY-MM-DD HH:mm:ss');
    taskApi.fetchTopTasks({ starttime, endtime }).then(res => {
      const options = res.data.map(r => {
        return {
          label: r.name,
          value: r.tguid,
        };
      });
      this.setData({
        toptask: {
          options,
          value: options.length > 0 ? options[0].value : '',
        },
      });
      this.fetchDayTasks();
    });
  },
 
  /**
   * 获取每日任务统计信息
   */
  fetchDayTasks() {
    this.setData({ pageLoading: true });
    taskApi
      .fetchDayTasks(this.data.toptask.value)
      .then(res => {
        this.setData({ daytasks: res });
        setTimeout(() => {
          const _formatCalendarDay = this._formatCalendarDay;
          this.setData({ formatCalendarDay: _formatCalendarDay });
        }, 1000);
      })
      .finally(() => this.setData({ pageLoading: false }));
  },
});