58 lines
1.6 KiB
JavaScript
Raw Normal View History

const competition = require('../../../utils/competition');
Page({
data: {
eventId: null,
progress: null,
viewState: 'loading',
errorMessage: '',
refreshing: false
},
onLoad(options) {
const eventId = Number(options && options.eventId);
if (!eventId) {
this.setData({ viewState: 'error', errorMessage: '缺少赛事ID,无法查询检录进度' });
return;
}
this.setData({ eventId });
this.loadProgress();
},
onPullDownRefresh() {
this.setData({ refreshing: true });
this.loadProgress(true).finally(() => {
this.setData({ refreshing: false });
wx.stopPullDownRefresh();
});
},
onRetry() {
this.loadProgress();
},
loadProgress(silent = false) {
if (!this.data.eventId) return Promise.resolve();
if (!silent) this.setData({ viewState: 'loading', errorMessage: '' });
return competition.fetchCheckinProgress(this.data.eventId)
.then((progress) => {
this.setData({
progress,
viewState: progress.hasData ? 'content' : 'empty',
errorMessage: ''
});
})
.catch((error) => {
const statusCode = Number(error && error.statusCode);
const forbidden = statusCode === 401 || statusCode === 403;
this.setData({
progress: null,
viewState: forbidden ? 'forbidden' : 'error',
errorMessage: forbidden
? (statusCode === 401 ? '登录状态已失效,请重新登录' : '当前账号无权查看该赛事检录进度')
: ((error && error.message) || '检录进度加载失败,请稍后重试')
});
});
}
});