feat: 对接默认头像处理

This commit is contained in:
hzj 2025-11-04 18:32:20 +08:00
parent 5cb3421150
commit f4ea886b40
3 changed files with 23 additions and 12 deletions

View File

@ -115,9 +115,9 @@
> >
<img <img
v-if="member.memberProfile?.userAvatar" v-if="member.memberProfile?.userAvatar"
:src="member.memberProfile.userAvatar" :src="member.memberProfile.userAvatar || ''"
:alt="member.memberProfile?.userNickname" :alt="member.memberProfile?.userNickname"
@error="handleImageError" @error="defaultAvatarUrl"
style="width: 100%; height: 100%; border-radius: 50%; object-fit: cover" style="width: 100%; height: 100%; border-radius: 50%; object-fit: cover"
/> />
<div <div
@ -389,9 +389,10 @@ const getAvatarPlaceholder = (nickname) => {
} }
// //
const handleImageError = (event) => { const defaultAvatarUrl = (e) => {
console.warn('头像加载失败:', event.target.src) console.log('头像资源出错')
// e.target.onerror = null //
e.target.src = new URL('/src/assets/images/WeeklyStar/defaultAvatar.png', import.meta.url).href
} }
// //

View File

@ -42,10 +42,10 @@
<div class="avatar"> <div class="avatar">
<img <img
v-if="userInfo.userAvatar" v-if="userInfo.userAvatar"
:src="userInfo.userAvatar" :src="userInfo.userAvatar || ''"
:alt="userInfo.userNickname || userInfo.name" :alt="userInfo.userNickname || userInfo.name"
class="avatar-image" class="avatar-image"
@error="handleAvatarError" @error="defaultAvatarUrl"
/> />
<span v-else class="avatar-text">{{ <span v-else class="avatar-text">{{
(userInfo.userNickname || userInfo.name).charAt(0) (userInfo.userNickname || userInfo.name).charAt(0)
@ -89,7 +89,7 @@
:src="selectedUser.userAvatar || ''" :src="selectedUser.userAvatar || ''"
:alt="selectedUser.userNickname || userInfo.name" :alt="selectedUser.userNickname || userInfo.name"
class="avatar-image" class="avatar-image"
@error="handleAvatarError" @error="defaultAvatarUrl"
/> />
<span v-else>{{ selectedUser.name.charAt(0) }}</span> <span v-else>{{ selectedUser.name.charAt(0) }}</span>
</div> </div>
@ -225,8 +225,10 @@ const fetchFreightBalance = async () => {
} }
// //
const handleAvatarError = () => { const defaultAvatarUrl = (e) => {
userInfo.value.userAvatar = null console.log('头像资源出错')
e.target.onerror = null //
e.target.src = new URL('/src/assets/images/WeeklyStar/defaultAvatar.png', import.meta.url).href
} }
// //

View File

@ -46,9 +46,10 @@
> >
<img <img
v-if="message.avatar" v-if="message.avatar"
:src="message.avatar" :src="message.avatar || ''"
:alt="message.name" :alt="message.name"
style="display: block; width: 100%; aspect-ratio: 1/1; object-fit: cover" style="display: block; width: 100%; aspect-ratio: 1/1; object-fit: cover"
@error="defaultAvatarUrl"
/> />
<div v-else>{{ message.name?.charAt(0) || 'U' }}</div> <div v-else>{{ message.name?.charAt(0) || 'U' }}</div>
</div> </div>
@ -62,7 +63,7 @@
white-space: nowrap; white-space: nowrap;
" "
> >
{{ message.name || t('unknown_user') }}aaaaaaaaaaaaaaaaaaaaaa {{ message.name || t('unknown_user') }}
</h4> </h4>
<div> <div>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
@ -128,6 +129,13 @@ const mockMessages = [
}, },
] ]
//
const defaultAvatarUrl = (e) => {
console.log('头像资源出错')
e.target.onerror = null //
e.target.src = new URL('/src/assets/images/WeeklyStar/defaultAvatar.png', import.meta.url).href
}
// //
const fetchMessages = async () => { const fetchMessages = async () => {
loading.value = true loading.value = true