118 lines
3.5 KiB
JavaScript
118 lines
3.5 KiB
JavaScript
const versionInfo = require('../../utils/version.js');
|
|
const { request } = require('../../utils/request.js');
|
|
const birthProfile = require('../../utils/birth-profile.js');
|
|
|
|
Page({
|
|
data: {
|
|
userInfo: null,
|
|
loggedIn: false,
|
|
logging: false,
|
|
// 菜单角标
|
|
profileCount: 0,
|
|
maxFree: birthProfile.MAX_PROFILES,
|
|
bookmarkCount: 0,
|
|
version: versionInfo.version,
|
|
buildNumber: versionInfo.buildNumber,
|
|
buildTime: versionInfo.buildTime,
|
|
commitSha: versionInfo.commitSha
|
|
},
|
|
|
|
onShow() {
|
|
this.refreshUser();
|
|
this.refreshCounts();
|
|
},
|
|
|
|
refreshUser() {
|
|
const token = wx.getStorageSync('token');
|
|
const userInfo = wx.getStorageSync('lunar-user-info');
|
|
this.setData({ loggedIn: !!token, userInfo: userInfo || null });
|
|
},
|
|
|
|
refreshCounts() {
|
|
const bookmarks = wx.getStorageSync('lunar-bookmarks') || [];
|
|
const profiles = birthProfile.getProfiles();
|
|
this.setData({
|
|
bookmarkCount: bookmarks.length,
|
|
profileCount: profiles.length
|
|
});
|
|
},
|
|
|
|
// ==================== 登录 ====================
|
|
|
|
login() {
|
|
if (this.data.logging) return;
|
|
this.setData({ logging: true });
|
|
wx.login({
|
|
success: (loginRes) => {
|
|
if (!loginRes.code) {
|
|
this.setData({ logging: false });
|
|
wx.showToast({ title: '授权登录失败', icon: 'none' });
|
|
return;
|
|
}
|
|
request({
|
|
url: '/api/user/login',
|
|
method: 'POST',
|
|
data: { code: loginRes.code }
|
|
}).then((res) => {
|
|
if (res && res.code === 0 && res.data && res.data.token) {
|
|
wx.setStorageSync('token', res.data.token);
|
|
wx.setStorageSync('lunar-user-info', res.data.user);
|
|
this.setData({ userInfo: res.data.user, loggedIn: true, logging: false });
|
|
wx.showToast({ title: '登录成功', icon: 'success' });
|
|
// 登录后拉取云端生辰档案,保证菜单计数准确
|
|
birthProfile.syncFromServer().then(() => this.refreshCounts()).catch(() => {});
|
|
} else {
|
|
this.setData({ logging: false });
|
|
wx.showToast({ title: (res && res.msg) || '登录失败', icon: 'none' });
|
|
}
|
|
}).catch(() => {
|
|
this.setData({ logging: false });
|
|
wx.showToast({ title: '登录失败,请稍后重试', icon: 'none' });
|
|
});
|
|
},
|
|
fail: () => {
|
|
this.setData({ logging: false });
|
|
wx.showToast({ title: '授权登录失败', icon: 'none' });
|
|
}
|
|
});
|
|
},
|
|
|
|
logout() {
|
|
wx.showModal({
|
|
title: '退出登录',
|
|
content: '退出后生辰档案仅保存在本机,重新登录可恢复云端档案',
|
|
success: (res) => {
|
|
if (!res.confirm) return;
|
|
wx.removeStorageSync('token');
|
|
wx.removeStorageSync('lunar-user-info');
|
|
this.setData({ userInfo: null, loggedIn: false });
|
|
wx.showToast({ title: '已退出', icon: 'success' });
|
|
}
|
|
});
|
|
},
|
|
|
|
navTo(e) {
|
|
const url = e.currentTarget.dataset.url;
|
|
// tabBar 页面必须用 switchTab 打开
|
|
const tabPages = ['/pages/home/home', '/pages/wish-tree/wish-tree', '/pages/bazi/bazi', '/pages/wiki/wiki', '/pages/settings/settings'];
|
|
if (tabPages.includes(url)) {
|
|
wx.switchTab({ url });
|
|
} else {
|
|
wx.navigateTo({ url });
|
|
}
|
|
},
|
|
|
|
onShareAppMessage() {
|
|
return {
|
|
title: '老黄历 - 个人中心',
|
|
path: '/pages/settings/settings'
|
|
};
|
|
},
|
|
|
|
onShareTimeline() {
|
|
return {
|
|
title: '老黄历 - 个人中心'
|
|
};
|
|
}
|
|
});
|