Browse Source

feat: 品牌模块和店铺详情

pull/1/head
张耀 3 years ago
parent
commit
6817d49791
  1. 18632
      package-lock.json
  2. 13
      public/static/offline/JSON/getBrandShopList.json
  3. 366
      public/static/offline/JSON/getBrandShopListByIndustryId.json
  4. 34
      public/static/offline/JSON/getRegionList.json
  5. 3
      src/assets/images/brand/all.svg
  6. 4
      src/assets/images/brand/currentPos.svg
  7. 3
      src/assets/images/brand/down.svg
  8. 9
      src/assets/images/brand/format_normal.svg
  9. 3
      src/assets/images/brand/icon_area.svg
  10. 3
      src/assets/images/brand/icon_area_sel.svg
  11. 3
      src/assets/images/brand/icon_floor.svg
  12. 3
      src/assets/images/brand/icon_floor_sel.svg
  13. 3
      src/assets/images/brand/icon_format.svg
  14. 3
      src/assets/images/brand/icon_format_sel.svg
  15. 11
      src/assets/images/brand/label_newEn.svg
  16. 11
      src/assets/images/brand/label_newZh.svg
  17. 11
      src/assets/images/brand/label_promotionEn.svg
  18. 11
      src/assets/images/brand/label_promotionTw.svg
  19. 5
      src/assets/images/brand/label_promotionZh.svg
  20. 12
      src/assets/images/brand/no-rec.svg
  21. 3
      src/assets/images/brand/pos.svg
  22. 8
      src/assets/images/empty_big.svg
  23. 13
      src/assets/images/empty_small.svg
  24. BIN
      src/assets/images/menu/activity_proc.png
  25. BIN
      src/assets/images/menu/art_proc.png
  26. BIN
      src/assets/images/menu/brand_proc.png
  27. BIN
      src/assets/images/menu/map_proc.png
  28. BIN
      src/assets/images/menu/member_proc.png
  29. BIN
      src/assets/images/menu/parking_proc.png
  30. BIN
      src/assets/images/menu/service_proc.png
  31. BIN
      src/assets/images/menu/traffic_proc.png
  32. 5
      src/assets/images/shopDetail/close.svg
  33. 6
      src/assets/images/shopDetail/go.svg
  34. 5
      src/assets/images/shopDetail/icon_address.svg
  35. 3
      src/assets/images/shopDetail/icon_format.svg
  36. 5
      src/assets/images/shopDetail/icon_tel.svg
  37. 5
      src/assets/images/shopDetail/icon_time.svg
  38. 3
      src/base/Marquees/Marquees.vue
  39. 60
      src/base/Masker/Masker.vue
  40. 6
      src/components/PublicComponent/PublicComponent.vue
  41. 401
      src/components/ShopDetail/ShopDetail.vue
  42. 6
      src/components/ShopItem/ShopItem.vue
  43. 210
      src/components/SwitchTab/SwitchTab.vue
  44. 91
      src/components/TypeBtnList/TypeBtnList.vue
  45. 3
      src/composables/usePage.ts
  46. 3
      src/http/api/base/index.ts
  47. 4
      src/i18n/lang/en.json
  48. 6
      src/i18n/lang/tw.json
  49. 4
      src/i18n/lang/zh.json
  50. 13
      src/router/routes.ts
  51. 4
      src/types/industry.d.ts
  52. 22
      src/types/region.d.ts
  53. 3
      src/types/shop.d.ts
  54. 29
      src/views/Brand/Brand.vue
  55. 407
      src/views/Brand/filterFormatAndFloor.vue
  56. 195
      src/views/Brand/recommendShop.vue
  57. 533
      src/views/Brand/shopList.vue

18632
package-lock.json

File diff suppressed because it is too large

13
public/static/offline/JSON/getBrandShopList.json

