From fdf85dfec76f7b9ef4d2e84bc9c952da126b8254 Mon Sep 17 00:00:00 2001 From: jinhhanhan <1683105490@qq.com> Date: Thu, 12 Mar 2026 18:25:12 +0800 Subject: [PATCH] =?UTF-8?q?chore=EF=BC=9A=E6=9B=B4=E6=8D=A2=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages_tool/ai-chat/ai-chat-message.vue | 79 ++++++++++++++++++++------ 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/pages_tool/ai-chat/ai-chat-message.vue b/pages_tool/ai-chat/ai-chat-message.vue index 2ce9d16..2c937c8 100644 --- a/pages_tool/ai-chat/ai-chat-message.vue +++ b/pages_tool/ai-chat/ai-chat-message.vue @@ -299,10 +299,6 @@ 从相册选择 - @@ -613,22 +609,66 @@ export default { // 从相册选择头像 chooseAvatarFromAlbum() { console.log('选择从相册选择头像') - this.selectAvatar('album') + this.selectAvatar() }, - // 拍照上传头像 - takeAvatarWithCamera() { - console.log('选择拍照上传头像') - this.selectAvatar('camera') - }, - - // 统一头像选择方法 - selectAvatar(sourceType) { - console.log('开始选择头像,来源:', sourceType) + // 统一头像选择方法 - 仅从相册选择 + selectAvatar() { + console.log('开始选择头像') + + // #ifdef H5 + // H5环境下的处理 - 仅从相册选择 + const input = document.createElement('input') + input.type = 'file' + input.accept = 'image/*' + input.style.display = 'none' + + // 监听文件选择 + input.onchange = (e) => { + const file = e.target.files[0] + if (file) { + // 创建临时URL + const tempFilePath = URL.createObjectURL(file) + + // 1. 本地预览更新 + this.localUserAvatar = tempFilePath + + // 2. 持久化缓存(支持页面刷新后保留) + const reader = new FileReader() + reader.onload = (e) => { + const base64 = e.target.result + uni.setStorageSync('user_avatar', base64) + } + reader.readAsDataURL(file) + + // 3. 通知父组件(可选,用于同步到服务器等场景) + this.$emit('avatar-changed', tempFilePath) + + // 4. 关闭弹窗 + this.closeAvatarSelector() + + // 5. 提示成功 + uni.showToast({ + title: '头像更换成功', + icon: 'success', + duration: 1500 + }) + } else { + // 用户取消选择 + this.closeAvatarSelector() + } + } + + // 触发点击 + input.click() + // #endif + + // #ifdef MP-WEIXIN + // 微信小程序环境下,使用uni.chooseImage - 仅从相册选择 uni.chooseImage({ count: 1, // 仅选择1张 sizeType: ['compressed'], // 压缩图片 - sourceType: [sourceType], // 来源:相册/相机 + sourceType: ['album'], // 仅从相册选择 success: (res) => { const tempFilePath = res.tempFilePaths[0] @@ -654,12 +694,14 @@ export default { fail: (error) => { console.error('选择头像失败:', error) // 权限拒绝处理 - if (error.errMsg.includes('deny')) { + if (error.errMsg && error.errMsg.includes('deny')) { uni.showToast({ - title: '请开启相册/相机权限', + title: '请开启相册权限', icon: 'none', duration: 2000 }) + } else if (error.errMsg && error.errMsg.includes('cancel')) { + // 用户取消选择,不显示错误提示 } else { uni.showToast({ title: '头像选择失败,请重试', @@ -667,8 +709,11 @@ export default { duration: 2000 }) } + // 关闭弹窗 + this.closeAvatarSelector() } }) + // #endif }, // 新增:打开昵称编辑弹窗