232 lines
5.5 KiB
JavaScript
232 lines
5.5 KiB
JavaScript
import { injectPage } from '@jdmini/api'
|
||
const { getUserInfo } = require('../../utils/api.js')
|
||
|
||
const defaultAvatar = 'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0'
|
||
|
||
Page(injectPage({})({
|
||
data: {
|
||
isLoggedIn: false,
|
||
userInfo: {},
|
||
defaultAvatar: defaultAvatar,
|
||
downloadCount: 0,
|
||
inviteCount: 0,
|
||
cacheSize: '0KB'
|
||
},
|
||
|
||
onShow() {
|
||
this.checkLoginStatus()
|
||
this.loadStats()
|
||
this.calculateCacheSize()
|
||
},
|
||
|
||
onShareAppMessage() {
|
||
const userId = wx.getStorageSync('userId')
|
||
let path = '/pages/index/index'
|
||
if (userId) {
|
||
path += `?inviter=${userId}`
|
||
}
|
||
return {
|
||
title: '儿童练习表 - 幼儿启蒙必备,快来一起学习吧!',
|
||
path: path
|
||
}
|
||
},
|
||
|
||
// 检查登录状态
|
||
checkLoginStatus() {
|
||
const userId = wx.getStorageSync('userId')
|
||
const userInfo = wx.getStorageSync('userInfo') || {}
|
||
|
||
if (userId) {
|
||
this.setData({
|
||
isLoggedIn: true,
|
||
userInfo: userInfo
|
||
})
|
||
// 刷新用户信息
|
||
this.refreshUserInfo(userId)
|
||
} else {
|
||
this.setData({
|
||
isLoggedIn: false,
|
||
userInfo: {}
|
||
})
|
||
}
|
||
},
|
||
|
||
// 刷新用户信息
|
||
async refreshUserInfo(userId) {
|
||
try {
|
||
const res = await getUserInfo(userId)
|
||
if (res.success) {
|
||
const userInfo = {
|
||
...this.data.userInfo,
|
||
nickname: res.data.nickname,
|
||
avatar: res.data.avatar,
|
||
points: res.data.points
|
||
}
|
||
this.setData({ userInfo })
|
||
wx.setStorageSync('userInfo', userInfo)
|
||
}
|
||
} catch (error) {
|
||
console.error('刷新用户信息失败:', error)
|
||
}
|
||
},
|
||
|
||
// 加载统计数据
|
||
loadStats() {
|
||
try {
|
||
const downloads = wx.getStorageSync('downloads') || []
|
||
// 邀请数暂时从本地存储获取,实际应该从服务端获取
|
||
const inviteCount = wx.getStorageSync('inviteCount') || 0
|
||
|
||
this.setData({
|
||
downloadCount: downloads.length,
|
||
inviteCount: inviteCount
|
||
})
|
||
} catch (error) {
|
||
console.error('加载统计失败:', error)
|
||
}
|
||
},
|
||
|
||
// 计算缓存大小
|
||
calculateCacheSize() {
|
||
try {
|
||
const res = wx.getStorageInfoSync()
|
||
const usedSize = res.currentSize // KB
|
||
let sizeStr = ''
|
||
|
||
if (usedSize < 1024) {
|
||
sizeStr = usedSize + 'KB'
|
||
} else {
|
||
sizeStr = (usedSize / 1024).toFixed(2) + 'MB'
|
||
}
|
||
|
||
this.setData({ cacheSize: sizeStr })
|
||
} catch (error) {
|
||
console.error('计算缓存大小失败:', error)
|
||
}
|
||
},
|
||
|
||
// 跳转登录
|
||
goLogin() {
|
||
wx.setStorageSync('returnTo', {
|
||
type: 'switchTab',
|
||
url: '/pages/mine/mine'
|
||
})
|
||
wx.navigateTo({
|
||
url: '/pages/login/login'
|
||
})
|
||
},
|
||
|
||
// 跳转下载页面
|
||
goDownloads() {
|
||
wx.switchTab({
|
||
url: '/pages/download/download'
|
||
})
|
||
},
|
||
|
||
// 跳转积分明细
|
||
goPointsLog() {
|
||
if (!this.data.isLoggedIn) {
|
||
this.goLogin()
|
||
return
|
||
}
|
||
wx.showToast({
|
||
title: '积分明细功能开发中',
|
||
icon: 'none'
|
||
})
|
||
},
|
||
|
||
// 清除缓存
|
||
clearCache() {
|
||
wx.showModal({
|
||
title: '提示',
|
||
content: '确定清除所有缓存吗?这将删除下载记录(不会退出登录)。',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
try {
|
||
// 保存登录信息
|
||
const userId = wx.getStorageSync('userId')
|
||
const token = wx.getStorageSync('token')
|
||
const userInfo = wx.getStorageSync('userInfo')
|
||
|
||
// 清除下载的文件
|
||
const downloads = wx.getStorageSync('downloads') || []
|
||
const fs = wx.getFileSystemManager()
|
||
|
||
downloads.forEach(item => {
|
||
if (item.filePath) {
|
||
try {
|
||
fs.unlinkSync(item.filePath)
|
||
} catch (e) {
|
||
// 忽略文件不存在的错误
|
||
}
|
||
}
|
||
})
|
||
|
||
// 清除存储
|
||
wx.clearStorageSync()
|
||
|
||
// 恢复登录信息
|
||
if (userId) {
|
||
wx.setStorageSync('userId', userId)
|
||
wx.setStorageSync('token', token)
|
||
wx.setStorageSync('userInfo', userInfo)
|
||
}
|
||
|
||
this.setData({
|
||
downloadCount: 0,
|
||
inviteCount: 0,
|
||
cacheSize: '0KB'
|
||
})
|
||
|
||
wx.showToast({
|
||
title: '清除成功',
|
||
icon: 'success'
|
||
})
|
||
} catch (error) {
|
||
console.error('清除缓存失败:', error)
|
||
wx.showToast({
|
||
title: '清除失败',
|
||
icon: 'none'
|
||
})
|
||
}
|
||
}
|
||
}
|
||
})
|
||
},
|
||
|
||
// 退出登录
|
||
logout() {
|
||
wx.showModal({
|
||
title: '提示',
|
||
content: '确定退出登录吗?',
|
||
success: (res) => {
|
||
if (res.confirm) {
|
||
wx.removeStorageSync('userId')
|
||
wx.removeStorageSync('token')
|
||
wx.removeStorageSync('userInfo')
|
||
|
||
this.setData({
|
||
isLoggedIn: false,
|
||
userInfo: {}
|
||
})
|
||
|
||
wx.showToast({
|
||
title: '已退出登录',
|
||
icon: 'success'
|
||
})
|
||
}
|
||
}
|
||
})
|
||
},
|
||
|
||
// 关于我们
|
||
about() {
|
||
wx.showModal({
|
||
title: '关于儿童练习表',
|
||
content: '儿童练习表是一款专为幼儿设计的启蒙教育小程序,提供字母、数字、绘画、涂色等多种练习表,帮助孩子在快乐中学习成长。\n\n版本:v1.0.0',
|
||
showCancel: false,
|
||
confirmText: '确定'
|
||
})
|
||
}
|
||
}))
|