// pages/history/history — 5 遛狗历史 + 手动补记 const { call } = require('../../utils/cloud.js'); const store = require('../../utils/store.js'); const { formatDurationCN, formatDistance, toDateStr } = require('../../utils/format.js'); Page({ data: { groups: [], dogs: [] }, onShow() { this.load(); }, async load() { const dogs = store.getState().dogs || []; this.setData({ dogs }); const res = await call('getHistory', {}); if (!res.ok) return; this.setData({ groups: this.groupByWeek(res.data.walks) }); }, // 本周 / 更早 groupByWeek(walks) { const now = new Date(); const dow = now.getDay() || 7; // 周一=1 const weekStart = new Date(now.getFullYear(), now.getMonth(), now.getDate() - (dow - 1)).getTime(); const thisWeek = []; const earlier = []; walks.forEach((w) => { const item = { _id: w._id, title: `${toDateStr(w.startAt)} · ${(w.dogNames || []).join('、')}`, sub: `${formatDurationCN(w.duration)} · ${formatDistance(w.distance)}`, isManual: w.isManual, }; (w.startAt >= weekStart ? thisWeek : earlier).push(item); }); const groups = []; if (thisWeek.length) groups.push({ label: '本周', items: thisWeek }); if (earlier.length) groups.push({ label: '更早', items: earlier }); return groups; }, openAdd() { this.selectComponent('#addSheet').open(); }, onSaved() { this.load(); }, });