init
This commit is contained in:
commit
2b8870a40e
51 changed files with 5845 additions and 0 deletions
217
pages/mine/mine.js
Normal file
217
pages/mine/mine.js
Normal file
|
@ -0,0 +1,217 @@
|
|||
// pages/mine/mine.js
|
||||
const {
|
||||
syncTokens,
|
||||
getCloudTokens,
|
||||
showToast,
|
||||
showLoading,
|
||||
hideLoading
|
||||
} = require('../../utils/util');
|
||||
|
||||
Page({
|
||||
/**
|
||||
* 页面的初始数据
|
||||
*/
|
||||
data: {
|
||||
loading: false,
|
||||
uploading: false,
|
||||
isLoggedIn: false,
|
||||
userInfo: null,
|
||||
currentYear: new Date().getFullYear()
|
||||
},
|
||||
|
||||
onShow: function() {
|
||||
// 每次显示页面时检查登录状态
|
||||
const app = getApp();
|
||||
this.setData({
|
||||
isLoggedIn: !!app.globalData.token,
|
||||
userInfo: app.globalData.userInfo
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 数据备份
|
||||
*/
|
||||
uploadData: async function() {
|
||||
// 检查登录状态
|
||||
if (!this.data.isLoggedIn) {
|
||||
showToast('请先登录');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const tokens = wx.getStorageSync('tokens') || [];
|
||||
|
||||
if (!tokens.length) {
|
||||
showToast('未发现本地数据');
|
||||
return;
|
||||
}
|
||||
|
||||
// 显示确认对话框
|
||||
const confirmed = await new Promise(resolve => {
|
||||
wx.showModal({
|
||||
title: '数据备份',
|
||||
content: '确定备份本地数据到云端?',
|
||||
confirmText: '确定',
|
||||
confirmColor: '#ff9c10',
|
||||
success: res => resolve(res.confirm)
|
||||
});
|
||||
});
|
||||
|
||||
if (!confirmed) return;
|
||||
|
||||
this.setData({ uploading: true });
|
||||
showLoading('正在备份...');
|
||||
|
||||
// 同步到云端
|
||||
await syncTokens(tokens);
|
||||
|
||||
showToast('数据备份成功', 'success');
|
||||
} catch (error) {
|
||||
console.error('数据备份失败:', error);
|
||||
showToast('数据备份失败,请重试');
|
||||
} finally {
|
||||
this.setData({ uploading: false });
|
||||
hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 数据恢复
|
||||
*/
|
||||
restoreData: async function() {
|
||||
// 检查登录状态
|
||||
if (!this.data.isLoggedIn) {
|
||||
showToast('请先登录');
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
this.setData({ loading: true });
|
||||
showLoading('正在获取云端数据...');
|
||||
|
||||
// 获取云端数据
|
||||
const cloudTokens = await getCloudTokens();
|
||||
|
||||
if (!cloudTokens || !cloudTokens.length) {
|
||||
showToast('未发现备份数据');
|
||||
return;
|
||||
}
|
||||
|
||||
// 显示确认对话框
|
||||
const confirmed = await new Promise(resolve => {
|
||||
wx.showModal({
|
||||
title: '云端数据恢复',
|
||||
content: `发现${cloudTokens.length}条数据,确定使用云端数据覆盖本地记录?`,
|
||||
confirmColor: '#ff9c10',
|
||||
success: res => resolve(res.confirm)
|
||||
});
|
||||
});
|
||||
|
||||
if (!confirmed) return;
|
||||
|
||||
// 保存到本地
|
||||
await wx.setStorageSync('tokens', cloudTokens);
|
||||
showToast('数据恢复成功', 'success');
|
||||
|
||||
} catch (error) {
|
||||
console.error('数据恢复失败:', error);
|
||||
showToast('数据恢复失败,请重试');
|
||||
} finally {
|
||||
this.setData({ loading: false });
|
||||
hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 用户授权登录
|
||||
*/
|
||||
goAuth: async function() {
|
||||
if (this.data.isLoggedIn) return;
|
||||
|
||||
try {
|
||||
showLoading('登录中...');
|
||||
const app = getApp();
|
||||
await app.userLogin();
|
||||
|
||||
// 更新登录状态,使用默认值
|
||||
this.setData({
|
||||
isLoggedIn: !!app.globalData.token,
|
||||
userInfo: {
|
||||
avatarUrl: wx.getStorageSync('userAvatar') || '/images/default-avatar.png',
|
||||
nickName: wx.getStorageSync('userNickName') || '微信用户'
|
||||
}
|
||||
});
|
||||
|
||||
showToast('登录成功', 'success');
|
||||
} catch (error) {
|
||||
console.error('登录失败:', error);
|
||||
showToast('登录失败,请重试');
|
||||
} finally {
|
||||
hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理头像选择
|
||||
*/
|
||||
onChooseAvatar: async function(e) {
|
||||
const { avatarUrl } = e.detail;
|
||||
try {
|
||||
showLoading('更新头像中...');
|
||||
|
||||
// 更新头像
|
||||
this.setData({
|
||||
'userInfo.avatarUrl': avatarUrl
|
||||
});
|
||||
|
||||
// 保存到本地存储
|
||||
wx.setStorageSync('userAvatar', avatarUrl);
|
||||
|
||||
showToast('头像更新成功', 'success');
|
||||
} catch (error) {
|
||||
console.error('头像更新失败:', error);
|
||||
showToast('头像更新失败,请重试');
|
||||
} finally {
|
||||
hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 处理昵称修改
|
||||
*/
|
||||
onNicknameChange: function(e) {
|
||||
const nickName = e.detail.value;
|
||||
if (!nickName) return;
|
||||
|
||||
try {
|
||||
// 更新昵称
|
||||
this.setData({
|
||||
'userInfo.nickName': nickName
|
||||
});
|
||||
|
||||
// 保存到本地存储
|
||||
wx.setStorageSync('userNickName', nickName);
|
||||
} catch (error) {
|
||||
console.error('昵称更新失败:', error);
|
||||
showToast('昵称更新失败,请重试');
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 页面相关事件处理函数--监听用户下拉动作
|
||||
*/
|
||||
onPullDownRefresh: function() {
|
||||
wx.stopPullDownRefresh();
|
||||
},
|
||||
|
||||
/**
|
||||
* 转发
|
||||
*/
|
||||
onShareAppMessage: function() {
|
||||
return {
|
||||
title: '支持云端备份的动态验证码',
|
||||
path: '/pages/index/index',
|
||||
imageUrl: '/images/share.png'
|
||||
};
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue