diff --git a/pages/profile/index.js b/pages/profile/index.js index 811dfa9..d07059a 100644 --- a/pages/profile/index.js +++ b/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 firstUrl; } - // 如果解析成功但不是数组,直接返回 - return avatarUrl; + // 如果解析成功但不是数组,直接返回清理后的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,