巴青农资商城

image.js 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { joinApiUrl } from '@/config'
  2. /** 是否外链或 data URL */
  3. export function isExternalUrl(url) {
  4. if (!url) return false
  5. return /^(https?:|data:|\/\/)/i.test(String(url).trim())
  6. }
  7. /**
  8. * 将后端返回的图片路径转为可展示的完整 URL
  9. * @param {string} path bannerImage / categoryPic / mainPic 等
  10. */
  11. export function resolveFileUrl(path) {
  12. if (path == null || path === '') {
  13. return ''
  14. }
  15. const raw = String(path).split(',')[0].trim()
  16. if (!raw) {
  17. return ''
  18. }
  19. if (isExternalUrl(raw)) {
  20. return raw
  21. }
  22. return joinApiUrl(raw.startsWith('/') ? raw : `/${raw}`)
  23. }
  24. /**
  25. * 将逗号分隔或数组形式的图片路径转为完整 URL 列表(对齐 ruoyi-ui ImagePreview)
  26. * @param {string|string[]|null|undefined} pathOrList
  27. */
  28. export function resolveFileUrlList(pathOrList) {
  29. if (pathOrList == null || pathOrList === '') return []
  30. if (Array.isArray(pathOrList)) {
  31. return pathOrList.map((item) => resolveFileUrl(item)).filter(Boolean)
  32. }
  33. return String(pathOrList)
  34. .split(',')
  35. .map((s) => resolveFileUrl(s.trim()))
  36. .filter(Boolean)
  37. }