staticAsset.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import {
  2. STATIC_ASSETS_BASE_URL_DEFAULT,
  3. STATIC_ASSETS_BASE_URL_PRODUCTION,
  4. STATIC_ASSETS_BASE_URL_TEST
  5. } from '@/config/static-assets-defaults'
  6. import { getStaticAssetsVersion, withOssVersion } from '@/utils/ossCache'
  7. function normalizeBase(u) {
  8. const s = (u || '').trim() || STATIC_ASSETS_BASE_URL_DEFAULT
  9. return s.endsWith('/') ? s : `${s}/`
  10. }
  11. function resolveBase() {
  12. // TODO(config-hardcoded): 静态资源基址当前写死,后续恢复为发布时可切换配置并增加联调检查。
  13. // 写死模式:不读取环境变量,不依赖 MODE 判定。
  14. return normalizeBase(STATIC_ASSETS_BASE_URL_PRODUCTION || STATIC_ASSETS_BASE_URL_TEST)
  15. }
  16. export function getStaticAssetsBaseUrl() {
  17. return resolveBase()
  18. }
  19. /**
  20. * 拼接远程静态资源完整 URL(相对路径不要前导 /,如 icons/1.png)。
  21. */
  22. export function staticAssetUrl(relativePath) {
  23. const p = String(relativePath || '').replace(/^\/+/, '')
  24. const seg = p.split('/').filter(Boolean).map((s) => encodeURIComponent(s)).join('/')
  25. const url = `${getStaticAssetsBaseUrl()}${seg}`
  26. // sqxp-static 默认在 nginx 侧设置了长缓存;这里统一追加 v=版本号,避免同名覆盖后不生效
  27. return withOssVersion(url, getStaticAssetsVersion())
  28. }
  29. export const DEFAULT_PLACEHOLDER_IMAGE_URL = staticAssetUrl('images/logo.png')
  30. export const IMG_DEFAULT_PRODUCT = staticAssetUrl('images/default-product.png')
  31. /** 全端统一:空列表 / 暂无 等占位图(与 miniprogram `nothing.svg` 一致) */
  32. export const IMG_NOTHING = staticAssetUrl('nothing.svg')
  33. export const IMG_EMPTY = IMG_NOTHING
  34. export const IMG_LOGO_WATERMARK = staticAssetUrl('images/logo11.png')
  35. export const IMG_CLIPBOARD = staticAssetUrl('logo-img/clipboard.svg')
  36. export const IMG_PASSWORD_CARD = staticAssetUrl('logo-img/password.png')
  37. export const IMG_LINK = staticAssetUrl('logo-img/link.png')
  38. export const IMG_SETTINGS_AVATAR = staticAssetUrl('images/设置头像.svg')
  39. export const IMG_SETTINGS_PASSWORD = staticAssetUrl('images/修改密码.svg')
  40. export const IMG_CUSTOMER_SERVICE = staticAssetUrl('images/客服.svg')
  41. /** 登录页输入框前图标(与静态资源目录 `images/用户名.svg`、`images/密码.svg` 对应) */
  42. export const IMG_LOGIN_USERNAME = staticAssetUrl('images/用户名.svg')
  43. export const IMG_LOGIN_PASSWORD = staticAssetUrl('images/密码.svg')
  44. export const ICON_ARROW_BOTTOM = staticAssetUrl('arrow-bottom.svg')