58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
|
|
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) || '检录进度加载失败,请稍后重试')
|
|||
|
|
});
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
});
|