Browse Source

修改头像功能,使用固定的头像URL数组

pull/18/head
Default User 1 month ago
parent
commit
f80397f988
  1. 124
      pages/profile/index.js

124
pages/profile/index.js

@ -27,7 +27,12 @@ Page({
hasLocationAuth: false, // 是否已经授权位置
isInPersonnel: false, // 用户手机号是否在personnel表中
currentAvatarIndex: 0, // 当前显示的头像索引,默认显示第一张
rawAvatarUrl: null // 存储原始的头像URL数据(可能是数组)
rawAvatarUrl: null, // 存储原始的头像URL数据(可能是数组)
// 固定的头像URL数组
avatarUrls: [
"https://my-supplier-photos.oss-cn-chengdu.aliyuncs.com/products/%E6%B5%B7%E8%93%9D%E7%81%B0/image/7a2a8a17a83ba4d3d4270828531e2041.jpeg",
"https://my-supplier-photos.oss-cn-chengdu.aliyuncs.com/products/%E4%BC%8A%E8%8E%8E%E7%B2%89/image/1b2a0ba28eaa17c16c3674985ccee05c.jpeg"
]
},
onLoad() {
@ -65,23 +70,49 @@ Page({
// 如果是字符串,尝试解析为JSON数组
if (typeof avatarUrl === 'string') {
// 去除字符串两端的空格和引号
let cleanedUrl = avatarUrl.trim();
// 去除可能存在的前后引号
if ((cleanedUrl.startsWith('"') && cleanedUrl.endsWith('"')) ||
(cleanedUrl.startsWith('`') && cleanedUrl.endsWith('`'))) {
cleanedUrl = cleanedUrl.substring(1, cleanedUrl.length - 1);
}
try {
const parsedUrl = JSON.parse(avatarUrl);
const parsedUrl = JSON.parse(cleanedUrl);
// 如果解析成功且是数组且不为空,使用第一个元素
if (Array.isArray(parsedUrl) && parsedUrl.length > 0) {
return parsedUrl[0];
// 清理第一个元素中的空格和引号
let firstUrl = parsedUrl[0];
if (typeof firstUrl === 'string') {
firstUrl = firstUrl.trim();
if ((firstUrl.startsWith('"') && firstUrl.endsWith('"')) ||
(firstUrl.startsWith('`') && firstUrl.endsWith('`'))) {
firstUrl = firstUrl.substring(1, firstUrl.length - 1);
}
}
// 如果解析成功但不是数组,直接返回
return avatarUrl;
return firstUrl;
}
// 如果解析成功但不是数组,直接返回清理后的URL
return cleanedUrl;
} catch (e) {
// 解析失败,直接返回
return avatarUrl;
// 解析失败,返回清理后的URL
return cleanedUrl;
}
}
// 如果是数组且不为空,使用第一个元素
if (Array.isArray(avatarUrl) && avatarUrl.length > 0) {
return avatarUrl[0];
let firstUrl = avatarUrl[0];
if (typeof firstUrl === 'string') {
// 清理第一个元素中的空格和引号
firstUrl = firstUrl.trim();
if ((firstUrl.startsWith('"') && firstUrl.endsWith('"')) ||
(firstUrl.startsWith('`') && firstUrl.endsWith('`'))) {
firstUrl = firstUrl.substring(1, firstUrl.length - 1);
}
}
return firstUrl;
}
// 其他情况返回默认头像
@ -97,27 +128,31 @@ Page({
const localUserInfo = wx.getStorageSync('userInfo') || {}
if (app.globalData.userInfo) {
const userInfo = { ...app.globalData.userInfo }
// 保存原始的头像URL数据
const rawAvatarUrl = userInfo.avatarUrl;
// 处理头像URL用于显示
userInfo.avatarUrl = this.processAvatarUrl(userInfo.avatarUrl);
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
userInfo.avatarUrl = avatarUrls[0];
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber)
this.setData({
userInfo,
rawAvatarUrl
rawAvatarUrl: avatarUrls
})
// 更新全局状态中的头像URL,确保下次加载时使用固定的头像
app.globalData.userInfo = userInfo;
wx.setStorageSync('userInfo', userInfo);
} else {
const userInfo = { ...localUserInfo }
// 保存原始的头像URL数据
const rawAvatarUrl = userInfo.avatarUrl;
// 处理头像URL用于显示
userInfo.avatarUrl = this.processAvatarUrl(userInfo.avatarUrl);
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
userInfo.avatarUrl = avatarUrls[0];
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber)
app.globalData.userInfo = userInfo
wx.setStorageSync('userInfo', userInfo);
this.setData({
userInfo,
needPhoneAuth: !userInfo.phoneNumber,
rawAvatarUrl
rawAvatarUrl: avatarUrls
})
}
@ -244,10 +279,10 @@ Page({
...serverUserInfo
}
// 保存原始的头像URL数据
const rawAvatarUrl = updatedUserInfo.avatarUrl;
// 处理头像URL用于显示
updatedUserInfo.avatarUrl = this.processAvatarUrl(updatedUserInfo.avatarUrl);
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
updatedUserInfo.avatarUrl = avatarUrls[0];
// 添加隐藏的电话号码
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber)
@ -256,7 +291,7 @@ Page({
wx.setStorageSync('userInfo', updatedUserInfo)
this.setData({
userInfo: updatedUserInfo,
rawAvatarUrl
rawAvatarUrl: avatarUrls
})
// 同步更新用户身份信息(当前身份由数据库决定)
@ -285,10 +320,10 @@ Page({
...serverUserInfo
}
// 保存原始的头像URL数据
const rawAvatarUrl = updatedUserInfo.avatarUrl;
// 处理头像URL用于显示
updatedUserInfo.avatarUrl = this.processAvatarUrl(updatedUserInfo.avatarUrl);
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 使用第一张头像作为默认显示
updatedUserInfo.avatarUrl = avatarUrls[0];
// 添加隐藏的电话号码
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber)
@ -297,7 +332,7 @@ Page({
wx.setStorageSync('userInfo', updatedUserInfo)
this.setData({
userInfo: updatedUserInfo,
rawAvatarUrl
rawAvatarUrl: avatarUrls
})
// 同步更新用户身份信息(当前身份由数据库决定)
@ -1136,30 +1171,8 @@ Page({
// 点击头像切换图片
onAvatarClick() {
// 使用rawAvatarUrl获取完整的头像URL数组
let avatarUrls = [];
const rawAvatarUrl = this.data.rawAvatarUrl;
if (rawAvatarUrl) {
if (typeof rawAvatarUrl === 'string') {
// 如果是字符串,尝试解析为JSON数组
try {
const parsed = JSON.parse(rawAvatarUrl);
if (Array.isArray(parsed)) {
avatarUrls = parsed;
} else {
// 如果不是数组,将当前URL作为第一个元素
avatarUrls = [rawAvatarUrl];
}
} catch (e) {
// 解析失败,将当前URL作为第一个元素
avatarUrls = [rawAvatarUrl];
}
} else if (Array.isArray(rawAvatarUrl)) {
// 如果已经是数组,直接使用
avatarUrls = rawAvatarUrl;
}
}
// 使用固定的头像URL数组
const avatarUrls = this.data.avatarUrls;
// 检查是否有至少两张图片可以切换
if (avatarUrls.length < 2) {
@ -1185,15 +1198,12 @@ Page({
if (res.confirm) {
// 切换到下一张图片
const app = getApp();
// 只更新显示用的avatarUrl
const updatedUserInfo = {
...this.data.userInfo,
avatarUrl: avatarUrls[nextIndex] // 直接使用下一张图片
avatarUrl: avatarUrls[nextIndex] // 直接使用下一张图片用于显示
};
// 保存到本地存储和全局状态
app.globalData.userInfo = updatedUserInfo;
wx.setStorageSync('userInfo', updatedUserInfo);
// 更新页面显示
this.setData({
userInfo: updatedUserInfo,

Loading…
Cancel
Save