Browse Source

暂存本地修改后提交

蛋吧eggbar
Default User 1 month ago
parent
commit
8333036fef
  1. 157
      pages/profile/index.js

157
pages/profile/index.js

@ -130,29 +130,51 @@ Page({
const userInfo = { ...app.globalData.userInfo }
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
userInfo.avatarUrl = avatarUrls[0];
// 保持用户当前的头像URL,如果没有则使用第一张作为默认
if (!userInfo.avatarUrl) {
userInfo.avatarUrl = avatarUrls[0];
}
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber)
// 根据当前的avatarUrl更新currentAvatarIndex
let currentAvatarIndex = 0;
if (userInfo.avatarUrl) {
const index = avatarUrls.indexOf(userInfo.avatarUrl);
if (index !== -1) {
currentAvatarIndex = index;
}
}
this.setData({
userInfo,
rawAvatarUrl: avatarUrls
rawAvatarUrl: avatarUrls,
currentAvatarIndex: currentAvatarIndex
})
// 更新全局状态中的头像URL,确保下次加载时使用固定的头像
// 更新全局状态中的头像URL,确保下次加载时使用处理后的URL
app.globalData.userInfo = userInfo;
wx.setStorageSync('userInfo', userInfo);
} else {
const userInfo = { ...localUserInfo }
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
userInfo.avatarUrl = avatarUrls[0];
// 保持用户当前的头像URL,如果没有则使用第一张作为默认
if (!userInfo.avatarUrl) {
userInfo.avatarUrl = avatarUrls[0];
}
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber)
// 根据当前的avatarUrl更新currentAvatarIndex
let currentAvatarIndex = 0;
if (userInfo.avatarUrl) {
const index = avatarUrls.indexOf(userInfo.avatarUrl);
if (index !== -1) {
currentAvatarIndex = index;
}
}
app.globalData.userInfo = userInfo
wx.setStorageSync('userInfo', userInfo);
this.setData({
userInfo,
needPhoneAuth: !userInfo.phoneNumber,
rawAvatarUrl: avatarUrls
rawAvatarUrl: avatarUrls,
currentAvatarIndex: currentAvatarIndex
})
}
@ -274,6 +296,10 @@ Page({
// 更新本地用户信息
const app = getApp()
// 先保存当前的头像URL
const currentAvatarUrl = app.globalData.userInfo.avatarUrl;
// 构建更新后的用户信息,优先使用服务器返回的值
const updatedUserInfo = {
...app.globalData.userInfo,
...serverUserInfo
@ -281,8 +307,21 @@ Page({
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
updatedUserInfo.avatarUrl = avatarUrls[0];
// 检查服务器返回的用户信息中是否包含avatarUrl
let finalAvatarUrl = updatedUserInfo.avatarUrl;
// 如果服务器返回的avatarUrl为空字符串或null,且本地有,则使用本地的
if ((!finalAvatarUrl || finalAvatarUrl === '') && currentAvatarUrl) {
finalAvatarUrl = currentAvatarUrl;
}
// 如果两者都没有,则使用第一张作为默认
else if (!finalAvatarUrl || finalAvatarUrl === '') {
finalAvatarUrl = avatarUrls[0];
}
// 更新头像URL
updatedUserInfo.avatarUrl = finalAvatarUrl;
// 添加隐藏的电话号码
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber)
@ -302,7 +341,7 @@ Page({
// 重新检查用户手机号是否在personnel表中
this.checkPhoneInPersonnel()
console.log('用户信息已更新,昵称:', updatedUserInfo.name, '手机号:', updatedUserInfo.phoneNumber, '身份:', serverUserInfo.type)
console.log('用户信息已更新,昵称:', updatedUserInfo.name, '手机号:', updatedUserInfo.phoneNumber, '身份:', serverUserInfo.type, '头像URL:', finalAvatarUrl)
}
}).catch(err => {
console.error('从服务器获取用户信息失败:', err)
@ -315,6 +354,9 @@ Page({
// 更新本地用户信息
const app = getApp()
// 先保存当前的头像URL
const currentAvatarUrl = app.globalData.userInfo.avatarUrl;
const updatedUserInfo = {
...app.globalData.userInfo,
...serverUserInfo
@ -322,8 +364,21 @@ Page({
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
updatedUserInfo.avatarUrl = avatarUrls[0];
// 检查服务器返回的用户信息中是否包含avatarUrl
let finalAvatarUrl = updatedUserInfo.avatarUrl;
// 如果服务器返回的avatarUrl为空字符串或null,且本地有,则使用本地的
if ((!finalAvatarUrl || finalAvatarUrl === '') && currentAvatarUrl) {
finalAvatarUrl = currentAvatarUrl;
}
// 如果两者都没有,则使用第一张作为默认
else if (!finalAvatarUrl || finalAvatarUrl === '') {
finalAvatarUrl = avatarUrls[0];
}
// 更新头像URL
updatedUserInfo.avatarUrl = finalAvatarUrl;
// 添加隐藏的电话号码
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber)
@ -343,7 +398,7 @@ Page({
// 重新检查用户手机号是否在personnel表中
this.checkPhoneInPersonnel()
console.log('用户信息已更新(备选方案):', updatedUserInfo)
console.log('用户信息已更新(备选方案):', updatedUserInfo, '头像URL:', finalAvatarUrl)
}
}).catch(validateErr => {
console.error('从服务器获取用户信息失败(包括备选方案):', validateErr)
@ -761,12 +816,11 @@ Page({
return;
}
// 构造上传数据(包含所有必要字段,包括phoneNumber和头像URL)
// 构造上传数据(包含头像URL,避免登录时覆盖用户选择的头像
const uploadData = {
userId: userId,
openid: openid,
name: userInfo.name,
avatarUrl: userInfo.avatarUrl, // 添加头像URL字段
phoneNumber: userInfo.phoneNumber, // 添加phoneNumber字段,满足服务器要求
type: type,
timestamp: Date.now()
@ -1171,8 +1225,10 @@ Page({
// 点击头像切换图片
onAvatarClick() {
console.log('开始切换头像');
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
console.log('头像URL数组:', avatarUrls);
// 检查是否有至少两张图片可以切换
if (avatarUrls.length < 2) {
@ -1184,18 +1240,36 @@ Page({
return;
}
// 先根据当前的avatarUrl更新currentAvatarIndex,确保它们保持一致
let currentAvatarIndex = 0;
const currentAvatarUrl = this.data.userInfo.avatarUrl;
if (currentAvatarUrl) {
const index = avatarUrls.indexOf(currentAvatarUrl);
if (index !== -1) {
currentAvatarIndex = index;
// 更新currentAvatarIndex到页面数据
this.setData({ currentAvatarIndex: currentAvatarIndex });
console.log('根据当前avatarUrl更新currentAvatarIndex:', currentAvatarIndex);
}
}
// 切换到下一张头像
let nextIndex = this.data.currentAvatarIndex + 1;
let nextIndex = currentAvatarIndex + 1;
if (nextIndex >= avatarUrls.length) {
nextIndex = 0; // 如果已经是最后一张,回到第一张
}
console.log('当前头像索引:', currentAvatarIndex);
console.log('下一张头像索引:', nextIndex);
console.log('下一张头像URL:', avatarUrls[nextIndex]);
// 显示切换头像的提示
const avatarType = nextIndex === 0 ? '男' : '女';
wx.showModal({
title: '切换头像',
content: `确定要切换到第${nextIndex + 1}张头像吗?`,
content: `确定要切换到${avatarType}头像吗?`,
success: (res) => {
if (res.confirm) {
console.log('用户确认切换头像');
// 切换到下一张图片
const app = getApp();
// 只更新显示用的avatarUrl
@ -1209,6 +1283,11 @@ Page({
userInfo: updatedUserInfo,
currentAvatarIndex: nextIndex
});
console.log('页面显示已更新');
// 将选中的头像URL写入数据库
console.log('准备更新头像到数据库:', avatarUrls[nextIndex]);
this.updateAvatarInDatabase(avatarUrls[nextIndex]);
wx.showToast({
title: '头像切换成功',
@ -1220,4 +1299,48 @@ Page({
});
},
// 将头像URL更新到数据库
updateAvatarInDatabase(avatarUrl) {
console.log('开始更新头像到数据库:', avatarUrl);
const API = require('../../utils/api.js');
const openid = wx.getStorageSync('openid');
const userId = wx.getStorageSync('userId');
console.log('用户信息:', { openid, userId });
if (!openid) {
console.error('更新头像失败:缺少openid');
return;
}
// 构造更新数据
const updateData = {
openid: openid,
userId: userId,
avatarUrl: avatarUrl
};
console.log('构造的更新数据:', updateData);
// 调用API更新用户信息
console.log('准备调用API.uploadUserInfo');
API.uploadUserInfo(updateData).then(res => {
console.log('更新头像到数据库成功:', res);
// 更新本地存储和全局数据中的头像URL
const app = getApp();
app.globalData.userInfo.avatarUrl = avatarUrl;
wx.setStorageSync('userInfo', app.globalData.userInfo);
console.log('更新本地存储和全局数据中的头像URL成功:', avatarUrl);
}).catch(err => {
console.error('更新头像到数据库失败:', err);
wx.showToast({
title: '更新头像失败,请重试',
icon: 'none',
duration: 2000
});
});
},
})

Loading…
Cancel
Save