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