Files
lunar-mini/mini/pages/settings/settings.js
T

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: '老黄历 - 个人中心'
};
}
});