@ -138,7 +138,18 @@
"industryNameJa": "", "industryNameJa": "",
"industryNameOl": "", "industryNameOl": "",
"shopNum": 35, "shopNum": 35,
"industryList": []
"industryList": [{"isSpecial": 1,
"industryCode": "1g6AyKKqfsKXIuKEra3obf",
"industryName": "餐饮1",
"industryNameEn": "",
"industryNameJa": "",
"industryNameOl": ""
},{"isSpecial": 1,
"industryCode": "2g6AyKKqfsKXIuKEra3obf",
"industryName": "餐饮2",
"industryNameEn": "",
"industryNameJa": "",
"industryNameOl": ""}]
}, },
{ {
"isSpecial": 0, "isSpecial": 0,

366
public/static/offline/JSON/getBrandShopListByIndustryId.json

File diff suppressed because it is too large

34
public/static/offline/JSON/getRegionList.json

@ -0,0 +1,34 @@
{
"code": 200,
"msg": "操作成功",
"data": [
{
"regionCode": "mPfaxPdRDVg6CLhdyiIUT",
"regionName": "SKP-S",
"regionNameEn": "SKP-S",
"regionNameJa": "",
"regionNameOl": ""
},
{
"regionCode": "L-qsFUgjr8v2vTTpBGVGF",
"regionName": "美食大道",
"regionNameEn": "美食大道英文",
"regionNameJa": "",
"regionNameOl": ""
},
{
"regionCode": "N7jMkq7sak-vKNK9rdH7Z",
"regionName": "K大道",
"regionNameEn": "K大道英文",
"regionNameJa": "",
"regionNameOl": ""
},
{
"regionCode": "5LD1gMoB4eZoMmIFe0dug",
"regionName": "SKP",
"regionNameEn": "SKP",
"regionNameJa": "",
"regionNameOl": ""
}
]
}

3
src/assets/images/brand/all.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 2H7.33333V7.33333H2V2ZM2 8.66667H7.33333V14H2V8.66667ZM8.66667 2H14V7.33333H8.66667V2ZM8.66667 8.66667H14V14H8.66667V8.66667ZM10 3.33333V6H12.6667V3.33333H10ZM10 10V12.6667H12.6667V10H10ZM3.33333 3.33333V6H6V3.33333H3.33333ZM3.33333 10V12.6667H6V10H3.33333Z" fill="#615C59"/>
</svg>

After

Width:  |  Height:  |  Size: 391 B

4
src/assets/images/brand/currentPos.svg

@ -0,0 +1,4 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.74881 10.3876L4.74828 10.3871C3.91491 9.55104 3.40137 8.39756 3.40137 7.11943C3.40137 4.56291 5.45877 2.5 7.9924 2.5C10.5208 2.5 12.5791 4.56373 12.5834 7.11964C12.5834 8.34438 12.0991 9.5191 11.236 10.3876L7.9924 13.6514L4.74881 10.3876Z" stroke="#E00068"/>
<path d="M6.74652 8.37482L6.74652 8.37482L6.74528 8.37357C6.41528 8.04124 6.22852 7.58954 6.22852 7.11952C6.22852 6.64723 6.4123 6.19729 6.74342 5.86733L6.74343 5.86734L6.7459 5.86484C7.07189 5.53538 7.52193 5.34788 7.9936 5.34522C8.46168 5.34555 8.91117 5.53404 9.2382 5.86571L9.2382 5.86571L9.23944 5.86696C9.56944 6.1993 9.7562 6.651 9.7562 7.12101L9.75621 7.1235C9.75854 7.59228 9.57366 8.042 9.2413 8.3732L9.24068 8.37382C8.90862 8.70589 8.45863 8.89266 7.99111 8.89532C7.52304 8.89498 7.07355 8.70649 6.74652 8.37482Z" stroke="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 918 B

3
src/assets/images/brand/down.svg

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.52876 5.52864C3.78911 5.26829 4.21122 5.26829 4.47157 5.52864L8.00016 9.05723L11.5288 5.52864C11.7891 5.26829 12.2112 5.26829 12.4716 5.52864C12.7319 5.78899 12.7319 6.2111 12.4716 6.47145L8.47157 10.4714C8.21122 10.7318 7.78911 10.7318 7.52876 10.4714L3.52876 6.47145C3.26841 6.2111 3.26841 5.78899 3.52876 5.52864Z" fill="#8E9090"/>
</svg>

After

Width:  |  Height:  |  Size: 450 B

9
src/assets/images/brand/format_normal.svg

@ -0,0 +1,9 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#159;&#186;&#231;&#161;&#128;/&#228;&#184;&#154;&#230;&#128;&#129;/&#233;&#187;&#152;&#232;&#174;&#164;">
<g id="&#231;&#159;&#162;&#233;&#135;&#143;">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.33314 1.52584C8.12687 1.40675 7.87274 1.40675 7.66647 1.52584L5.15771 2.97427C4.95145 3.09336 4.82438 3.31345 4.82438 3.55162V6.44849C4.82438 6.68667 4.95145 6.90675 5.15771 7.02584L7.66647 8.47427C7.87274 8.59336 8.12687 8.59336 8.33314 8.47427L10.8419 7.02584C11.0482 6.90675 11.1752 6.68667 11.1752 6.44849V3.55162C11.1752 3.31345 11.0482 3.09336 10.8419 2.97427L8.33314 1.52584ZM7.99981 2.87299L6.15771 3.93652V6.06359L7.99981 7.12712L9.8419 6.06359V3.93652L7.99981 2.87299Z" fill="#615C59"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.66647 7.85917C4.46021 7.74008 4.20608 7.74008 3.99981 7.85917L1.49105 9.30761C1.28478 9.4267 1.15771 9.64678 1.15771 9.88496V12.7818C1.15771 13.02 1.28478 13.2401 1.49105 13.3592L3.99981 14.8076C4.20608 14.9267 4.46021 14.9267 4.66647 14.8076L7.17523 13.3592C7.3815 13.2401 7.50857 13.02 7.50857 12.7818V9.88496C7.50857 9.64678 7.3815 9.4267 7.17523 9.30761L4.66647 7.85917ZM4.33314 9.20632L2.49105 10.2699V12.3969L4.33314 13.4605L6.17523 12.3969V10.2699L4.33314 9.20632Z" fill="#615C59"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.3331 8.02584C11.5394 7.90675 11.7935 7.90675 11.9998 8.02584L14.5086 9.47427C14.7148 9.59336 14.8419 9.81345 14.8419 10.0516V12.9485C14.8419 13.1867 14.7148 13.4068 14.5086 13.5258L11.9998 14.9743C11.7935 15.0934 11.5394 15.0934 11.3331 14.9743L8.82438 13.5258C8.61811 13.4068 8.49105 13.1867 8.49105 12.9485V10.0516C8.49105 9.81345 8.61811 9.59336 8.82438 9.47427L11.3331 8.02584ZM9.82438 10.4365L11.6665 9.37299L13.5086 10.4365V12.5636L11.6665 13.6271L9.82438 12.5636V10.4365Z" fill="#615C59"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

3
src/assets/images/brand/icon_area.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.6667 4C27.4027 4 28 4.59733 28 5.33333V26.6667C28 27.4027 27.4027 28 26.6667 28H5.33333C4.59733 28 4 27.4027 4 26.6667V5.33333C4 4.59733 4.59733 4 5.33333 4H26.6667ZM14.9187 17.544L6.66667 19V25.3333H16.2907L14.9173 17.544H14.9187ZM25.3333 6.66667H15.708L18.9987 25.3333H25.3333V6.66667ZM13 6.66667H6.66667V16.2907L14.456 14.9173L13 6.66667Z" fill="#8E9090"/>
</svg>

After

Width:  |  Height:  |  Size: 476 B

3
src/assets/images/brand/icon_area_sel.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.6667 4C27.4027 4 28 4.59733 28 5.33333V26.6667C28 27.4027 27.4027 28 26.6667 28H5.33333C4.59733 28 4 27.4027 4 26.6667V5.33333C4 4.59733 4.59733 4 5.33333 4H26.6667ZM14.9187 17.544L6.66667 19V25.3333H16.2907L14.9173 17.544H14.9187ZM25.3333 6.66667H15.708L18.9987 25.3333H25.3333V6.66667ZM13 6.66667H6.66667V16.2907L14.456 14.9173L13 6.66667Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 476 B

3
src/assets/images/brand/icon_floor.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.7775 20.2664L28.3801 21.2278C28.479 21.287 28.5608 21.3708 28.6177 21.471C28.6745 21.5713 28.7044 21.6845 28.7044 21.7998C28.7044 21.915 28.6745 22.0283 28.6177 22.1285C28.5608 22.2288 28.479 22.3126 28.3801 22.3718L16.6868 29.3878C16.4794 29.5124 16.2421 29.5782 16.0001 29.5782C15.7582 29.5782 15.5208 29.5124 15.3135 29.3878L3.62013 22.3718C3.52126 22.3126 3.43942 22.2288 3.38259 22.1285C3.32577 22.0283 3.2959 21.915 3.2959 21.7998C3.2959 21.6845 3.32577 21.5713 3.38259 21.471C3.43942 21.3708 3.52126 21.287 3.62013 21.2278L5.2228 20.2664L16.0001 26.7331L26.7775 20.2664V20.2664ZM26.7775 13.9998L28.3801 14.9611C28.479 15.0203 28.5608 15.1041 28.6177 15.2043C28.6745 15.3046 28.7044 15.4179 28.7044 15.5331C28.7044 15.6483 28.6745 15.7616 28.6177 15.8619C28.5608 15.9621 28.479 16.0459 28.3801 16.1051L16.0001 23.5331L3.62013 16.1051C3.52126 16.0459 3.43942 15.9621 3.38259 15.8619C3.32577 15.7616 3.2959 15.6483 3.2959 15.5331C3.2959 15.4179 3.32577 15.3046 3.38259 15.2043C3.43942 15.1041 3.52126 15.0203 3.62013 14.9611L5.2228 13.9998L16.0001 20.4664L26.7775 13.9998ZM16.6855 1.7451L28.3801 8.7611C28.479 8.82029 28.5608 8.9041 28.6177 9.00435C28.6745 9.1046 28.7044 9.21787 28.7044 9.3331C28.7044 9.44834 28.6745 9.5616 28.6177 9.66185C28.5608 9.7621 28.479 9.84591 28.3801 9.9051L16.0001 17.3331L3.62013 9.9051C3.52126 9.84591 3.43942 9.7621 3.38259 9.66185C3.32577 9.5616 3.2959 9.44834 3.2959 9.3331C3.2959 9.21787 3.32577 9.1046 3.38259 9.00435C3.43942 8.9041 3.52126 8.82029 3.62013 8.7611L15.3135 1.7451C15.5208 1.62051 15.7582 1.55469 16.0001 1.55469C16.2421 1.55469 16.4794 1.62051 16.6868 1.7451H16.6855ZM16.0001 4.44243L7.84947 9.3331L16.0001 14.2238L24.1508 9.3331L16.0001 4.44243Z" fill="#8E9090"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

3
src/assets/images/brand/icon_floor_sel.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M26.7775 20.2664L28.3801 21.2278C28.479 21.287 28.5608 21.3708 28.6177 21.471C28.6745 21.5713 28.7044 21.6845 28.7044 21.7998C28.7044 21.915 28.6745 22.0283 28.6177 22.1285C28.5608 22.2288 28.479 22.3126 28.3801 22.3718L16.6868 29.3878C16.4794 29.5124 16.2421 29.5782 16.0001 29.5782C15.7582 29.5782 15.5208 29.5124 15.3135 29.3878L3.62013 22.3718C3.52126 22.3126 3.43942 22.2288 3.38259 22.1285C3.32577 22.0283 3.2959 21.915 3.2959 21.7998C3.2959 21.6845 3.32577 21.5713 3.38259 21.471C3.43942 21.3708 3.52126 21.287 3.62013 21.2278L5.2228 20.2664L16.0001 26.7331L26.7775 20.2664V20.2664ZM26.7775 13.9998L28.3801 14.9611C28.479 15.0203 28.5608 15.1041 28.6177 15.2043C28.6745 15.3046 28.7044 15.4179 28.7044 15.5331C28.7044 15.6483 28.6745 15.7616 28.6177 15.8619C28.5608 15.9621 28.479 16.0459 28.3801 16.1051L16.0001 23.5331L3.62013 16.1051C3.52126 16.0459 3.43942 15.9621 3.38259 15.8619C3.32577 15.7616 3.2959 15.6483 3.2959 15.5331C3.2959 15.4179 3.32577 15.3046 3.38259 15.2043C3.43942 15.1041 3.52126 15.0203 3.62013 14.9611L5.2228 13.9998L16.0001 20.4664L26.7775 13.9998ZM16.6855 1.7451L28.3801 8.7611C28.479 8.82029 28.5608 8.9041 28.6177 9.00435C28.6745 9.1046 28.7044 9.21787 28.7044 9.3331C28.7044 9.44834 28.6745 9.5616 28.6177 9.66185C28.5608 9.7621 28.479 9.84591 28.3801 9.9051L16.0001 17.3331L3.62013 9.9051C3.52126 9.84591 3.43942 9.7621 3.38259 9.66185C3.32577 9.5616 3.2959 9.44834 3.2959 9.3331C3.2959 9.21787 3.32577 9.1046 3.38259 9.00435C3.43942 8.9041 3.52126 8.82029 3.62013 8.7611L15.3135 1.7451C15.5208 1.62051 15.7582 1.55469 16.0001 1.55469C16.2421 1.55469 16.4794 1.62051 16.6868 1.7451H16.6855ZM16.0001 4.44243L7.84947 9.3331L16.0001 14.2238L24.1508 9.3331L16.0001 4.44243Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

3
src/assets/images/brand/icon_format.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.00017 3.33398C9.74432 3.33398 10.4812 3.48056 11.1687 3.76533C11.8562 4.05011 12.4809 4.46751 13.0071 4.99371C13.5333 5.51991 13.9507 6.1446 14.2355 6.83211C14.5203 7.51962 14.6668 8.25649 14.6668 9.00065V14.6673H9.00017C7.49727 14.6673 6.05593 14.0703 4.99323 13.0076C3.93052 11.9449 3.3335 10.5035 3.3335 9.00065C3.3335 7.49776 3.93052 6.05642 4.99323 4.99371C6.05593 3.93101 7.49727 3.33398 9.00017 3.33398V3.33398ZM12.0002 12.0007V9.00065C12.0002 8.40731 11.8242 7.82729 11.4946 7.33394C11.1649 6.84059 10.6964 6.45608 10.1482 6.22901C9.60004 6.00195 8.99684 5.94254 8.41489 6.0583C7.83295 6.17405 7.2984 6.45977 6.87885 6.87933C6.45929 7.29889 6.17356 7.83344 6.05781 8.41538C5.94205 8.99732 6.00146 9.60052 6.22853 10.1487C6.45559 10.6969 6.84011 11.1654 7.33345 11.4951C7.8268 11.8247 8.40682 12.0007 9.00017 12.0007H12.0002ZM9.00017 17.334H14.6668V23.0007C14.6668 24.1214 14.3345 25.217 13.7118 26.1489C13.0892 27.0808 12.2042 27.8071 11.1687 28.236C10.1333 28.6649 8.99388 28.7771 7.89465 28.5584C6.79543 28.3398 5.78572 27.8001 4.99323 27.0076C4.20073 26.2151 3.66103 25.2054 3.44238 24.1062C3.22373 23.0069 3.33595 21.8676 3.76485 20.8321C4.19374 19.7967 4.92006 18.9117 5.85193 18.289C6.78381 17.6663 7.8794 17.334 9.00017 17.334V17.334ZM9.00017 20.0007C8.40682 20.0007 7.8268 20.1766 7.33345 20.5062C6.84011 20.8359 6.45559 21.3044 6.22853 21.8526C6.00146 22.4008 5.94205 23.004 6.05781 23.5859C6.17356 24.1679 6.45929 24.7024 6.87885 25.122C7.2984 25.5415 7.83295 25.8273 8.41489 25.943C8.99684 26.0588 9.60004 25.9994 10.1482 25.7723C10.6964 25.5452 11.1649 25.1607 11.4946 24.6674C11.8242 24.174 12.0002 23.594 12.0002 23.0007V20.0007H9.00017ZM23.0002 3.33398C24.5031 3.33398 25.9444 3.93101 27.0071 4.99371C28.0698 6.05642 28.6668 7.49776 28.6668 9.00065C28.6668 10.5035 28.0698 11.9449 27.0071 13.0076C25.9444 14.0703 24.5031 14.6673 23.0002 14.6673H17.3335V9.00065C17.3335 7.49776 17.9305 6.05642 18.9932 4.99371C20.0559 3.93101 21.4973 3.33398 23.0002 3.33398V3.33398ZM23.0002 12.0007C23.5935 12.0007 24.1735 11.8247 24.6669 11.4951C25.1602 11.1654 25.5447 10.6969 25.7718 10.1487C25.9989 9.60052 26.0583 8.99732 25.9425 8.41538C25.8268 7.83344 25.541 7.29889 25.1215 6.87933C24.7019 6.45977 24.1674 6.17405 23.5854 6.0583C23.0035 5.94254 22.4003 6.00195 21.8521 6.22901C21.3039 6.45608 20.8354 6.84059 20.5058 7.33394C20.1761 7.82729 20.0002 8.40731 20.0002 9.00065V12.0007H23.0002ZM17.3335 17.334H23.0002C24.1209 17.334 25.2165 17.6663 26.1484 18.289C27.0803 18.9117 27.8066 19.7967 28.2355 20.8321C28.6644 21.8676 28.7766 23.0069 28.5579 24.1062C28.3393 25.2054 27.7996 26.2151 27.0071 27.0076C26.2146 27.8001 25.2049 28.3398 24.1057 28.5584C23.0065 28.7771 21.8671 28.6649 20.8316 28.236C19.7962 27.8071 18.9112 27.0808 18.2885 26.1489C17.6658 25.217 17.3335 24.1214 17.3335 23.0007V17.334ZM20.0002 20.0007V23.0007C20.0002 23.594 20.1761 24.174 20.5058 24.6674C20.8354 25.1607 21.3039 25.5452 21.8521 25.7723C22.4003 25.9994 23.0035 26.0588 23.5854 25.943C24.1674 25.8273 24.7019 25.5415 25.1215 25.122C25.541 24.7024 25.8268 24.1679 25.9425 23.5859C26.0583 23.004 25.9989 22.4008 25.7718 21.8526C25.5447 21.3044 25.1602 20.8359 24.6669 20.5062C24.1735 20.1766 23.5935 20.0007 23.0002 20.0007H20.0002Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

3
src/assets/images/brand/icon_format_sel.svg

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.00017 3.33398C9.74432 3.33398 10.4812 3.48056 11.1687 3.76533C11.8562 4.05011 12.4809 4.46751 13.0071 4.99371C13.5333 5.51991 13.9507 6.1446 14.2355 6.83211C14.5203 7.51962 14.6668 8.25649 14.6668 9.00065V14.6673H9.00017C7.49727 14.6673 6.05593 14.0703 4.99323 13.0076C3.93052 11.9449 3.3335 10.5035 3.3335 9.00065C3.3335 7.49776 3.93052 6.05642 4.99323 4.99371C6.05593 3.93101 7.49727 3.33398 9.00017 3.33398V3.33398ZM12.0002 12.0007V9.00065C12.0002 8.40731 11.8242 7.82729 11.4946 7.33394C11.1649 6.84059 10.6964 6.45608 10.1482 6.22901C9.60004 6.00195 8.99684 5.94254 8.41489 6.0583C7.83295 6.17405 7.2984 6.45977 6.87885 6.87933C6.45929 7.29889 6.17356 7.83344 6.05781 8.41538C5.94205 8.99732 6.00146 9.60052 6.22853 10.1487C6.45559 10.6969 6.84011 11.1654 7.33345 11.4951C7.8268 11.8247 8.40682 12.0007 9.00017 12.0007H12.0002ZM9.00017 17.334H14.6668V23.0007C14.6668 24.1214 14.3345 25.217 13.7118 26.1489C13.0892 27.0808 12.2042 27.8071 11.1687 28.236C10.1333 28.6649 8.99388 28.7771 7.89465 28.5584C6.79543 28.3398 5.78572 27.8001 4.99323 27.0076C4.20073 26.2151 3.66103 25.2054 3.44238 24.1062C3.22373 23.0069 3.33595 21.8676 3.76485 20.8321C4.19374 19.7967 4.92006 18.9117 5.85193 18.289C6.78381 17.6663 7.8794 17.334 9.00017 17.334V17.334ZM9.00017 20.0007C8.40682 20.0007 7.8268 20.1766 7.33345 20.5062C6.84011 20.8359 6.45559 21.3044 6.22853 21.8526C6.00146 22.4008 5.94205 23.004 6.05781 23.5859C6.17356 24.1679 6.45929 24.7024 6.87885 25.122C7.2984 25.5415 7.83295 25.8273 8.41489 25.943C8.99684 26.0588 9.60004 25.9994 10.1482 25.7723C10.6964 25.5452 11.1649 25.1607 11.4946 24.6674C11.8242 24.174 12.0002 23.594 12.0002 23.0007V20.0007H9.00017ZM23.0002 3.33398C24.5031 3.33398 25.9444 3.93101 27.0071 4.99371C28.0698 6.05642 28.6668 7.49776 28.6668 9.00065C28.6668 10.5035 28.0698 11.9449 27.0071 13.0076C25.9444 14.0703 24.5031 14.6673 23.0002 14.6673H17.3335V9.00065C17.3335 7.49776 17.9305 6.05642 18.9932 4.99371C20.0559 3.93101 21.4973 3.33398 23.0002 3.33398V3.33398ZM23.0002 12.0007C23.5935 12.0007 24.1735 11.8247 24.6669 11.4951C25.1602 11.1654 25.5447 10.6969 25.7718 10.1487C25.9989 9.60052 26.0583 8.99732 25.9425 8.41538C25.8268 7.83344 25.541 7.29889 25.1215 6.87933C24.7019 6.45977 24.1674 6.17405 23.5854 6.0583C23.0035 5.94254 22.4003 6.00195 21.8521 6.22901C21.3039 6.45608 20.8354 6.84059 20.5058 7.33394C20.1761 7.82729 20.0002 8.40731 20.0002 9.00065V12.0007H23.0002ZM17.3335 17.334H23.0002C24.1209 17.334 25.2165 17.6663 26.1484 18.289C27.0803 18.9117 27.8066 19.7967 28.2355 20.8321C28.6644 21.8676 28.7766 23.0069 28.5579 24.1062C28.3393 25.2054 27.7996 26.2151 27.0071 27.0076C26.2146 27.8001 25.2049 28.3398 24.1057 28.5584C23.0065 28.7771 21.8671 28.6649 20.8316 28.236C19.7962 27.8071 18.9112 27.0808 18.2885 26.1489C17.6658 25.217 17.3335 24.1214 17.3335 23.0007V17.334ZM20.0002 20.0007V23.0007C20.0002 23.594 20.1761 24.174 20.5058 24.6674C20.8354 25.1607 21.3039 25.5452 21.8521 25.7723C22.4003 25.9994 23.0035 26.0588 23.5854 25.943C24.1674 25.8273 24.7019 25.5415 25.1215 25.122C25.541 24.7024 25.8268 24.1679 25.9425 23.5859C26.0583 23.004 25.9989 22.4008 25.7718 21.8526C25.5447 21.3044 25.1602 20.8359 24.6669 20.5062C24.1735 20.1766 23.5935 20.0007 23.0002 20.0007H20.0002Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

11
src/assets/images/brand/label_newEn.svg

@ -0,0 +1,11 @@
<svg width="60" height="24" viewBox="0 0 60 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="60" height="24" rx="12" fill="url(#paint0_linear_931_3371)"/>
<path d="M18.9998 12.8287V17.334H19.6665V18.6673H6.33317V17.334H6.99984V12.8287C6.58942 12.5547 6.25298 12.1837 6.02038 11.7485C5.78779 11.3133 5.66623 10.8274 5.6665 10.334C5.6665 9.78265 5.81584 9.25132 6.0885 8.79865L7.8965 5.66732C7.95502 5.56597 8.03917 5.48182 8.14051 5.42331C8.24186 5.36479 8.35682 5.33399 8.47384 5.33398H17.5265C17.6435 5.33399 17.7585 5.36479 17.8598 5.42331C17.9612 5.48182 18.0453 5.56597 18.1038 5.66732L19.9052 8.78865C20.3029 9.44923 20.4307 10.2377 20.2621 10.9901C20.0935 11.7425 19.6414 12.401 18.9998 12.8287V12.8287ZM17.6665 13.3153C17.2081 13.3667 16.7441 13.3117 16.3104 13.1544C15.8768 12.9972 15.4854 12.7419 15.1665 12.4087C14.8866 12.7014 14.5504 12.9343 14.178 13.0935C13.8056 13.2526 13.4048 13.3347 12.9998 13.3347C12.595 13.3349 12.1942 13.253 11.8219 13.0941C11.4495 12.9352 11.1131 12.7025 10.8332 12.41C10.5143 12.7432 10.1228 12.9983 9.68914 13.1554C9.25553 13.3125 8.7915 13.3675 8.33317 13.316V17.334H17.6665V13.316V13.3153ZM8.85917 6.66732L7.23717 9.47598C7.07956 9.86541 7.07482 10.3 7.22393 10.6928C7.37303 11.0855 7.66496 11.4075 8.04129 11.5942C8.41763 11.781 8.8506 11.8187 9.25356 11.6999C9.65652 11.581 9.99973 11.3144 10.2145 10.9533C10.4378 10.3953 11.2278 10.3953 11.4518 10.9533C11.5754 11.2629 11.7889 11.5284 12.0649 11.7154C12.3408 11.9024 12.6665 12.0023 12.9998 12.0023C13.3332 12.0023 13.6589 11.9024 13.9348 11.7154C14.2108 11.5284 14.4243 11.2629 14.5478 10.9533C14.7712 10.3953 15.5612 10.3953 15.7852 10.9533C15.8717 11.1663 16.0013 11.3591 16.1659 11.5195C16.3305 11.68 16.5266 11.8046 16.7417 11.8857C16.9568 11.9667 17.1863 12.0024 17.4159 11.9904C17.6454 11.9785 17.87 11.9192 18.0756 11.8163C18.2811 11.7133 18.4631 11.569 18.6102 11.3923C18.7573 11.2157 18.8662 11.0105 18.9302 10.7897C18.9941 10.5689 19.0117 10.3373 18.9818 10.1094C18.9519 9.88143 18.8752 9.66216 18.7565 9.46532L17.1398 6.66732H8.85984H8.85917Z" fill="white"/>
<path d="M31.328 7.216L35.588 13.024V7.216H37.208V16H35.792L31.52 10.18V16H29.924V7.216H31.328ZM41.6572 9.628C42.2092 9.628 42.6972 9.752 43.1212 10C43.5532 10.24 43.8852 10.584 44.1172 11.032C44.3572 11.472 44.4772 11.98 44.4772 12.556C44.4772 12.812 44.4532 13.072 44.4052 13.336H40.2772C40.3492 13.8 40.5172 14.152 40.7812 14.392C41.0452 14.624 41.3732 14.74 41.7652 14.74C42.0452 14.74 42.2932 14.68 42.5092 14.56C42.7332 14.432 42.9052 14.244 43.0252 13.996L44.2492 14.716C44.0812 15.172 43.7572 15.524 43.2772 15.772C42.8052 16.02 42.2772 16.144 41.6932 16.144C41.1332 16.144 40.6132 16.02 40.1332 15.772C39.6532 15.524 39.2652 15.152 38.9692 14.656C38.6812 14.16 38.5372 13.564 38.5372 12.868C38.5372 12.18 38.6812 11.592 38.9692 11.104C39.2652 10.616 39.6492 10.248 40.1212 10C40.5932 9.752 41.1052 9.628 41.6572 9.628ZM41.6092 10.984C41.2812 10.984 41.0012 11.088 40.7692 11.296C40.5372 11.504 40.3812 11.796 40.3012 12.172H42.7732C42.7412 11.788 42.6172 11.496 42.4012 11.296C42.1932 11.088 41.9292 10.984 41.6092 10.984ZM50.3325 9.784L51.6285 13.66L52.8525 9.784H54.4725L52.2045 15.988H51.0165L49.6005 12.208L48.2445 15.988H47.0445L44.6925 9.784H46.4085L47.7165 13.708L48.9405 9.784H50.3325Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_931_3371" x1="60" y1="0" x2="28.0137" y2="-29.9342" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF7686"/>
<stop offset="1" stop-color="#F55A7B"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

11
src/assets/images/brand/label_newZh.svg

@ -0,0 +1,11 @@
<svg width="60" height="24" viewBox="0 0 60 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="60" height="24" rx="12" fill="url(#paint0_linear_3109_35448)"/>
<path d="M20.0001 12.828V17.3334H20.6667V18.6667H7.33342V17.3334H8.00008V12.828C7.58966 12.5541 7.25322 12.1831 7.02063 11.7479C6.78803 11.3127 6.66648 10.8268 6.66675 10.3334C6.66675 9.78204 6.81608 9.25071 7.08875 8.79804L8.89675 5.66671C8.95526 5.56536 9.03942 5.48121 9.14076 5.42269C9.2421 5.36418 9.35706 5.33338 9.47408 5.33337H18.5267C18.6438 5.33338 18.7587 5.36418 18.8601 5.42269C18.9614 5.48121 19.0456 5.56536 19.1041 5.66671L20.9054 8.78804C21.3031 9.44862 21.431 10.2371 21.2624 10.9895C21.0937 11.7419 20.6417 12.4004 20.0001 12.828V12.828ZM18.6667 13.3147C18.2084 13.3661 17.7443 13.3111 17.3107 13.1538C16.8771 12.9966 16.4856 12.7413 16.1667 12.408C15.8869 12.7008 15.5506 12.9337 15.1782 13.0929C14.8058 13.252 14.4051 13.3341 14.0001 13.334C13.5952 13.3342 13.1945 13.2524 12.8221 13.0935C12.4497 12.9346 12.1134 12.7018 11.8334 12.4094C11.5145 12.7426 11.123 12.9976 10.6894 13.1548C10.2558 13.3119 9.79174 13.3669 9.33342 13.3154V17.3334H18.6667V13.3154V13.3147ZM9.85942 6.66671L8.23742 9.47537C8.0798 9.8648 8.07507 10.2994 8.22417 10.6922C8.37327 11.0849 8.6652 11.4069 9.04154 11.5936C9.41787 11.7804 9.85084 11.8181 10.2538 11.6993C10.6568 11.5804 11 11.3138 11.2147 10.9527C11.4381 10.3947 12.2281 10.3947 12.4521 10.9527C12.5756 11.2623 12.7891 11.5278 13.0651 11.7148C13.3411 11.9018 13.6667 12.0017 14.0001 12.0017C14.3334 12.0017 14.6591 11.9018 14.9351 11.7148C15.211 11.5278 15.4246 11.2623 15.5481 10.9527C15.7714 10.3947 16.5614 10.3947 16.7854 10.9527C16.8719 11.1657 17.0016 11.3584 17.1662 11.5189C17.3308 11.6793 17.5268 11.804 17.7419 11.8851C17.957 11.9661 18.1866 12.0018 18.4161 11.9898C18.6457 11.9779 18.8703 11.9186 19.0758 11.8157C19.2814 11.7127 19.4634 11.5684 19.6104 11.3917C19.7575 11.2151 19.8664 11.0099 19.9304 10.7891C19.9943 10.5683 20.0119 10.3367 19.982 10.1087C19.9522 9.88082 19.8755 9.66155 19.7567 9.46471L18.1401 6.66671H9.86008H9.85942Z" fill="white"/>
<path d="M36.18 12.952H34.176V15.7C34.176 16.18 34.088 16.508 33.912 16.684C33.736 16.868 33.412 16.964 32.94 16.972C32.58 16.972 32.248 16.948 31.944 16.9L31.716 15.628C31.636 15.82 31.512 16.084 31.344 16.42L30.24 15.904C30.448 15.528 30.644 15.108 30.828 14.644C31.02 14.172 31.18 13.708 31.308 13.252L32.484 13.576C32.284 14.24 32.032 14.92 31.728 15.616C32.048 15.664 32.304 15.688 32.496 15.688C32.648 15.688 32.744 15.648 32.784 15.568C32.824 15.488 32.844 15.32 32.844 15.064V12.952H30.672V11.704H32.844V10.804H30.48V9.568H31.788C31.756 9.352 31.672 8.892 31.536 8.188H30.744V6.94H32.784L32.568 6.424L32.4 6.016L33.792 5.728L34.116 6.52L34.284 6.94H36.168V8.188H35.508C35.5 8.244 35.488 8.308 35.472 8.38C35.456 8.444 35.44 8.524 35.424 8.62L35.232 9.568H36.288V10.804H34.176V11.704H36.18V12.952ZM41.544 9.676V11.044H40.536V16.96H39.18V11.044H38.076V11.056C38.076 12.096 38.044 12.94 37.98 13.588C37.916 14.236 37.796 14.832 37.62 15.376C37.444 15.912 37.18 16.496 36.828 17.128L35.532 16.348C35.82 15.932 36.048 15.52 36.216 15.112L35.136 15.556C35 15.068 34.772 14.42 34.452 13.612L35.556 13.228L36.264 15.016C36.456 14.52 36.58 13.968 36.636 13.36C36.7 12.744 36.732 11.88 36.732 10.768V6.904C37.5 6.832 38.268 6.72 39.036 6.568C39.812 6.416 40.464 6.24 40.992 6.04L41.436 7.396C41.028 7.548 40.508 7.696 39.876 7.84C39.252 7.984 38.652 8.092 38.076 8.164V9.676H41.544ZM32.688 8.188L32.952 9.568H33.984C34.08 9.2 34.172 8.74 34.26 8.188H32.688ZM53.364 8.332H49.488V9.4H53.16V10.768H49.488V12.04H52.68V16.996H51.204V16.456H47.088V16.996H45.648V12.04H48.012V8.332H45.06V10.684C45.06 11.756 45.02 12.64 44.94 13.336C44.86 14.024 44.728 14.648 44.544 15.208C44.36 15.76 44.088 16.356 43.728 16.996L42.264 16.288C42.632 15.696 42.908 15.152 43.092 14.656C43.284 14.16 43.416 13.62 43.488 13.036C43.568 12.444 43.608 11.7 43.608 10.804V6.952H47.784C47.664 6.648 47.536 6.344 47.4 6.04L49.128 5.74C49.336 6.268 49.484 6.672 49.572 6.952H53.376L53.364 8.332ZM47.088 15.088H51.204V13.372H47.088V15.088Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_3109_35448" x1="60" y1="0" x2="28.0137" y2="-29.9342" gradientUnits="userSpaceOnUse">
<stop stop-color="#FF7686"/>
<stop offset="1" stop-color="#F55A7B"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

11
src/assets/images/brand/label_promotionEn.svg

@ -0,0 +1,11 @@
<svg width="60" height="24" viewBox="0 0 60 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="60" height="24" rx="12" fill="url(#paint0_linear_930_3361)"/>
<path d="M7.3335 6.66667C7.3335 6.48986 7.40373 6.32029 7.52876 6.19526C7.65378 6.07024 7.82335 6 8.00016 6H20.0002C20.177 6 20.3465 6.07024 20.4716 6.19526C20.5966 6.32029 20.6668 6.48986 20.6668 6.66667V10.3333C20.2248 10.3333 19.8009 10.5089 19.4883 10.8215C19.1758 11.134 19.0002 11.558 19.0002 12C19.0002 12.442 19.1758 12.866 19.4883 13.1785C19.8009 13.4911 20.2248 13.6667 20.6668 13.6667V17.3333C20.6668 17.5101 20.5966 17.6797 20.4716 17.8047C20.3465 17.9298 20.177 18 20.0002 18H8.00016C7.82335 18 7.65378 17.9298 7.52876 17.8047C7.40373 17.6797 7.3335 17.5101 7.3335 17.3333V6.66667ZM11.3902 16.6667C11.4589 16.4713 11.5865 16.3022 11.7555 16.1825C11.9245 16.0628 12.1264 15.9985 12.3335 15.9985C12.5406 15.9985 12.7425 16.0628 12.9115 16.1825C13.0805 16.3022 13.2081 16.4713 13.2768 16.6667H19.3335V14.688C18.8327 14.4398 18.4112 14.0566 18.1165 13.5817C17.8218 13.1068 17.6657 12.5589 17.6657 12C17.6657 11.4411 17.8218 10.8932 18.1165 10.4183C18.4112 9.94337 18.8327 9.5602 19.3335 9.312V7.33333H13.2768C13.2081 7.52866 13.0805 7.69785 12.9115 7.81753C12.7425 7.93721 12.5406 8.00149 12.3335 8.00149C12.1264 8.00149 11.9245 7.93721 11.7555 7.81753C11.5865 7.69785 11.4589 7.52866 11.3902 7.33333H8.66683V16.6667H11.3902ZM12.3335 11.3333C12.0683 11.3333 11.8139 11.228 11.6264 11.0404C11.4389 10.8529 11.3335 10.5985 11.3335 10.3333C11.3335 10.0681 11.4389 9.81376 11.6264 9.62623C11.8139 9.43869 12.0683 9.33333 12.3335 9.33333C12.5987 9.33333 12.8531 9.43869 13.0406 9.62623C13.2281 9.81376 13.3335 10.0681 13.3335 10.3333C13.3335 10.5985 13.2281 10.8529 13.0406 11.0404C12.8531 11.228 12.5987 11.3333 12.3335 11.3333ZM12.3335 14.6667C12.0683 14.6667 11.8139 14.5613 11.6264 14.3738C11.4389 14.1862 11.3335 13.9319 11.3335 13.6667C11.3335 13.4015 11.4389 13.1471 11.6264 12.9596C11.8139 12.772 12.0683 12.6667 12.3335 12.6667C12.5987 12.6667 12.8531 12.772 13.0406 12.9596C13.2281 13.1471 13.3335 13.4015 13.3335 13.6667C13.3335 13.9319 13.2281 14.1862 13.0406 14.3738C12.8531 14.5613 12.5987 14.6667 12.3335 14.6667Z" fill="white"/>
<path d="M36.852 13.456C36.852 14.056 36.696 14.56 36.384 14.968C36.08 15.368 35.68 15.664 35.184 15.856C34.696 16.048 34.172 16.144 33.612 16.144C32.796 16.144 32.06 15.956 31.404 15.58C30.748 15.196 30.312 14.656 30.096 13.96L31.512 13.156C31.704 13.604 31.984 13.952 32.352 14.2C32.72 14.448 33.16 14.572 33.672 14.572C34.088 14.572 34.416 14.488 34.656 14.32C34.904 14.152 35.028 13.908 35.028 13.588C35.028 13.332 34.944 13.12 34.776 12.952C34.616 12.784 34.412 12.652 34.164 12.556C33.924 12.46 33.592 12.348 33.168 12.22C32.6 12.052 32.136 11.888 31.776 11.728C31.416 11.56 31.108 11.312 30.852 10.984C30.596 10.656 30.468 10.224 30.468 9.688C30.468 9.12 30.616 8.64 30.912 8.248C31.216 7.848 31.612 7.552 32.1 7.36C32.596 7.16 33.128 7.06 33.696 7.06C34.472 7.06 35.136 7.236 35.688 7.588C36.24 7.94 36.596 8.416 36.756 9.016L35.34 9.82C35.196 9.444 34.98 9.152 34.692 8.944C34.404 8.728 34.044 8.62 33.612 8.62C33.22 8.62 32.9 8.712 32.652 8.896C32.412 9.072 32.292 9.308 32.292 9.604C32.292 9.828 32.368 10.016 32.52 10.168C32.672 10.312 32.864 10.432 33.096 10.528C33.336 10.616 33.656 10.72 34.056 10.84C34.632 11.008 35.108 11.18 35.484 11.356C35.86 11.524 36.18 11.78 36.444 12.124C36.716 12.46 36.852 12.904 36.852 13.456ZM40.5096 9.628C41.3496 9.628 42.0056 9.868 42.4776 10.348C42.9496 10.82 43.1856 11.496 43.1856 12.376V16H41.7816C41.7736 15.936 41.7616 15.832 41.7456 15.688C41.7376 15.536 41.7216 15.404 41.6976 15.292C41.5136 15.58 41.2736 15.796 40.9776 15.94C40.6896 16.076 40.3376 16.144 39.9216 16.144C39.4896 16.144 39.0936 16.068 38.7336 15.916C38.3816 15.764 38.1016 15.544 37.8936 15.256C37.6856 14.96 37.5816 14.612 37.5816 14.212C37.5816 13.796 37.6976 13.436 37.9296 13.132C38.1696 12.82 38.4896 12.58 38.8896 12.412C39.2896 12.244 39.7296 12.16 40.2096 12.16C40.6416 12.16 41.0856 12.232 41.5416 12.376C41.5176 11.456 41.1256 10.996 40.3656 10.996C39.7576 10.996 39.3136 11.268 39.0336 11.812L37.8456 11.128C38.0696 10.664 38.4136 10.3 38.8776 10.036C39.3416 9.764 39.8856 9.628 40.5096 9.628ZM41.5416 13.48C41.1416 13.384 40.7936 13.336 40.4976 13.336C40.1056 13.336 39.8016 13.408 39.5856 13.552C39.3696 13.688 39.2616 13.884 39.2616 14.14C39.2616 14.372 39.3456 14.552 39.5136 14.68C39.6896 14.808 39.9136 14.872 40.1856 14.872C40.5456 14.872 40.8616 14.772 41.1336 14.572C41.4056 14.364 41.5416 14.08 41.5416 13.72V13.48ZM46.323 16H44.655V6.868H46.323V16ZM50.6259 9.628C51.1779 9.628 51.6659 9.752 52.0899 10C52.5219 10.24 52.8539 10.584 53.0859 11.032C53.3259 11.472 53.4459 11.98 53.4459 12.556C53.4459 12.812 53.4219 13.072 53.3739 13.336H49.2459C49.3179 13.8 49.4859 14.152 49.7499 14.392C50.0139 14.624 50.3419 14.74 50.7339 14.74C51.0139 14.74 51.2619 14.68 51.4779 14.56C51.7019 14.432 51.8739 14.244 51.9939 13.996L53.2179 14.716C53.0499 15.172 52.7259 15.524 52.2459 15.772C51.7739 16.02 51.2459 16.144 50.6619 16.144C50.1019 16.144 49.5819 16.02 49.1019 15.772C48.6219 15.524 48.2339 15.152 47.9379 14.656C47.6499 14.16 47.5059 13.564 47.5059 12.868C47.5059 12.18 47.6499 11.592 47.9379 11.104C48.2339 10.616 48.6179 10.248 49.0899 10C49.5619 9.752 50.0739 9.628 50.6259 9.628ZM50.5779 10.984C50.2499 10.984 49.9699 11.088 49.7379 11.296C49.5059 11.504 49.3499 11.796 49.2699 12.172H51.7419C51.7099 11.788 51.5859 11.496 51.3699 11.296C51.1619 11.088 50.8979 10.984 50.5779 10.984Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_930_3361" x1="0" y1="0" x2="60" y2="2.48352e-07" gradientUnits="userSpaceOnUse">
<stop stop-color="#8774FF"/>
<stop offset="1" stop-color="#9A8AFF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

11
src/assets/images/brand/label_promotionTw.svg

@ -0,0 +1,11 @@
<svg width="60" height="24" viewBox="0 0 60 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="60" height="24" rx="12" fill="url(#paint0_linear_930_3361)"/>
<path d="M7.3335 6.66667C7.3335 6.48986 7.40373 6.32029 7.52876 6.19526C7.65378 6.07024 7.82335 6 8.00016 6H20.0002C20.177 6 20.3465 6.07024 20.4716 6.19526C20.5966 6.32029 20.6668 6.48986 20.6668 6.66667V10.3333C20.2248 10.3333 19.8009 10.5089 19.4883 10.8215C19.1758 11.134 19.0002 11.558 19.0002 12C19.0002 12.442 19.1758 12.866 19.4883 13.1785C19.8009 13.4911 20.2248 13.6667 20.6668 13.6667V17.3333C20.6668 17.5101 20.5966 17.6797 20.4716 17.8047C20.3465 17.9298 20.177 18 20.0002 18H8.00016C7.82335 18 7.65378 17.9298 7.52876 17.8047C7.40373 17.6797 7.3335 17.5101 7.3335 17.3333V6.66667ZM11.3902 16.6667C11.4589 16.4713 11.5865 16.3022 11.7555 16.1825C11.9245 16.0628 12.1264 15.9985 12.3335 15.9985C12.5406 15.9985 12.7425 16.0628 12.9115 16.1825C13.0805 16.3022 13.2081 16.4713 13.2768 16.6667H19.3335V14.688C18.8327 14.4398 18.4112 14.0566 18.1165 13.5817C17.8218 13.1068 17.6657 12.5589 17.6657 12C17.6657 11.4411 17.8218 10.8932 18.1165 10.4183C18.4112 9.94337 18.8327 9.5602 19.3335 9.312V7.33333H13.2768C13.2081 7.52866 13.0805 7.69785 12.9115 7.81753C12.7425 7.93721 12.5406 8.00149 12.3335 8.00149C12.1264 8.00149 11.9245 7.93721 11.7555 7.81753C11.5865 7.69785 11.4589 7.52866 11.3902 7.33333H8.66683V16.6667H11.3902ZM12.3335 11.3333C12.0683 11.3333 11.8139 11.228 11.6264 11.0404C11.4389 10.8529 11.3335 10.5985 11.3335 10.3333C11.3335 10.0681 11.4389 9.81376 11.6264 9.62623C11.8139 9.43869 12.0683 9.33333 12.3335 9.33333C12.5987 9.33333 12.8531 9.43869 13.0406 9.62623C13.2281 9.81376 13.3335 10.0681 13.3335 10.3333C13.3335 10.5985 13.2281 10.8529 13.0406 11.0404C12.8531 11.228 12.5987 11.3333 12.3335 11.3333ZM12.3335 14.6667C12.0683 14.6667 11.8139 14.5613 11.6264 14.3738C11.4389 14.1862 11.3335 13.9319 11.3335 13.6667C11.3335 13.4015 11.4389 13.1471 11.6264 12.9596C11.8139 12.772 12.0683 12.6667 12.3335 12.6667C12.5987 12.6667 12.8531 12.772 13.0406 12.9596C13.2281 13.1471 13.3335 13.4015 13.3335 13.6667C13.3335 13.9319 13.2281 14.1862 13.0406 14.3738C12.8531 14.5613 12.5987 14.6667 12.3335 14.6667Z" fill="white"/>
<path d="M34.008 6.316C33.736 7.228 33.448 8.052 33.144 8.788V16.948H31.74V11.428C31.42 11.916 31.092 12.368 30.756 12.784L30.228 11.212C30.684 10.604 31.132 9.804 31.572 8.812C32.02 7.812 32.372 6.848 32.628 5.92L34.008 6.316ZM38.556 15.352C39.212 15.384 39.7 15.4 40.02 15.4C40.492 15.4 41.028 15.38 41.628 15.34L41.376 16.732C40.976 16.772 40.492 16.792 39.924 16.792C39.364 16.792 38.88 16.772 38.472 16.732C37.744 16.676 37.136 16.52 36.648 16.264C36.16 16.016 35.748 15.636 35.412 15.124C35.188 15.772 34.86 16.408 34.428 17.032L33.216 16.264C33.712 15.528 34.06 14.808 34.26 14.104C34.46 13.392 34.584 12.48 34.632 11.368L36.036 11.476C35.996 12.188 35.94 12.772 35.868 13.228C36.14 14.084 36.56 14.672 37.128 14.992V10.792H34.404V6.352H40.896V10.792H38.556V12.172H41.172V13.552H38.556V15.352ZM39.456 7.744H35.832V9.412H39.456V7.744ZM45.564 6.508C45.844 6.764 46.284 7.2 46.884 7.816C46.884 7.816 47.032 7.964 47.328 8.26L46.584 9.268V10.108H45.504V10.9H46.944V12.136H45.504V15.148L46.968 14.956L47.028 16.252C46.66 16.276 45.968 16.352 44.952 16.48C43.944 16.616 43.132 16.728 42.516 16.816L42.408 15.544L42.684 15.508C42.844 15.484 43.052 15.46 43.308 15.436C43.564 15.404 43.868 15.364 44.22 15.316V12.136H42.624V10.9H44.22V10.108H43.428V9.616C43.204 9.872 43 10.084 42.816 10.252L42.252 8.932C42.692 8.476 43.112 7.96 43.512 7.384C43.92 6.8 44.236 6.256 44.46 5.752L45.732 6.136L45.564 6.508ZM50.916 5.92V9.076H53.1V15.484C53.1 16.028 53 16.408 52.8 16.624C52.6 16.84 52.256 16.948 51.768 16.948C51.32 16.964 50.92 16.944 50.568 16.888L50.292 15.556C50.7 15.612 51.052 15.64 51.348 15.64C51.516 15.632 51.632 15.584 51.696 15.496C51.76 15.4 51.792 15.252 51.792 15.052V14.656H48.72V16.912H47.424V9.076H49.572V5.92H50.916ZM48.396 8.908C47.996 8.268 47.528 7.632 46.992 7L48.072 6.208C48.568 6.864 49.032 7.504 49.464 8.128L48.396 8.908ZM53.376 6.988C52.912 7.732 52.46 8.38 52.02 8.932L50.952 8.176C51.592 7.296 52.032 6.66 52.272 6.268L53.376 6.988ZM44.952 7.624C44.632 8.112 44.336 8.528 44.064 8.872H46.116C45.556 8.256 45.168 7.84 44.952 7.624ZM48.72 11.32H51.792V10.456H48.72V11.32ZM45.588 14.416C45.796 13.888 46.012 13.224 46.236 12.424L47.088 12.676C47.008 12.98 46.908 13.328 46.788 13.72C46.668 14.112 46.552 14.444 46.44 14.716L45.588 14.416ZM43.476 12.472C43.748 13.384 43.96 14.124 44.112 14.692L43.188 14.932C43.156 14.836 43.108 14.668 43.044 14.428C42.836 13.692 42.668 13.12 42.54 12.712L43.476 12.472ZM48.72 12.568V13.432H51.792V12.568H48.72Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_930_3361" x1="0" y1="0" x2="60" y2="2.48352e-07" gradientUnits="userSpaceOnUse">
<stop stop-color="#8774FF"/>
<stop offset="1" stop-color="#9A8AFF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

5
src/assets/images/brand/label_promotionZh.svg

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#159;&#186;&#231;&#161;&#128;/&#229;&#138;&#159;&#232;&#131;&#189;/&#229;&#186;&#151;&#233;&#147;&#186;&#230;&#160;&#135;&#231;&#173;&#190;-&#230;&#180;&#187;&#229;&#138;&#168;">
<path id="&#231;&#159;&#162;&#233;&#135;&#143;" d="M1.33334 2.66667C1.33334 2.48986 1.40358 2.32029 1.52861 2.19526C1.65363 2.07024 1.8232 2 2.00001 2H14C14.1768 2 14.3464 2.07024 14.4714 2.19526C14.5964 2.32029 14.6667 2.48986 14.6667 2.66667V6.33333C14.2246 6.33333 13.8007 6.50893 13.4882 6.82149C13.1756 7.13405 13 7.55797 13 8C13 8.44203 13.1756 8.86595 13.4882 9.17851C13.8007 9.49107 14.2246 9.66667 14.6667 9.66667V13.3333C14.6667 13.5101 14.5964 13.6797 14.4714 13.8047C14.3464 13.9298 14.1768 14 14 14H2.00001C1.8232 14 1.65363 13.9298 1.52861 13.8047C1.40358 13.6797 1.33334 13.5101 1.33334 13.3333V2.66667ZM5.39001 12.6667C5.45872 12.4713 5.58638 12.3022 5.75535 12.1825C5.92432 12.0628 6.12628 11.9985 6.33334 11.9985C6.54041 11.9985 6.74236 12.0628 6.91134 12.1825C7.08031 12.3022 7.20796 12.4713 7.27668 12.6667H13.3333V10.688C12.8325 10.4398 12.411 10.0566 12.1163 9.58169C11.8217 9.10676 11.6655 8.55894 11.6655 8C11.6655 7.44107 11.8217 6.89324 12.1163 6.41831C12.411 5.94337 12.8325 5.5602 13.3333 5.312V3.33333H7.27668C7.20796 3.52866 7.08031 3.69785 6.91134 3.81753C6.74236 3.93721 6.54041 4.00149 6.33334 4.00149C6.12628 4.00149 5.92432 3.93721 5.75535 3.81753C5.58638 3.69785 5.45872 3.52866 5.39001 3.33333H2.66668V12.6667H5.39001ZM6.33334 7.33333C6.06813 7.33333 5.81377 7.22798 5.62624 7.04044C5.4387 6.8529 5.33334 6.59855 5.33334 6.33333C5.33334 6.06812 5.4387 5.81376 5.62624 5.62623C5.81377 5.43869 6.06813 5.33333 6.33334 5.33333C6.59856 5.33333 6.85291 5.43869 7.04045 5.62623C7.22799 5.81376 7.33334 6.06812 7.33334 6.33333C7.33334 6.59855 7.22799 6.8529 7.04045 7.04044C6.85291 7.22798 6.59856 7.33333 6.33334 7.33333ZM6.33334 10.6667C6.06813 10.6667 5.81377 10.5613 5.62624 10.3738C5.4387 10.1862 5.33334 9.93188 5.33334 9.66667C5.33334 9.40145 5.4387 9.1471 5.62624 8.95956C5.81377 8.77202 6.06813 8.66667 6.33334 8.66667C6.59856 8.66667 6.85291 8.77202 7.04045 8.95956C7.22799 9.1471 7.33334 9.40145 7.33334 9.66667C7.33334 9.93188 7.22799 10.1862 7.04045 10.3738C6.85291 10.5613 6.59856 10.6667 6.33334 10.6667Z" fill="white"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

12
src/assets/images/brand/no-rec.svg

@ -0,0 +1,12 @@
<svg width="188" height="40" viewBox="0 0 188 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M132.377 19.8601C130.908 18.6713 130.139 18.3916 126.713 17.4125C122.377 16.1538 121.608 15.0349 121.608 13.0769C121.608 10.5594 123.426 8.74121 125.804 8.74121C128.321 8.74121 130.069 10.5594 130.279 13.2167L130.349 13.916H134.894V13.1468C134.894 8.32164 131.048 4.54541 126.153 4.54541C120.978 4.54541 117.202 8.18178 117.202 13.1468C117.202 15.3146 118.041 17.3426 119.44 18.8111C120.699 20.1398 122.097 20.7692 125.174 21.5384C129.37 22.5874 131.048 24.1258 131.048 26.8531C131.048 29.5104 128.741 31.8881 126.083 31.8881C123.076 31.8881 121.258 29.9999 120.839 26.5734L120.769 25.8741H116.223V26.6433C116.433 32.1678 120.489 36.0139 125.943 36.0139C131.188 36.0139 135.524 31.8181 135.524 26.7132C135.524 24.0559 134.335 21.5384 132.377 19.8601Z" fill="black" fill-opacity="0.3"/>
<path d="M162.726 5.03491H156.992L144.894 20.2097V5.03491H140.419V35.4545H144.894V26.9929L147.831 23.4265L157.132 35.4545H162.656L150.698 19.8601L162.726 5.03491Z" fill="black" fill-opacity="0.3"/>
<path d="M183.496 6.85309C181.468 5.52442 179.301 5.03491 175.594 5.03491H166.783V35.4545H171.259V23.8461H176.364C183.217 23.8461 187.482 20.2797 187.482 14.5454C187.482 11.2587 186.014 8.46148 183.496 6.85309ZM171.259 9.16078H174.685C178.182 9.16078 178.811 9.23071 180.14 9.79015C182.028 10.6992 183.077 12.3776 183.077 14.4055C183.077 16.1538 182.238 17.7622 180.909 18.6013C179.72 19.3006 178.392 19.5804 175.944 19.5804H171.329V9.16078H171.259Z" fill="black" fill-opacity="0.3"/>
<path d="M112.796 6.99299L110.908 5.73425L110.489 5.87411H100.209V35.944H102.796V8.39159H109.23C107.971 11.4685 106.363 15.1049 104.964 17.8321C108.181 20.4895 109.719 23.0769 109.719 25.6643C109.719 26.5035 109.65 27.5524 109.02 28.1119C109.02 28.1119 108.95 28.1119 108.95 28.1818C108.88 28.2517 108.81 28.3217 108.671 28.3916C108.251 28.6014 107.691 28.7412 107.062 28.8112C106.363 28.8811 105.314 28.8811 104.125 28.7412H104.055V28.8112C104.545 29.5804 104.824 30.6293 104.824 31.3286C105.314 31.3286 105.873 31.3986 106.363 31.3986C106.992 31.3986 107.622 31.3986 108.111 31.3286C109.09 31.1888 109.859 30.9091 110.489 30.4895C111.747 29.7203 112.307 28.1818 112.307 25.944C112.307 24.5454 112.027 23.2168 111.398 21.958C110.629 20.4196 109.44 18.951 107.692 17.4126C109.37 14.3356 111.328 10.2797 112.796 6.99299Z" fill="black" fill-opacity="0.3"/>
<path d="M99.16 6.29369L96.9222 5.10488L95.8732 7.41257C95.5236 8.1818 95.0341 8.95103 94.5446 9.72026V7.90208H90.2089V4.82516C90.4187 4.75523 90.6984 4.61537 90.7684 4.12586V3.84613L87.6215 3.63635V7.83216H82.2369V10.2098H87.6215V14.3356H80.6984V16.7133H88.9502C86.3627 19.3007 83.2858 21.4685 79.9292 23.1468C80.4187 23.7063 81.2579 24.7552 81.5376 25.2447C82.5865 24.6853 83.4956 24.1259 84.2649 23.5664V35.5245H86.7124V33.4265H94.4746V35.4545H97.0621V34.965V19.8601H88.9502C89.9292 18.951 90.9781 17.9021 92.2369 16.5035H98.6704V14.4056H94.1949C95.9432 12.0979 97.4117 9.65034 98.6005 7.13286C98.8103 7.20279 99.16 7.20279 99.3697 6.7832L99.5096 6.57341L99.16 6.29369ZM86.9222 27.8321H94.6844V31.4685H86.9222V27.8321ZM94.6844 25.6643H86.9222V22.3077H94.6844V25.6643ZM91.2579 14.4056H90.2788V10.2797H94.2649C93.4257 11.5384 92.4467 12.937 91.2579 14.4056Z" fill="black" fill-opacity="0.3"/>
<path d="M77.6217 27.9021C76.9224 27.6923 76.0133 27.1329 75.384 26.5035L75.314 26.4336V26.5035C75.0343 31.1888 74.6147 32.9371 73.7056 32.9371C72.0273 32.9371 70.349 31.049 69.0203 27.5525C71.328 24.6154 73.2161 21.0489 74.6847 17.1329C74.9644 17.1329 75.314 17.1329 75.5238 16.7133L75.6637 16.4336L75.384 16.2937L72.6567 15.035C71.6077 18.5315 70.0693 21.6783 68.1811 24.4056C67.2721 21.1888 66.6427 17.1329 66.293 12.3776H77.4119V9.79021H73.9154L75.4539 8.04196C74.0553 6.78322 71.1881 5.03497 69.1602 4.05595L67.6217 5.66434C69.8595 6.85315 72.4469 8.6014 73.7756 9.79021H66.0832C66.0133 8.32168 65.9434 6.78322 65.9434 4.89511C66.1532 4.82518 66.5028 4.68532 66.5728 4.19581V3.91609L63.1462 3.7063L63.2161 4.82518C63.2161 6.50351 63.2861 8.18182 63.4259 9.79021H48.8105V19.5804C48.8105 24.2657 48.4609 30.1399 45.5938 34.3357C46.1532 34.6154 47.2721 35.5245 47.7616 36.0839C50.2091 32.5175 51.4679 26.993 51.4679 19.5804V19.3007H57.7616C57.6217 25.4545 57.4119 27.4825 56.9923 28.042C56.7825 28.3217 56.4329 28.3916 55.9434 28.3916C55.314 28.3916 53.8455 28.3916 52.2371 28.2518H52.1672V28.3217C52.5868 28.951 52.8665 29.9301 52.8665 30.7692C53.7056 30.8392 54.5448 30.8392 55.2441 30.8392C55.9434 30.8392 56.5728 30.8392 56.9923 30.7692C58.0413 30.6294 58.6007 30.3496 59.0902 29.7203C59.8595 28.7413 60.0693 25.4546 60.2091 17.972V16.8532H51.2581V12.3776H63.286C63.7756 18.2518 64.6147 23.3566 65.8035 27.0629C63.5658 29.6504 60.8385 31.8881 57.7616 33.4965H57.6916C58.2511 33.986 59.1602 35.035 59.5798 35.5245C62.2371 33.986 64.6846 32.028 66.7825 29.7203C68.4609 33.4965 70.6287 35.4545 73.2161 35.4545C74.6147 35.4545 75.5238 34.965 76.0833 33.8462C77.0623 32.8671 77.4119 31.049 77.6217 27.9021Z" fill="black" fill-opacity="0.3"/>
<path d="M17.482 20.2796V19.7202H13.0764C13.6359 19.7901 14.1953 19.9999 14.6848 20.2796H17.482Z" fill="black" fill-opacity="0.3"/>
<path d="M38.6014 12.6573C38.1119 11.3986 37.4825 10.2098 36.7133 9.02098C35.944 7.9021 35.1049 6.85315 34.1259 5.87413C33.1469 4.89511 32.0979 4.05595 30.979 3.28672C29.8601 2.51749 28.6014 1.88811 27.3427 1.3986C24.965 0.48951 22.5175 0 20 0C17.4825 0 14.965 0.48951 12.6573 1.3986C11.3986 1.88811 10.2098 2.51749 9.02097 3.28672C7.90209 4.05595 6.85314 4.89511 5.87412 5.87413C4.8951 6.85315 4.05595 7.9021 3.28672 9.02098C2.51749 10.1399 1.88811 11.3986 1.3986 12.6573C0.48951 15.035 0 17.4825 0 20C0 22.5175 0.48951 25.035 1.3986 27.3427C1.88811 28.6014 2.51749 29.7902 3.28672 30.979C4.05595 32.0979 4.8951 33.1468 5.87412 34.1259C6.85314 35.1049 7.90209 35.944 9.02097 36.7133C10.1399 37.4825 11.3986 38.1119 12.6573 38.6014C15.035 39.5105 17.4825 40 20 40C22.5175 40 25.035 39.5105 27.3427 38.6014C28.6014 38.1119 29.7902 37.4825 30.979 36.7133C32.0979 35.944 33.1469 35.1049 34.1259 34.1259C35.1049 33.1468 35.944 32.0979 36.7133 30.979C37.4825 29.8601 38.1119 28.6014 38.6014 27.3427C39.5105 24.965 40 22.5175 40 20C40.0699 17.4825 39.5804 14.965 38.6014 12.6573ZM36.2238 30.6993C33.2168 35.2448 28.4615 38.3217 23.0769 39.1608V27.8322C23.007 27.6923 22.9371 27.5524 22.8671 27.3427C22.7273 26.993 22.5874 26.5734 22.5175 26.2238V39.2308C17.0629 39.9301 11.5385 38.2517 7.34266 34.6154C3.14685 30.979 0.769226 25.7343 0.629366 20.2098H11.049C10.6993 20.1399 10.2797 20 9.93008 19.8601C9.79022 19.7902 9.65035 19.7203 9.44056 19.6503H0.629366C0.699296 14.965 2.44755 10.4895 5.52447 6.99301C8.60139 3.4965 12.8671 1.25874 17.5524 0.699301V9.09091V9.86014V14.6154H18.1119V0.629377C25.4545 -0.0699237 32.5874 3.35664 36.5035 9.65035C40.4196 15.8741 40.4196 23.8461 36.5734 30.0699H33.6364V30.6294H36.2238V30.6993Z" fill="black" fill-opacity="0.3"/>
<path d="M15.1052 20.6293C14.8954 20.4894 14.6856 20.3496 14.4059 20.2797C13.6367 19.93 12.8674 19.7202 12.0283 19.7202C10.6996 19.7202 9.44088 19.2307 8.53178 18.2517C7.62269 17.3426 7.06325 16.0839 7.06325 14.7552C7.06325 13.4265 7.55276 12.1678 8.53178 11.2587C9.44088 10.3496 10.6996 9.79014 12.0283 9.79014H17.4129V9.23071H12.0283C11.329 9.23071 10.5598 9.37057 9.93039 9.65029C9.23109 9.93001 8.67165 10.3496 8.18213 10.8391C7.69262 11.3286 7.27304 11.958 6.99332 12.6573C6.71359 13.3566 6.57373 14.0559 6.57373 14.7552C6.57373 15.4545 6.71359 16.1538 6.99332 16.8531C7.27304 17.5524 7.69262 18.1118 8.18213 18.6013C8.60171 19.0209 9.16114 19.3706 9.72058 19.6503C9.79051 19.7202 9.93039 19.7202 10.0003 19.7901C10.6996 20.0699 11.3989 20.2097 12.0982 20.2097C14.1262 20.2097 15.8744 21.3985 16.6437 23.2866C17.4129 25.1748 16.9933 27.2727 15.5947 28.6713C14.6856 29.5803 13.4269 30.1398 12.0982 30.1398C11.4689 30.1398 10.8395 29.9999 10.2101 29.7901C8.32199 29.0209 7.13318 27.2027 7.13318 25.2447H6.57373C6.57373 26.3636 6.92339 27.4125 7.48283 28.3216C8.1122 29.2307 8.95137 29.93 9.93039 30.3496C10.6297 30.6293 11.329 30.7692 12.0283 30.7692C12.7276 30.7692 13.4269 30.6293 14.1262 30.3496C14.8255 30.0699 15.3849 29.6503 15.9444 29.1608C16.7136 28.3915 17.2031 27.4125 17.4828 26.3636C17.6926 25.3146 17.5528 24.1957 17.2031 23.2167C16.7136 22.0978 16.0143 21.2587 15.1052 20.6293Z" fill="black" fill-opacity="0.3"/>
<path d="M28.0418 19.7202V20.2797C28.7411 20.2797 29.5103 20.1398 30.1397 19.8601C30.839 19.5804 31.3984 19.1608 31.9578 18.6713C32.4474 18.1818 32.8669 17.5524 33.1466 16.923C33.4264 16.2237 33.5662 15.5244 33.5662 14.8251C33.5662 14.1258 33.4264 13.4265 33.1466 12.7272C32.8669 12.0279 32.4474 11.4685 31.9578 10.9091C31.4683 10.4195 30.839 9.99996 30.1397 9.72024C29.4404 9.44052 28.7411 9.30066 28.0418 9.30066H22.5173V14.8251C22.5173 16.014 22.0977 17.2028 21.2585 18.1119C20.4893 19.0209 19.3704 19.5804 18.1816 19.7202H18.1117V14.8251H17.5522V19.7902V20.3496C18.8809 20.3496 20.1397 20.8391 21.0487 21.8181C21.9578 22.7272 22.5173 23.986 22.5173 25.3146C22.5173 26.0139 22.6571 26.7133 22.9369 27.4126C23.0068 27.5524 23.0767 27.6223 23.0767 27.7622C23.2166 27.972 23.2865 28.1818 23.4264 28.3916C23.5662 28.6014 23.7061 28.7412 23.846 28.8811C23.9159 28.951 23.9159 28.951 23.9858 29.0209C24.0558 29.0909 24.0557 29.0909 24.1257 29.1608C24.1956 29.2307 24.3355 29.3706 24.4054 29.4405L24.4753 29.5105C24.6152 29.6503 24.825 29.7902 25.0348 29.93C25.1047 29.93 25.1047 30 25.1746 30C25.3145 30.0699 25.4543 30.1398 25.6641 30.2797C25.7341 30.2797 25.804 30.3496 25.804 30.3496C25.804 30.3496 25.8739 30.3496 25.8739 30.4195C26.0837 30.4895 26.2236 30.5594 26.4334 30.6293C26.5033 30.6293 26.5033 30.6293 26.5732 30.6293C26.783 30.6993 26.9229 30.6993 27.1327 30.7692C27.2026 30.7692 27.2725 30.7692 27.3425 30.7692C27.5522 30.7692 27.832 30.8391 28.0418 30.8391H33.5662V30.2797H28.0418C26.7131 30.2797 25.4543 29.7902 24.5453 28.8112C23.6362 27.9021 23.0767 26.6433 23.0767 25.3146C23.0767 25.1748 23.0767 24.965 23.0767 24.8251C23.0767 24.7552 23.0767 24.7552 23.0767 24.6853C23.0767 24.5454 23.0767 24.4755 23.0068 24.3356C23.0068 24.2657 23.0068 24.2657 23.0068 24.1958C23.0068 24.0559 22.9369 23.986 22.9369 23.8461C22.9369 23.7762 22.9369 23.7762 22.9369 23.7063C22.9369 23.5664 22.8669 23.4965 22.797 23.3566C22.797 23.3566 22.797 23.2867 22.7271 23.2867C22.6571 23.1468 22.5872 23.007 22.5872 22.937V22.8671C22.5173 22.7272 22.4473 22.5874 22.3774 22.4475C22.3774 22.4475 22.3774 22.4475 22.3774 22.3776C22.3075 22.2377 22.2376 22.1678 22.1676 22.0279C22.0278 21.8181 21.8879 21.6783 21.6781 21.4685C21.6082 21.3986 21.6082 21.3986 21.5383 21.3286C21.3984 21.1888 21.1886 20.979 21.0487 20.8391L20.9788 20.7692C20.839 20.6293 20.6292 20.5594 20.4194 20.4195C20.3495 20.4195 20.3494 20.3496 20.2795 20.3496C20.0697 20.2098 19.8599 20.1398 19.6501 20.0699H19.5802L19.4404 20L19.5802 19.93C20.6292 19.5804 21.5383 18.8811 22.1676 17.972C22.8669 17.0629 23.2166 15.944 23.2166 14.7552V9.79017H28.1816C29.5103 9.79017 30.769 10.2797 31.6781 11.2587C32.5872 12.1678 33.1466 13.4265 33.1466 14.7552C33.1466 16.0839 32.6571 17.3426 31.6781 18.2517C30.5592 19.2307 29.3704 19.7202 28.0418 19.7202Z" fill="black" fill-opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

3
src/assets/images/brand/pos.svg

@ -0,0 +1,3 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 11.9L9.8875 9.01245C10.4585 8.44137 10.8474 7.71379 11.0049 6.92171C11.1624 6.12964 11.0815 5.30864 10.7725 4.56253C10.4634 3.81642 9.94003 3.17872 9.26854 2.73005C8.59705 2.28139 7.80759 2.04192 7 2.04192C6.19241 2.04192 5.40296 2.28139 4.73147 2.73005C4.05998 3.17872 3.5366 3.81642 3.22753 4.56253C2.91846 5.30864 2.83758 6.12964 2.9951 6.92171C3.15262 7.71379 3.54148 8.44137 4.1125 9.01245L7 11.9ZM7 13.5496L3.28767 9.83729C2.55345 9.10306 2.05344 8.1676 1.85087 7.1492C1.64831 6.1308 1.75228 5.07521 2.14964 4.1159C2.547 3.15659 3.21991 2.33665 4.08327 1.75978C4.94662 1.18291 5.96165 0.875 7 0.875C8.03835 0.875 9.05338 1.18291 9.91674 1.75978C10.7801 2.33665 11.453 3.15659 11.8504 4.1159C12.2477 5.07521 12.3517 6.1308 12.1491 7.1492C11.9466 8.1676 11.4466 9.10306 10.7123 9.83729L7 13.5496V13.5496ZM7 7.29162C7.30942 7.29162 7.60617 7.1687 7.82496 6.94991C8.04375 6.73112 8.16667 6.43437 8.16667 6.12495C8.16667 5.81553 8.04375 5.51879 7.82496 5.3C7.60617 5.0812 7.30942 4.95829 7 4.95829C6.69058 4.95829 6.39384 5.0812 6.17504 5.3C5.95625 5.51879 5.83334 5.81553 5.83334 6.12495C5.83334 6.43437 5.95625 6.73112 6.17504 6.94991C6.39384 7.1687 6.69058 7.29162 7 7.29162ZM7 8.45829C6.38116 8.45829 5.78767 8.21245 5.35009 7.77487C4.9125 7.33729 4.66667 6.74379 4.66667 6.12495C4.66667 5.50612 4.9125 4.91262 5.35009 4.47504C5.78767 4.03745 6.38116 3.79162 7 3.79162C7.61884 3.79162 8.21233 4.03745 8.64992 4.47504C9.0875 4.91262 9.33334 5.50612 9.33334 6.12495C9.33334 6.74379 9.0875 7.33729 8.64992 7.77487C8.21233 8.21245 7.61884 8.45829 7 8.45829Z" fill="#615C59"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

8
src/assets/images/empty_big.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

13
src/assets/images/empty_small.svg

@ -0,0 +1,13 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="256" height="256" fill="white"/>
<path d="M166.377 127.86C164.908 126.671 164.139 126.392 160.713 125.413C156.377 124.154 155.608 123.035 155.608 121.077C155.608 118.559 157.426 116.741 159.804 116.741C162.321 116.741 164.069 118.559 164.279 121.217L164.349 121.916H168.894V121.147C168.894 116.322 165.048 112.545 160.153 112.545C154.978 112.545 151.202 116.182 151.202 121.147C151.202 123.315 152.041 125.343 153.44 126.811C154.699 128.14 156.097 128.769 159.174 129.538C163.37 130.587 165.048 132.126 165.048 134.853C165.048 137.51 162.741 139.888 160.083 139.888C157.076 139.888 155.258 138 154.839 134.573L154.769 133.874H150.223V134.643C150.433 140.168 154.489 144.014 159.943 144.014C165.188 144.014 169.524 139.818 169.524 134.713C169.524 132.056 168.335 129.538 166.377 127.86Z" fill="black" fill-opacity="0.3"/>
<path d="M196.726 113.035H190.992L178.894 128.21V113.035H174.419V143.454H178.894V134.993L181.831 131.427L191.132 143.454H196.656L184.698 127.86L196.726 113.035Z" fill="black" fill-opacity="0.3"/>
<path d="M217.496 114.853C215.468 113.524 213.301 113.035 209.594 113.035H200.783V143.454H205.259V131.846H210.364C217.217 131.846 221.482 128.28 221.482 122.545C221.482 119.259 220.014 116.461 217.496 114.853ZM205.259 117.161H208.685C212.182 117.161 212.811 117.231 214.14 117.79C216.028 118.699 217.077 120.378 217.077 122.406C217.077 124.154 216.238 125.762 214.909 126.601C213.72 127.301 212.392 127.58 209.944 127.58H205.329V117.161H205.259Z" fill="black" fill-opacity="0.3"/>
<path d="M146.796 114.993L144.908 113.734L144.489 113.874H134.209V143.944H136.796V116.392H143.23C141.971 119.469 140.363 123.105 138.964 125.832C142.181 128.489 143.719 131.077 143.719 133.664C143.719 134.503 143.65 135.552 143.02 136.112C143.02 136.112 142.95 136.112 142.95 136.182C142.88 136.252 142.81 136.322 142.671 136.392C142.251 136.601 141.691 136.741 141.062 136.811C140.363 136.881 139.314 136.881 138.125 136.741H138.055V136.811C138.545 137.58 138.824 138.629 138.824 139.329C139.314 139.329 139.873 139.399 140.363 139.399C140.992 139.399 141.622 139.399 142.111 139.329C143.09 139.189 143.859 138.909 144.489 138.489C145.747 137.72 146.307 136.182 146.307 133.944C146.307 132.545 146.027 131.217 145.398 129.958C144.629 128.42 143.44 126.951 141.692 125.413C143.37 122.336 145.328 118.28 146.796 114.993Z" fill="black" fill-opacity="0.3"/>
<path d="M133.16 114.294L130.922 113.105L129.873 115.413C129.524 116.182 129.034 116.951 128.545 117.72V115.902H124.209V112.825C124.419 112.755 124.698 112.615 124.768 112.126V111.846L121.622 111.636V115.832H116.237V118.21H121.622V122.336H114.698V124.713H122.95C120.363 127.301 117.286 129.469 113.929 131.147C114.419 131.706 115.258 132.755 115.538 133.245C116.587 132.685 117.496 132.126 118.265 131.566V143.524H120.712V141.427H128.475V143.455H131.062V142.965V127.86H122.95C123.929 126.951 124.978 125.902 126.237 124.503H132.67V122.406H128.195C129.943 120.098 131.412 117.65 132.601 115.133C132.81 115.203 133.16 115.203 133.37 114.783L133.51 114.573L133.16 114.294ZM120.922 135.832H128.684V139.469H120.922V135.832ZM128.684 133.664H120.922V130.308H128.684V133.664ZM125.258 122.406H124.279V118.28H128.265C127.426 119.538 126.447 120.937 125.258 122.406Z" fill="black" fill-opacity="0.3"/>
<path d="M111.622 135.902C110.922 135.692 110.013 135.133 109.384 134.503L109.314 134.434V134.503C109.034 139.189 108.615 140.937 107.706 140.937C106.027 140.937 104.349 139.049 103.02 135.552C105.328 132.615 107.216 129.049 108.685 125.133C108.964 125.133 109.314 125.133 109.524 124.713L109.664 124.434L109.384 124.294L106.657 123.035C105.608 126.531 104.069 129.678 102.181 132.406C101.272 129.189 100.643 125.133 100.293 120.378H111.412V117.79H107.915L109.454 116.042C108.055 114.783 105.188 113.035 103.16 112.056L101.622 113.664C103.859 114.853 106.447 116.601 107.776 117.79H100.083C100.013 116.322 99.9434 114.783 99.9434 112.895C100.153 112.825 100.503 112.685 100.573 112.196V111.916L97.1462 111.706L97.2161 112.825C97.2161 114.504 97.2861 116.182 97.4259 117.79H82.8105V127.58C82.8105 132.266 82.4609 138.14 79.5938 142.336C80.1532 142.615 81.2721 143.524 81.7616 144.084C84.2091 140.517 85.4679 134.993 85.4679 127.58V127.301H91.7616C91.6217 133.455 91.4119 135.483 90.9923 136.042C90.7825 136.322 90.4329 136.392 89.9434 136.392C89.314 136.392 87.8455 136.392 86.2371 136.252H86.1672V136.322C86.5868 136.951 86.8665 137.93 86.8665 138.769C87.7056 138.839 88.5448 138.839 89.2441 138.839C89.9434 138.839 90.5728 138.839 90.9923 138.769C92.0413 138.629 92.6007 138.35 93.0902 137.72C93.8595 136.741 94.0693 133.455 94.2091 125.972V124.853H85.2581V120.378H97.286C97.7756 126.252 98.6147 131.357 99.8035 135.063C97.5658 137.65 94.8385 139.888 91.7616 141.497H91.6916C92.2511 141.986 93.1602 143.035 93.5798 143.524C96.2371 141.986 98.6846 140.028 100.783 137.72C102.461 141.497 104.629 143.455 107.216 143.455C108.615 143.455 109.524 142.965 110.083 141.846C111.062 140.867 111.412 139.049 111.622 135.902Z" fill="black" fill-opacity="0.3"/>
<path d="M51.482 128.28V127.72H47.0764C47.6359 127.79 48.1953 128 48.6848 128.28H51.482Z" fill="black" fill-opacity="0.3"/>
<path d="M72.6014 120.657C72.1119 119.399 71.4825 118.21 70.7133 117.021C69.944 115.902 69.1049 114.853 68.1259 113.874C67.1469 112.895 66.0979 112.056 64.979 111.287C63.8601 110.517 62.6014 109.888 61.3427 109.399C58.965 108.49 56.5175 108 54 108C51.4825 108 48.965 108.49 46.6573 109.399C45.3986 109.888 44.2098 110.517 43.021 111.287C41.9021 112.056 40.8531 112.895 39.8741 113.874C38.8951 114.853 38.056 115.902 37.2867 117.021C36.5175 118.14 35.8881 119.399 35.3986 120.657C34.4895 123.035 34 125.483 34 128C34 130.517 34.4895 133.035 35.3986 135.343C35.8881 136.601 36.5175 137.79 37.2867 138.979C38.056 140.098 38.8951 141.147 39.8741 142.126C40.8531 143.105 41.9021 143.944 43.021 144.713C44.1399 145.483 45.3986 146.112 46.6573 146.601C49.035 147.51 51.4825 148 54 148C56.5175 148 59.035 147.51 61.3427 146.601C62.6014 146.112 63.7902 145.483 64.979 144.713C66.0979 143.944 67.1469 143.105 68.1259 142.126C69.1049 141.147 69.944 140.098 70.7133 138.979C71.4825 137.86 72.1119 136.601 72.6014 135.343C73.5105 132.965 74 130.517 74 128C74.0699 125.483 73.5804 122.965 72.6014 120.657ZM70.2238 138.699C67.2168 143.245 62.4615 146.322 57.0769 147.161V135.832C57.007 135.692 56.9371 135.552 56.8671 135.343C56.7273 134.993 56.5874 134.573 56.5175 134.224V147.231C51.0629 147.93 45.5385 146.252 41.3427 142.615C37.1469 138.979 34.7692 133.734 34.6294 128.21H45.049C44.6993 128.14 44.2797 128 43.9301 127.86C43.7902 127.79 43.6503 127.72 43.4406 127.65H34.6294C34.6993 122.965 36.4475 118.49 39.5245 114.993C42.6014 111.497 46.8671 109.259 51.5524 108.699V117.091V117.86V122.615H52.1119V108.629C59.4545 107.93 66.5874 111.357 70.5035 117.65C74.4196 123.874 74.4196 131.846 70.5734 138.07H67.6364V138.629H70.2238V138.699Z" fill="black" fill-opacity="0.3"/>
<path d="M49.1052 128.629C48.8954 128.489 48.6856 128.35 48.4059 128.28C47.6367 127.93 46.8674 127.72 46.0283 127.72C44.6996 127.72 43.4409 127.231 42.5318 126.252C41.6227 125.343 41.0632 124.084 41.0632 122.755C41.0632 121.427 41.5528 120.168 42.5318 119.259C43.4409 118.35 44.6996 117.79 46.0283 117.79H51.4129V117.231H46.0283C45.329 117.231 44.5598 117.371 43.9304 117.65C43.2311 117.93 42.6716 118.35 42.1821 118.839C41.6926 119.329 41.273 119.958 40.9933 120.657C40.7136 121.357 40.5737 122.056 40.5737 122.755C40.5737 123.454 40.7136 124.154 40.9933 124.853C41.273 125.552 41.6926 126.112 42.1821 126.601C42.6017 127.021 43.1611 127.371 43.7206 127.65C43.7905 127.72 43.9304 127.72 44.0003 127.79C44.6996 128.07 45.3989 128.21 46.0982 128.21C48.1262 128.21 49.8744 129.399 50.6437 131.287C51.4129 133.175 50.9933 135.273 49.5947 136.671C48.6856 137.58 47.4269 138.14 46.0982 138.14C45.4689 138.14 44.8395 138 44.2101 137.79C42.322 137.021 41.1332 135.203 41.1332 133.245H40.5737C40.5737 134.364 40.9234 135.413 41.4828 136.322C42.1122 137.231 42.9514 137.93 43.9304 138.35C44.6297 138.629 45.329 138.769 46.0283 138.769C46.7276 138.769 47.4269 138.629 48.1262 138.35C48.8255 138.07 49.3849 137.65 49.9444 137.161C50.7136 136.392 51.2031 135.413 51.4828 134.364C51.6926 133.315 51.5528 132.196 51.2031 131.217C50.7136 130.098 50.0143 129.259 49.1052 128.629Z" fill="black" fill-opacity="0.3"/>
<path d="M62.0418 127.72V128.28C62.7411 128.28 63.5103 128.14 64.1397 127.86C64.839 127.58 65.3984 127.161 65.9578 126.671C66.4474 126.182 66.8669 125.552 67.1466 124.923C67.4264 124.224 67.5662 123.524 67.5662 122.825C67.5662 122.126 67.4264 121.427 67.1466 120.727C66.8669 120.028 66.4474 119.468 65.9578 118.909C65.4683 118.42 64.839 118 64.1397 117.72C63.4404 117.441 62.7411 117.301 62.0418 117.301H56.5173V122.825C56.5173 124.014 56.0977 125.203 55.2585 126.112C54.4893 127.021 53.3704 127.58 52.1816 127.72H52.1117V122.825H51.5522V127.79V128.35C52.8809 128.35 54.1397 128.839 55.0487 129.818C55.9578 130.727 56.5173 131.986 56.5173 133.315C56.5173 134.014 56.6571 134.713 56.9369 135.413C57.0068 135.552 57.0767 135.622 57.0767 135.762C57.2166 135.972 57.2865 136.182 57.4264 136.392C57.5662 136.601 57.7061 136.741 57.846 136.881C57.9159 136.951 57.9159 136.951 57.9858 137.021C58.0557 137.091 58.0557 137.091 58.1257 137.161C58.1956 137.231 58.3355 137.371 58.4054 137.441L58.4753 137.51C58.6152 137.65 58.825 137.79 59.0348 137.93C59.1047 137.93 59.1047 138 59.1746 138C59.3145 138.07 59.4543 138.14 59.6641 138.28C59.7341 138.28 59.804 138.35 59.804 138.35C59.804 138.35 59.8739 138.35 59.8739 138.42C60.0837 138.489 60.2236 138.559 60.4334 138.629C60.5033 138.629 60.5033 138.629 60.5732 138.629C60.783 138.699 60.9229 138.699 61.1327 138.769C61.2026 138.769 61.2725 138.769 61.3425 138.769C61.5522 138.769 61.832 138.839 62.0418 138.839H67.5662V138.28H62.0418C60.7131 138.28 59.4543 137.79 58.5453 136.811C57.6362 135.902 57.0767 134.643 57.0767 133.315C57.0767 133.175 57.0767 132.965 57.0767 132.825C57.0767 132.755 57.0767 132.755 57.0767 132.685C57.0767 132.545 57.0767 132.475 57.0068 132.336C57.0068 132.266 57.0068 132.266 57.0068 132.196C57.0068 132.056 56.9369 131.986 56.9369 131.846C56.9369 131.776 56.9369 131.776 56.9369 131.706C56.9369 131.566 56.8669 131.496 56.797 131.357C56.797 131.357 56.797 131.287 56.7271 131.287C56.6571 131.147 56.5872 131.007 56.5872 130.937V130.867C56.5173 130.727 56.4473 130.587 56.3774 130.448C56.3774 130.448 56.3774 130.448 56.3774 130.378C56.3075 130.238 56.2376 130.168 56.1676 130.028C56.0278 129.818 55.8879 129.678 55.6781 129.468C55.6082 129.399 55.6082 129.399 55.5383 129.329C55.3984 129.189 55.1886 128.979 55.0487 128.839L54.9788 128.769C54.839 128.629 54.6292 128.559 54.4194 128.42C54.3495 128.42 54.3494 128.35 54.2795 128.35C54.0697 128.21 53.8599 128.14 53.6501 128.07H53.5802L53.4404 128L53.5802 127.93C54.6292 127.58 55.5383 126.881 56.1676 125.972C56.8669 125.063 57.2166 123.944 57.2166 122.755V117.79H62.1816C63.5103 117.79 64.769 118.28 65.6781 119.259C66.5872 120.168 67.1466 121.427 67.1466 122.755C67.1466 124.084 66.6571 125.343 65.6781 126.252C64.5592 127.231 63.3704 127.72 62.0418 127.72Z" fill="black" fill-opacity="0.3"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

BIN
src/assets/images/menu/activity_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 B

BIN
src/assets/images/menu/art_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
src/assets/images/menu/brand_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 B

BIN
src/assets/images/menu/map_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/assets/images/menu/member_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B

BIN
src/assets/images/menu/parking_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 654 B

BIN
src/assets/images/menu/service_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

BIN
src/assets/images/menu/traffic_proc.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 B

5
src/assets/images/shopDetail/close.svg

@ -0,0 +1,5 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#159;&#186;&#231;&#161;&#128;/&#229;&#138;&#159;&#232;&#131;&#189;/&#229;&#133;&#179;&#233;&#151;&#173;">
<path id="&#231;&#159;&#162;&#233;&#135;&#143;" d="M24.0005 21.172L33.9005 11.272L36.7285 14.1L26.8285 24L36.7285 33.9L33.9005 36.728L24.0005 26.828L14.1005 36.728L11.2725 33.9L21.1725 24L11.2725 14.1L14.1005 11.272L24.0005 21.172Z" fill="#E00068"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 478 B

6
src/assets/images/shopDetail/go.svg

@ -0,0 +1,6 @@
<svg width="168" height="80" viewBox="0 0 168 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="168" height="80" rx="40" fill="#E00068"/>
<path d="M56.2652 30.7946L51.5372 47.3413L47.4839 39.2346L39.9679 36.228L56.2652 30.7946ZM59.0199 27.0666L33.9452 35.424C33.8154 35.467 33.702 35.5489 33.6203 35.6585C33.5386 35.7682 33.4927 35.9003 33.4886 36.0369C33.4845 36.1736 33.5225 36.3082 33.5975 36.4225C33.6725 36.5368 33.7809 36.6253 33.9079 36.676L45.5519 41.3333L51.4519 53.1333C51.5119 53.2535 51.6068 53.3527 51.7242 53.418C51.8416 53.4833 51.976 53.5115 52.1097 53.4992C52.2435 53.4868 52.3704 53.4343 52.4738 53.3485C52.5772 53.2628 52.6523 53.1478 52.6892 53.0186L59.8719 27.8813C59.9051 27.7645 59.9059 27.6409 59.874 27.5237C59.8422 27.4065 59.7789 27.3003 59.6911 27.2164C59.6032 27.1326 59.4942 27.0743 59.3757 27.0479C59.2571 27.0215 59.1336 27.028 59.0185 27.0666H59.0199Z" fill="white"/>
<line x1="79" y1="30" x2="79" y2="50" stroke="white" stroke-opacity="0.5"/>
<path d="M106.132 42.132V38.632H113.972V46.976C113.337 48.0027 112.32 48.824 110.92 49.44C109.538 50.0373 108.008 50.336 106.328 50.336C104.33 50.336 102.557 49.888 101.008 48.992C99.4583 48.096 98.2543 46.8453 97.3956 45.24C96.537 43.6347 96.1076 41.796 96.1076 39.724C96.1076 37.6333 96.5463 35.7853 97.4236 34.18C98.3196 32.5747 99.5423 31.3333 101.092 30.456C102.641 29.5787 104.358 29.14 106.244 29.14C108.129 29.14 109.762 29.5693 111.144 30.428C112.544 31.268 113.486 32.3507 113.972 33.676L110.612 35.608C110.201 34.7493 109.613 34.0773 108.848 33.592C108.082 33.088 107.177 32.836 106.132 32.836C105.03 32.836 104.041 33.116 103.164 33.676C102.286 34.236 101.596 35.0387 101.092 36.084C100.588 37.1293 100.336 38.3427 100.336 39.724C100.336 41.1427 100.588 42.3747 101.092 43.42C101.614 44.4653 102.342 45.268 103.276 45.828C104.228 46.388 105.329 46.668 106.58 46.668C108.036 46.668 109.174 46.2667 109.996 45.464V42.132H106.132ZM116.315 39.724C116.315 37.5773 116.744 35.7013 117.603 34.096C118.461 32.4907 119.628 31.268 121.103 30.428C122.596 29.5693 124.257 29.14 126.087 29.14C127.916 29.14 129.568 29.5693 131.043 30.428C132.536 31.268 133.712 32.4907 134.571 34.096C135.448 35.7013 135.887 37.5773 135.887 39.724C135.887 41.8893 135.448 43.7747 134.571 45.38C133.712 46.9853 132.536 48.2173 131.043 49.076C129.568 49.916 127.916 50.336 126.087 50.336C124.257 50.336 122.596 49.916 121.103 49.076C119.628 48.2173 118.461 46.9853 117.603 45.38C116.744 43.7747 116.315 41.8893 116.315 39.724ZM120.599 39.724C120.599 41.0867 120.823 42.2907 121.271 43.336C121.737 44.3813 122.381 45.1933 123.203 45.772C124.043 46.332 125.004 46.612 126.087 46.612C127.169 46.612 128.121 46.332 128.943 45.772C129.783 45.1933 130.427 44.3813 130.875 43.336C131.341 42.2907 131.575 41.0867 131.575 39.724C131.575 38.3613 131.341 37.1667 130.875 36.14C130.427 35.0947 129.783 34.292 128.943 33.732C128.121 33.1533 127.169 32.864 126.087 32.864C125.004 32.864 124.043 33.1533 123.203 33.732C122.381 34.292 121.737 35.0947 121.271 36.14C120.823 37.1667 120.599 38.3613 120.599 39.724Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

5
src/assets/images/shopDetail/icon_address.svg

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#159;&#186;&#231;&#161;&#128;/&#229;&#138;&#159;&#232;&#131;&#189;/&#231;&#187;&#136;&#231;&#130;&#185;">
<path id="&#231;&#159;&#162;&#233;&#135;&#143;" d="M10 16.9999L14.125 12.8749C14.9408 12.0591 15.4963 11.0197 15.7213 9.88816C15.9463 8.75662 15.8308 7.58377 15.3892 6.5179C14.9477 5.45203 14.2 4.54102 13.2408 3.90008C12.2815 3.25913 11.1537 2.91702 10 2.91702C8.8463 2.91702 7.71851 3.25913 6.75924 3.90008C5.79997 4.54102 5.05229 5.45203 4.61076 6.5179C4.16923 7.58377 4.05368 8.75662 4.27871 9.88816C4.50374 11.0197 5.05926 12.0591 5.875 12.8749L10 16.9999ZM10 19.3566L4.69667 14.0533C3.64779 13.0044 2.93349 11.668 2.64411 10.2131C2.35473 8.75829 2.50326 7.25029 3.07092 5.87985C3.63858 4.50941 4.59987 3.33808 5.83324 2.51397C7.0666 1.68986 8.51665 1.25 10 1.25C11.4834 1.25 12.9334 1.68986 14.1668 2.51397C15.4001 3.33808 16.3614 4.50941 16.9291 5.87985C17.4968 7.25029 17.6453 8.75829 17.3559 10.2131C17.0665 11.668 16.3522 13.0044 15.3033 14.0533L10 19.3566V19.3566ZM10 10.4166C10.442 10.4166 10.866 10.241 11.1785 9.92845C11.4911 9.61588 11.6667 9.19196 11.6667 8.74993C11.6667 8.30791 11.4911 7.88398 11.1785 7.57142C10.866 7.25886 10.442 7.08327 10 7.08327C9.55798 7.08327 9.13405 7.25886 8.82149 7.57142C8.50893 7.88398 8.33334 8.30791 8.33334 8.74993C8.33334 9.19196 8.50893 9.61588 8.82149 9.92845C9.13405 10.241 9.55798 10.4166 10 10.4166ZM10 12.0833C9.11595 12.0833 8.2681 11.7321 7.64298 11.107C7.01786 10.4818 6.66667 9.63399 6.66667 8.74993C6.66667 7.86588 7.01786 7.01803 7.64298 6.39291C8.2681 5.76779 9.11595 5.4166 10 5.4166C10.8841 5.4166 11.7319 5.76779 12.357 6.39291C12.9821 7.01803 13.3333 7.86588 13.3333 8.74993C13.3333 9.63399 12.9821 10.4818 12.357 11.107C11.7319 11.7321 10.8841 12.0833 10 12.0833Z" fill="#E00068"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

3
src/assets/images/shopDetail/icon_format.svg

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M5.62468 2.08337C6.08977 2.08337 6.55032 2.17498 6.98001 2.35297C7.40971 2.53095 7.80014 2.79183 8.12901 3.1207C8.45789 3.44958 8.71876 3.84001 8.89675 4.2697C9.07473 4.6994 9.16634 5.15994 9.16634 5.62504V9.16671H5.62468C4.68537 9.16671 3.78453 8.79357 3.12034 8.12938C2.45615 7.46519 2.08301 6.56435 2.08301 5.62504C2.08301 4.68573 2.45615 3.7849 3.12034 3.1207C3.78453 2.45651 4.68537 2.08337 5.62468 2.08337V2.08337ZM7.49968 7.50004V5.62504C7.49968 5.2542 7.38971 4.89169 7.18368 4.58335C6.97765 4.275 6.68482 4.03468 6.34221 3.89277C5.9996 3.75085 5.6226 3.71372 5.25888 3.78607C4.89517 3.85842 4.56107 4.03699 4.29885 4.29922C4.03663 4.56144 3.85805 4.89553 3.7857 5.25925C3.71336 5.62296 3.75049 5.99996 3.8924 6.34257C4.03432 6.68518 4.27464 6.97802 4.58298 7.18405C4.89132 7.39007 5.25384 7.50004 5.62468 7.50004H7.49968ZM5.62468 10.8334H9.16634V14.375C9.16634 15.0755 8.95863 15.7603 8.56946 16.3427C8.1803 16.9251 7.62717 17.3791 6.98001 17.6471C6.33286 17.9152 5.62075 17.9853 4.93373 17.8487C4.24671 17.712 3.61565 17.3747 3.12034 16.8794C2.62503 16.3841 2.28772 15.753 2.15106 15.066C2.01441 14.379 2.08454 13.6669 2.3526 13.0197C2.62066 12.3725 3.07461 11.8194 3.65703 11.4303C4.23946 11.0411 4.9242 10.8334 5.62468 10.8334V10.8334ZM5.62468 12.5C5.25384 12.5 4.89132 12.61 4.58298 12.816C4.27464 13.0221 4.03432 13.3149 3.8924 13.6575C3.75049 14.0001 3.71336 14.3771 3.7857 14.7408C3.85805 15.1045 4.03663 15.4386 4.29885 15.7009C4.56107 15.9631 4.89517 16.1417 5.25888 16.214C5.6226 16.2864 5.9996 16.2492 6.34221 16.1073C6.68482 15.9654 6.97765 15.7251 7.18368 15.4167C7.38971 15.1084 7.49968 14.7459 7.49968 14.375V12.5H5.62468ZM14.3747 2.08337C15.314 2.08337 16.2148 2.45651 16.879 3.1207C17.5432 3.7849 17.9163 4.68573 17.9163 5.62504C17.9163 6.56435 17.5432 7.46519 16.879 8.12938C16.2148 8.79357 15.314 9.16671 14.3747 9.16671H10.833V5.62504C10.833 4.68573 11.2061 3.7849 11.8703 3.1207C12.5345 2.45651 13.4354 2.08337 14.3747 2.08337V2.08337ZM14.3747 7.50004C14.7455 7.50004 15.108 7.39007 15.4164 7.18405C15.7247 6.97802 15.965 6.68518 16.107 6.34257C16.2489 5.99996 16.286 5.62296 16.2136 5.25925C16.1413 4.89553 15.9627 4.56144 15.7005 4.29922C15.4383 4.03699 15.1042 3.85842 14.7405 3.78607C14.3768 3.71372 13.9998 3.75085 13.6571 3.89277C13.3145 4.03468 13.0217 4.275 12.8157 4.58335C12.6096 4.89169 12.4997 5.2542 12.4997 5.62504V7.50004H14.3747ZM10.833 10.8334H14.3747C15.0752 10.8334 15.7599 11.0411 16.3423 11.4303C16.9247 11.8194 17.3787 12.3725 17.6467 13.0197C17.9148 13.6669 17.9849 14.379 17.8483 15.066C17.7116 15.753 17.3743 16.3841 16.879 16.8794C16.3837 17.3747 15.7526 17.712 15.0656 17.8487C14.3786 17.9853 13.6665 17.9152 13.0193 17.6471C12.3722 17.3791 11.8191 16.9251 11.4299 16.3427C11.0407 15.7603 10.833 15.0755 10.833 14.375V10.8334ZM12.4997 12.5V14.375C12.4997 14.7459 12.6096 15.1084 12.8157 15.4167C13.0217 15.7251 13.3145 15.9654 13.6571 16.1073C13.9998 16.2492 14.3768 16.2864 14.7405 16.214C15.1042 16.1417 15.4383 15.9631 15.7005 15.7009C15.9627 15.4386 16.1413 15.1045 16.2136 14.7408C16.286 14.3771 16.2489 14.0001 16.107 13.6575C15.965 13.3149 15.7247 13.0221 15.4164 12.816C15.108 12.61 14.7455 12.5 14.3747 12.5H12.4997Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

5
src/assets/images/shopDetail/icon_tel.svg

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#159;&#186;&#231;&#161;&#128;/&#229;&#138;&#159;&#232;&#131;&#189;/&#231;&#148;&#181;&#232;&#175;&#157;">
<path id="&#231;&#159;&#162;&#233;&#135;&#143;" d="M7.805 8.90167C8.58695 10.2754 9.7246 11.4131 11.0983 12.195L11.835 11.1633C11.9535 10.9974 12.1286 10.8807 12.3273 10.8353C12.526 10.7898 12.7345 10.8188 12.9133 10.9167C14.0919 11.5608 15.3935 11.9481 16.7325 12.0533C16.9415 12.0699 17.1365 12.1646 17.2788 12.3186C17.421 12.4726 17.5 12.6745 17.5 12.8842V16.6025C17.5 16.8088 17.4235 17.0078 17.2853 17.161C17.1471 17.3142 16.9569 17.4106 16.7517 17.4317C16.31 17.4775 15.865 17.5 15.4167 17.5C8.28333 17.5 2.5 11.7167 2.5 4.58333C2.5 4.135 2.5225 3.69 2.56833 3.24833C2.58938 3.04308 2.68582 2.85293 2.83899 2.71469C2.99216 2.57646 3.19117 2.49996 3.3975 2.5H7.11583C7.32547 2.49997 7.52741 2.57896 7.6814 2.72121C7.83539 2.86346 7.93011 3.05852 7.94667 3.2675C8.05185 4.60649 8.43923 5.90807 9.08333 7.08667C9.18122 7.26547 9.21018 7.47395 9.16472 7.67266C9.11927 7.87137 9.00255 8.04653 8.83667 8.165L7.805 8.90167V8.90167ZM5.70333 8.35417L7.28667 7.22333C6.83732 6.25341 6.52946 5.22403 6.3725 4.16667H4.175C4.17 4.305 4.1675 4.44417 4.1675 4.58333C4.16667 10.7967 9.20333 15.8333 15.4167 15.8333C15.5558 15.8333 15.695 15.8308 15.8333 15.825V13.6275C14.776 13.4705 13.7466 13.1627 12.7767 12.7133L11.6458 14.2967C11.1906 14.1198 10.7483 13.9109 10.3225 13.6717L10.2742 13.6442C8.63965 12.7139 7.28607 11.3604 6.35583 9.72583L6.32833 9.6775C6.08909 9.25166 5.88024 8.80945 5.70333 8.35417V8.35417Z" fill="#E00068"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

5
src/assets/images/shopDetail/icon_time.svg

@ -0,0 +1,5 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#229;&#159;&#186;&#231;&#161;&#128;/&#229;&#138;&#159;&#232;&#131;&#189;/&#230;&#151;&#182;&#233;&#151;&#180;">
<path id="&#231;&#159;&#162;&#233;&#135;&#143;" d="M10.0003 18.3333C5.39783 18.3333 1.66699 14.6025 1.66699 9.99996C1.66699 5.39746 5.39783 1.66663 10.0003 1.66663C14.6028 1.66663 18.3337 5.39746 18.3337 9.99996C18.3337 14.6025 14.6028 18.3333 10.0003 18.3333ZM10.0003 16.6666C11.7684 16.6666 13.4641 15.9642 14.7144 14.714C15.9646 13.4638 16.667 11.7681 16.667 9.99996C16.667 8.23185 15.9646 6.53616 14.7144 5.28591C13.4641 4.03567 11.7684 3.33329 10.0003 3.33329C8.23222 3.33329 6.53652 4.03567 5.28628 5.28591C4.03604 6.53616 3.33366 8.23185 3.33366 9.99996C3.33366 11.7681 4.03604 13.4638 5.28628 14.714C6.53652 15.9642 8.23222 16.6666 10.0003 16.6666V16.6666ZM10.8337 9.99996H14.167V11.6666H9.16699V5.83329H10.8337V9.99996Z" fill="#E00068"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 975 B

3
src/base/Marquees/Marquees.vue

@ -48,6 +48,9 @@ function animationend() {
state.animationClass = 'animate-infinite' state.animationClass = 'animate-infinite'
} }
defineExpose({
state
})
watch( watch(
() => props.content, () => props.content,
() => { () => {

60
src/base/Masker/Masker.vue

@ -0,0 +1,60 @@
<template>
<transition appear enter-active-class="animate__animated animate__fadeIn" leave-active-class="animate__animated animate__fadeOut">
<div class="global-masker" @click.self="handleClick">
<div class="bg-img" @click.self="handleClick" />
<slot class="mask-content"></slot>
</div>
</transition>
</template>
<script setup lang="ts">
import { ref } from 'vue'
defineProps({
type: {
type: Number,
default: 0
}
})
const emit = defineEmits(['click'])
const flag = ref(true)
function handleClick() {
flag.value = false
const timerId = setTimeout(() => {
clearTimeout(timerId)
emit('click')
}, 20)
}
</script>
<style lang="scss" scoped>
.global-masker {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 9900;
background: rgb(142 144 145 / 50%);
animation-duration: 0.3s;
backdrop-filter: blur(50px);
.bg-img {
position: absolute;
z-index: 0;
// background: rgba(0, 0, 0, 0.3) url('@/assets/images/home/inner_bgNormal.jpg');
width: 100vw;
height: 100vh;
// backdrop-filter: blur(30px);
filter: blur(0);
}
.blur-wrapper {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 9901;
}
.mask-content {
z-index: 9902;
}
}
</style>

6
src/components/PublicComponent/PublicComponent.vue

@ -1,12 +1,13 @@
<template> <template>
<!-- 地图容器 -->
<Map @handle-go="handleGO" @handle-detail="handleDetail" />
<!-- 头部 --> <!-- 头部 -->
<Header /> <Header />
<!-- 菜单 --> <!-- 菜单 -->
<Menu /> <Menu />
<!-- 地图容器 -->
<Map @handle-go="handleGO" @handle-detail="handleDetail" />
<shopdetail v-if="showDetail"></shopdetail>
<!-- 倒计时返回首页提示 --> <!-- 倒计时返回首页提示 -->
<Transition enter-active-class="animate__animated animate__zoomIn" leave-active-class="animate__animated animate__zoomOut"> <Transition enter-active-class="animate__animated animate__zoomIn" leave-active-class="animate__animated animate__zoomOut">
@ -24,6 +25,7 @@ import { useInitMap } from '@/composables/useInitMap'
import Map from '@/components/Map/Map.vue' import Map from '@/components/Map/Map.vue'
import Header from '@/components/Header/Header.vue' import Header from '@/components/Header/Header.vue'
import Menu from '../Menu/Menu.vue' import Menu from '../Menu/Menu.vue'
import shopdetail from '@/components/ShopDetail/ShopDetail.vue'
const AutoBackNotification = defineAsyncComponent(() => import('@/base/AutoBackNotification/AutoBackNotification.vue')) const AutoBackNotification = defineAsyncComponent(() => import('@/base/AutoBackNotification/AutoBackNotification.vue'))
const router = useRouter() const router = useRouter()

401
src/components/ShopDetail/ShopDetail.vue

@ -0,0 +1,401 @@
<template>
<transition appear enter-active-class="animate__animated animate__fadeIn" leave-active-class="animate__animated animate__fadeOut">
<masker @click="close">
<transition
appear
:enter-active-class="'animate__animated animate__fadeInUp'"
leave-active-class="animate__animated animate__zoomOut"
>
<div class="shop-detail-wrapper">
<div class="intro-container">
<!-- 图片 -->
<div v-if="false" class="carousel">
<swiper
:modules="modules"
:autoplay="{
delay: 5000
}"
:observer="true"
:observe-parents="true"
:effect="'fade'"
:centered-slides="true"
:pagination="{ el: '.detail' }"
:dynamic-bullets="true"
>
<swiper-slide v-for="(item, index) in shop.doorMaterialList" :key="index" class="slide">
<img :src="item" class="banner" />
</swiper-slide>
</swiper>
<img v-if="!shop.doorMaterialList?.length" src="../../assets/images/empty_big.svg" class="banner no-data" alt="" />
<div class="swiper-pagination detail"></div>
</div>
<!-- logo 名称 属性-->
<div class="name-wrapper">
<div class="logo-wrapper">
<img
v-if="shop.logoUrl"
class="shop-logo"
:src="shop.logoUrl.search(config.sourceUrl) >= 0 ? shop.logoUrl : config.sourceUrl + shop.logoUrl"
alt=""
/>
<img v-else class="shop-logo" src="@/assets/images/empty_small.svg" alt="" />
</div>
<div class="marquee-wrapper">
<span v-if="marqueesRef?.state?.duration === 0" style="width: 100%" class="name">{{
switchLanguage(shop, 'shopName')
}}</span>
<marquees
ref="marqueesRef"
:style="{ height: marqueesRef?.state?.duration === 0 ? '0px' : '' }"
:speed="40"
:delay="0.8"
class="name"
:content="switchLanguage(shop, 'shopName')"
>{{ switchLanguage(shop, 'shopName') }}
</marquees>
</div>
<div class="shop-attr-group">
<div v-if="shop.industryFatherName" class="working-item">
<!-- shop.industryUrl -->
<img v-if="shop.industryFatherName" src="@/assets/images/shopDetail/icon_format.svg" alt="" />
<span class="title">{{ switchLanguage(shop, 'industryFatherName') }}</span>
</div>
<div v-if="shop.houseNumber" class="working-item">
<img src="../../assets/images/shopDetail/icon_address.svg" alt="" />
<span class="title">{{ shop.floor + '-' + shop.houseNumber }}</span>
</div>
<div v-if="shop.businessHours" class="working-item">
<img src="../../assets/images/shopDetail/icon_time.svg" alt="" />
<span class="title">{{ shop.businessHours }}</span>
</div>
<div v-if="shop.contact" class="working-item">
<img src="../../assets/images/shopDetail/icon_tel.svg" alt="" />
<span class="title">{{ shop.contact }}</span>
</div>
</div>
</div>
<div class="line"></div>
<!-- 详情 -->
<scroll-view
:list="[switchLanguage(shop, 'intro')]"
class="intro-scroll"
:scrollbar="true"
:pull-up="false"
:refresh-delay="500"
>
<p class="intro" v-html="switchLanguage(shop, 'intro')"></p>
</scroll-view>
<!-- 导航按钮 -->
<div v-if="shop.yaxis" class="go" @click="handleGo">
<img src="@/assets/images/shopDetail/go.svg" alt="" />
</div>
</div>
<!-- 关闭按钮 -->
<div class="exit" @click="close">
<img src="@/assets/images/shopDetail/close.svg" class="go_bg" alt="" />
</div>
</div>
</transition> </masker
></transition>
</template>
<script setup lang="ts">
import { Autoplay, Pagination, EffectFade } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/pagination'
import 'swiper/css/effect-fade'
import scrollView from '@/base/ScrollView/ScrollView.vue'
import masker from '@/base/Masker/Masker.vue'
import marquees from '@/base/Marquees/Marquees.vue'
import { useRouter } from 'vue-router'
import { useStatistics } from '@/composables/useStatistics'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
import { computed, ref } from 'vue'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
const { switchLanguage } = useSwitchLanguage()
const store = useRootStore()
const { shop, config } = storeToRefs(store)
const router = useRouter()
const modules = [Autoplay, Pagination, EffectFade]
const marqueesRef = ref()
const activityList = computed(() => shop.value.activityList)
//
function close() {
store.SET_SHOW_DETAIL(false)
}
//
function handleGo() {
store.SET_SHOW_DETAIL(false)
store.SET_SHOW_SEARCH(false)
router.push('/nav')
}
useStatistics({ tag: 'shop', shopCode: shop.value.shopCode })
</script>
<style scoped lang="scss">
:deep(.bscroll-vertical-scrollbar) {
z-index: 5 !important;
overflow: visible !important;
// width: 1px !important;
background: rgb(0 0 0 / 6%);
border-radius: 8px;
opacity: 1 !important;
.bscroll-indicator {
// width: 7px !important;
background: #d0b186 !important;
border: none !important;
border-radius: 8px !important;
box-shadow: 0 8px 20px rgb(0 0 0 / 10%);
}
}
:deep(.swiper-pagination-bullet) {
border-radius: 4px !important;
}
.shop-detail-wrapper {
position: relative;
z-index: 9003;
// margin-right: 0px;
// margin-left: 0px;
display: flex;
justify-content: center;
width: 864px;
height: 648px;
margin-top: 216px;
margin-left: 528px;
pointer-events: none;
background-color: #fff;
border-radius: 16px;
& > * {
pointer-events: visible;
}
// --swiper-theme-color: #d7ba92;
// --swiper-pagination-bullet-width: 28px;
// --swiper-pagination-bullet-height: 4px;
// --swiper-pagination-bullet-inactive-color: rgb(0 0 0 / 60%);
.intro-container {
position: relative;
width: 100%;
height: 100%;
background: linear-gradient(to right, rgb(0 0 0 / 3%) 0%, rgb(0 0 0 / 3%) 37%, #fff 37%, #fff 100%);
border-radius: 16px;
}
.carousel {
position: relative;
z-index: 1;
display: inline-block;
overflow: hidden;
width: 800px;
height: 450px;
// min-height: 450px;
// max-height: 450px;
margin-top: 0;
margin-left: 0;
// background: #d5d5d5;
background: rgb(255 255 255);
border-radius: 8px;
:deep(.swiper-slide) {
height: 450px;
border-radius: inherit;
}
.banner {
position: relative;
z-index: 1;
width: 100%;
height: inherit;
object-fit: cover;
border-radius: 8px;
&.no-data {
position: absolute;
right: 0;
left: 0;
// width: 300px;
margin: 0 auto;
object-fit: scale-down;
}
}
:deep(.swiper-pagination-bullet) {
border-radius: 59px;
}
.detail {
bottom: 18px;
left: 80%;
display: flex;
width: 20%;
:deep(.swiper-pagination-bullet) {
--swiper-pagination-bullet-width: 0px;
--swiper-pagination-bullet-horizontal-gap: 2px;
flex-shrink: 0;
&.swiper-pagination-bullet-active {
--swiper-pagination-bullet-horizontal-gap: 4px;
--swiper-pagination-bullet-width: 24px;
}
&:not(.swiper-pagination-bullet-active) {
--swiper-pagination-bullet-horizontal-gap: 4px;
--swiper-pagination-bullet-width: 10px;
--swiper-pagination-bullet-height: 5px;
}
// &.swiper-pagination-bullet-active + span {
// --swiper-pagination-bullet-horizontal-gap: 8px;
// --swiper-pagination-bullet-width: 20px;
// }
}
span + .swiper-pagination-bullet-active {
--swiper-pagination-bullet-horizontal-gap: 4px;
--swiper-pagination-bullet-width: 24px;
}
:not(span + .swiper-pagination-bullet-active) {
--swiper-pagination-bullet-horizontal-gap: 4px;
--swiper-pagination-bullet-width: 2px;
}
}
}
.name-wrapper {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 320px;
height: 648px;
.logo-wrapper {
position: absolute;
top: 64px;
left: 85px;
z-index: 1;
width: 150px;
height: 150px;
padding: 15px;
background: #fff;
border-radius: 8px;
box-shadow: 0 8px 20px 0 rgb(0 0 0 / 5%);
img {
width: 120px;
height: 120px;
object-fit: scale-down;
}
}
.marquee-wrapper {
overflow: hidden;
width: 280px;
margin-top: 234px;
margin-bottom: 0;
margin-left: 20px;
white-space: nowrap;
.name {
display: inline-block;
height: 36px;
font-size: 28px;
font-family: 'font_bold';
text-align: center;
color: #534f46;
font-weight: 700;
}
}
.shop-attr-group {
position: absolute;
top: 64px;
left: 368px;
display: flex;
justify-content: flex-start;
width: 448px;
height: 60px;
flex-wrap: wrap;
.working-item {
display: flex;
align-items: center;
min-width: 224px;
height: 22px;
&:nth-child(odd) {
max-width: 224px;
}
&:nth-child(even) {
max-width: 224px;
}
img {
width: 20px;
height: 20px;
padding: 0;
margin-right: 16px;
background: rgb(0 0 0 / 0%);
border-radius: 0;
}
span {
padding-right: 5px;
font-size: 14px;
font-family: 'font_bold';
color: #615c59;
font-weight: 700;
@include no-wrap();
}
}
}
}
.line {
position: absolute;
top: 164px;
right: 64px;
width: 448px;
height: 1px;
background: rgb(0 0 0 / 6%);
}
.intro-scroll {
position: absolute;
top: 205px;
right: 26px;
z-index: 1;
overflow: hidden;
width: 470px;
height: 350px;
padding-right: 16px;
.intro {
font-size: 14px;
font-family: 'font_medium';
text-align: justify;
white-space: pre-wrap;
color: #615c59;
line-height: 200%;
:deep(img) {
width: 100%;
}
}
}
.go {
position: absolute;
top: 422px;
left: 76px;
z-index: 1;
width: 168px;
}
.exit {
position: absolute;
top: -40px;
right: -40px;
z-index: 1;
width: 100px;
height: 100px;
padding: 26px;
background: var(--w-60, rgb(255 255 255 / 60%));
border: 2px solid var(--w-100, #fff);
border-radius: 50px;
backdrop-filter: blur(20px);
// margin: auto;
img {
width: 48px;
}
}
}
</style>

6
src/components/ShopItem/ShopItem.vue

@ -1,7 +1,7 @@
<template> <template>
<div class="shop-container" @click="showDetail(shop)"> <div class="shop-container" @click="showDetail(shop)">
<div class="top"> <div class="top">
<img :src="shop.logoUrl ? shop.logoUrl : require('@/assets/images/header/logo.svg')" class="logo" alt="" />
<img :src="shop.logoUrl ? shop.logoUrl : require('@/assets/images/empty_small.svg')" class="logo" alt="" />
</div> </div>
<div class="bottom"> <div class="bottom">
<div class="shop-name">{{ switchLanguage(shop, 'shopName') }}</div> <div class="shop-name">{{ switchLanguage(shop, 'shopName') }}</div>
@ -43,8 +43,8 @@ function showDetail(shop: Shop) {
height: 136px; height: 136px;
border-radius: 16px 16px 0 0; border-radius: 16px 16px 0 0;
.logo { .logo {
width: 150px;
height: 150px;
width: 120px;
height: 120px;
object-fit: scale-down; object-fit: scale-down;
} }
} }

210
src/components/SwitchTab/SwitchTab.vue

@ -0,0 +1,210 @@
<template>
<ul
ref="ulRef"
class="switch-tabs"
:style="{
width: props.wrapperWidth + 'px',
height: props.wrapperHeight + 'px',
'flex-direction': props.direction! + '',
'background-color': props.background + ''
}"
>
<li
v-for="(item, index) of list"
:key="index"
:style="styles"
class="switch-tab-item"
:class="{ active: index === copyTabIdx }"
@click="switchTab(index)"
>
<!-- :style="{
filter: 'brightness(0) invert(100%)',
opacity: '1'
}" -->
<img v-if="index === copyTabIdx" :src="item.iconSel" class="intro-icon" alt="" />
<img v-else :src="item.icon" class="intro-icon" alt="" />
<div class="intro-wrapper">
<span class="intro-name">
{{ switchLanguage(item, 'name') }}
</span>
<span v-if="item.en" class="intro-name-en">
{{ item.en }}
</span>
</div>
</li>
<li
ref="scrollBoxRef"
class="scroll-box"
:style="{
top: props.direction === 'column' ? copyTabIdx * props.height + 'px' : '',
left: props.direction === 'row' ? copyTabIdx * props.width + 'px' : '',
width: props.width + 'px',
height: props.height + 'px'
}"
>
<!-- <svg width="180" height="80" viewBox="0 0 180 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M0 16C0 7.16344 7.16344 0 16 0H164C172.837 0 180 7.16344 180 16V56C180 64.8366 172.837 72 164 72H114.38C112.475 72 110.586 72.3402 108.801 73.0045L95.5162 77.9474C91.9554 79.2724 88.0392 79.287 84.4686 77.9886L70.6491 72.9633C68.8965 72.326 67.046 72 65.1812 72H16C7.16344 72 0 64.8366 0 56V16Z"
fill="url(#paint0_linear_616_449)"
/>
<defs>
<linearGradient id="paint0_linear_616_449" x1="14" y1="4" x2="176.063" y2="22.7587" gradientUnits="userSpaceOnUse">
<stop :stop-color="gradientColor.startColor" />
<stop offset="1" :stop-color="gradientColor.endColor" />
</linearGradient>
</defs>
</svg> -->
</li>
</ul>
</template>
<script setup lang="ts">
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
import { computed, ref, onMounted, watch, nextTick } from 'vue'
const { switchLanguage } = useSwitchLanguage()
type ListItem = {
name: string
en: string
icon: string
iconSel: string
}
type Props = {
list: ListItem[]
wrapperHeight?: number
wrapperWidth?: number
width?: number
height?: number
background?: string
direction?: string
tabIdx?: number
}
const props = withDefaults(defineProps<Props>(), {
list: () => [],
wrapperWidth: 200,
wrapperHeight: 192,
width: 200,
height: 192,
background: 'rgba(0, 0, 0, 0.03)',
direction: 'row',
tabIdx: 0
})
// gradientColor: {
// type: Object,
// default: () => {
// return {
// startColor: '#A88AFD',
// endColor: '#CCB0FF'
// }
// }
// }
// const padding = ref(0)
const copyTabIdx = ref(0)
const styles = computed(() => {
return { width: props.width + 'px', height: props.height + 'px' }
})
const emit = defineEmits(['click'])
onMounted(() => {
const timeId = setTimeout(() => {
clearTimeout(timeId)
nextTick(() => {
// scrollBox(props.tabIdx)
switchTab(0)
})
}, 100)
})
const ulRef = ref()
const scrollBoxRef = ref()
function switchTab(index: number) {
copyTabIdx.value = index
emit('click', index)
}
watch(
() => props.list,
() => {
nextTick(() => {})
},
{
immediate: true
}
)
</script>
<style lang="scss" scoped>
.switch-tabs {
position: relative;
display: flex;
align-items: center;
padding: 0;
border-radius: 16px;
flex-wrap: nowrap;
.switch-tab-item {
position: relative;
z-index: 2;
display: flex;
justify-content: center;
align-items: center;
flex-shrink: 0;
margin-right: 0;
margin-bottom: 0;
border-radius: 8px;
transition: all 0.3s linear;
.intro-icon {
width: 32px;
height: 32px;
margin-right: 16px;
}
.intro-wrapper {
display: flex;
flex-direction: column;
font-family: 'font_bold';
.intro-name {
font-size: 16px;
font-family: 'font_bold';
color: #534f46;
font-weight: bold;
}
.intro-name-en {
padding-top: 6px;
font-size: 10px;
font-family: 'font_bold';
color: #8e9090;
}
}
&.active {
background: #fff;
border-radius: 16px;
// box-shadow: 0 -4px 0 0 rgb(177 189 220 / 10%) inset;
.intro-icon {
// filter: grayscale(1) brightness(300%);
}
.intro-wrapper {
.intro-name {
color: rgb(0 0 0 / 90%);
}
.intro-name-en {
color: rgb(0 0 0 / 90%);
}
}
}
}
.scroll-box {
position: absolute;
top: 0;
left: 0;
z-index: 1;
display: none;
border-radius: 0;
transition: all 0.3s linear;
}
}
</style>

91
src/components/TypeBtnList/TypeBtnList.vue

@ -0,0 +1,91 @@
<template>
<div class="btn-title-group">
<div
v-for="(item, index) in list"
:key="index"
class="btn-item"
:class="{ active: currentTypeId === index, 'btn-en': language === 'en' }"
@click="changeType(item, index)"
>
<h4>
{{ switchLanguage(item, 'title') }}
</h4>
<div v-if="false && list.length > 1" class="saw"></div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
const { switchLanguage } = useSwitchLanguage()
const store = useRootStore()
const { language } = storeToRefs(store)
const currentTypeId = ref(0)
const emit = defineEmits(['change-type'])
type TypeItem = {
title: string
titleEn: string
}
defineProps<{
list: TypeItem[]
}>()
function changeType(item: TypeItem, index: number) {
currentTypeId.value = index
emit('change-type', { ...item, order: currentTypeId.value })
}
</script>
<style scoped lang="scss">
.btn-title-group {
z-index: 1;
display: flex;
justify-content: space-between;
width: fit-content;
.btn-item {
display: flex;
h4 {
height: 81px;
// width: 96px;
padding-bottom: 18px;
font-size: 32px;
font-family: 'font_bold';
color: rgb(0 0 0 / 40%);
line-height: 57px;
font-style: normal;
font-weight: 400;
}
&.btn-en {
h4 {
font-size: 19px;
}
}
&:nth-child(odd) {
.saw {
width: 0;
height: 26px;
margin-right: 40px;
margin-left: 40px;
background: #84754e;
}
}
&.active {
h4 {
font-size: 40px;
color: rgb(0 0 0 / 80%);
border-bottom: 6px solid #d7ba92;
}
&.btn-en {
h4 {
font-size: 21px;
}
}
}
}
}
</style>

3
src/composables/usePage.ts

@ -21,6 +21,7 @@ export const usePage = (totalList: ShallowRef<PageList[]>, scroll: any) => {
if (e.data.refresh) { if (e.data.refresh) {
nextTick(() => { nextTick(() => {
scroll.value?.scrollTo?.(0, 0, 100) scroll.value?.scrollTo?.(0, 0, 100)
scroll.value?.slideTo?.(0, 30)
}) })
} }
} }
@ -30,7 +31,7 @@ export const usePage = (totalList: ShallowRef<PageList[]>, scroll: any) => {
} }
watch(totalList, newVal => { watch(totalList, newVal => {
const rawList = newVal.map(item => toRaw(item)) const rawList = newVal.map(item => toRaw(item))
worker.value?.postMessage(rawList)
worker.value?.postMessage(JSON.parse(JSON.stringify(rawList)))
}) })
onBeforeUnmount(() => { onBeforeUnmount(() => {

3
src/http/api/base/index.ts

@ -20,3 +20,6 @@ export const getBackTime = () => request<[number, number]>({ url: `${PREFIX.STAT
//手写地址 //手写地址
export const getHandWriting = (data: WrittenQuery) => request<string[]>({ url: `${getPrefixUrl().handWriteUrl}`, method: 'post', data }) export const getHandWriting = (data: WrittenQuery) => request<string[]>({ url: `${getPrefixUrl().handWriteUrl}`, method: 'post', data })
//获取区域
export const getRegionList = () => request<Region[]>({ url: `${PREFIX.STATIC_URL}/JSON/getRegionList.json` })

4
src/i18n/lang/en.json

@ -13,5 +13,9 @@
"navs": { "navs": {
"3D": "Change to 3D", "3D": "Change to 3D",
"2D": "Change to 2D" "2D": "Change to 2D"
},
"brand": {
"recTitle": "Recommend",
"pos": "Current Floor"
} }
} }

6
src/i18n/lang/tw.json

@ -6,5 +6,9 @@
"pause": "暫停", "pause": "暫停",
"play": "播放", "play": "播放",
"speedUp": "加速", "speedUp": "加速",
"stopSpeedUp": "停止加速"
"stopSpeedUp": "停止加速",
"brand": {
"recTitle": "熱門推薦",
"pos": "您在本層"
}
} }

4
src/i18n/lang/zh.json

@ -13,5 +13,9 @@
"navs": { "navs": {
"3D": "切换到3D模式", "3D": "切换到3D模式",
"2D": "切换到2D模式" "2D": "切换到2D模式"
},
"brand": {
"recTitle": "热门推荐",
"pos": "您在本层"
} }
} }

13
src/router/routes.ts

@ -13,8 +13,21 @@ export const routes: RouteRecordRaw[] = [
{ {
path: '/parking', path: '/parking',
name: 'Parking', name: 'Parking',
meta: {
showMap: false,
showMenu: true
},
component: () => import(/* webpackChunkName: "parking" */ '@/views/Parking/Parking.vue') component: () => import(/* webpackChunkName: "parking" */ '@/views/Parking/Parking.vue')
}, },
{
path: '/brand',
name: 'Brand',
meta: {
showMap: false,
showMenu: true
},
component: () => import(/* webpackChunkName: "brand" */ '@/views/Brand/Brand.vue')
},
{ {
path: '/transfer', path: '/transfer',
name: 'Transfer', name: 'Transfer',

4
src/types/industry.d.ts

@ -1,9 +1,9 @@
declare interface Industry { declare interface Industry {
isSpecial: 0 | 1 //1特殊业态 反之不是 isSpecial: 0 | 1 //1特殊业态 反之不是
industryId: number //唯一标识
industryCode: string //唯一标识
industryName: string //业态名称 industryName: string //业态名称
industryNameEn: string //业态英文 industryNameEn: string //业态英文
shopNum: number //店铺总数 shopNum: number //店铺总数
industryList: Array<{ industryId: number; industryName: string; shopNum: number }>
industryList: Array<{ industryCode: string; industryName: string; shopNum: number }>
fileUrl?: string fileUrl?: string
} }

22
src/types/region.d.ts

@ -0,0 +1,22 @@
declare interface Region {
/**
*
*/
regionCode: string
/**
*
*/
regionName: string
/**
*
*/
regionNameEn: string
/**
*
*/
regionNameJa?: string
/**
*
*/
regionNameOl?: string
}

3
src/types/shop.d.ts

@ -40,4 +40,7 @@ declare interface Shop {
doorMaterialList?: string[] //店铺简介图 doorMaterialList?: string[] //店铺简介图
foodMaterialList?: string[] //美食素材图 foodMaterialList?: string[] //美食素材图
activityList?: Activity[] //店铺活动图 activityList?: Activity[] //店铺活动图
regionCode?: string //区域code
regionName?: string //区域名称
regionNameEn?: string //区域名称英文
} }

29
src/views/Brand/Brand.vue

@ -0,0 +1,29 @@
<template>
<div class="brand-container">
<!-- 店铺列表业态和楼层控制 -->
<shopList></shopList>
<!-- 推荐店铺 -->
<recommendShop></recommendShop>
</div>
</template>
<script setup lang="ts">
import recommendShop from './recommendShop.vue'
import shopList from './shopList.vue'
</script>
<style lang="scss" scoped>
:deep(.swiper-wrapper) {
transition-timing-function: linear !important; /* 之前是ease-out */
}
.brand-container {
position: relative;
display: inline-block;
display: flex;
justify-content: space-between;
padding-top: 152px;
padding-right: 0;
padding-left: 56px;
--animate-duration: 0.6s;
--animate-delay: 1s;
}
</style>

407
src/views/Brand/filterFormatAndFloor.vue

@ -0,0 +1,407 @@
<template>
<scrollView ref="shopScroll" class="format__scroll" :refresh-delay="200" :list="list">
<div class="filter-wrapper">
<div
v-for="(item, index) of copyList"
:key="item.industryCode"
:style="{ height: index === active ? 'fit-content' : '' }"
class="filter-div-f"
>
<div
ref="filterDivEl"
class="filter-div"
:class="{ 'filter-active': active == index && activeSon === -1 }"
:style="{
background: activeSon === -1 ? getBackground(index) : ''
}"
@click.self="clickFormat(item, index, $event)"
>
<div class="left">
<!-- :style="{ opacity: item.fileUrl ? 1 : 0 }" -->
<img :src="item.fileUrl ? item.fileUrl : normalIcon" class="format-img" alt="" />
<p class="format-name">{{ switchLanguage(item, 'industryName') }}</p>
</div>
<div class="right">
<p class="format-number">{{ item.shopNum }}</p>
<img
v-if="item.industryList.length > 0"
class="saw-img"
src="@/assets/images/brand/down.svg"
:style="{
transform: active === index ? 'rotate(180deg)' : ''
}"
alt=""
/>
<p v-if="false && item.shopNum" style="margin-right: 5px">
<svg v-show="active != index" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M3.52851 5.52876C3.78886 5.26841 4.21097 5.26841 4.47132 5.52876L7.99992 9.05735L11.5285 5.52876C11.7889 5.26841 12.211 5.26841 12.4713 5.52876C12.7317 5.78911 12.7317 6.21122 12.4713 6.47157L8.47132 10.4716C8.21097 10.7319 7.78886 10.7319 7.52851 10.4716L3.52851 6.47157C3.26816 6.21122 3.26816 5.78911 3.52851 5.52876Z"
fill="black"
/>
</svg>
<svg v-show="active == index" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M7.52851 5.52876C7.78886 5.26841 8.21097 5.26841 8.47132 5.52876L12.4713 9.52876C12.7317 9.78911 12.7317 10.2112 12.4713 10.4716C12.211 10.7319 11.7889 10.7319 11.5285 10.4716L7.99992 6.94297L4.47132 10.4716C4.21097 10.7319 3.78886 10.7319 3.52851 10.4716C3.26816 10.2112 3.26816 9.78911 3.52851 9.52876L7.52851 5.52876Z"
fill="white"
/>
</svg>
</p>
<p v-else-if="false && !isFood" style="margin-right: 5px">
<svg v-show="active != index" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M3.52851 5.52876C3.78886 5.26841 4.21097 5.26841 4.47132 5.52876L7.99992 9.05735L11.5285 5.52876C11.7889 5.26841 12.211 5.26841 12.4713 5.52876C12.7317 5.78911 12.7317 6.21122 12.4713 6.47157L8.47132 10.4716C8.21097 10.7319 7.78886 10.7319 7.52851 10.4716L3.52851 6.47157C3.26816 6.21122 3.26816 5.78911 3.52851 5.52876Z"
fill="black"
/>
</svg>
<svg v-show="active == index" width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M7.52851 5.52876C7.78886 5.26841 8.21097 5.26841 8.47132 5.52876L12.4713 9.52876C12.7317 9.78911 12.7317 10.2112 12.4713 10.4716C12.211 10.7319 11.7889 10.7319 11.5285 10.4716L7.99992 6.94297L4.47132 10.4716C4.21097 10.7319 3.78886 10.7319 3.52851 10.4716C3.26816 10.2112 3.26816 9.78911 3.52851 9.52876L7.52851 5.52876Z"
fill="white"
/>
</svg>
</p>
</div>
</div>
<div
v-show="item.shopNum"
:ref="el => (formatListEl = el)"
class="format-list"
:class="{ 'format-list1': active != index }"
:style="{ height: copyList[index].industryList.length ? copyList[index].industryList.length * 56 + 'px' : 0 }"
>
<div
v-for="(items, cindex) of item.industryList"
:key="items.industryCode"
class="format-item"
:class="{ 'filter-active-child': activeSon == cindex }"
@click="clickItem(cindex, items, $event)"
>
<p class="format-name">{{ switchLanguage(items, 'industryName') }}</p>
<p class="format-number">{{ items.shopNum }}</p>
</div>
</div>
</div>
</div>
</scrollView>
</template>
<script setup lang="ts">
import normalIcon from '@/assets/images/brand/format_normal.svg'
import { computed, ref, nextTick } from 'vue'
import scrollView from '@/base/ScrollView/ScrollView.vue'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
const { switchLanguage } = useSwitchLanguage()
type Props = {
list: Industry[]
isFood?: boolean
}
const shopScroll = ref()
const props = withDefaults(defineProps<Props>(), {
list: () => [],
isFood: false
})
const emits = defineEmits(['clickFormat', 'clickFormatItem'])
const active = ref(0)
const activeSon = ref(-1)
const imgRotate = ref(false)
const formatListEl = ref()
const copyList = computed(() => {
return [
{
fileUrl: require('@/assets/images/brand/all.svg'),
isSpecial: 0,
industryCode: 0,
industryName: '全部品牌',
industryNameEn: '',
shopNum: 0,
industryList: []
},
...props.list
]
})
const clickFormat = (item: Industry, index: number, $event: Event) => {
// nextTick(() => {
// const domfilter: HTMLDivElement = document.querySelectorAll('.filter-div')[index] as HTMLDivElement
// if (item.industryList.length > 0) {
// domfilter.style.borderRadius = '8px 8px 0 0'
// } else {
// domfilter.style.borderRadius = '8px'
// }
// })
if (item.industryList.length > 0) {
// console.log('formatListEl :>> ', $event)
const target: any = $event.target
//
if (active.value === index) {
imgRotate.value = !imgRotate.value
target?.classList.add('filter-active')
// console.dir('$event.target :>> ', $event.target.nextElementSibling)
nextTick(() => {
// console.log('formatListEl :>> ', formatListEl)
// const domClass = formatListEl.value.classList
// const domClass = $event.target.nextElementSibling.children[index].classList
// console.log('domClass :>> ', domClass)
if (index === active.value) {
// $event.target.classList.toggle('format-list1')
const dom: HTMLDivElement = document.querySelectorAll('.format-list')[index] as HTMLDivElement
const domfilter: HTMLDivElement = document.querySelectorAll('.filter-div')[index] as HTMLDivElement
// console.log('dom :>> ', dom)
dom.classList.toggle('format-list1')
// if (dom.classList.contains('format-list1')) {
// domfilter.style.borderRadius = '8px'
// } else {
// domfilter.style.borderRadius = '8px 8px 0px 0px'
// }
// if ($event.target.classList.includes('format-list1')) {
// $event.target.classList.remove('format-list1')
// } else {
// $event.target.classList.add('format-list1')
// }
}
// if (typeof domClass[1] === 'undefined') {
// formatListEl.value.add('format-list1')
// } else {
// formatListEl.value.remove('format-list1')
// }
})
}
setTimeout(() => {
shopScroll.value.refresh()
}, 500)
}
emits('clickFormat', item, index)
active.value = index
activeSon.value = -1
}
//format
function clickItem(
index: number,
item: {
industryCode: string
industryName: string
shopNum: number
},
$event: Event
) {
activeSon.value = index
console.dir('$event :>> ', $event)
const dom: any = $event.target
for (let i = 0; i < dom?.length; i++) {
dom[i]?.classList.remove('filter-active')
}
setTimeout(() => {
shopScroll.value.refresh()
}, 20)
emits('clickFormatItem', item)
}
const backgroundList = [
'linear-gradient(180deg, #3C74E6 0%, #7ACAF8 100%)',
'linear-gradient(180deg, #ED7D2B 0%, #F1C369 100%)',
'linear-gradient(180deg, #7959D2 0%, #93A3DC 100%)',
'linear-gradient(180deg, #3EA154 0%, #3AD79E 100%)',
'linear-gradient(180deg, #DB5C8A 0%, #F39292 100%)'
]
function getBackground(index: number) {
if (active.value === index) {
return '#e00068'
}
}
// const scrollTo = () => {
// shopScroll.value.scrollTo(0, 0)
// }
// const refresh = () => {
// shopScroll.value.refresh()
// }
// const initData = () => {
// active.value = 0
// initItem()
// }
// const initItem = () => {
// activeSon.value = -1
// }
// onBeforeMount(() => {})
// onMounted(() => {})
</script>
<style scoped lang="scss">
.format__scroll {
overflow: hidden;
width: inherit;
height: inherit;
background-color: rgb(255 255 255 / 60%);
border-radius: 16px;
.filter-wrapper {
display: flex;
flex-direction: column;
// justify-content: flex-end;
// flex-wrap: wrap;
width: inherit;
height: fit-content;
}
.filter-div-f {
width: inherit;
height: 56px;
margin-bottom: 0;
&:nth-last-child(1) {
overflow: hidden;
border-radius: 0 0 16px 16px;
}
&:nth-child(1) {
overflow: hidden;
border-radius: 16px 16px 0 0;
}
.filter-div {
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
width: 100%;
height: 100%;
padding: 24px;
background: rgb(255 255 255 / 60%);
border: 0 solid rgb(255 255 255 / 60%);
border-radius: 16px;
flex-wrap: nowrap;
line-height: 22px;
.left,
.right {
display: flex;
align-items: center;
pointer-events: none;
}
.left {
margin-left: 0;
}
.right {
position: relative;
// width: 52px;
padding-right: 0;
margin-left: -0;
}
.format-img {
width: 16px;
height: 16px;
margin-right: 8px;
}
.format-name {
width: 111px;
height: 22px;
font-size: 14px;
font-family: 'font_bold';
color: #534f46;
font-weight: 700;
line-height: 22px;
@include no-wrap();
}
.format-number {
position: relative;
z-index: 1;
margin-right: 8px;
font-size: 14px;
font-family: 'font_bold';
text-align: right;
color: #615c29;
font-style: normal;
line-height: 22px;
}
}
.filter-active {
height: 56px;
background: #e00068;
p {
color: #fff !important;
}
.format-img {
filter: brightness(0) invert(100%);
}
.right {
.saw-img {
filter: brightness(0) invert(100%);
}
}
}
.filter-active-child {
background: #e000683d;
border-radius: 0 !important;
p {
color: #fff !important;
}
}
.format-list1 {
height: 0 !important;
}
.format-list {
z-index: 1;
overflow: hidden;
background: rgb(255 255 255 / 20%);
border-radius: 0;
transition: all 0.3s ease;
.format-item {
display: flex;
justify-content: space-between;
height: 56px;
padding-right: 48px;
padding-left: 48px;
margin-bottom: 0;
border-radius: 0;
flex-wrap: nowrap;
.format-name {
z-index: 500;
width: 113px;
margin-left: 0;
font-size: 14px;
font-family: 'font_bold';
color: rgb(0 0 0 / 60%);
line-height: 56px;
@include no-wrap();
}
.format-number {
z-index: 500;
margin-right: 0;
font-size: 12px;
font-family: 'font_bold';
color: rgb(0 0 0 / 60%);
line-height: 14px;
}
&.filter-active {
background: #e000683d;
p {
color: #fff !important;
}
border-radius: 0;
}
}
}
}
}
</style>

195
src/views/Brand/recommendShop.vue

@ -0,0 +1,195 @@
<template>
<div v-if="recList.length" class="rec-container">
<!-- 推荐标题 -->
<div class="rec-title">
<li>{{ switchLanguage({ name: '热门推荐' }, 'name') }}</li>
<li>POPULAR BRANDS</li>
</div>
<!-- 显示当前选择的信息 -->
<div class="recommand-group animate__animated animate__fadeInRight">
<!--
:freeMode="{
freeMode: false,
momentumRatio: 0.3,
momentumVelocityRatio: 0.3
}"
:observer="true"
:observe-parents="true"
-->
<swiper
v-if="showList"
direction="vertical"
:autoplay="
recList.length > 3
? {
disableOnInteraction: false,
delay: 1000
}
: false
"
:free-mode="{
enabled: true
}"
:enabled="recList.length > 3"
:loop="recList.length > 3"
:speed="1000"
:modules="modules"
:looped-slides="3"
:loop-additional-slides="3"
:width="267"
:height="150"
:slides-per-view="1"
:space-between="24"
>
<swiper-slide v-for="(item, index) in recList" :key="index">
<div :key="item.shopCode" class="item" :shopInfo="item" @click="handleShop(item)">
<img v-if="item?.doorMaterialList?.at(0)" :src="item?.doorMaterialList?.at(0)" class="rec-img" alt="" />
<img v-else :src="require('@/assets/images/brand/no-rec.svg')" class="rec-img no-rec" alt="" />
<p class="bottom-title">
<!-- <img class="rec-logo" :src="item.logoUrl ? item.logoUrl : require('@/assets/images/empty_small.svg')" alt="" /> -->
<span class="rec-name"> {{ switchLanguage(item, 'shopName') }}</span>
<!-- <span class="rec-floor"> <img :src="item.industryUrl" alt="" />{{ item.floor }} </span> -->
</p>
</div>
</swiper-slide>
</swiper>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { Autoplay, FreeMode } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/free-mode'
import { getBrandInfo } from '@/http/api/brand/index'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
import { useRootStore } from '@/store/root'
const store = useRootStore()
const { switchLanguage } = useSwitchLanguage()
const recList = ref<Shop[]>([])
const modules = [Autoplay, FreeMode]
const showList = ref(false)
function handleShop(item: Shop) {
store.SET_SHOP(item)
store.SET_SHOW_DETAIL(true)
}
getBrandInfo()
.then(({ data }) => {
recList.value = data.recommendList
})
.finally(() => {
showList.value = true
})
</script>
<style lang="scss" scoped>
:deep(.swiper-wrapper) {
transition-timing-function: linear !important; /* 之前是ease-out */
}
.rec-container {
position: relative;
width: 268px;
height: 1080px;
padding-top: 172px;
padding-left: 48px;
margin-top: -152px;
margin-left: 28px;
background-image: linear-gradient(170deg, rgb(255 255 255 / 40%) 0%, rgb(255 255 255 / 8%) 80.56%, rgb(255 255 255 / 0%) 100%);
--animate-duration: 0.6s;
--animate-delay: 1s;
.rec-title {
font-size: 24px;
font-family: 'font_bold';
color: #534f46;
li:nth-child(2) {
margin-top: 5px;
font-size: 14px;
}
}
.recommand-group {
overflow: hidden;
width: 192px;
height: 696px;
margin-top: 24px;
:deep(.swiper-slide) {
width: 172px;
height: 146px;
}
.item {
width: 172px;
height: 146px;
padding: 8px auto 16px;
background-color: #fff;
border-radius: 16px;
.rec-img {
position: absolute;
top: 8px;
left: 38px;
overflow: hidden;
width: 96px;
height: 96px;
border-radius: 0;
object-fit: cover;
&.no-rec {
object-fit: scale-down;
}
}
.bottom-title {
position: absolute;
bottom: 16px;
left: 0;
display: flex;
justify-content: flex-start;
width: 100%;
height: 22px;
padding: 0;
background: rgb(0 0 0 / 0%);
border-radius: 0;
line-height: initial;
.rec-logo {
position: absolute;
top: -22px;
left: 12px;
width: 48px;
height: 48px;
padding: 0;
background: #fff;
border-radius: 4px;
object-fit: scale-down;
}
.rec-name {
width: 100%;
margin-top: 0;
margin-left: 0;
font-size: 14px;
font-family: 'font_bold';
text-align: center;
color: #534f46;
@include no-wrap();
}
.rec-floor {
display: flex;
align-items: center;
height: 16px;
padding-right: 0;
margin-top: 5px;
margin-left: 0;
font-size: 14px;
color: rgb(255 255 255 / 80%);
img {
width: 16px;
height: 16px;
// filter: grayscale(100%) opacity(40%);
margin-right: 8px;
}
}
}
}
}
}
</style>

533
src/views/Brand/shopList.vue

@ -0,0 +1,533 @@
<template>
<div class="shop-list">
<!-- -->
<switchtab
class="switch-btn"
:width="364"
:height="68"
:wrapper-width="1092"
:wrapper-height="68"
direction="row"
:list="list"
@click="handleSwitch"
/>
<!-- 店铺 -->
<!-- <scroll-view
class="shop-scroll"
:style="{
top: recList.length === 0 ? '360px' : ''
}"
:list="selectedShopList"
ref="shopScroll"
> -->
<swiper
ref="myScroll"
class="shop-scroll animate__animated animate__fadeInUp"
:speed="300"
:direction="'vertical'"
:slides-per-view="'auto'"
:free-mode="{
enabled: true,
momentumRatio: 0.3,
momentumVelocityRatio: 0.3
}"
:observer="true"
:observe-parents="true"
:scrollbar="{ el: '.swiper-scrollbar' }"
:modules="modulesShop"
@after-init="getSwiper"
@reach-end="myScrollEnd"
>
<!--
@observer-update="updateSwiper" -->
<swiper-slide v-for="(items, index) in pageList" :key="index" :data-floor-name="items.name">
<ul class="shop-items">
<div v-show="items.shopList && items.shopList.length" ref="shopDiv" class="shop-div" :data-floorname="items.name">
<div class="shop-floor">
{{ items.name }}
<div class="top-right-txt" :style="{ width: items.name !== device.floor ? '0px' : '' }">
<img v-if="items.name === device.floor" src="../../assets/images/brand/pos.svg" class="pos-icon" alt="" />
<span v-if="items.name === device.floor">{{ $t('brand.pos') }}</span>
</div>
</div>
<!-- :style="{ 'grid-template-columns': isH && recList.length === 0 ? 'repeat(5, 240px)' : null }" -->
<div class="shop-wrapper">
<shopItem v-for="(item, idx) of items.shopList" :key="idx" class="item" :shop="item" @click="handleShop(item)" />
</div>
</div>
</ul>
</swiper-slide>
<div class="swiper-scrollbar"></div>
</swiper>
<!-- </scroll-view> -->
<!-- 楼层和业态 -->
<div class="right-control-area animate__animated animate__fadeInRight">
<transition
enter-active-class="animate__animated animate__fadeInRight"
leave-active-class="animate__animated animate__fadeOutRight"
mode="out-in"
>
<!-- 区域 -->
<div v-if="toggleFormatAndFloors === 0" class="floor-container">
<ul class="floors-items">
<li
v-for="(item, index) of regionList"
:key="item.regionCode"
class="floor-item"
:class="{ active: areaIdx === index }"
@click="handleArea(item, index)"
>
{{ switchLanguage(item, 'regionName') }}
</li>
</ul>
</div>
<!-- 业态 -->
<div v-else-if="toggleFormatAndFloors === 2" key="format" class="format-items">
<filterFormatAndFloor
ref="collapseRef"
:list="shopFormatList"
@click-format-item="handleFormatChild"
@click-format="handleFormat"
/>
</div>
<!-- 楼层 scroll-view -->
<div v-else-if="toggleFormatAndFloors === 1" key="floors" class="floor-container" :refreshDelay="200">
<ul class="floors-items">
<li
v-for="(item, index) of floorsList"
:key="item.floorCode"
class="floor-item"
:class="{ active: floorIdx === index }"
@click="handleFloor(item, index)"
>
{{ item.floor }}
<img v-if="device.floor === item.floor" class="current-pos" src="@/assets/images/brand/currentPos.svg" alt="" />
</li>
</ul>
</div>
</transition>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, computed, nextTick, shallowRef, onMounted } from 'vue'
import { FreeMode } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/pagination'
import 'swiper/css/free-mode'
// import ScrollView from '@/base/ScrollView/ScrollView.vue'
// import CollapseVue from '@/base/Collapse/Collapse.vue'
import { getBrandInfo } from '@/http/api/brand/index'
import { getRegionList } from '@/http/api/base/index'
import switchtab from '@/components/SwitchTab/SwitchTab.vue'
import filterFormatAndFloor from '@/views/Brand/filterFormatAndFloor.vue'
import shopItem from '@/components/ShopItem/ShopItem.vue'
import { useStatistics } from '@/composables/useStatistics'
import { usePage } from '@/composables/usePage'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
import { GroupList } from '@/http/api/brand/types'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
const store = useRootStore()
const { device, currentBuildingFloorsList, shopListGroupByFloor, shopListGroupByIndustry } = storeToRefs(store)
const { switchLanguage } = useSwitchLanguage()
// const shopScroll = computed(() => document.querySelector('.shop-scroll>.swiper-wrapper'))
const swiperRef = shallowRef()
const modulesShop = [FreeMode]
const toggleFormatAndFloors = ref<0 | 1 | 2>(0)
const list = [
{
name: '区域筛选',
en: 'AREA',
icon: require('../../assets/images/brand/icon_area.svg'),
iconSel: require('../../assets/images/brand/icon_area_sel.svg')
},
{
name: '楼层筛选',
en: 'FLOOR',
icon: require('../../assets/images/brand/icon_floor.svg'),
iconSel: require('../../assets/images/brand/icon_floor_sel.svg')
},
{
name: '业态筛选',
en: 'FORMAT',
icon: require('../../assets/images/brand/icon_format.svg'),
iconSel: require('../../assets/images/brand/icon_format_sel.svg')
}
]
const regionList = ref<Region[]>([]) //
const shopFormatList = ref<Industry[]>([]) //
// const brandFloorsList = ref([]) //
const selectedShopList = shallowRef<GroupList>([]) //
const selfListByFloor = ref<GroupList>([])
const selfListByIndustry = ref<GroupList>([])
const floorIdx = ref(0) //
const formatIdx = ref(0) //
const areaIdx = ref(0) //
const myScroll = ref()
// type PageList = { name: string; shopList: Shop[] }
const { scrollEnd, pageList } = usePage(selectedShopList, myScroll)
//
const floorsList = computed(() => {
return [
{
floor: 'ALL',
floorCode: 0,
floorMapUrl: '',
floorOrder: -1,
floorMapCode: ''
},
...currentBuildingFloorsList.value
]
})
const recList = ref<Shop[]>([])
getBrandInfo().then(({ data }) => {
shopFormatList.value = [
// {
// fileUrl: require('@/assets/images/brand/all.svg'),
// isSpecial: 0,
// industryCode: 0,
// industryName: '',
// industryNameEn: '',
// shopNum: 0,
// industryList: []
// },
...data.industryFatherList
]
recList.value = data.recommendList
})
getRegionList().then(({ data }) => {
if (data) {
regionList.value = [
{
regionCode: '-1',
regionName: '全部区域',
regionNameEn: 'ALL'
},
...data
]
}
})
selfListByFloor.value = [...shopListGroupByFloor.value]
selfListByIndustry.value = [...shopListGroupByIndustry.value]
onMounted(() => {
selectedShopList.value = selfListByIndustry.value
})
function getSwiper(obj: any) {
swiperRef.value = obj
swiperRef.value.update()
}
function updateSwiper(time = 300, isToCurentFloor = false) {
nextTick(() => {
const timeId = setTimeout(() => {
clearTimeout(timeId)
// showList.value = true
if (swiperRef.value) {
// console.dir('swiperRef.value :>> ', swiperRef)
swiperRef.value.update()
if (isToCurentFloor && swiperRef.value) {
for (let t = 0; t < swiperRef.value.slides.length; t++) {
const element = swiperRef.value.slides[t]
if (element.dataset.floorName === device.value.floor) {
swiperRef.value.slideTo(t, 10)
}
}
} else {
swiperRef.value.slideTo(0, 30)
}
// shopScroll.value.style.transform = 'translate3d(0px, 0px, 0px)'
// swiperRef.slideTo(0)
// swiperRef.value.children[0].style.transform = 'translate3d(0px, 0px, 0px)'
}
}, time)
})
}
//
function handleSwitch(index: number) {
formatIdx.value = 0
floorIdx.value = 0
areaIdx.value = 0
// console.log('swiperRef.value.swiper :>> ', swiperRef)
if (index === 0) {
toggleFormatAndFloors.value = 0
selectedShopList.value = selfListByIndustry.value
updateSwiper()
} else if (index === 1) {
toggleFormatAndFloors.value = 1
selectedShopList.value = selfListByIndustry.value
updateSwiper()
} else {
toggleFormatAndFloors.value = 2
selectedShopList.value = selfListByFloor.value
updateSwiper()
}
}
//
function handleFloor(item: Floor, index: number) {
if (index === floorIdx.value) {
return
}
floorIdx.value = index
if (index === 0) {
selectedShopList.value = selfListByIndustry.value
updateSwiper()
return
}
selectedShopList.value = selfListByIndustry.value.map(format => ({
...format,
shopList: format.shopList.filter(shop => shop.floor === item.floor)
}))
updateSwiper()
}
//
function handleArea(item: Region, index: number) {
if (index === areaIdx.value) {
return
}
areaIdx.value = index
if (index === 0) {
selectedShopList.value = selfListByIndustry.value
updateSwiper()
return
}
selectedShopList.value = selfListByIndustry.value.map(format => ({
...format,
shopList: format.shopList.filter(shop => shop.regionCode === item.regionCode)
}))
updateSwiper()
}
//
function handleFormat(item: Industry, index: number) {
if (index === formatIdx.value) {
return
}
useStatistics({ tag: 'industry', industryCode: item.industryCode })
formatIdx.value = index
if (item.industryName === '全部品牌') {
selectedShopList.value = selfListByFloor.value
updateSwiper()
return
}
selectedShopList.value = selfListByFloor.value.map(floor => ({
...floor,
shopList: floor.shopList.filter(shop => shop.industryFatherName === item.industryName)
}))
updateSwiper()
}
function handleFormatChild(item: any) {
selectedShopList.value = selfListByFloor.value.map(floor => ({
...floor,
shopList: floor.shopList.filter(shop => shop.industryCode === item.industryCode)
}))
updateSwiper()
}
//
function handleShop(item: Shop) {
store.SET_SHOP(item)
store.SET_SHOW_DETAIL(true)
}
function myScrollEnd() {
scrollEnd()
}
</script>
<style lang="scss" scoped>
:deep(.switch-tabs) {
padding: 0;
}
.switch-btn {
position: absolute;
top: 0;
left: 0;
}
.shop-list {
position: relative;
display: flex;
overflow: hidden;
width: 1598px;
height: 1080px;
padding-top: 0;
padding-left: 0;
.right-control-area {
position: relative;
width: 230px;
height: 622px;
margin-top: 144px;
margin-left: 28px;
.format-items {
position: relative;
width: 230px;
height: 645px;
margin-top: 0;
margin-right: 0;
transition: all 0.3s linear;
}
.floor-container {
overflow: hidden;
width: 230px;
margin-top: 0;
margin-right: 0;
border-radius: 0;
// position: absolute;
// right: 0;
// top: 80px;
.floors-items {
// display: grid;
// grid-template-columns: repeat(6, 108px);
// column-gap: 8px;
// row-gap: 8px;
// place-items: start end;
// justify-items: end;
// justify-content: flex-end;
display: flex;
overflow: hidden;
padding-bottom: 0;
margin-top: 0;
border-radius: 0;
// flex-direction: row;
// flex-wrap: wrap;
flex-flow: row wrap;
gap: 8px 6px;
// justify-content: flex-end;
// flex-wrap: wrap;
animation-duration: 0.3s;
border-bottom: 0 solid rgb(0 0 0 / 0%);
.floor-item {
position: relative;
overflow: hidden;
width: 230px;
height: 72px;
font-size: 14px;
font-family: 'font_bold';
text-align: center;
color: #534f46;
background: rgb(255 255 255 / 50%);
border: 2px solid #fff;
border-radius: 16px;
line-height: 72px;
backdrop-filter: blur(11px);
.current-pos {
position: absolute;
top: 28px;
right: 64px;
width: 16px;
}
&:first-of-type {
width: 230px;
// margin-bottom: 8px;
}
// &:last-of-type {
// border-bottom-left-radius: 8px;
// border-bottom-right-radius: 8px;
// }
&.active {
&::after {
position: absolute;
top: 52px;
left: 0;
width: 224px;
height: 0;
content: '';
// border-bottom: 4px rgba(255, 255, 255, 0) solid;
// border-image: linear-gradient(to right, #ea4b75, #ee8ea0) 1 10 round;
}
.current-pos {
filter: brightness(0) invert(100%);
}
color: #fff;
background: #e00068;
// &:first-of-type {
// // border-top-left-radius: 8px;
// // border-top-right-radius: 8px;
// }
}
}
}
}
}
.shop-scroll {
width: 1308px;
height: 770px;
padding-bottom: 30px;
margin-top: 100px;
margin-left: 0;
.swiper-slide,
.swiper-wrapper {
height: auto;
}
.shop-items {
.shop-div {
margin-bottom: 40px;
.shop-floor {
display: flex;
align-items: center;
// vertical-align: text-bottom;
// justify-content: space-between;
padding-right: 0;
margin-bottom: 8px;
margin-left: 0;
font-size: 28px;
font-family: 'font_bold';
color: #534f46;
font-style: normal;
font-weight: 700;
.top-right-txt {
display: flex;
align-items: center;
width: fit-content;
height: 14px;
padding: 0;
margin-right: 0;
margin-bottom: 3px;
font-size: 12px;
color: #615c59;
background: rgb(255 255 255 / 0%);
border-radius: 0;
@include no-wrap();
.pos-icon {
height: 14px;
margin-right: 6px;
margin-left: 24px;
}
}
}
.shop-wrapper {
display: grid;
grid-template-columns: repeat(6, 212px);
gap: 16px 8px;
}
}
}
}
}
</style>
Loading…
Cancel
Save