巴青农资商城

shopDisplay.js 2.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import { resolveFileUrl } from '@/utils/image'
  2. import { SHOP_STATUS_CLOSED } from '@/constants/shop'
  3. import { mapCategoryTree, mapLevel2Tabs } from '@/utils/categoryDisplay'
  4. const SHOP_PLACEHOLDER = '/static/logo.png'
  5. /** 店铺主页介绍区 */
  6. export function mapShopProfile(row) {
  7. if (!row) return null
  8. const rating = row.rating
  9. const fansCount = row.fansCount != null ? Number(row.fansCount) : 0
  10. return {
  11. shopId: row.shopId,
  12. shopName: row.shopName || '',
  13. shopAvatar: resolveFileUrl(row.shopAvatar) || SHOP_PLACEHOLDER,
  14. shopDesc: (row.shopDesc || '').trim(),
  15. shopStatus: row.shopStatus,
  16. shopPhone: row.shopPhone || '',
  17. rating,
  18. fansCount,
  19. followed: !!row.followed,
  20. isClosed: String(row.shopStatus) === SHOP_STATUS_CLOSED,
  21. showRating: rating != null && rating !== '',
  22. showFans: true,
  23. ratingText: rating != null && rating !== '' ? String(rating) : ''
  24. }
  25. }
  26. /** 店铺分类树 / 二级 Tab(字段同平台分类 VO) */
  27. export function mapShopCategoryTree(list) {
  28. return mapCategoryTree(list)
  29. }
  30. export function mapShopLevel2Tabs(list) {
  31. return mapLevel2Tabs(list)
  32. }
  33. /** 热门分类靠前(同序保持 sortNo) */
  34. export function sortShopTabsWithHot(list) {
  35. if (!Array.isArray(list) || !list.length) return []
  36. return [...list].sort((a, b) => {
  37. if (!!a.isHot !== !!b.isHot) return a.isHot ? -1 : 1
  38. const sa = Number(a.sortNo) || 0
  39. const sb = Number(b.sortNo) || 0
  40. return sa - sb
  41. })
  42. }
  43. /** 搜索店铺卡片 */
  44. export function mapShopCard(row) {
  45. if (!row) return null
  46. return {
  47. shopId: row.shopId,
  48. shopName: row.shopName,
  49. shopAvatar: row.shopAvatar,
  50. displayAvatar: resolveFileUrl(row.shopAvatar) || SHOP_PLACEHOLDER,
  51. shopStatus: row.shopStatus,
  52. rating: row.rating,
  53. fansCount: row.fansCount,
  54. showRating: row.rating != null && row.rating !== '',
  55. showFans: row.fansCount != null && row.fansCount !== ''
  56. }
  57. }
  58. export function mapShopCardList(list) {
  59. if (!Array.isArray(list)) return []
  60. return list.map(mapShopCard).filter(Boolean)
  61. }
  62. /** 我的店铺关注列表行 */
  63. export function mapShopFollowItem(row) {
  64. if (!row) return null
  65. const rating = row.rating
  66. const fansCount = row.fansCount != null ? Number(row.fansCount) : 0
  67. return {
  68. shopId: row.shopId,
  69. shopName: row.shopName || '',
  70. shopAvatar: row.shopAvatar,
  71. displayAvatar: resolveFileUrl(row.shopAvatar) || SHOP_PLACEHOLDER,
  72. shopStatus: row.shopStatus,
  73. isClosed: String(row.shopStatus) === SHOP_STATUS_CLOSED,
  74. rating,
  75. fansCount,
  76. showRating: rating != null && rating !== '',
  77. ratingText: rating != null && rating !== '' ? String(rating) : '',
  78. followTime: row.followTime
  79. }
  80. }
  81. export function mapShopFollowList(list) {
  82. if (!Array.isArray(list)) return []
  83. return list.map(mapShopFollowItem).filter(Boolean)
  84. }