/** * Soul创业实验 - 我的页面 * 开发: 卡若 * 技术支持: 存客宝 */ const app = getApp() Page({ data: { // 系统信息 statusBarHeight: 44, navBarHeight: 88, // 用户状态 isLoggedIn: false, userInfo: null, // 统计数据 totalSections: 62, purchasedCount: 0, referralCount: 0, earnings: 0, pendingEarnings: 0, // 阅读统计 totalReadTime: 0, matchHistory: 0, // Tab切换 activeTab: 'overview', // overview | footprint // 最近阅读 recentChapters: [], // 菜单列表 menuList: [ { id: 'orders', title: '我的订单', icon: '📦', count: 0 }, { id: 'referral', title: '推广中心', icon: '🎁', badge: '90%佣金' }, { id: 'about', title: '关于作者', icon: '👤', iconBg: 'brand' }, { id: 'settings', title: '设置', icon: '⚙️', iconBg: 'gray' } ], // 登录弹窗 showLoginModal: false, isLoggingIn: false }, onLoad() { this.setData({ statusBarHeight: app.globalData.statusBarHeight, navBarHeight: app.globalData.navBarHeight }) this.initUserStatus() }, onShow() { // 设置TabBar选中状态 if (typeof this.getTabBar === 'function' && this.getTabBar()) { this.getTabBar().setData({ selected: 3 }) } this.initUserStatus() }, // 初始化用户状态 initUserStatus() { const { isLoggedIn, userInfo, hasFullBook, purchasedSections } = app.globalData if (isLoggedIn && userInfo) { // 转换为对象数组 const recentList = (purchasedSections || []).slice(-5).map(id => ({ id: id, title: `章节 ${id}` })) this.setData({ isLoggedIn: true, userInfo, purchasedCount: hasFullBook ? this.data.totalSections : (purchasedSections?.length || 0), referralCount: userInfo.referralCount || 0, earnings: userInfo.earnings || 0, pendingEarnings: userInfo.pendingEarnings || 0, recentChapters: recentList, totalReadTime: Math.floor(Math.random() * 200) + 50 }) } else { this.setData({ isLoggedIn: false, userInfo: null, purchasedCount: 0, referralCount: 0, earnings: 0, pendingEarnings: 0, recentChapters: [] }) } }, // 切换Tab switchTab(e) { const tab = e.currentTarget.dataset.tab this.setData({ activeTab: tab }) }, // 显示登录弹窗 showLogin() { this.setData({ showLoginModal: true }) }, // 关闭登录弹窗 closeLoginModal() { if (this.data.isLoggingIn) return this.setData({ showLoginModal: false }) }, // 微信登录 async handleWechatLogin() { this.setData({ isLoggingIn: true }) try { const result = await app.login() if (result) { this.initUserStatus() this.setData({ showLoginModal: false }) wx.showToast({ title: '登录成功', icon: 'success' }) } else { wx.showToast({ title: '登录失败,请重试', icon: 'none' }) } } catch (e) { console.error('微信登录错误:', e) wx.showToast({ title: '登录失败,请重试', icon: 'none' }) } finally { this.setData({ isLoggingIn: false }) } }, // 手机号登录(需要用户授权) async handlePhoneLogin(e) { // 检查是否有授权code if (!e.detail.code) { // 用户拒绝授权或获取失败,尝试使用微信登录 console.log('手机号授权失败,尝试微信登录') return this.handleWechatLogin() } this.setData({ isLoggingIn: true }) try { const result = await app.loginWithPhone(e.detail.code) if (result) { this.initUserStatus() this.setData({ showLoginModal: false }) wx.showToast({ title: '登录成功', icon: 'success' }) } else { wx.showToast({ title: '登录失败,请重试', icon: 'none' }) } } catch (e) { console.error('手机号登录错误:', e) wx.showToast({ title: '登录失败,请重试', icon: 'none' }) } finally { this.setData({ isLoggingIn: false }) } }, // 点击菜单 handleMenuTap(e) { const id = e.currentTarget.dataset.id if (!this.data.isLoggedIn && id !== 'about') { this.showLogin() return } const routes = { orders: '/pages/purchases/purchases', referral: '/pages/referral/referral', about: '/pages/about/about', settings: '/pages/settings/settings' } if (routes[id]) { wx.navigateTo({ url: routes[id] }) } }, // 跳转到阅读页 goToRead(e) { const id = e.currentTarget.dataset.id wx.navigateTo({ url: `/pages/read/read?id=${id}` }) }, // 跳转到目录 goToChapters() { wx.switchTab({ url: '/pages/chapters/chapters' }) }, // 跳转到匹配 goToMatch() { wx.switchTab({ url: '/pages/match/match' }) }, // 跳转到推广中心 goToReferral() { if (!this.data.isLoggedIn) { this.showLogin() return } wx.navigateTo({ url: '/pages/referral/referral' }) }, // 退出登录 handleLogout() { wx.showModal({ title: '退出登录', content: '确定要退出登录吗?', success: (res) => { if (res.confirm) { app.logout() this.initUserStatus() wx.showToast({ title: '已退出登录', icon: 'success' }) } } }) }, // 阻止冒泡 stopPropagation() {} })