init
项目初始化
This commit is contained in:
74
pages/home/home.js
Normal file
74
pages/home/home.js
Normal file
@@ -0,0 +1,74 @@
|
||||
const api = require('../../utils/api');
|
||||
const auth = require('../../utils/auth');
|
||||
|
||||
function errMessage(err) {
|
||||
if (err && typeof err === 'object') {
|
||||
if (err.detail) return String(err.detail);
|
||||
if (err.error) return String(err.error);
|
||||
if (err.message) return String(err.message);
|
||||
}
|
||||
return '加载失败,请稍后再试';
|
||||
}
|
||||
|
||||
Page({
|
||||
data: {
|
||||
greeting: '',
|
||||
displayName: '',
|
||||
encouragement: '',
|
||||
modules: [],
|
||||
loading: true,
|
||||
error: '',
|
||||
skeletonItems: [0, 1, 2, 3, 4, 5, 6, 7, 8]
|
||||
},
|
||||
|
||||
onShow() { this.loadHome(); },
|
||||
|
||||
loadHome(silent) {
|
||||
if (!silent) {
|
||||
this.setData({ loading: true, error: '' });
|
||||
}
|
||||
return auth.ensureLogin()
|
||||
.then((token) => {
|
||||
if (!token) {
|
||||
// 新用户未绑定手机号,引导去「我的」完成绑定,避免无 token 请求受保护接口导致 401
|
||||
this.setData({ loading: false, error: '请先完成微信绑定后再进入' });
|
||||
setTimeout(() => wx.switchTab({ url: '/pages/profile/profile' }), 500);
|
||||
return;
|
||||
}
|
||||
return api.request({ url: '/api/v1/pages/home' });
|
||||
})
|
||||
.then((res) => {
|
||||
if (!res) return;
|
||||
this.setData({
|
||||
loading: false,
|
||||
error: '',
|
||||
greeting: res.greeting || '',
|
||||
displayName: res.display_name || '',
|
||||
encouragement: res.encouragement || '',
|
||||
modules: (res.modules || []).filter((m) => m.visible)
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
this.setData({ loading: false, error: errMessage(err) });
|
||||
});
|
||||
},
|
||||
|
||||
onPullDownRefresh() {
|
||||
this.loadHome(true).then(() => {
|
||||
wx.stopPullDownRefresh();
|
||||
});
|
||||
},
|
||||
|
||||
onRetry() {
|
||||
this.loadHome();
|
||||
},
|
||||
|
||||
onModuleTap(e) {
|
||||
const url = e.currentTarget.dataset.url;
|
||||
if (!url) return;
|
||||
const token = auth.getToken();
|
||||
const sep = url.indexOf('?') >= 0 ? '&' : '?';
|
||||
const target = url + sep + 'token=' + encodeURIComponent(token);
|
||||
wx.navigateTo({ url: '/pages/webview/webview?url=' + encodeURIComponent(target) });
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user