|
|
@ -27,7 +27,12 @@ Page({ |
|
|
hasLocationAuth: false, // 是否已经授权位置
|
|
|
hasLocationAuth: false, // 是否已经授权位置
|
|
|
isInPersonnel: false, // 用户手机号是否在personnel表中
|
|
|
isInPersonnel: false, // 用户手机号是否在personnel表中
|
|
|
currentAvatarIndex: 0, // 当前显示的头像索引,默认显示第一张
|
|
|
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() { |
|
|
onLoad() { |
|
|
@ -65,23 +70,49 @@ Page({ |
|
|
|
|
|
|
|
|
// 如果是字符串,尝试解析为JSON数组
|
|
|
// 如果是字符串,尝试解析为JSON数组
|
|
|
if (typeof avatarUrl === 'string') { |
|
|
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 { |
|
|
try { |
|
|
const parsedUrl = JSON.parse(avatarUrl); |
|
|
const parsedUrl = JSON.parse(cleanedUrl); |
|
|
// 如果解析成功且是数组且不为空,使用第一个元素
|
|
|
// 如果解析成功且是数组且不为空,使用第一个元素
|
|
|
if (Array.isArray(parsedUrl) && parsedUrl.length > 0) { |
|
|
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) { |
|
|
} catch (e) { |
|
|
// 解析失败,直接返回
|
|
|
// 解析失败,返回清理后的URL
|
|
|
return avatarUrl; |
|
|
return cleanedUrl; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 如果是数组且不为空,使用第一个元素
|
|
|
// 如果是数组且不为空,使用第一个元素
|
|
|
if (Array.isArray(avatarUrl) && avatarUrl.length > 0) { |
|
|
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') || {} |
|
|
const localUserInfo = wx.getStorageSync('userInfo') || {} |
|
|
if (app.globalData.userInfo) { |
|
|
if (app.globalData.userInfo) { |
|
|
const userInfo = { ...app.globalData.userInfo } |
|
|
const userInfo = { ...app.globalData.userInfo } |
|
|
// 保存原始的头像URL数据
|
|
|
// 使用固定的头像URL数组
|
|
|
const rawAvatarUrl = userInfo.avatarUrl; |
|
|
const avatarUrls = this.data.avatarUrls; |
|
|
// 处理头像URL用于显示
|
|
|
// 使用第一张头像作为默认显示
|
|
|
userInfo.avatarUrl = this.processAvatarUrl(userInfo.avatarUrl); |
|
|
userInfo.avatarUrl = avatarUrls[0]; |
|
|
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber) |
|
|
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber) |
|
|
this.setData({ |
|
|
this.setData({ |
|
|
userInfo, |
|
|
userInfo, |
|
|
rawAvatarUrl |
|
|
rawAvatarUrl: avatarUrls |
|
|
}) |
|
|
}) |
|
|
|
|
|
// 更新全局状态中的头像URL,确保下次加载时使用固定的头像
|
|
|
|
|
|
app.globalData.userInfo = userInfo; |
|
|
|
|
|
wx.setStorageSync('userInfo', userInfo); |
|
|
} else { |
|
|
} else { |
|
|
const userInfo = { ...localUserInfo } |
|
|
const userInfo = { ...localUserInfo } |
|
|
// 保存原始的头像URL数据
|
|
|
// 使用固定的头像URL数组
|
|
|
const rawAvatarUrl = userInfo.avatarUrl; |
|
|
const avatarUrls = this.data.avatarUrls; |
|
|
// 处理头像URL用于显示
|
|
|
// 使用第一张头像作为默认显示
|
|
|
userInfo.avatarUrl = this.processAvatarUrl(userInfo.avatarUrl); |
|
|
userInfo.avatarUrl = avatarUrls[0]; |
|
|
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber) |
|
|
userInfo.hiddenPhoneNumber = this.hidePhoneNumber(userInfo.phoneNumber) |
|
|
app.globalData.userInfo = userInfo |
|
|
app.globalData.userInfo = userInfo |
|
|
|
|
|
wx.setStorageSync('userInfo', userInfo); |
|
|
this.setData({ |
|
|
this.setData({ |
|
|
userInfo, |
|
|
userInfo, |
|
|
needPhoneAuth: !userInfo.phoneNumber, |
|
|
needPhoneAuth: !userInfo.phoneNumber, |
|
|
rawAvatarUrl |
|
|
rawAvatarUrl: avatarUrls |
|
|
}) |
|
|
}) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -244,10 +279,10 @@ Page({ |
|
|
...serverUserInfo |
|
|
...serverUserInfo |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 保存原始的头像URL数据
|
|
|
// 使用固定的头像URL数组
|
|
|
const rawAvatarUrl = updatedUserInfo.avatarUrl; |
|
|
const avatarUrls = this.data.avatarUrls; |
|
|
// 处理头像URL用于显示
|
|
|
// 使用第一张头像作为默认显示
|
|
|
updatedUserInfo.avatarUrl = this.processAvatarUrl(updatedUserInfo.avatarUrl); |
|
|
updatedUserInfo.avatarUrl = avatarUrls[0]; |
|
|
|
|
|
|
|
|
// 添加隐藏的电话号码
|
|
|
// 添加隐藏的电话号码
|
|
|
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber) |
|
|
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber) |
|
|
@ -256,7 +291,7 @@ Page({ |
|
|
wx.setStorageSync('userInfo', updatedUserInfo) |
|
|
wx.setStorageSync('userInfo', updatedUserInfo) |
|
|
this.setData({ |
|
|
this.setData({ |
|
|
userInfo: updatedUserInfo, |
|
|
userInfo: updatedUserInfo, |
|
|
rawAvatarUrl |
|
|
rawAvatarUrl: avatarUrls |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
// 同步更新用户身份信息(当前身份由数据库决定)
|
|
|
// 同步更新用户身份信息(当前身份由数据库决定)
|
|
|
@ -285,10 +320,10 @@ Page({ |
|
|
...serverUserInfo |
|
|
...serverUserInfo |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 保存原始的头像URL数据
|
|
|
// 使用固定的头像URL数组
|
|
|
const rawAvatarUrl = updatedUserInfo.avatarUrl; |
|
|
const avatarUrls = this.data.avatarUrls; |
|
|
// 处理头像URL用于显示
|
|
|
// 使用第一张头像作为默认显示
|
|
|
updatedUserInfo.avatarUrl = this.processAvatarUrl(updatedUserInfo.avatarUrl); |
|
|
updatedUserInfo.avatarUrl = avatarUrls[0]; |
|
|
|
|
|
|
|
|
// 添加隐藏的电话号码
|
|
|
// 添加隐藏的电话号码
|
|
|
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber) |
|
|
updatedUserInfo.hiddenPhoneNumber = this.hidePhoneNumber(updatedUserInfo.phoneNumber) |
|
|
@ -297,7 +332,7 @@ Page({ |
|
|
wx.setStorageSync('userInfo', updatedUserInfo) |
|
|
wx.setStorageSync('userInfo', updatedUserInfo) |
|
|
this.setData({ |
|
|
this.setData({ |
|
|
userInfo: updatedUserInfo, |
|
|
userInfo: updatedUserInfo, |
|
|
rawAvatarUrl |
|
|
rawAvatarUrl: avatarUrls |
|
|
}) |
|
|
}) |
|
|
|
|
|
|
|
|
// 同步更新用户身份信息(当前身份由数据库决定)
|
|
|
// 同步更新用户身份信息(当前身份由数据库决定)
|
|
|
@ -1136,30 +1171,8 @@ Page({ |
|
|
|
|
|
|
|
|
// 点击头像切换图片
|
|
|
// 点击头像切换图片
|
|
|
onAvatarClick() { |
|
|
onAvatarClick() { |
|
|
// 使用rawAvatarUrl获取完整的头像URL数组
|
|
|
// 使用固定的头像URL数组
|
|
|
let avatarUrls = []; |
|
|
const avatarUrls = this.data.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; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 检查是否有至少两张图片可以切换
|
|
|
// 检查是否有至少两张图片可以切换
|
|
|
if (avatarUrls.length < 2) { |
|
|
if (avatarUrls.length < 2) { |
|
|
@ -1185,15 +1198,12 @@ Page({ |
|
|
if (res.confirm) { |
|
|
if (res.confirm) { |
|
|
// 切换到下一张图片
|
|
|
// 切换到下一张图片
|
|
|
const app = getApp(); |
|
|
const app = getApp(); |
|
|
|
|
|
// 只更新显示用的avatarUrl
|
|
|
const updatedUserInfo = { |
|
|
const updatedUserInfo = { |
|
|
...this.data.userInfo, |
|
|
...this.data.userInfo, |
|
|
avatarUrl: avatarUrls[nextIndex] // 直接使用下一张图片
|
|
|
avatarUrl: avatarUrls[nextIndex] // 直接使用下一张图片用于显示
|
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
// 保存到本地存储和全局状态
|
|
|
|
|
|
app.globalData.userInfo = updatedUserInfo; |
|
|
|
|
|
wx.setStorageSync('userInfo', updatedUserInfo); |
|
|
|
|
|
|
|
|
|
|
|
// 更新页面显示
|
|
|
// 更新页面显示
|
|
|
this.setData({ |
|
|
this.setData({ |
|
|
userInfo: updatedUserInfo, |
|
|
userInfo: updatedUserInfo, |
|
|
|