avatar.js 1.3 KB

12345678910111213141516171819202122232425262728293031
  1. import { BASE_URL } from '@/config/api'
  2. import { DEFAULT_PLACEHOLDER_IMAGE_URL } from '@/utils/staticAsset'
  3. /** 未设置头像时统一使用叁强 logo(远程静态 images/logo.png) */
  4. export const DEFAULT_USER_AVATAR_URL = DEFAULT_PLACEHOLDER_IMAGE_URL
  5. /** 各角色默认已统一为 logo,保留参数仅为兼容旧调用 */
  6. export function defaultAvatarPathByRole(_role) {
  7. return DEFAULT_USER_AVATAR_URL
  8. }
  9. /**
  10. * 将后端返回的头像地址转为小程序 `<image>` 可加载的绝对 URL。
  11. * - 已是 http(s):// 或 // 则原样返回
  12. * - 以 / 开头的站内路径(如 /uploads/...)拼接到 API 域名根(与静态资源同源)
  13. */
  14. export function normalizeAvatarUrlForMini(avatarUrl) {
  15. const u = String(avatarUrl || '').trim()
  16. if (!u) return ''
  17. if (/^https?:\/\//i.test(u) || u.startsWith('//')) return u
  18. const origin = BASE_URL.replace(/\/$/, '')
  19. const path = u.startsWith('/') ? u : `/${u}`
  20. return `${origin}${path}`
  21. }
  22. /** 展示用头像:有自定义 URL 则转为可访问地址,否则用叁强 logo(本地路径) */
  23. export function resolveUserAvatarUrl(avatarUrl, role) {
  24. const raw = avatarUrl != null ? String(avatarUrl).trim() : ''
  25. if (raw) return normalizeAvatarUrlForMini(raw)
  26. return defaultAvatarPathByRole(role)
  27. }