Browse Source

feat: 🚀 首页以及导航

pull/1/head
liyongle 3 years ago
parent
commit
fb430c0d0f
  1. 19138
      package-lock.json
  2. 2
      postcss.config.js
  3. 26
      public/static/offline/JSON/GetDevCoordinateByIP.json
  4. 8570
      public/static/offline/JSON/getBrandShopListByFloor.json
  5. 8590
      public/static/offline/JSON/getBrandShopListByIndustryId.json
  6. 528
      public/static/qm/MainMap_QM.js
  7. 5
      src/App.vue
  8. 8
      src/assets/images/guide/area_emp.svg
  9. 5
      src/assets/images/guide/direction.svg
  10. 3
      src/assets/images/guide/food.svg
  11. 157
      src/assets/images/guide/minMap.svg
  12. 4
      src/assets/images/guide/point.svg
  13. 5
      src/assets/images/guide/reset.svg
  14. 11
      src/assets/images/guide/tip_en.svg
  15. 11
      src/assets/images/guide/tip_zh.svg
  16. 12
      src/assets/images/header/logo.svg
  17. 3
      src/assets/images/header/search.svg
  18. 3
      src/assets/images/header/zan.svg
  19. 20
      src/assets/images/map/map-dialog.svg
  20. 3
      src/assets/images/menu/activity.svg
  21. 5
      src/assets/images/menu/art.svg
  22. 11
      src/assets/images/menu/bg.svg
  23. 3
      src/assets/images/menu/brand.svg
  24. 5
      src/assets/images/menu/map.svg
  25. 3
      src/assets/images/menu/member.svg
  26. 5
      src/assets/images/menu/parking.svg
  27. 4
      src/assets/images/menu/service.svg
  28. 3
      src/assets/images/menu/traffic.svg
  29. 3
      src/assets/images/nav/2D.svg
  30. 3
      src/assets/images/nav/3D.svg
  31. 3
      src/assets/images/nav/cb.svg
  32. 3
      src/assets/images/nav/js.svg
  33. 4
      src/assets/images/nav/jsAc.svg
  34. 3
      src/assets/images/nav/zanting.svg
  35. 3
      src/assets/images/nav/zantingAc.svg
  36. 6
      src/assets/scss/mixin.scss
  37. 118
      src/components/Header/Header.vue
  38. 77
      src/components/Header/WeaAndTime.vue
  39. 32
      src/components/Map/Map.vue
  40. 182
      src/components/Menu/Menu.vue
  41. 10
      src/components/PublicComponent/PublicComponent.vue
  42. 90
      src/components/ShopItem/ShopItem.vue
  43. 19
      src/composables/useArea.ts
  44. 2
      src/composables/useDay.ts
  45. 24
      src/composables/useGuideFilterShop.ts
  46. 36
      src/composables/useStatistics.ts
  47. 10
      src/http/api/statistics/index.ts
  48. 9
      src/http/api/statistics/types.ts
  49. 9
      src/i18n/lang/en.json
  50. 9
      src/i18n/lang/zh.json
  51. 2
      src/router/routes.ts
  52. 8
      src/store/root/actions.ts
  53. 6
      src/store/root/state.ts
  54. 68
      src/views/Guide/Area.vue
  55. 120
      src/views/Guide/ArtList.vue
  56. 77
      src/views/Guide/Floor.vue
  57. 36
      src/views/Guide/FloorPicList.vue
  58. 352
      src/views/Guide/Guide.vue
  59. 75
      src/views/Guide/Place.vue
  60. 49
      src/views/Guide/ShopList.vue
  61. 14
      src/views/Guide/list.ts
  62. 211
      src/views/Nav/Nav.vue

19138
package-lock.json

File diff suppressed because it is too large

2
postcss.config.js

@ -3,7 +3,7 @@ module.exports = {
autoprefixer: {}, // 用来给不同的浏览器自动添加相应前缀,如-webkit-,-moz-等等
'postcss-px-to-viewport-8-plugin': {
unitToConvert: 'px', // 要转化的单位
viewportWidth: 1080, // UI设计稿的宽度
viewportWidth: 1920, // UI设计稿的宽度
unitPrecision: 6, // 转换后的精度,即小数点位数
propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw

26
public/static/offline/JSON/GetDevCoordinateByIP.json

@ -1 +1,25 @@
{"code":200,"msg":"success","data":{"machineCode":"orZRFkOwWYOpbLImEwpjg","machineName":"CS","machineTypeName":"导视","label":"windows","screenAttribute":"1080*1920竖屏","building":"A栋","buildingCode":"DLvmtzN2qodUq_oYr7vyM","buildingOrder":0,"floor":"L1","floorCode":"nL3E-j25zxxkag_HMSGsR","floorOrder":2,"ip":"192.168.1.100","mac":"E0D55E1B2B17","location":"61","angle":"0","projectCode":"project-zert3dski8fqmgr4zhusea","regionCode":"","lensCoordinate":"","orientationCoordinate":""}}
{
"code": 200,
"msg": "success",
"data": {
"machineCode": "orZRFkOwWYOpbLImEwpjg",
"machineName": "CS",
"machineTypeName": "导视",
"label": "windows",
"screenAttribute": "1080*1920竖屏",
"building": "A栋",
"buildingCode": "DLvmtzN2qodUq_oYr7vyM",
"buildingOrder": 0,
"floor": "L1",
"floorCode": "nL3E-j25zxxkag_HMSGsR",
"floorOrder": 2,
"ip": "192.168.1.100",
"mac": "E0D55E1B2B17",
"location": "61",
"angle": "0",
"projectCode": "project-zert3dski8fqmgr4zhusea",
"regionCode": "",
"lensCoordinate": "",
"orientationCoordinate": ""
}
}

8570
public/static/offline/JSON/getBrandShopListByFloor.json

File diff suppressed because one or more lines are too long

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

File diff suppressed because one or more lines are too long

528
public/static/qm/MainMap_QM.js

File diff suppressed because it is too large

5
src/App.vue

@ -11,7 +11,8 @@ html,
body,
#app {
overflow: hidden;
width: 1080px;
height: 1920px;
width: 1920px;
height: 1080px;
background: #f1f1f1;
}
</style>

8
src/assets/images/guide/area_emp.svg

@ -0,0 +1,8 @@
<svg width="256" height="100" viewBox="0 0 256 100" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 6H10V0H98H206H218V4.87197H256V92H226V100H206H98H74V92H18V44H0V6Z" fill="white" fill-opacity="0.8"/>
<path d="M18 43.5H0.5V6.5H10H10.5V6V0.5H98H206H217.5V4.87197V5.37197H218H255.5V91.5H226H225.5V92V99.5H206H98H74.5V92V91.5H74H18.5V44V43.5H18Z" stroke="#8A766A" stroke-opacity="0.2"/>
<path d="M50.8098 46.97C50.8098 47.39 50.7132 47.7633 50.5198 48.09C50.3265 48.41 50.0432 48.66 49.6698 48.84C49.2965 49.02 48.8532 49.11 48.3398 49.11C47.6265 49.11 47.0165 48.9433 46.5098 48.61C46.0032 48.2767 45.6698 47.8333 45.5098 47.28L46.2298 46.86C46.4098 47.32 46.6765 47.6733 47.0298 47.92C47.3832 48.1667 47.8232 48.29 48.3498 48.29C48.8298 48.29 49.2032 48.1833 49.4698 47.97C49.7365 47.7567 49.8698 47.46 49.8698 47.08C49.8698 46.7733 49.7865 46.5267 49.6198 46.34C49.4532 46.1467 49.2465 45.9967 48.9998 45.89C48.7598 45.7833 48.4265 45.6667 47.9998 45.54C47.5265 45.4 47.1432 45.2667 46.8498 45.14C46.5632 45.0133 46.3198 44.8233 46.1198 44.57C45.9198 44.3167 45.8198 43.9833 45.8198 43.57C45.8198 43.15 45.9265 42.79 46.1398 42.49C46.3532 42.1833 46.6465 41.9533 47.0198 41.8C47.3998 41.64 47.8232 41.56 48.2898 41.56C48.9432 41.56 49.4698 41.7033 49.8698 41.99C50.2765 42.2767 50.5498 42.64 50.6898 43.08L49.9698 43.5C49.8165 43.1467 49.6032 42.87 49.3298 42.67C49.0632 42.47 48.7065 42.37 48.2598 42.37C47.8065 42.37 47.4432 42.4733 47.1698 42.68C46.8965 42.88 46.7598 43.15 46.7598 43.49C46.7598 43.7433 46.8332 43.95 46.9798 44.11C47.1332 44.27 47.3232 44.3967 47.5498 44.49C47.7765 44.5833 48.0865 44.6867 48.4798 44.8C48.9798 44.9467 49.3832 45.09 49.6898 45.23C49.9965 45.37 50.2598 45.58 50.4798 45.86C50.6998 46.14 50.8098 46.51 50.8098 46.97ZM54.6023 44.8L57.8223 49H56.6823L53.9823 45.46L52.8323 46.67V49H51.9423V41.68H52.8323V45.57L56.4123 41.68H57.5723L54.6023 44.8ZM60.8427 41.68C61.336 41.68 61.776 41.7767 62.1627 41.97C62.556 42.1633 62.8627 42.4333 63.0827 42.78C63.3027 43.12 63.4127 43.51 63.4127 43.95C63.4127 44.39 63.3027 44.7833 63.0827 45.13C62.8693 45.47 62.566 45.7367 62.1727 45.93C61.786 46.1167 61.3427 46.21 60.8427 46.21H59.4827V49H58.5927V41.68H60.8427ZM60.7327 45.43C61.2927 45.43 61.7227 45.2933 62.0227 45.02C62.3227 44.74 62.4727 44.3833 62.4727 43.95C62.4727 43.5167 62.3227 43.16 62.0227 42.88C61.7227 42.6 61.2927 42.46 60.7327 42.46H59.4827V45.43H60.7327Z" fill="#534F46"/>
<path d="M142.641 60.8L145.861 65H144.721L142.021 61.46L140.871 62.67V65H139.981V57.68H140.871V61.57L144.451 57.68H145.611L142.641 60.8ZM151.269 59.98C151.502 61.0533 151.949 61.9867 152.609 62.78C153.275 63.5733 154.215 64.29 155.429 64.93L154.909 65.68C152.909 64.5267 151.585 63.1167 150.939 61.45C150.352 63.0233 149.019 64.4433 146.939 65.71L146.409 64.94C147.562 64.3133 148.499 63.5733 149.219 62.72C149.939 61.8667 150.339 60.9133 150.419 59.86H146.589V59.05H150.439V56.52H151.289V59.05H155.179V59.86H151.279C151.272 59.8867 151.269 59.9267 151.269 59.98ZM161.369 59.16C161.482 58.82 161.562 58.5633 161.609 58.39H159.049V57.72H160.799L160.699 57.51C160.499 57.0833 160.375 56.83 160.329 56.75L160.999 56.55C161.052 56.6567 161.182 56.92 161.389 57.34C161.422 57.42 161.455 57.4933 161.489 57.56C161.522 57.62 161.549 57.6733 161.569 57.72H162.639C162.925 57.2667 163.159 56.86 163.339 56.5L164.049 56.73C163.909 56.9967 163.712 57.3267 163.459 57.72H165.299V58.39H162.469L162.219 59.16H164.579V63.82H159.619V59.16H161.369ZM157.939 59.15C157.792 58.91 157.572 58.59 157.279 58.19C156.992 57.7833 156.755 57.4633 156.569 57.23L157.249 56.77C157.469 57.0567 157.715 57.39 157.989 57.77C158.262 58.1433 158.475 58.4467 158.629 58.68L157.939 59.15ZM160.429 60.52H163.769V59.79H160.429V60.52ZM160.939 64.64C161.785 64.6733 162.542 64.69 163.209 64.69C163.889 64.69 164.645 64.6733 165.479 64.64L165.339 65.39C164.712 65.4233 163.962 65.44 163.089 65.44C162.209 65.44 161.455 65.4233 160.829 65.39C160.369 65.37 159.985 65.3133 159.679 65.22C159.372 65.1333 159.095 64.9967 158.849 64.81C158.609 64.6167 158.349 64.3467 158.069 64C157.935 64.1533 157.762 64.3567 157.549 64.61C157.335 64.8633 157.142 65.0933 156.969 65.3L156.769 65.54L156.389 64.72L157.659 63.24V60.78H156.479V59.98H158.429V63.22C158.669 63.5667 158.899 63.84 159.119 64.04C159.345 64.2333 159.599 64.3767 159.879 64.47C160.165 64.5633 160.519 64.62 160.939 64.64ZM163.769 61.12H160.429V61.86H163.769V61.12ZM160.429 62.46V63.19H163.769V62.46H160.429Z" fill="#534F46"/>
<path d="M221.944 50.97C221.944 51.39 221.847 51.7633 221.654 52.09C221.46 52.41 221.177 52.66 220.804 52.84C220.43 53.02 219.987 53.11 219.474 53.11C218.76 53.11 218.15 52.9433 217.644 52.61C217.137 52.2767 216.804 51.8333 216.644 51.28L217.364 50.86C217.544 51.32 217.81 51.6733 218.164 51.92C218.517 52.1667 218.957 52.29 219.484 52.29C219.964 52.29 220.337 52.1833 220.604 51.97C220.87 51.7567 221.004 51.46 221.004 51.08C221.004 50.7733 220.92 50.5267 220.754 50.34C220.587 50.1467 220.38 49.9967 220.134 49.89C219.894 49.7833 219.56 49.6667 219.134 49.54C218.66 49.4 218.277 49.2667 217.984 49.14C217.697 49.0133 217.454 48.8233 217.254 48.57C217.054 48.3167 216.954 47.9833 216.954 47.57C216.954 47.15 217.06 46.79 217.274 46.49C217.487 46.1833 217.78 45.9533 218.154 45.8C218.534 45.64 218.957 45.56 219.424 45.56C220.077 45.56 220.604 45.7033 221.004 45.99C221.41 46.2767 221.684 46.64 221.824 47.08L221.104 47.5C220.95 47.1467 220.737 46.87 220.464 46.67C220.197 46.47 219.84 46.37 219.394 46.37C218.94 46.37 218.577 46.4733 218.304 46.68C218.03 46.88 217.894 47.15 217.894 47.49C217.894 47.7433 217.967 47.95 218.114 48.11C218.267 48.27 218.457 48.3967 218.684 48.49C218.91 48.5833 219.22 48.6867 219.614 48.8C220.114 48.9467 220.517 49.09 220.824 49.23C221.13 49.37 221.394 49.58 221.614 49.86C221.834 50.14 221.944 50.51 221.944 50.97ZM225.736 48.8L228.956 53H227.816L225.116 49.46L223.966 50.67V53H223.076V45.68H223.966V49.57L227.546 45.68H228.706L225.736 48.8ZM231.976 45.68C232.47 45.68 232.91 45.7767 233.296 45.97C233.69 46.1633 233.996 46.4333 234.216 46.78C234.436 47.12 234.546 47.51 234.546 47.95C234.546 48.39 234.436 48.7833 234.216 49.13C234.003 49.47 233.7 49.7367 233.306 49.93C232.92 50.1167 232.476 50.21 231.976 50.21H230.616V53H229.726V45.68H231.976ZM231.866 49.43C232.426 49.43 232.856 49.2933 233.156 49.02C233.456 48.74 233.606 48.3833 233.606 47.95C233.606 47.5167 233.456 47.16 233.156 46.88C232.856 46.6 232.426 46.46 231.866 46.46H230.616V49.43H231.866ZM235.531 50.34V49.62H239.171V50.34H235.531ZM245.264 50.97C245.264 51.39 245.167 51.7633 244.974 52.09C244.781 52.41 244.497 52.66 244.124 52.84C243.751 53.02 243.307 53.11 242.794 53.11C242.081 53.11 241.471 52.9433 240.964 52.61C240.457 52.2767 240.124 51.8333 239.964 51.28L240.684 50.86C240.864 51.32 241.131 51.6733 241.484 51.92C241.837 52.1667 242.277 52.29 242.804 52.29C243.284 52.29 243.657 52.1833 243.924 51.97C244.191 51.7567 244.324 51.46 244.324 51.08C244.324 50.7733 244.241 50.5267 244.074 50.34C243.907 50.1467 243.701 49.9967 243.454 49.89C243.214 49.7833 242.881 49.6667 242.454 49.54C241.981 49.4 241.597 49.2667 241.304 49.14C241.017 49.0133 240.774 48.8233 240.574 48.57C240.374 48.3167 240.274 47.9833 240.274 47.57C240.274 47.15 240.381 46.79 240.594 46.49C240.807 46.1833 241.101 45.9533 241.474 45.8C241.854 45.64 242.277 45.56 242.744 45.56C243.397 45.56 243.924 45.7033 244.324 45.99C244.731 46.2767 245.004 46.64 245.144 47.08L244.424 47.5C244.271 47.1467 244.057 46.87 243.784 46.67C243.517 46.47 243.161 46.37 242.714 46.37C242.261 46.37 241.897 46.4733 241.624 46.68C241.351 46.88 241.214 47.15 241.214 47.49C241.214 47.7433 241.287 47.95 241.434 48.11C241.587 48.27 241.777 48.3967 242.004 48.49C242.231 48.5833 242.541 48.6867 242.934 48.8C243.434 48.9467 243.837 49.09 244.144 49.23C244.451 49.37 244.714 49.58 244.934 49.86C245.154 50.14 245.264 50.51 245.264 50.97Z" fill="#534F46"/>
<path d="M141.17 10.87V11.57H132.71V10.87H136.53V10.02H133.21V9.34H136.53V8.49H132.89V7.8H135.2L134.38 6.9L134.92 6.43L136.01 7.57L135.69 7.8H137.75C137.943 7.58 138.15 7.33333 138.37 7.06C138.59 6.78667 138.753 6.57333 138.86 6.42L139.52 6.85C139.313 7.12333 139.05 7.44 138.73 7.8H140.99V8.49H137.37V9.34H140.67V10.02H137.37V10.87H141.17ZM137.62 13.27C137.907 13.65 138.36 13.98 138.98 14.26C139.6 14.5333 140.433 14.7533 141.48 14.92L141.15 15.72C139.017 15.3333 137.613 14.6233 136.94 13.59C136.667 14.0633 136.2 14.4833 135.54 14.85C134.88 15.21 133.947 15.51 132.74 15.75L132.41 14.96C133.51 14.7733 134.35 14.5367 134.93 14.25C135.51 13.9633 135.92 13.6367 136.16 13.27H132.59V12.57H136.43C136.483 12.1967 136.51 11.9433 136.51 11.81H137.37C137.37 11.8767 137.357 12.0433 137.33 12.31L137.3 12.57H141.29V13.27H137.62ZM147.32 6.56C148.173 7.60667 149.59 8.51667 151.57 9.29L151.27 10.04C150.357 9.67333 149.517 9.25333 148.75 8.78C147.99 8.3 147.39 7.79667 146.95 7.27C146.31 8.01 145.337 8.72667 144.03 9.42H146.73C146.617 9.09333 146.49 8.76 146.35 8.42L147.06 8.16C147.193 8.49333 147.337 8.91333 147.49 9.42H149.8V12.95H144.63V14.74L146.55 14.15L146.67 14.91C146.41 14.9833 146.103 15.0667 145.75 15.16C145.65 15.1867 145.47 15.2333 145.21 15.3C144.957 15.3667 144.727 15.4333 144.52 15.5L144.22 15.6C144.073 15.66 143.923 15.71 143.77 15.75L143.48 15.05C143.633 14.95 143.737 14.8667 143.79 14.8C143.843 14.7333 143.87 14.66 143.87 14.58V9.5C143.357 9.76667 142.93 9.97 142.59 10.11L142.27 9.37C144.237 8.57 145.667 7.63333 146.56 6.56H147.32ZM149.05 10.9V10.05H144.63V10.9H149.05ZM144.63 11.54V12.31H149.05V11.54H144.63ZM150.64 13.58C150.147 13.7733 149.577 13.9633 148.93 14.15L151.03 14.91L150.73 15.66C150.05 15.3733 149.173 15.0267 148.1 14.62C147.033 14.2133 146.237 13.9267 145.71 13.76L145.99 13.13C146.27 13.21 146.91 13.4267 147.91 13.78C148.75 13.5333 149.563 13.2533 150.35 12.94L150.64 13.58ZM157.38 9.98C157.613 11.0533 158.06 11.9867 158.72 12.78C159.387 13.5733 160.327 14.29 161.54 14.93L161.02 15.68C159.02 14.5267 157.697 13.1167 157.05 11.45C156.463 13.0233 155.13 14.4433 153.05 15.71L152.52 14.94C153.673 14.3133 154.61 13.5733 155.33 12.72C156.05 11.8667 156.45 10.9133 156.53 9.86H152.7V9.05H156.55V6.52H157.4V9.05H161.29V9.86H157.39C157.383 9.88667 157.38 9.92667 157.38 9.98ZM167.48 9.16C167.593 8.82 167.673 8.56333 167.72 8.39H165.16V7.72H166.91L166.81 7.51C166.61 7.08333 166.487 6.83 166.44 6.75L167.11 6.55C167.163 6.65667 167.293 6.92 167.5 7.34C167.533 7.42 167.567 7.49333 167.6 7.56C167.633 7.62 167.66 7.67333 167.68 7.72H168.75C169.037 7.26667 169.27 6.86 169.45 6.5L170.16 6.73C170.02 6.99667 169.823 7.32667 169.57 7.72H171.41V8.39H168.58L168.33 9.16H170.69V13.82H165.73V9.16H167.48ZM164.05 9.15C163.903 8.91 163.683 8.59 163.39 8.19C163.103 7.78333 162.867 7.46333 162.68 7.23L163.36 6.77C163.58 7.05667 163.827 7.39 164.1 7.77C164.373 8.14333 164.587 8.44667 164.74 8.68L164.05 9.15ZM166.54 10.52H169.88V9.79H166.54V10.52ZM167.05 14.64C167.897 14.6733 168.653 14.69 169.32 14.69C170 14.69 170.757 14.6733 171.59 14.64L171.45 15.39C170.823 15.4233 170.073 15.44 169.2 15.44C168.32 15.44 167.567 15.4233 166.94 15.39C166.48 15.37 166.097 15.3133 165.79 15.22C165.483 15.1333 165.207 14.9967 164.96 14.81C164.72 14.6167 164.46 14.3467 164.18 14C164.047 14.1533 163.873 14.3567 163.66 14.61C163.447 14.8633 163.253 15.0933 163.08 15.3L162.88 15.54L162.5 14.72L163.77 13.24V10.78H162.59V9.98H164.54V13.22C164.78 13.5667 165.01 13.84 165.23 14.04C165.457 14.2333 165.71 14.3767 165.99 14.47C166.277 14.5633 166.63 14.62 167.05 14.64ZM169.88 11.12H166.54V11.86H169.88V11.12ZM166.54 12.46V13.19H169.88V12.46H166.54Z" fill="#534F46"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

5
src/assets/images/guide/direction.svg

@ -1,4 +1,3 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="44" height="44" rx="12" fill="white"/>
<path d="M29.3237 15.0959L25.7777 27.5059L22.7377 21.4259L17.1007 19.1709L29.3237 15.0959ZM31.3897 12.2999L12.5837 18.5679C12.4864 18.6002 12.4013 18.6616 12.3401 18.7438C12.2788 18.8261 12.2443 18.9251 12.2413 19.0276C12.2382 19.1301 12.2667 19.2311 12.323 19.3168C12.3792 19.4026 12.4605 19.4689 12.5557 19.5069L21.2887 22.9999L25.7137 31.8499C25.7587 31.94 25.8299 32.0145 25.918 32.0634C26.006 32.1124 26.1068 32.1336 26.2071 32.1243C26.3074 32.115 26.4026 32.0756 26.4802 32.0113C26.5577 31.947 26.614 31.8608 26.6417 31.7639L32.0287 12.9109C32.0537 12.8233 32.0542 12.7306 32.0303 12.6427C32.0064 12.5548 31.959 12.4752 31.8931 12.4123C31.8272 12.3494 31.7454 12.3057 31.6566 12.2859C31.5677 12.2661 31.4751 12.2709 31.3887 12.2999H31.3897Z" fill="#535D75"/>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19.3234 5.09599L15.7774 17.506L12.7374 11.426L7.10041 9.17099L19.3234 5.09599ZM21.3894 2.29999L2.58341 8.56799C2.48608 8.60025 2.40102 8.66166 2.33976 8.74389C2.2785 8.82612 2.244 8.9252 2.24094 9.02769C2.23789 9.13019 2.26642 9.23114 2.32267 9.31688C2.37892 9.40262 2.46017 9.46898 2.55541 9.50699L11.2884 13L15.7134 21.85C15.7584 21.9401 15.8296 22.0145 15.9177 22.0635C16.0057 22.1124 16.1065 22.1337 16.2068 22.1244C16.3071 22.1151 16.4023 22.0757 16.4798 22.0114C16.5574 21.9471 16.6137 21.8608 16.6414 21.764L22.0284 2.91099C22.0534 2.8234 22.0539 2.73066 22.03 2.64278C22.0061 2.55491 21.9587 2.47522 21.8928 2.41233C21.8269 2.34945 21.7451 2.30575 21.6563 2.28595C21.5674 2.26615 21.4747 2.271 21.3884 2.29999H21.3894Z" fill="#615C59"/>
</svg>

Before

Width:  |  Height:  |  Size: 920 B

After

Width:  |  Height:  |  Size: 858 B

3
src/assets/images/guide/food.svg

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10.2422 11.1211V3.21094H4.08984V11.1211C4.08984 11.3519 4.13531 11.5805 4.22365 11.7938C4.31199 12.007 4.44147 12.2008 4.6047 12.3641C4.76792 12.5273 4.9617 12.6568 5.17497 12.7451C5.38824 12.8334 5.61682 12.8789 5.84766 12.8789V20.7891H8.48438V12.8789C8.71521 12.8789 8.94379 12.8334 9.15706 12.7451C9.37033 12.6568 9.56411 12.5273 9.72734 12.3641C9.89057 12.2008 10.02 12.007 10.1084 11.7938C10.1967 11.5805 10.2422 11.3519 10.2422 11.1211V11.1211ZM12 11.1211C12 12.4219 11.2934 13.5583 10.2422 14.1665V20.7891C10.2422 21.0199 10.1967 21.2485 10.1084 21.4617C10.02 21.675 9.89057 21.8688 9.72734 22.032C9.56411 22.1953 9.37033 22.3247 9.15706 22.4131C8.94379 22.5014 8.71521 22.5469 8.48438 22.5469H5.84766C5.38146 22.5469 4.93435 22.3617 4.6047 22.032C4.27504 21.7024 4.08984 21.2553 4.08984 20.7891V14.1665C3.55517 13.858 3.11119 13.4141 2.8026 12.8795C2.49402 12.3449 2.33171 11.7384 2.33203 11.1211V3.21094C2.33203 2.9801 2.3775 2.75152 2.46584 2.53825C2.55418 2.32498 2.68366 2.1312 2.84688 1.96798C3.01011 1.80475 3.20389 1.67527 3.41716 1.58693C3.63043 1.49859 3.85901 1.45312 4.08984 1.45313H10.2422C10.7084 1.45312 11.1555 1.63832 11.4851 1.96798C11.8148 2.29763 12 2.74474 12 3.21094V11.1211ZM4.96875 3.21094H6.72656V8.48438C6.72658 8.59981 6.70386 8.71411 6.6597 8.82076C6.61553 8.92741 6.5508 9.02431 6.46918 9.10594C6.38757 9.18756 6.29067 9.25232 6.18403 9.29649C6.07739 9.34067 5.96309 9.36341 5.84766 9.36341C5.73223 9.36341 5.61793 9.34067 5.51128 9.29649C5.40464 9.25232 5.30775 9.18756 5.22613 9.10594C5.14452 9.02431 5.07978 8.92741 5.03562 8.82076C4.99146 8.71411 4.96873 8.59981 4.96875 8.48438V3.21094ZM20.0095 1.45488C20.9323 1.49092 21.668 2.26348 21.668 3.21094V20.7891C21.668 21.7603 20.8945 22.5469 19.9418 22.5469H18.2156C17.2629 22.5469 16.4895 21.7603 16.4895 20.7891V15.5385C14.7615 14.6824 13.7578 12.9176 13.7578 10.454C13.7578 7.82959 13.9705 5.85293 14.6473 4.48975C15.6984 2.37158 17.2066 1.45313 19.0787 1.45313H20.0095V1.45488ZM18.2165 14.9531V20.7891H19.9418V3.21094H19.0787C17.85 3.21094 16.9412 3.76465 16.1871 5.28252C15.6773 6.30996 15.484 8.1126 15.484 10.454C15.484 12.4465 16.2636 13.6356 17.6224 14.1173C17.7593 14.1652 17.8955 14.215 18.0311 14.2667C18.1058 14.2948 18.1348 14.3045 18.1479 14.3071C18.1704 14.3097 18.193 14.3106 18.2156 14.3098V14.9531H18.2165ZM7.60547 3.21094H9.36328V8.48438C9.3633 8.59981 9.34058 8.71411 9.29642 8.82076C9.25225 8.92741 9.18752 9.02431 9.1059 9.10594C9.02429 9.18757 8.92739 9.25232 8.82075 9.29649C8.71411 9.34067 8.59981 9.36341 8.48438 9.36341C8.36895 9.36341 8.25464 9.34067 8.148 9.29649C8.04136 9.25232 7.94447 9.18757 7.86285 9.10594C7.78123 9.02431 7.7165 8.92741 7.67233 8.82076C7.62817 8.71411 7.60545 8.59981 7.60547 8.48438V3.21094Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

157
src/assets/images/guide/minMap.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 196 KiB

4
src/assets/images/guide/point.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

5
src/assets/images/guide/reset.svg

@ -1,4 +1,3 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="44" height="44" rx="12" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 10C22.5523 10 23 10.4477 23 11V12.0494C27.7244 12.5184 31.4816 16.2756 31.9506 21L33 21C33.5523 21 34 21.4477 34 22C34 22.5523 33.5523 23 33 23L31.9506 23C31.4816 27.7244 27.7244 31.4816 23 31.9506V33C23 33.5523 22.5523 34 22 34C21.4477 34 21 33.5523 21 33V31.9506C16.2756 31.4816 12.5184 27.7244 12.0494 23H11C10.4477 23 10 22.5523 10 22C10 21.4477 10.4477 21 11 21H12.0494C12.5184 16.2756 16.2756 12.5184 21 12.0494V11C21 10.4477 21.4477 10 22 10ZM22 14C17.5817 14 14 17.5817 14 22C14 26.4183 17.5817 30 22 30C26.4183 30 30 26.4183 30 22C30 17.5817 26.4183 14 22 14ZM22 19C20.3431 19 19 20.3431 19 22C19 23.6569 20.3431 25 22 25C23.6569 25 25 23.6569 25 22C25 20.3431 23.6569 19 22 19ZM17 22C17 19.2386 19.2386 17 22 17C24.7614 17 27 19.2386 27 22C27 24.7614 24.7614 27 22 27C19.2386 27 17 24.7614 17 22Z" fill="#535D75"/>
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12 0C12.5523 0 13 0.447715 13 1V2.04938C17.7244 2.51844 21.4816 6.27558 21.9506 11L23 11C23.5523 11 24 11.4477 24 12C24 12.5523 23.5523 13 23 13L21.9506 13C21.4816 17.7244 17.7244 21.4816 13 21.9506V23C13 23.5523 12.5523 24 12 24C11.4477 24 11 23.5523 11 23V21.9506C6.27558 21.4816 2.51844 17.7244 2.04938 13H1C0.447715 13 0 12.5523 0 12C0 11.4477 0.447715 11 1 11H2.04938C2.51844 6.27558 6.27558 2.51844 11 2.04938V1C11 0.447715 11.4477 0 12 0ZM12 4C7.58172 4 4 7.58172 4 12C4 16.4183 7.58172 20 12 20C16.4183 20 20 16.4183 20 12C20 7.58172 16.4183 4 12 4ZM12 9C10.3431 9 9 10.3431 9 12C9 13.6569 10.3431 15 12 15C13.6569 15 15 13.6569 15 12C15 10.3431 13.6569 9 12 9ZM7 12C7 9.23858 9.23858 7 12 7C14.7614 7 17 9.23858 17 12C17 14.7614 14.7614 17 12 17C9.23858 17 7 14.7614 7 12Z" fill="#615C59"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 953 B

11
src/assets/images/guide/tip_en.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

11
src/assets/images/guide/tip_zh.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

12
src/assets/images/header/logo.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="#E00068"/>
<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="#E00068"/>
<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="#E00068"/>
<path d="M112.796 6.99286L110.908 5.73413L110.489 5.87399H100.209V35.9439H102.796V8.39146H109.23C107.971 11.4684 106.363 15.1047 104.964 17.832C108.181 20.4894 109.719 23.0768 109.719 25.6642C109.719 26.5034 109.65 27.5523 109.02 28.1117C109.02 28.1117 108.95 28.1117 108.95 28.1817C108.88 28.2516 108.81 28.3215 108.671 28.3915C108.251 28.6013 107.691 28.7411 107.062 28.811C106.363 28.881 105.314 28.881 104.125 28.7411H104.055V28.811C104.545 29.5803 104.824 30.6292 104.824 31.3285C105.314 31.3285 105.873 31.3985 106.363 31.3985C106.992 31.3985 107.622 31.3985 108.111 31.3285C109.09 31.1887 109.859 30.9089 110.489 30.4894C111.747 29.7201 112.307 28.1817 112.307 25.9439C112.307 24.5453 112.027 23.2166 111.398 21.9579C110.629 20.4194 109.44 18.9509 107.692 17.4124C109.37 14.3355 111.328 10.2796 112.796 6.99286Z" fill="#E00068"/>
<path d="M99.16 6.29356L96.9222 5.10476L95.8732 7.41245C95.5236 8.18168 95.0341 8.95091 94.5446 9.72014V7.90196H90.2089V4.82504C90.4187 4.75511 90.6984 4.61525 90.7684 4.12574V3.84601L87.6215 3.63623V7.83203H82.2369V10.2097H87.6215V14.3355H80.6984V16.7131H88.9502C86.3627 19.3006 83.2858 21.4684 79.9292 23.1467C80.4187 23.7062 81.2579 24.7551 81.5376 25.2446C82.5865 24.6852 83.4956 24.1257 84.2649 23.5663V35.5243H86.7124V33.4264H94.4746V35.4544H97.0621V34.9649V19.86H88.9502C89.9292 18.9509 90.9781 17.902 92.2369 16.5034H98.6704V14.4055H94.1949C95.9432 12.0978 97.4117 9.65021 98.6005 7.13273C98.8103 7.20266 99.16 7.20266 99.3697 6.78308L99.5096 6.57329L99.16 6.29356ZM86.9222 27.832H94.6844V31.4684H86.9222V27.832ZM94.6844 25.6642H86.9222V22.3076H94.6844V25.6642ZM91.2579 14.4055H90.2788V10.2796H94.2649C93.4257 11.5383 92.4467 12.9369 91.2579 14.4055Z" fill="#E00068"/>
<path d="M77.6218 27.9021C76.9225 27.6923 76.0134 27.1329 75.3841 26.5035L75.3141 26.4336V26.5035C75.0344 31.1888 74.6148 32.9371 73.7057 32.9371C72.0274 32.9371 70.3491 31.049 69.0204 27.5525C71.3281 24.6154 73.2162 21.0489 74.6848 17.1329C74.9645 17.1329 75.3141 17.1329 75.5239 16.7133L75.6638 16.4336L75.3841 16.2937L72.6568 15.035C71.6078 18.5315 70.0694 21.6783 68.1813 24.4056C67.2722 21.1888 66.6428 17.1329 66.2932 12.3776H77.412V9.79021H73.9155L75.454 8.04196C74.0554 6.78322 71.1883 5.03497 69.1603 4.05595L67.6218 5.66434C69.8596 6.85315 72.447 8.6014 73.7757 9.79021H66.0834C66.0134 8.32168 65.9435 6.78322 65.9435 4.89511C66.1533 4.82518 66.503 4.68532 66.5729 4.19581V3.91609L63.1463 3.7063L63.2162 4.82518C63.2162 6.50351 63.2862 8.18182 63.426 9.79021H48.8107V19.5804C48.8107 24.2657 48.461 30.1399 45.5939 34.3357C46.1533 34.6154 47.2722 35.5245 47.7617 36.0839C50.2093 32.5175 51.468 26.993 51.468 19.5804V19.3007H57.7617C57.6218 25.4545 57.412 27.4825 56.9925 28.042C56.7827 28.3217 56.433 28.3916 55.9435 28.3916C55.3141 28.3916 53.8456 28.3916 52.2372 28.2518H52.1673V28.3217C52.5869 28.951 52.8666 29.9301 52.8666 30.7692C53.7058 30.8392 54.5449 30.8392 55.2442 30.8392C55.9435 30.8392 56.5729 30.8392 56.9925 30.7692C58.0414 30.6294 58.6009 30.3496 59.0904 29.7203C59.8596 28.7413 60.0694 25.4546 60.2092 17.972V16.8532H51.2582V12.3776H63.2862C63.7757 18.2518 64.6148 23.3566 65.8037 27.0629C63.5659 29.6504 60.8386 31.8881 57.7617 33.4965H57.6918C58.2512 33.986 59.1603 35.035 59.5799 35.5245C62.2372 33.986 64.6848 32.028 66.7827 29.7203C68.461 33.4965 70.6288 35.4545 73.2162 35.4545C74.6148 35.4545 75.5239 34.965 76.0834 33.8462C77.0624 32.8671 77.4121 31.049 77.6218 27.9021Z" fill="#E00068"/>
<path d="M17.482 20.2796V19.7202H13.0764C13.6359 19.7901 14.1953 19.9999 14.6848 20.2796H17.482Z" fill="#E00068"/>
<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="#E00068"/>
<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="#E00068"/>
<path d="M28.0416 19.7201V20.2796C28.7409 20.2796 29.5102 20.1397 30.1395 19.86C30.8388 19.5803 31.3983 19.1607 31.9577 18.6712C32.4472 18.1817 32.8668 17.5523 33.1465 16.9229C33.4262 16.2236 33.5661 15.5243 33.5661 14.825C33.5661 14.1257 33.4262 13.4264 33.1465 12.7271C32.8668 12.0278 32.4472 11.4684 31.9577 10.9089C31.4682 10.4194 30.8388 9.99984 30.1395 9.72012C29.4402 9.4404 28.7409 9.30054 28.0416 9.30054H22.5172V14.825C22.5172 16.0138 22.0976 17.2026 21.2584 18.1117C20.4892 19.0208 19.3703 19.5803 18.1815 19.7201H18.1116V14.825H17.5521V19.79V20.3495C18.8808 20.3495 20.1395 20.839 21.0486 21.818C21.9577 22.7271 22.5172 23.9859 22.5172 25.3145C22.5172 26.0138 22.657 26.7131 22.9367 27.4124C23.0067 27.5523 23.0766 27.6222 23.0766 27.7621C23.2165 27.9719 23.2864 28.1817 23.4262 28.3914C23.5661 28.6012 23.706 28.7411 23.8458 28.881C23.9158 28.9509 23.9158 28.9509 23.9857 29.0208C24.0556 29.0907 24.0556 29.0908 24.1255 29.1607C24.1955 29.2306 24.3353 29.3705 24.4053 29.4404L24.4752 29.5103C24.6151 29.6502 24.8249 29.79 25.0346 29.9299C25.1046 29.9299 25.1046 29.9998 25.1745 29.9998C25.3144 30.0698 25.4542 30.1397 25.664 30.2796C25.7339 30.2796 25.8039 30.3495 25.8039 30.3495C25.8039 30.3495 25.8738 30.3495 25.8738 30.4194C26.0836 30.4893 26.2235 30.5593 26.4333 30.6292C26.5032 30.6292 26.5032 30.6292 26.5731 30.6292C26.7829 30.6991 26.9228 30.6991 27.1326 30.7691C27.2025 30.7691 27.2724 30.7691 27.3423 30.7691C27.5521 30.7691 27.8318 30.839 28.0416 30.839H33.5661V30.2796H28.0416C26.713 30.2796 25.4542 29.7901 24.5451 28.811C23.636 27.9019 23.0766 26.6432 23.0766 25.3145C23.0766 25.1747 23.0766 24.9649 23.0766 24.825C23.0766 24.7551 23.0766 24.7551 23.0766 24.6852C23.0766 24.5453 23.0766 24.4754 23.0067 24.3355C23.0067 24.2656 23.0067 24.2656 23.0067 24.1956C23.0067 24.0558 22.9367 23.9859 22.9367 23.846C22.9367 23.7761 22.9367 23.7761 22.9367 23.7061C22.9367 23.5663 22.8668 23.4963 22.7969 23.3565C22.7969 23.3565 22.7969 23.2865 22.7269 23.2865C22.657 23.1467 22.5871 23.0068 22.5871 22.9369V22.867C22.5172 22.7271 22.4472 22.5873 22.3773 22.4474C22.3773 22.4474 22.3773 22.4474 22.3773 22.3775C22.3074 22.2376 22.2374 22.1677 22.1675 22.0278C22.0277 21.818 21.8878 21.6782 21.678 21.4684C21.6081 21.3984 21.6081 21.3984 21.5381 21.3285C21.3983 21.1886 21.1885 20.9789 21.0486 20.839L20.9787 20.7691C20.8388 20.6292 20.6291 20.5593 20.4193 20.4194C20.3493 20.4194 20.3493 20.3495 20.2794 20.3495C20.0696 20.2096 19.8598 20.1397 19.65 20.0698H19.5801L19.4402 19.9998L19.5801 19.9299C20.629 19.5803 21.5381 18.881 22.1675 17.9719C22.8668 17.0628 23.2165 15.9439 23.2165 14.7551V9.79005H28.1815C29.5102 9.79005 30.7689 10.2796 31.678 11.2586C32.5871 12.1677 33.1465 13.4264 33.1465 14.7551C33.1465 16.0838 32.657 17.3425 31.678 18.2516C30.5591 19.2306 29.3703 19.7201 28.0416 19.7201Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

3
src/assets/images/header/search.svg

@ -0,0 +1,3 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M18.3333 3.33325C26.6133 3.33325 33.3333 10.0533 33.3333 18.3333C33.3333 26.6133 26.6133 33.3333 18.3333 33.3333C10.0533 33.3333 3.33334 26.6133 3.33334 18.3333C3.33334 10.0533 10.0533 3.33325 18.3333 3.33325ZM18.3333 29.9999C24.7783 29.9999 30 24.7783 30 18.3333C30 11.8866 24.7783 6.66659 18.3333 6.66659C11.8867 6.66659 6.66667 11.8866 6.66667 18.3333C6.66667 24.7783 11.8867 29.9999 18.3333 29.9999ZM32.475 30.1183L37.19 34.8316L34.8317 37.1899L30.1183 32.4749L32.475 30.1183V30.1183Z" fill="#8E9090"/>
</svg>

After

Width:  |  Height:  |  Size: 619 B

3
src/assets/images/header/zan.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 fill-rule="evenodd" clip-rule="evenodd" d="M19.926 3.97546C20.1855 4.5429 20.2431 5.18207 20.0892 5.78677L18.9169 10.3942C18.8043 10.8367 19.1386 11.2668 19.5953 11.2668H28C28.5481 11.2668 29.0737 11.4845 29.4613 11.8721C29.8489 12.2597 30.0666 12.7854 30.0666 13.3335V16.1394C30.0669 16.4094 30.0142 16.6771 29.9116 16.9268L25.7852 26.9463C25.7298 27.0806 25.6358 27.1955 25.515 27.2763C25.3943 27.3571 25.2519 27.4002 25.1066 27.4001H2.66662C2.47213 27.4001 2.2856 27.3229 2.14808 27.1853C2.01055 27.0478 1.93329 26.8613 1.93329 26.6668V13.3335C1.93329 13.139 2.01055 12.9524 2.14808 12.8149C2.2856 12.6774 2.47213 12.6001 2.66662 12.6001H7.30929C7.61876 12.6002 7.92372 12.5259 8.19853 12.3837C8.4734 12.2414 8.71025 12.0349 8.88884 11.7821L16.1595 1.4794C16.1687 1.46638 16.1823 1.45708 16.1977 1.45319C16.2132 1.4493 16.2295 1.45108 16.2438 1.4582L18.6624 2.66749C19.2205 2.94647 19.6664 3.40802 19.926 3.97546ZM8.73329 13.7747L9.02858 13.6006C9.4412 13.3573 9.80403 13.0283 10.0871 12.6274L16.6643 3.31049L18.0066 3.98065C18.2655 4.10997 18.4724 4.32409 18.5927 4.58727C18.7129 4.85031 18.7395 5.14657 18.6681 5.4268L17.4641 10.1574C17.3865 10.4624 17.3796 10.7811 17.444 11.0892C17.5083 11.3974 17.6422 11.6867 17.8354 11.9352C18.0285 12.1837 18.2759 12.3848 18.5586 12.5231C18.8413 12.6615 19.1519 12.7334 19.4666 12.7335H27.9C28.2866 12.7335 28.6 13.0469 28.6 13.4335V16.119C28.6 16.2105 28.582 16.301 28.5472 16.3855L24.6151 25.9335H8.73329V13.7747ZM7.26662 14.0668V25.9335H3.39996V14.0668H7.26662Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

20
src/assets/images/map/map-dialog.svg

@ -0,0 +1,20 @@
<svg width="240" height="144" viewBox="0 0 240 144" fill="none" xmlns="http://www.w3.org/2000/svg">
<g filter="url(#filter0_d_3109_37195)">
<rect x="20" y="12" width="200" height="104" rx="14" fill="white"/>
<path d="M20 26C20 18.268 26.268 12 34 12H206C213.732 12 220 18.268 220 26V68H20V26Z" fill="#E00068"/>
<rect x="119" y="83" width="1" height="16" fill="black" fill-opacity="0.2"/>
</g>
<path d="M120 121L114 116H126L120 121Z" fill="white"/>
<defs>
<filter id="filter0_d_3109_37195" x="0" y="0" width="240" height="144" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="8"/>
<feGaussianBlur stdDeviation="10"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_3109_37195"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_3109_37195" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

3
src/assets/images/menu/activity.svg

@ -0,0 +1,3 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M31.214 16.2355L31.9943 14.8849C32.5008 14.0082 32.7675 13.0137 32.7677 12.0012C32.7679 10.9888 32.5015 9.99409 31.9953 9.11723C31.4892 8.24037 30.7611 7.51223 29.8843 7.00601C29.0074 6.4998 28.0128 6.23336 27.0003 6.23348L27.0002 5.33398L26.9986 6.23348C26.1807 6.23203 25.3719 6.40547 24.6265 6.74216C23.881 7.07884 23.2162 7.571 22.6765 8.18563L22.0017 8.9542L21.3252 8.18707C20.3792 7.11434 19.0684 6.43142 17.6471 6.27092C16.2259 6.11042 14.7958 6.4838 13.6344 7.31854C12.473 8.15329 11.6633 9.38984 11.3624 10.7881C11.0615 12.1863 11.291 13.6465 12.0063 14.8851L12.7861 16.2355L4.56689 16.2337V17.7668H7.90023V35.3335C7.90023 35.5368 7.981 35.7318 8.12478 35.8756C8.26856 36.0194 8.46356 36.1001 8.66689 36.1001H35.3336C35.5369 36.1001 35.7319 36.0194 35.8757 35.8756C36.0195 35.7318 36.1002 35.5368 36.1002 35.3335V17.7668H39.4336V16.2337L31.214 16.2355ZM17.6257 7.8131L17.6416 7.81553C18.6415 7.9688 19.5536 8.47509 20.2125 9.24271C20.8714 10.0103 21.2336 10.9885 21.2336 12.0001V16.2335H16.9852L16.7035 16.2241L16.6868 16.2229C15.591 16.1454 14.5682 15.645 13.8345 14.8274C13.1009 14.0098 12.7137 12.939 12.755 11.8413C12.7962 10.7435 13.2625 9.70478 14.0554 8.94449C14.8483 8.1842 15.9057 7.7619 17.0043 7.76682L17.0173 7.76688L17.316 7.7769L17.6257 7.8131ZM22.7764 11.7014L22.7778 11.6826C22.8579 10.6176 23.3376 9.62225 24.1207 8.89605C24.9037 8.1699 25.9323 7.76654 27.0002 7.76681C28.1229 7.76689 29.1998 8.21289 29.9936 9.00673C30.7876 9.80063 31.2336 10.8774 31.2336 12.0001V12.0151L31.2247 12.2801L31.2241 12.2989L31.2227 12.3176C31.1426 13.3827 30.6629 14.378 29.8798 15.1042C29.0967 15.8304 28.0681 16.2337 27.0002 16.2335H23.6669H22.7669V12.0001V11.9851L22.7757 11.7202L22.7764 11.7014ZM21.2336 17.7668V34.5668H9.43356V17.7668H21.2336ZM34.5669 17.7668V34.5668H22.7669V17.7668H34.5669Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

5
src/assets/images/menu/art.svg

@ -0,0 +1,5 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M33.3544 18.0877C32.6905 18.4953 31.9474 19.4038 31.1893 21.1254C30.2455 23.2687 29.1066 24.99 27.8875 26.4051C29.1741 27.4179 30.3428 28.5825 31.4201 29.6909C31.6445 29.9218 31.8647 30.1502 32.0814 30.3747C33.1042 31.4351 34.0462 32.4117 34.9659 33.1802C36.0872 34.117 37.0598 34.6414 37.9652 34.6758C39.8673 34.7483 41.4062 33.4989 42.0115 31.4221C42.6183 29.3396 42.2574 26.4396 40.2267 23.4698C39.3761 22.2258 38.5253 21.0465 37.6807 20.0813C36.8282 19.107 36.0257 18.4024 35.2839 18.0514C34.5793 17.718 33.9639 17.7136 33.3544 18.0877ZM26.9977 27.3724C28.2164 28.3232 29.3649 29.4552 30.481 30.6036C30.6953 30.8241 30.9087 31.0454 31.1212 31.2658C32.1445 32.3271 33.1472 33.367 34.1263 34.1851C35.3019 35.1673 36.5591 35.9328 37.9153 35.9844C40.5364 36.0842 42.5311 34.3194 43.2687 31.7885C44.0046 29.2633 43.5174 25.9622 41.3077 22.7307C40.4506 21.4771 39.5641 20.2451 38.6662 19.2189C37.7762 18.2018 36.831 17.3348 35.8441 16.8677C34.8201 16.3832 33.7259 16.3231 32.6693 16.9717C31.6671 17.5869 30.7876 18.7883 29.9909 20.5976C29.0884 22.6469 27.9992 24.2838 26.828 25.6282C25.3916 24.6541 23.8138 23.9143 22.0625 23.6582C19.0109 23.2119 15.4273 23.1923 12.2513 23.7262C10.2096 24.0693 8.26617 24.6529 6.74393 25.5496C6.60147 25.5862 6.4702 25.6424 6.35613 25.7032C6.04379 25.8696 5.74152 26.1298 5.46266 26.4162C5.32689 26.5557 5.18946 26.7089 5.05152 26.8728C4.9297 27.0026 4.81468 27.1366 4.70689 27.2748C4.67448 27.3164 4.64788 27.3606 4.62697 27.4066C4.33498 27.7928 4.04612 28.2118 3.77149 28.6328C2.69493 30.2835 1.75197 32.1001 1.58189 32.4775C1.43333 32.8072 1.58017 33.1949 1.90986 33.3435C2.23956 33.492 2.62725 33.3452 2.77581 33.0155C2.91483 32.707 3.82398 30.9495 4.86835 29.3482C5.25868 28.7497 5.65613 28.1915 6.02908 27.7449C6.33292 27.4257 6.6973 27.1304 7.11467 26.8595C7.37632 27.0248 7.69183 27.3981 8.06425 28.0377C8.3962 28.6078 8.71814 29.2866 9.06451 30.0168C9.1447 30.1859 9.22621 30.3577 9.30945 30.5316C9.74195 31.4351 10.2174 32.3845 10.7668 33.1661C11.3092 33.9376 11.987 34.6393 12.8628 34.9202C14.1168 35.3223 15.5779 34.8555 16.9699 34.1875C18.1367 33.6275 19.3967 32.8519 20.6422 32.0853C20.916 31.9168 21.1891 31.7487 21.4604 31.5834C23.1733 30.5397 25.1435 29.2618 26.9977 27.3724ZM25.9223 26.5972C24.6656 25.7686 23.3283 25.1668 21.873 24.9539C18.9437 24.5256 15.4979 24.5083 12.4683 25.0176C10.9108 25.2794 9.50581 25.6731 8.34494 26.1961C8.67199 26.5372 8.95123 26.9585 9.19592 27.3788C9.55857 28.0016 9.9107 28.7444 10.2582 29.4775C10.3359 29.6414 10.4133 29.8048 10.4906 29.9662C10.9239 30.8713 11.3584 31.7305 11.8382 32.413C12.325 33.1056 12.7956 33.5234 13.2627 33.6732C13.9876 33.9057 15.026 33.6679 16.4033 33.0069C17.5022 32.4795 18.6884 31.7497 19.9317 30.9847C20.2113 30.8127 20.4939 30.6388 20.779 30.4651C22.4068 29.4733 24.2196 28.2965 25.9223 26.5972Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.2738 8.74153C28.7347 7.73423 31.1395 7.31976 33.2846 7.88505C34.8095 8.2869 36.1565 9.63731 37.3093 11.3294C38.4784 13.0456 39.5235 15.2265 40.4062 17.4749C42.1684 21.9634 43.3296 26.8412 43.5245 29.0684C43.5532 29.3959 43.311 29.6846 42.9835 29.7132C42.656 29.7419 42.3673 29.4997 42.3386 29.1722C42.1566 27.0931 41.0335 22.3302 39.2981 17.91C38.432 15.704 37.4249 13.6136 36.3254 11.9997C35.2096 10.3618 34.0714 9.3235 32.9813 9.03623C31.186 8.56313 29.0636 8.88599 26.7248 9.84329C24.392 10.7981 21.9029 12.3604 19.4112 14.2778C14.4288 18.1117 9.5147 23.3037 5.92747 27.6752C5.71893 27.9293 5.34386 27.9663 5.08973 27.7577C4.8356 27.5492 4.79864 27.1741 5.00718 26.92C8.62877 22.5067 13.6071 17.2418 18.6852 13.3343C21.2237 11.3809 23.8069 9.75128 26.2738 8.74153Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.88892 23.549C5.89569 23.7304 4.94538 24.1214 4.35372 24.7523C3.59124 25.5654 3.1197 27.0035 2.8729 28.5948C2.63064 30.1568 2.62393 31.7349 2.69173 32.6988C2.7171 33.0595 2.44525 33.3725 2.08452 33.3979C1.7238 33.4233 1.41081 33.1514 1.38543 32.7907C1.31189 31.745 1.31931 30.0675 1.57885 28.3941C1.83384 26.7499 2.35174 24.9727 3.39852 23.8565C4.26076 22.9371 5.52494 22.4669 6.65364 22.2608C7.77577 22.0558 8.90756 22.0864 9.58715 22.3024L9.19042 23.5504C8.78631 23.4219 7.88872 23.3664 6.88892 23.549Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

11
src/assets/images/menu/bg.svg

@ -0,0 +1,11 @@
<svg width="1920" height="132" viewBox="0 0 1920 132" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3189_7525)">
<path d="M557.033 1.00008L1921 1.00012L1921 139L-3.00001 139L-3 71.0001L334.967 71.0001C374.897 71.0001 413.861 58.7178 446.573 35.8193C478.949 13.1561 517.513 1.00008 557.033 1.00008Z" fill="#F6F6F6" fill-opacity="0.95" stroke="white" stroke-width="2"/>
<path d="M2.38464e-07 131.999L1920 132L1920 128L1.27147e-07 128L2.38464e-07 131.999Z" fill="#E00068"/>
</g>
<defs>
<clipPath id="clip0_3189_7525">
<rect width="1920" height="132" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 616 B

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

@ -0,0 +1,3 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M36.501 23.3207L36.1002 23.5879V36.2329H37.7669V37.7662H6.23356V36.2329H7.90023V23.5882L7.49987 23.321C6.59706 22.7184 5.85698 21.9022 5.34534 20.945C4.83369 19.9877 4.5663 18.9184 4.5669 17.8329C4.5669 16.6165 4.89648 15.449 5.49284 14.459L5.49714 14.4518L10.0213 6.61624C10.0886 6.4997 10.1854 6.40292 10.3019 6.33563C10.4185 6.26834 10.5507 6.23292 10.6853 6.23291H33.3169C33.4514 6.23291 33.5836 6.26834 33.7002 6.33563C33.8167 6.40289 33.9135 6.49976 33.9808 6.61624L38.4882 14.4267L38.4925 14.4338C39.3674 15.8869 39.6486 17.6213 39.2777 19.2763C38.9068 20.9314 37.9123 22.3799 36.501 23.3207ZM9.43356 24.2811L10.4341 24.3935C11.4423 24.5068 12.463 24.386 13.4168 24.0403C14.3707 23.6946 15.2319 23.1335 15.9334 22.4006L16.5835 21.7214L17.2337 22.4006C17.8496 23.0439 18.5894 23.5558 19.4085 23.9054C20.2277 24.255 21.1092 24.435 21.9998 24.4346C22.8906 24.4346 23.7727 24.2542 24.5919 23.9041C25.411 23.554 26.1508 23.0415 26.7664 22.3976L27.4167 21.7174L28.0672 22.3974C28.7686 23.1306 29.6298 23.692 30.5836 24.0379C31.5374 24.3839 32.5582 24.505 33.5666 24.3919L34.5669 24.2796V36.2329H9.43356V24.2811ZM37.1671 15.204C37.5254 15.8004 37.757 16.4643 37.8475 17.1543C37.9384 17.8472 37.8849 18.5514 37.6905 19.2226C37.4961 19.8938 37.1649 20.5175 36.7178 21.0546C36.2707 21.5917 35.7174 22.0304 35.0926 22.3434C34.4677 22.6563 33.7849 22.8365 33.0871 22.8728C32.3892 22.9091 31.6914 22.8007 31.0375 22.5543C30.3835 22.3079 29.7876 21.929 29.2872 21.4412C28.7868 20.9534 28.3928 20.3674 28.1297 19.72L28.1283 19.7165C27.8702 19.0734 26.9618 19.0759 26.7058 19.7157C26.3302 20.6565 25.6812 21.4631 24.8426 22.0315C24.0037 22.5999 23.0136 22.9038 22.0002 22.9038C20.9869 22.9038 19.9968 22.5999 19.1579 22.0315C18.3194 21.4632 17.6705 20.6567 17.2948 19.7161C17.0364 19.0734 16.1285 19.076 15.8725 19.7157L15.8463 19.7809L15.8104 19.8414C15.1575 20.939 14.1141 21.7496 12.8891 22.1108C11.6641 22.4721 10.3479 22.3575 9.20383 21.7898C8.05977 21.2221 7.1723 20.2433 6.71903 19.0493C6.26577 17.8553 6.28015 16.5341 6.7593 15.3503L6.78283 15.2921L11.129 7.76624H32.8696L37.1671 15.204Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

5
src/assets/images/menu/map.svg

@ -0,0 +1,5 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M39.6875 13.75C40.1017 13.75 40.4375 14.0858 40.4375 14.5V33.1863C40.4375 33.5324 40.2261 33.8434 39.9043 33.9708L30.5979 37.6551C29.5986 38.0508 28.4906 38.0757 27.4745 37.7253L16.4017 33.9071C15.7748 33.6909 15.0939 33.6885 14.4655 33.9004L4.67576 37.2003C4.1289 37.3846 3.5625 36.9778 3.5625 36.4007V17.7812C3.5625 17.367 3.89829 17.0312 4.3125 17.0312C4.72671 17.0312 5.0625 17.367 5.0625 17.7812V35.487L13.9864 32.4789C14.929 32.1612 15.9503 32.1647 16.8907 32.489L27.9635 36.3072C28.6409 36.5408 29.3795 36.5242 30.0458 36.2605L38.9375 32.7403V14.5C38.9375 14.0858 39.2733 13.75 39.6875 13.75Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 26.4476L27.572 20.9093C28.6726 19.8149 29.421 18.4218 29.7241 16.9065C30.0272 15.3913 29.8716 13.8206 29.2766 12.3928C28.6816 10.9648 27.6735 9.74294 26.3783 8.88263C25.0831 8.02225 23.5594 7.5625 22 7.5625C20.4406 7.5625 18.9169 8.02225 17.6217 8.88263C16.3265 9.74294 15.3184 10.9648 14.7234 12.3928C14.1284 13.8206 13.9728 15.3913 14.2759 16.9065C14.579 18.4218 15.3274 19.8149 16.428 20.9093L22 26.4476ZM22 28.5625L15.3703 21.9729C14.0594 20.6694 13.1666 19.0086 12.805 17.2007C12.4434 15.3928 12.6292 13.5188 13.3388 11.8158C14.0484 10.1128 15.25 8.65724 16.7917 7.63317C18.3334 6.60909 20.1459 6.0625 22 6.0625C23.8541 6.0625 25.6666 6.60909 27.2083 7.63317C28.75 8.65724 29.9516 10.1128 30.6612 11.8158C31.3708 13.5188 31.5566 15.3928 31.195 17.2007C30.8334 19.0086 29.9406 20.6694 28.6297 21.9729L22 28.5625Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M22 16C22.8284 16 23.5 15.3284 23.5 14.5C23.5 13.6716 22.8284 13 22 13C21.1716 13 20.5 13.6716 20.5 14.5C20.5 15.3284 21.1716 16 22 16ZM22 17.3125C23.5533 17.3125 24.8125 16.0533 24.8125 14.5C24.8125 12.9467 23.5533 11.6875 22 11.6875C20.4467 11.6875 19.1875 12.9467 19.1875 14.5C19.1875 16.0533 20.4467 17.3125 22 17.3125Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

3
src/assets/images/menu/member.svg

@ -0,0 +1,3 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M22.6244 6.08976C22.5534 5.99038 22.4596 5.90901 22.351 5.85312C22.2425 5.79723 22.1221 5.76807 22 5.76807C21.8779 5.76807 21.7576 5.79723 21.6491 5.85312C21.5405 5.90901 21.4469 5.99002 21.376 6.0894L13.8925 16.5656L6.39582 11.5666H6.39474L6.16829 11.416C6.04648 11.335 5.90404 11.2905 5.75777 11.2878C5.61151 11.2852 5.46753 11.3244 5.34283 11.4009C5.21813 11.4774 5.11792 11.5879 5.05403 11.7196C4.99021 11.851 4.96529 11.998 4.98221 12.1432L7.72052 35.423C7.74252 35.6094 7.83218 35.7815 7.97247 35.9062C8.11277 36.031 8.29397 36.0999 8.4817 36.1H35.5184C35.7061 36.0999 35.8873 36.031 36.0276 35.9062C36.1679 35.7815 36.2576 35.6094 36.2796 35.423L39.0179 12.1443C39.0351 11.9989 39.0103 11.8517 38.9465 11.7199C38.8827 11.5882 38.7825 11.4775 38.6578 11.4009C38.533 11.3243 38.389 11.285 38.2426 11.2877C38.0963 11.2904 37.9538 11.3349 37.8319 11.4159L30.1075 16.5655L22.6244 6.08976ZM6.69873 13.6126L14.2775 18.6644L22 7.85324L29.5314 18.3968L29.7226 18.6644L37.3013 13.6126L34.8371 34.5666H10.3049H9.16301L6.69873 13.6126Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

5
src/assets/images/menu/parking.svg

@ -0,0 +1,5 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.8329 29.4331C12.4086 29.4331 12.0016 29.2645 11.7015 28.9644C11.4015 28.6644 11.2329 28.2574 11.2329 27.8331C11.2329 27.4087 11.4015 27.0018 11.7015 26.7017C12.0016 26.4016 12.4086 26.2331 12.8329 26.2331C13.2573 26.2331 13.6642 26.4016 13.9643 26.7017C14.2643 27.0018 14.4329 27.4087 14.4329 27.8331C14.4329 28.2574 14.2643 28.6644 13.9643 28.9644C13.6642 29.2645 13.2573 29.4331 12.8329 29.4331Z" fill="#E00068"/>
<path d="M31.1662 29.4331C30.7419 29.4331 30.3349 29.2645 30.0349 28.9644C29.7348 28.6644 29.5662 28.2574 29.5662 27.8331C29.5662 27.4087 29.7348 27.0018 30.0349 26.7017C30.3349 26.4016 30.7419 26.2331 31.1662 26.2331C31.5906 26.2331 31.9976 26.4016 32.2976 26.7017C32.5977 27.0018 32.7662 27.4087 32.7662 27.8331C32.7662 28.2574 32.5977 28.6644 32.2976 28.9644C31.9976 29.2645 31.5906 29.4331 31.1662 29.4331Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M34.7908 37.5419C34.647 37.3981 34.5662 37.2031 34.5662 36.9997V34.4331H9.43291V36.9997C9.43291 37.2031 9.35214 37.3981 9.20836 37.5419C9.06458 37.6856 8.86958 37.7664 8.66624 37.7664H6.99958C6.79624 37.7664 6.60124 37.6856 6.45746 37.5419C6.31368 37.3981 6.23291 37.2031 6.23291 36.9997V20.5178L10.2935 11.0409C10.4813 10.6029 10.7935 10.2298 11.1914 9.96764C11.5894 9.7055 12.0564 9.56598 12.5329 9.56641H31.4662C31.9423 9.56648 32.408 9.70622 32.8054 9.96831C33.2029 10.2304 33.5148 10.6035 33.7024 11.0411L37.7662 20.5179V36.9997C37.7662 37.2031 37.6855 37.3981 37.5417 37.5419C37.3979 37.6856 37.2029 37.7664 36.9996 37.7664H35.3329C35.1296 37.7664 34.9346 37.6856 34.7908 37.5419ZM36.2329 22.7664V32.8997H7.76624V22.7664H36.2329ZM7.59441 21.2331L11.9396 11.0997H32.0614L36.4045 21.2331H7.59441Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

4
src/assets/images/menu/service.svg

@ -0,0 +1,4 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M37.7667 31.9999C37.7667 32.4233 37.4235 32.7666 37.0001 32.7666H12.4464L6.2334 37.6482V8.66657C6.2334 8.24316 6.57665 7.8999 7.00007 7.8999H37.0001C37.4235 7.8999 37.7667 8.24315 37.7667 8.66657V31.9999ZM7.76673 34.4935V9.43324H36.2334V31.2332H11.916L7.76673 34.4935Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.0681 16.2346C15.9552 17.3476 15.9552 19.1521 17.0681 20.2652L22.0297 25.2266L26.9912 20.2652C28.1042 19.1521 28.1042 17.3476 26.9912 16.2347C25.8865 15.1301 24.1007 15.1219 22.9858 16.2098C22.9774 16.218 22.969 16.2263 22.9606 16.2347L22.0299 17.1658L21.0987 16.2347C21.0901 16.226 21.0814 16.2175 21.0727 16.209C19.9578 15.1217 18.1725 15.1303 17.0681 16.2346ZM23.9505 17.2247L22.0302 19.1458L20.1088 17.2247C19.5425 16.6584 18.6243 16.6583 18.0581 17.2246C17.4919 17.7908 17.4918 18.7089 18.0581 19.2752C18.0581 19.2752 18.0581 19.2752 18.0581 19.2752L22.0297 23.2467L26.0012 19.2752C26.5675 18.7089 26.5675 17.7909 26.0012 17.2246C25.4352 16.6586 24.5169 16.6587 23.9505 17.2247C23.9504 17.2248 23.9506 17.2246 23.9505 17.2247Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

3
src/assets/images/menu/traffic.svg

@ -0,0 +1,3 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.56689 36.1001V34.5667H7.90023V11.4998C7.90018 11.3424 7.94857 11.1888 8.03882 11.0599C8.12907 10.931 8.25681 10.833 8.40469 10.7791L24.4336 4.95166V13.7605L35.5758 17.474C35.7286 17.5248 35.8614 17.6225 35.9555 17.7531C36.0496 17.8836 36.1003 18.0408 36.1002 18.2017V34.5667H39.4336V36.1001H4.56689ZM9.43356 34.5667V12.0381L22.9002 7.14005V34.5667H9.43356ZM34.5669 34.5667H24.4336V15.3763L34.5669 18.7548V34.5667Z" fill="#E00068"/>
</svg>

After

Width:  |  Height:  |  Size: 587 B

3
src/assets/images/nav/2D.svg

@ -1,3 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.6236 5.27583C15.6692 5.24844 15.8025 5.1998 16.0001 5.1998C16.1977 5.1998 16.3311 5.24844 16.3767 5.27583L27.5833 11.9998L16.3767 18.7238C16.3311 18.7512 16.1977 18.7998 16.0001 18.7998C15.8025 18.7998 15.6692 18.7512 15.6236 18.7238L4.41692 11.9998L15.6236 5.27583ZM17.6115 3.21784C17.1082 2.91586 16.522 2.7998 16.0001 2.7998C15.4782 2.7998 14.8921 2.91586 14.3888 3.21784L2.46112 10.3744C1.95858 10.676 1.4668 11.2272 1.4668 11.9998C1.4668 12.7724 1.95858 13.3237 2.46112 13.6252L14.3888 20.7818C14.8921 21.0838 15.4782 21.1998 16.0001 21.1998C16.522 21.1998 17.1082 21.0838 17.6115 20.7818L29.5391 13.6252C30.0417 13.3237 30.5335 12.7724 30.5335 11.9998C30.5335 11.2272 30.0417 10.676 29.5391 10.3744L17.6115 3.21784ZM2.46112 18.3747L4.30488 17.2685L6.60773 18.6856L4.41692 20.0001L15.6236 26.7241C15.6692 26.7515 15.8025 26.8001 16.0001 26.8001C16.1977 26.8001 16.3311 26.7515 16.3767 26.7241L27.5833 20.0001L25.3924 18.6855L27.6953 17.2684L29.5391 18.3747C30.0417 18.6763 30.5335 19.2275 30.5335 20.0001C30.5335 20.7727 30.0417 21.324 29.5391 21.6255L17.6115 28.7821C17.1082 29.084 16.522 29.2001 16.0001 29.2001C15.4782 29.2001 14.8921 29.084 14.3888 28.7821L2.46112 21.6255C1.95858 21.324 1.4668 20.7727 1.4668 20.0001C1.4668 19.2275 1.95858 18.6763 2.46112 18.3747Z" fill="#605E74"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.6108 3.218C17.1075 2.91601 16.5214 2.79996 15.9995 2.79996C15.4776 2.79996 14.8914 2.91601 14.3881 3.218L2.46045 10.3746C1.9579 10.6761 1.46613 11.2274 1.46613 12C1.46613 12.7725 1.95791 13.3238 2.46045 13.6253L14.3881 20.7819C14.8914 21.0839 15.4776 21.2 15.9995 21.2C16.5214 21.2 17.1075 21.0839 17.6108 20.7819L29.5385 13.6253C30.041 13.3238 30.5328 12.7725 30.5328 12C30.5328 11.2274 30.041 10.6761 29.5385 10.3746L17.6108 3.218ZM15.6229 5.27598C15.6685 5.24859 15.8019 5.19996 15.9995 5.19996C16.197 5.19996 16.3304 5.24859 16.376 5.27598L27.5827 12L16.376 18.7239C16.3304 18.7513 16.197 18.8 15.9995 18.8C15.8019 18.8 15.6685 18.7513 15.6229 18.7239L4.41625 12L15.6229 5.27598Z" fill="#E00068"/>
<path d="M2.46045 18.3749L4.30421 17.2686L6.60706 18.6858L4.41625 20.0003L15.6229 26.7242C15.6685 26.7516 15.8019 26.8003 15.9995 26.8003C16.197 26.8003 16.3304 26.7516 16.376 26.7242L27.5827 20.0003L25.3917 18.6857L27.6946 17.2685L29.5385 18.3749C30.041 18.6764 30.5328 19.2277 30.5328 20.0003C30.5328 20.7728 30.041 21.3241 29.5385 21.6256L17.6108 28.7822C17.1075 29.0842 16.5214 29.2003 15.9995 29.2003C15.4776 29.2003 14.8914 29.0842 14.3881 28.7822L2.46045 21.6256C1.95791 21.3241 1.46613 20.7728 1.46613 20.0003C1.46613 19.2277 1.9579 18.6764 2.46045 18.3749Z" fill="#E00068"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

3
src/assets/images/nav/3D.svg

@ -1,3 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.3004 1.28779C16.496 0.823342 15.5048 0.823342 14.7004 1.28779L3.90937 7.51799C3.10493 7.98243 2.60938 8.84076 2.60938 9.76965V22.2301C2.60938 23.1589 3.10493 24.0173 3.90938 24.4817L14.7004 30.7119C15.5048 31.1764 16.496 31.1764 17.3004 30.7119L28.0914 24.4817C28.8959 24.0173 29.3914 23.1589 29.3914 22.2301V9.76965C29.3914 8.84076 28.8959 7.98243 28.0914 7.51799L17.3004 1.28779ZM15.9671 3.48172C15.9877 3.46981 16.0131 3.46981 16.0337 3.48172L26.8248 9.71192C26.8454 9.72383 26.8581 9.74584 26.8581 9.76965V22.2301C26.8581 22.2539 26.8454 22.2759 26.8248 22.2878L16.0337 28.518C16.0131 28.5299 15.9877 28.5299 15.9671 28.518L5.17604 22.2878C5.15542 22.2759 5.14271 22.2539 5.14271 22.2301V9.76965C5.14271 9.74584 5.15542 9.72383 5.17604 9.71192L15.9671 3.48172ZM8.63818 10.2391C8.03392 9.88659 7.25831 10.0907 6.90583 10.695C6.55334 11.2992 6.75744 12.0748 7.36171 12.4273L14.7333 16.7274V25.3332C14.7333 26.0328 15.3004 26.5999 15.9999 26.5999C16.6995 26.5999 17.2666 26.0328 17.2666 25.3332V16.7274L24.6382 12.4273C25.2424 12.0748 25.4466 11.2992 25.0941 10.695C24.7416 10.0907 23.966 9.88659 23.3617 10.2391L15.9999 14.5334L8.63818 10.2391Z" fill="#535D75"/>
<path d="M8.63818 10.2392C8.03392 9.88674 7.25831 10.0908 6.90583 10.6951C6.55334 11.2994 6.75744 12.075 7.36171 12.4275L14.7333 16.7276V25.3333C14.7333 26.0329 15.3004 26.6 15.9999 26.6C16.6995 26.6 17.2666 26.0329 17.2666 25.3333V16.7276L24.6382 12.4275C25.2425 12.075 25.4466 11.2994 25.0941 10.6951C24.7416 10.0908 23.966 9.88674 23.3617 10.2392L15.9999 14.5336L8.63818 10.2392Z" fill="#E00068"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.3004 1.28794C16.496 0.823494 15.5048 0.823495 14.7004 1.28794L3.90937 7.51814C3.10493 7.98259 2.60938 8.84092 2.60938 9.76981V22.2302C2.60938 23.1591 3.10493 24.0174 3.90938 24.4819L14.7004 30.7121C15.5048 31.1765 16.496 31.1765 17.3004 30.7121L28.0914 24.4819C28.8959 24.0174 29.3914 23.1591 29.3914 22.2302V9.76981C29.3914 8.84092 28.8959 7.98259 28.0914 7.51814L17.3004 1.28794ZM15.9671 3.48187C15.9877 3.46996 16.0131 3.46996 16.0337 3.48187L26.8248 9.71207C26.8454 9.72398 26.8581 9.74599 26.8581 9.76981V22.2302C26.8581 22.254 26.8454 22.276 26.8248 22.2879L16.0337 28.5181C16.0131 28.5301 15.9877 28.5301 15.9671 28.5181L5.17604 22.2879C5.15541 22.276 5.14271 22.254 5.14271 22.2302V9.76981C5.14271 9.74599 5.15542 9.72398 5.17604 9.71207L15.9671 3.48187Z" fill="#E00068"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

3
src/assets/images/nav/cb.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="M7.28404 26.0893C9.70345 28.1858 12.7987 29.3378 16 29.3333C23.364 29.3333 29.3334 23.364 29.3334 16C29.3334 8.63599 23.364 2.66666 16 2.66666C8.63604 2.66666 2.66671 8.63599 2.66671 16C2.66671 18.848 3.56004 21.488 5.08004 23.6533L9.33337 16L5.33337 16C5.33358 13.5416 6.18295 11.1587 7.73781 9.25451C9.29267 7.35028 11.4576 6.04158 13.8663 5.5498C16.275 5.05802 18.7796 5.41335 20.9565 6.55568C23.1333 7.69801 24.8488 9.55721 25.8127 11.8188C26.7765 14.0803 26.9296 16.6054 26.2461 18.9668C25.5625 21.3283 24.0842 23.3811 22.0613 24.7781C20.0383 26.175 17.595 26.8303 15.1445 26.6332C12.694 26.436 10.3869 25.3984 8.61337 23.696L7.28404 26.0893Z" fill="#615C59"/>
</svg>

After

Width:  |  Height:  |  Size: 778 B

3
src/assets/images/nav/js.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="M16 17.7773L3.70263 25.976C3.60223 26.0428 3.4856 26.0811 3.36515 26.0869C3.2447 26.0927 3.12494 26.0656 3.01863 26.0087C2.91231 25.9518 2.82343 25.8671 2.76144 25.7637C2.69946 25.6602 2.66669 25.5419 2.66663 25.4213V6.57868C2.66669 6.45809 2.69946 6.33977 2.76144 6.23633C2.82343 6.1329 2.91231 6.04821 3.01863 5.99129C3.12494 5.93437 3.2447 5.90735 3.36515 5.91312C3.4856 5.91888 3.60223 5.9572 3.70263 6.02401L16 14.2227V6.57868C16 6.45809 16.0328 6.33977 16.0948 6.23633C16.1568 6.1329 16.2456 6.04821 16.352 5.99129C16.4583 5.93437 16.578 5.90735 16.6985 5.91312C16.8189 5.91888 16.9356 5.9572 17.036 6.02401L31.168 15.4453C31.2593 15.5062 31.3341 15.5887 31.3859 15.6855C31.4377 15.7822 31.4648 15.8903 31.4648 16C31.4648 16.1098 31.4377 16.2178 31.3859 16.3146C31.3341 16.4113 31.2593 16.4938 31.168 16.5547L17.036 25.976C16.9356 26.0428 16.8189 26.0811 16.6985 26.0869C16.578 26.0927 16.4583 26.0656 16.352 26.0087C16.2456 25.9518 16.1568 25.8671 16.0948 25.7637C16.0328 25.6602 16 25.5419 16 25.4213V17.7773V17.7773ZM13.8586 16L5.33329 10.316V21.684L13.8586 16ZM18.6666 10.316V21.684L27.192 16L18.6666 10.316Z" fill="#615C59"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

4
src/assets/images/nav/jsAc.svg

@ -0,0 +1,4 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M7 7V17H17V7H7ZM6 5H18C18.2652 5 18.5196 5.10536 18.7071 5.29289C18.8946 5.48043 19 5.73478 19 6V18C19 18.2652 18.8946 18.5196 18.7071 18.7071C18.5196 18.8946 18.2652 19 18 19H6C5.73478 19 5.48043 18.8946 5.29289 18.7071C5.10536 18.5196 5 18.2652 5 18V6C5 5.73478 5.10536 5.48043 5.29289 5.29289C5.48043 5.10536 5.73478 5 6 5Z" fill="white
"/>
</svg>

After

Width:  |  Height:  |  Size: 456 B

3
src/assets/images/nav/zanting.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="M8 6.66666H10.6667V25.3333H8V6.66666ZM21.3333 6.66666H24V25.3333H21.3333V6.66666Z" fill="#615C59"/>
</svg>

After

Width:  |  Height:  |  Size: 212 B

3
src/assets/images/nav/zantingAc.svg

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.08562 8.51932V16.4784L14.3737 12.4989L8.08562 8.51932ZM6.7842 5.07822L17.742 12.0125C17.8205 12.0623 17.8857 12.1336 17.9309 12.2192C17.9762 12.3049 18 12.4019 18 12.5006C18 12.5993 17.9762 12.6963 17.9309 12.7819C17.8857 12.8675 17.8205 12.9388 17.742 12.9887L6.7842 19.9229C6.70473 19.9732 6.61441 19.9998 6.5224 20C6.43039 20.0002 6.33997 19.974 6.26033 19.924C6.18068 19.874 6.11465 19.8021 6.06893 19.7155C6.02321 19.6288 5.99943 19.5306 6.00001 19.4308V5.56577C5.99998 5.46625 6.02416 5.36848 6.07011 5.28234C6.11605 5.1962 6.18214 5.12474 6.26169 5.07516C6.34124 5.02559 6.43144 4.99967 6.52318 5C6.61493 5.00034 6.70496 5.02693 6.7842 5.07709V5.07822Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 791 B

6
src/assets/scss/mixin.scss

@ -32,3 +32,9 @@
font-family: 'font_bold';
font-weight: 700;
}
@mixin fl($j: flex-start, $a: center) {
display: flex;
justify-content: $j;
align-items: $a;
}

118
src/components/Header/Header.vue

@ -0,0 +1,118 @@
<template>
<div class="header-container">
<div class="left" @click="go">
<div class="search-container">
<img src="@/assets/images/header/search.svg" alt="" />
<div class="line"></div>
<div>
<div class="text_zh">搜索</div>
<div class="text_en">SEARCH</div>
</div>
</div>
<div class="recommend" @click="show">
<img class="rem" src="@/assets/images/header/zan.svg" alt="" />
<div>{{ $t('header.recommend') }}</div>
</div>
</div>
<div class="right">
<WeaAndTime />
<img class="logo" src="@/assets/images/header/logo.svg" alt="" />
</div>
</div>
</template>
<script setup lang="ts">
import { useRootStore } from '@/store/root'
import WeaAndTime from './WeaAndTime.vue'
const store = useRootStore()
function go() {
store.SET_SHOW_SEARCH(true)
}
//
function show() {
store.SET_SHOW_COLUMNLIST(true)
}
</script>
<style lang="scss" scoped>
.header-container {
position: fixed;
top: 0;
left: 0;
z-index: 999;
@include fl(space-between);
width: 1920px;
height: 120px;
padding: 44px 56px 4px;
.left {
@include fl();
.search-container {
@include fl();
width: 332px;
height: 72px;
padding: 16px 0 16px 32px;
margin-right: 12px;
background: rgb(255 255 255 / 40%);
border: 2px solid #fff;
border-radius: 24px;
img {
width: 40px;
height: 40px;
}
.line {
width: 1px;
height: 24px;
margin: 0 16px;
background: rgb(0 0 0 / 20%);
}
.text_zh {
font-size: 20px;
font-family: 'font_regular';
color: #534f46;
font-style: normal;
font-weight: 400;
line-height: 28px;
}
.text_en {
font-size: 12px;
font-family: 'font_regular';
color: #615c59;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
}
.recommend {
height: 72px;
padding: 13px 24px;
font-size: 10px;
font-family: 'font_regular';
text-align: center;
color: #615c59;
background: rgb(255 255 255 / 30%);
border: 2px solid #fff;
border-radius: 24px;
font-style: normal;
font-weight: 400;
line-height: 10px;
.rem {
width: 32px;
height: 32px;
}
}
}
.right {
@include fl();
.logo {
width: 188px;
height: 40px;
}
}
}
</style>

77
src/components/Header/WeaAndTime.vue

@ -0,0 +1,77 @@
<template>
<div class="header-right">
<div class="weather">
<div :class="icon.icon" class="iconfont size"></div>
<div>{{ weather.temperatureNow }}°</div>
</div>
<div class="line"></div>
<div class="time">
<p class="current">{{ currentTime }}</p>
<div class="year">
<div>{{ formatDay(date) }}</div>
<div style="line-height: 12px">{{ whichWeek }}</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { useTime } from '@/composables/useTime'
import { useDay } from '@/composables/useDay'
import { useWeather } from '@/composables/useWeather'
import { formatDay } from '@/utils/utils'
const { weather, icon } = useWeather()
const { currentTime } = useTime()
const { date, whichWeek } = useDay()
</script>
<style lang="scss" scoped>
.header-right {
@include fl();
height: 36px;
margin-right: 56px;
.weather {
@include fl();
font-size: 24px;
font-family: 'font_bold';
color: #534f46;
font-style: normal;
font-weight: 700;
line-height: 34px;
.size {
margin-right: 8px;
font-size: 32px;
color: #8e9090;
}
}
.line {
width: 1px;
height: 20px;
margin: 0 24px;
background: rgb(0 0 0 / 20%);
}
.time {
@include fl();
.current {
margin-right: 12px;
font-size: 24px;
font-family: 'font_bold';
color: #534f46;
font-style: normal;
font-weight: 700;
line-height: 34px;
}
.year {
font-size: 10px;
font-family: 'font_bold';
color: #615c59;
font-weight: 700;
line-height: 14px;
}
}
}
</style>

32
src/components/Map/Map.vue

@ -69,13 +69,13 @@ function handleDetail() {
#shopInfo {
position: absolute;
z-index: 500;
width: 254px;
height: 128px;
width: 200px;
height: 109px;
background-position: center center;
background-repeat: no-repeat;
background-size: contain;
visibility: hidden;
background-image: url('@/assets/images/map/map-dialog.png');
background-image: url('@/assets/images/map/map-dialog.svg');
#shopNum {
height: 60px;
padding: 25px 36px 0;
@ -88,26 +88,24 @@ function handleDetail() {
}
.go-button {
width: 125px;
height: 40px;
padding-right: 20px;
font-size: 16px;
font-family: 'font_bold';
padding-right: 5px;
font-size: 14px;
font-family: 'font_regular';
text-align: center;
color: #8487a6;
line-height: 50px;
font-weight: 700;
color: #615c59;
line-height: 22px;
font-weight: 400;
}
.pop-bottom__detail {
height: 40px;
padding-left: 24px;
font-size: 16px;
font-family: 'font_bold';
padding-left: 45px;
font-size: 14px;
font-family: 'font_regular';
text-align: center;
color: #8487a6;
color: #615c59;
flex: 1;
line-height: 50px;
font-weight: 700;
line-height: 22px;
font-weight: 400;
}
}
#moveFloorBG {

182
src/components/Menu/Menu.vue

@ -0,0 +1,182 @@
<template>
<div class="menu-container">
<div class="language-items">
<div class="language-item" :class="{ active: language === 'zh' }" @click="changeLang('zh')"></div>
<div class="language-item" :class="{ active: language === 'en' }" @click="changeLang('en')">EN</div>
</div>
<div class="menus">
<div v-for="item in list" :key="item.title" class="menu" :class="route.fullPath === item.path && 'ac'" @click="go(item)">
<img :src="item.icon" alt="" />
<div>
<div class="title" :class="route.fullPath === item.path && 'act'">{{ item.title }}</div>
<div class="titleEn">{{ item.titleEn }}</div>
</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { storeToRefs } from 'pinia'
import { useRoute, useRouter } from 'vue-router'
import { useRootStore } from '@/store/root'
import { useStatisticsModel } from '@/composables/useStatistics'
const store = useRootStore()
const { language } = storeToRefs(store)
function changeLang(lang: Language) {
if (lang === language.value) {
return
}
store.SET_LANGUAGE(lang)
}
type MenuList = {
title: string
titleEn: string
icon: string
path: string
}
const list: MenuList[] = [
{
title: '地图导览',
titleEn: 'MAP',
icon: require('@/assets/images/menu/map.svg'),
path: '/'
},
{
title: '品牌列表',
titleEn: 'BRAND',
icon: require('@/assets/images/menu/brand.svg'),
path: '/brand'
},
{
title: '活动精选',
titleEn: 'SELECTION',
icon: require('@/assets/images/menu/activity.svg'),
path: '/activity'
},
{
title: '会员专享',
titleEn: 'MEMBER',
icon: require('@/assets/images/menu/member.svg'),
path: '/member'
},
{
title: '自主寻车',
titleEn: 'PARKING',
icon: require('@/assets/images/menu/parking.svg'),
path: '/parking'
},
{
title: '贴心服务',
titleEn: 'SERVICE',
icon: require('@/assets/images/menu/service.svg'),
path: '/service'
},
{
title: '交通信息',
titleEn: 'TRAFFIC',
icon: require('@/assets/images/menu/traffic.svg'),
path: '/traffic'
},
{
title: '艺术装置',
titleEn: 'ARTWORK',
icon: require('@/assets/images/menu/art.svg'),
path: '/art'
}
]
const router = useRouter()
const route = useRoute()
function go(item: MenuList) {
router.push(item.path)
useStatisticsModel({ recordType: 1, moduleName: item.title })
}
</script>
<style lang="scss" scoped>
.menu-container {
position: fixed;
bottom: 0;
left: 0;
z-index: 999;
width: 1920px;
height: 132px;
background: url('@/assets/images/menu/bg.svg') no-repeat;
background-size: 100% 100%;
pointer-events: none;
& > * {
pointer-events: all;
}
.language-items {
@include fl();
position: absolute;
top: 82px;
left: 60px;
.language-item {
@include fl(center);
width: 40px;
height: 36px;
font-size: 16px;
font-family: 'font_regular';
color: #615c59;
font-style: normal;
font-weight: 400;
&.active {
color: #e00068;
background: #fff;
border-radius: 16px;
}
}
}
.menus {
@include fl();
position: absolute;
top: 16px;
left: 508px;
.menu {
@include fl(center);
width: 168px;
height: 96px;
margin-right: 4px;
color: #534f46;
img {
width: 44px;
height: 44px;
margin-right: 12px;
}
.title {
font-size: 16px;
font-family: 'font_regular';
font-style: normal;
font-weight: 400;
line-height: 24px;
}
.titleEn {
margin-top: 2px;
font-size: 12px;
font-family: 'font_regular';
font-style: normal;
font-weight: 400;
line-height: 14px;
}
}
.ac {
color: #fff;
background: #e00068;
border-radius: 40px 8px;
img {
filter: grayscale(1) brightness(800%);
}
}
}
}
</style>

10
src/components/PublicComponent/PublicComponent.vue

@ -1,5 +1,10 @@
<template>
<div></div>
<!-- 头部 -->
<Header />
<!-- 菜单 -->
<Menu />
<!-- 地图容器 -->
<Map @handle-go="handleGO" @handle-detail="handleDetail" />
@ -17,7 +22,8 @@ import { useRouter, useRoute } from 'vue-router'
import { useHandleScreen } from '@/composables/useHandleScreen'
import { useInitMap } from '@/composables/useInitMap'
import Map from '@/components/Map/Map.vue'
import Header from '@/components/Header/Header.vue'
import Menu from '../Menu/Menu.vue'
const AutoBackNotification = defineAsyncComponent(() => import('@/base/AutoBackNotification/AutoBackNotification.vue'))
const router = useRouter()

90
src/components/ShopItem/ShopItem.vue

@ -0,0 +1,90 @@
<template>
<div class="shop-container" @click="showDetail(shop)">
<div class="top">
<img :src="shop.logoUrl ? shop.logoUrl : require('@/assets/images/header/logo.svg')" class="logo" alt="" />
</div>
<div class="bottom">
<div class="shop-name">{{ switchLanguage(shop, 'shopName') }}</div>
<div class="right">
<img v-if="shop.industryUrl" :src="shop.industryUrl" alt="" />
<div class="ins">{{ shop.floor }}</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { useRootStore } from '@/store/root'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
interface Prop {
shop: Shop
}
defineProps<Prop>()
const { switchLanguage } = useSwitchLanguage()
const store = useRootStore()
function showDetail(shop: Shop) {
store.SET_SHOP(shop)
store.SET_SHOW_DETAIL(true)
}
</script>
<style lang="scss" scoped>
.shop-container {
width: 212px;
height: 176px;
background: #fff;
border-radius: 16px;
.top {
@include fl(center);
position: relative;
width: 212px;
height: 136px;
border-radius: 16px 16px 0 0;
.logo {
width: 150px;
height: 150px;
object-fit: scale-down;
}
}
.bottom {
@include fl(space-between);
width: 212px;
height: 40px;
padding: 9px 16px;
background: rgb(255 255 255 / 60%);
border-radius: 0 0 16px 16px;
.shop-name {
@include no-wrap;
max-width: 120px;
font-size: 14px;
font-family: 'font_bold';
color: #534f46;
font-style: normal;
font-weight: 700;
line-height: 22px;
}
.right {
@include fl;
img {
width: 16px;
height: 16px;
margin-right: 8px;
}
.ins {
font-size: 14px;
font-family: 'font_bold';
color: #615c59;
font-style: normal;
font-weight: 700;
line-height: 22px;
}
}
}
}
</style>

19
src/composables/useArea.ts

@ -0,0 +1,19 @@
import { ref, shallowRef, toRefs } from 'vue'
import { useRootStore } from '@/store/root'
import { hideMapDialog } from '@/composables/useInitMap'
export const useArea = () => {
const store = useRootStore()
const { shopList, device } = toRefs(store)
const areaName = ref('全部区域') //楼层选中索引
const selectedShopListA = shallowRef<Shop[]>(shopList.value.filter(item => item.floor === device.value.floor)) //选中楼层的店铺列表
// 切换楼层
function changeArea(name: string) {
areaName.value = name
selectedShopListA.value = shopList.value.filter(item => item.floor === name)
hideMapDialog()
}
return { areaName, selectedShopListA, changeArea }
}

2
src/composables/useDay.ts

@ -14,5 +14,5 @@ export const useDay = () => {
const whichWeek = computed(() => days[language.value][date.getDay()])
return { whichWeek }
return { date, whichWeek }
}

24
src/composables/useGuideFilterShop.ts

@ -1,22 +1,20 @@
import { ref, shallowRef, toRefs } from 'vue'
import { useRootStore } from '@/store/root'
import { hideMapDialog } from '@/composables/useInitMap'
export const useGuideFilterShop = () => {
const store = useRootStore()
const { shopList, currentBuildingFloorsList, device } = toRefs(store)
const floorIdx = ref(-1) //楼层选中索引
const selectedShopList = shallowRef<Shop[]>([]) //选中楼层的店铺列表
const { shopList, device } = toRefs(store)
function filterShopByFloorName(floorName: string) {
selectedShopList.value = shopList.value.filter(item => item.floor === floorName)
}
const floorIdx = ref(device.value.floorOrder) //楼层选中索引
const selectedShopList = shallowRef<Shop[]>(shopList.value.filter(item => item.floor === device.value.floor)) //选中楼层的店铺列表
// //筛选当前楼层所需数据
function filterAboutCurrentInfo() {
floorIdx.value = currentBuildingFloorsList.value.findIndex(item => item.floor === device.value.floor)
selectedShopList.value = shopList.value.filter(item => item.floor === device.value.floor)
// 切换楼层
function changeFloor(floorOrder: number) {
floorIdx.value = floorOrder
selectedShopList.value = shopList.value.filter(item => item.floorOrder === floorOrder)
hideMapDialog()
window.Map_QM.showFloor(floorOrder)
}
return { floorIdx, selectedShopList, filterShopByFloorName, filterAboutCurrentInfo }
return { floorIdx, selectedShopList, changeFloor }
}

36
src/composables/useStatistics.ts

@ -1,12 +1,19 @@
import { useRootStore } from '@/store/root'
import { storeToRefs } from 'pinia'
import { getStatistics } from '@/http/api/statistics'
import type { Query, TagType } from '@/http/api/statistics/types'
import { getStatistics, getGuideClickDataUpload } from '@/http/api/statistics'
import type { Query, TagType, Clickquery, RecordType } from '@/http/api/statistics/types'
type Params = { tag: TagType; shopCode?: string | number; industryCode?: string }
//店铺编码: tag=navigation或shop或brandSearch或时必传
//industryCode : tag=industry时必传
export const useStatistics = ({ tag, shopCode, industryCode = '' }: Params) => {
export const useStatistics = ({
tag,
shopCode,
industryCode = ''
}: {
tag: TagType
shopCode?: string | number
industryCode?: string
}) => {
const store = useRootStore()
const { device } = storeToRefs(store)
@ -20,3 +27,24 @@ export const useStatistics = ({ tag, shopCode, industryCode = '' }: Params) => {
getStatistics(params)
}
type Stype = {
recordType: RecordType
moduleName?: string
activityCode?: string
}
// 模块、活动、使用人次统计
export const useStatisticsModel = ({ recordType, moduleName, activityCode }: Stype) => {
const store = useRootStore()
const { device } = storeToRefs(store)
const params: Clickquery = {
deviceCode: device.value.machineCode,
projectCode: device.value.projectCode,
recordType,
moduleName,
activityCode
}
getGuideClickDataUpload(params)
}

10
src/http/api/statistics/index.ts

@ -1,7 +1,7 @@
import { request } from '../../http'
import type { Query } from './types'
import { getPrefixUrl } from '../../http'
import type { Query, Clickquery } from './types'
//数据统计
export const getStatistics = (data: Query) =>
request({ url: `${getPrefixUrl().interfaceUrl}/analysis/v1/web/deviceUseClickDataUpload`, data, method: 'post' })
export const getStatistics = (data: Query) => request({ url: `/analysis/v1/web/deviceUseClickDataUpload`, data, method: 'post' })
//数据统计(模块点击、活动点击、使用人次点击)
export const getGuideClickDataUpload = (data: Clickquery) => request({ url: '/analysis/v1/web/guideClickDataUpload', data, method: 'post' })

9
src/http/api/statistics/types.ts

@ -1,5 +1,6 @@
//类型,设备点击量:device,导航使用次数:navigation,节目播放次数:program,店铺点击次数:shop,业态点击次数:industry,品牌店铺搜索:brandSearch
export type TagType = 'navigation' | 'shop' | 'brandSearch' | 'device' | 'program' | 'industry'
export type RecordType = 1 | 2 | 3 // 记录类型1:模块点击记录 2:活动点击记录 3:使用人次记录
export type Query = {
deviceCode: string //设备编码
@ -8,3 +9,11 @@ export type Query = {
shopCode?: string | number
industryCode?: string //tag=industry时必传
}
export type Clickquery = {
deviceCode: string //设备编码
projectCode: string //项目编码
recordType: RecordType
moduleName?: string // 模块名称
activityCode?: string // 活动code
}

9
src/i18n/lang/en.json

@ -6,5 +6,12 @@
"pause": "Pause",
"play": "Play",
"speedUp": "Speed up",
"stopSpeedUp": "Stop acceleration"
"stopSpeedUp": "Stop acceleration",
"header": {
"recommend": "Recommend"
},
"navs": {
"3D": "Change to 3D",
"2D": "Change to 2D"
}
}

9
src/i18n/lang/zh.json

@ -6,5 +6,12 @@
"pause": "暂停",
"play": "播放",
"speedUp": "加速",
"stopSpeedUp": "停止加速"
"stopSpeedUp": "停止加速",
"header": {
"recommend": "餐饮推荐"
},
"navs": {
"3D": "切换到3D模式",
"2D": "切换到2D模式"
}
}

2
src/router/routes.ts

@ -2,7 +2,7 @@ import type { RouteRecordRaw } from 'vue-router'
export const routes: RouteRecordRaw[] = [
{
path: '/guide',
path: '/',
component: () => import(/* webpackChunkName: "guide" */ '@/views/Guide/Guide.vue')
},
{

8
src/store/root/actions.ts

@ -19,6 +19,8 @@ export interface Actions {
SET_MAP_STATUS(flag: boolean): void
SET_SHOW_DETAIL(flag: boolean): void
SET_SHOW_SEARCH(flag: boolean): void
SET_COLUMN_LIST(list: Featured[]): void
SET_SHOW_COLUMNLIST(flag: boolean): void
}
export type GenActions = CreateActions<Root, State, Actions>
@ -68,5 +70,11 @@ export const actions: GenActions = {
},
SET_MAP_STATUS(flag) {
this.mapStatus = flag
},
SET_COLUMN_LIST(list) {
this.columnList = list
},
SET_SHOW_COLUMNLIST(flag) {
this.showColumnList = flag
}
}

6
src/store/root/state.ts

@ -15,6 +15,8 @@ export interface State {
mapStatus: boolean //地图加载是否成功
device: Device //当前设备信息
shop: Shop //店铺信息
columnList: Featured[] //推荐页的卡片
showColumnList: boolean //是否显示专栏
}
export const state = (): State => ({
@ -31,5 +33,7 @@ export const state = (): State => ({
config: {} as Config,
mapStatus: false,
device: {} as Device,
shop: {} as Shop
shop: {} as Shop,
columnList: [],
showColumnList: false
})

68
src/views/Guide/Area.vue

@ -0,0 +1,68 @@
<template>
<div class="area-container">
<div
v-for="(item, index) in areaList"
:key="item"
class="area"
:class="{ ac: item === areaName, area1: index === 0 }"
@click="changeArea(item)"
>
<div :class="{ w1: index === 0 }">{{ item }}</div>
</div>
</div>
</template>
<script setup lang="ts">
const areaList = ['全部区域', 'SKP', 'K大道', '美食大道', 'SKP-S']
interface Prop {
areaName: string
}
defineProps<Prop>()
const emit = defineEmits(['changeArea'])
function changeArea(name: string) {
emit('changeArea', name)
}
</script>
<style lang="scss" scoped>
.area-container {
position: fixed;
top: 252px;
left: 536px;
z-index: 999;
width: 74px;
height: 400px;
background: rgb(255 255 255 / 30%);
border: 2px solid #fff;
border-radius: 24px;
backdrop-filter: blur(11px);
.area {
@include fl(center);
width: 72px;
height: 80px;
font-size: 14px;
font-family: 'font_bold';
color: #534f46;
font-style: normal;
font-weight: 700;
line-height: 22px;
.w1 {
width: 28px;
}
}
.area1 {
margin: -1px;
background: rgb(255 255 255 / 50%);
border: 2px solid #fff;
border-radius: 24px;
backdrop-filter: blur(11px);
}
.ac {
color: #e00068;
}
}
</style>

120
src/views/Guide/ArtList.vue

@ -0,0 +1,120 @@
<template>
<div class="art-list">
<Transition
mode="out-in"
appear
enter-active-class="animate__animated animate__fadeIn"
leave-active-class="animate__animated animate__fadeOut"
>
<ScrollView v-if="artList.length !== 0" class="myScroll" :list="artList" :pull-up="false">
<div class="lists">
<div v-for="(item, index) in artList" :key="item.name" class="item">
<div class="order">{{ index + 1 }}</div>
<div>
<div class="name">{{ item.name }}</div>
<div class="nameEn">{{ item.nameEn }}</div>
</div>
</div>
</div>
</ScrollView>
<img v-else src="@/assets/images/stay_tuned.svg" alt="" />
</Transition>
</div>
</template>
<script setup lang="ts">
import ScrollView from '@/base/ScrollView/ScrollView.vue'
const artList = [
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
},
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
},
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
},
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
},
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
},
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
},
{
name: '花之泉广场',
nameEn: 'NORTH ENTRANCE FOUNTAIN SQUARE'
}
]
</script>
<style lang="scss" scoped>
.art-list {
@include fl(center);
position: fixed;
top: 232px;
left: 56px;
z-index: 998;
width: 396px;
height: 783px;
.myScroll {
overflow: hidden;
height: 783px;
.lists {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px;
grid-auto-flow: row;
.item {
@include fl(flex-start, flex-start);
width: 186px;
height: 28px;
.order {
width: 24px;
height: 24px;
padding: 1px 8px;
margin-right: 10px;
font-size: 14px;
font-family: 'font_regular';
text-align: center;
color: var(--unnamed, #534f46);
background: #ceb9ab;
border-radius: 18px;
font-style: normal;
font-weight: 400;
line-height: 22px;
}
.name {
margin-bottom: 2px;
font-size: 12px;
font-family: 'font_regular';
color: #534f46;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
.nameEn {
font-size: 8px;
font-family: 'font_regular';
color: #615c59;
font-style: normal;
font-weight: 400;
line-height: 12px;
}
}
}
}
}
</style>

77
src/views/Guide/Floor.vue

@ -0,0 +1,77 @@
<template>
<div class="floor-list">
<div class="floor all" :class="floorIdx === -1 && 'ac'" @click="changeFloor(-1)">
<div class="name">ALL</div>
</div>
<div
v-for="item in currentBuildingFloorsList"
:key="item.floorCode"
class="floor"
:class="floorIdx === item.floorOrder && 'ac'"
@click="changeFloor(item.floorOrder)"
>
<div class="name">{{ item.floor }}</div>
<img v-if="item.floorOrder === device.floorOrder" src="@/assets/images/guide/point.svg" alt="" />
</div>
</div>
</template>
<script setup lang="ts">
import { useRootStore } from '@/store/root'
import { toRefs } from 'vue'
interface Prop {
floorIdx: number
}
defineProps<Prop>()
const emit = defineEmits(['changeFloor'])
const store = useRootStore()
const { currentBuildingFloorsList, device } = toRefs(store)
function changeFloor(floorOrder: number) {
emit('changeFloor', floorOrder)
}
</script>
<style lang="scss" scoped>
.floor-list {
position: fixed;
top: 152px;
right: 50px;
z-index: 999;
.floor {
@include fl(center);
position: relative;
width: 72px;
height: 86px;
margin-bottom: 8px;
color: #534f46;
background: rgb(255 255 255 / 50%);
border: 2px solid #fff;
border-radius: 24px;
backdrop-filter: blur(11px);
.name {
font-size: 18px;
font-family: 'font_bold';
text-align: center;
font-style: normal;
font-weight: 700;
}
img {
position: absolute;
top: 12px;
right: 10px;
width: 16px;
height: 16px;
}
}
.all {
height: 72px;
}
.ac {
color: #fff;
background: #e00068;
}
}
</style>

36
src/views/Guide/FloorPicList.vue

@ -0,0 +1,36 @@
<template>
<div class="floor-pic-list">
<div v-for="item in currentBuildingFloorsList" :key="item.floorCode" class="floor">
<img :src="item.floorMapUrl" alt="" />
</div>
</div>
</template>
<script setup lang="ts">
import { useRootStore } from '@/store/root'
import { toRefs } from 'vue'
const store = useRootStore()
const { currentBuildingFloorsList } = toRefs(store)
</script>
<style lang="scss" scoped>
.floor-pic-list {
position: fixed;
top: 232px;
right: 50px;
z-index: 998;
.floor {
width: 296px;
height: 86px;
padding: 3px 0;
margin-bottom: 8px;
background: linear-gradient(270deg, rgb(138 118 106 / 10%) 0%, rgb(138 118 106 / 0%) 100%);
border: 2px solid #fff;
border-radius: 0 24px 24px 0;
img {
width: 200px;
height: 80px;
}
}
}
</style>

352
src/views/Guide/Guide.vue

@ -1,13 +1,359 @@
<template>
<div class="guide-container"></div>
<div class="guide-container">
<!-- 楼层列表 -->
<Transition appear enter-active-class="animate__animated animate__fadeInRight">
<Floor :floor-idx="floorIdx" @change-floor="changeFloor" />
</Transition>
<!-- 区域列表 -->
<Transition appear enter-active-class="animate__animated animate__fadeIn">
<Area v-if="floorIdx !== -1" :area-name="areaName" @change-area="changeArea" />
</Transition>
<!-- 店铺列表 -->
<ShopList v-if="floorIdx !== -1" :list="selectedShopList" />
<!-- 设备 -->
<Transition appear enter-active-class="animate__animated animate__fadeIn">
<div v-if="floorIdx !== -1" class="fac">
<ScrollView :list="facilityList" :scroll-x="true" class="art-myScroll">
<div style="display: inline-block">
<div class="artList">
<div v-for="item in artPlaceList" :key="item.name" class="art-item">
<img class="logo" :src="item.icon" alt="" />
<div class="name">{{ switchLanguage(item, 'name') }}</div>
</div>
</div>
</div>
</ScrollView>
<div class="faclists">
<div v-for="(item, index) in list" :key="item.name" class="reset-dir" @click="handleMapIcon(item, index)">
<div class="top" :class="mapIdx === index && 'ac'">
<img :src="item.icon" alt="" />
</div>
<div class="txt">{{ switchLanguage(item, 'name') }}</div>
</div>
<div class="line"></div>
<ScrollView :list="facilityList" :scroll-x="true" class="myScroll">
<div style="display: inline-block">
<div class="faclist">
<div v-for="item in facilityList" :key="item.code" class="fac-item" @click="handleFacility(item)">
<img class="logo" :src="item.filePath" alt="" />
<div class="name">{{ switchLanguage(item, 'name') }}</div>
</div>
</div>
</div>
</ScrollView>
</div>
</div>
<div v-else class="art-fac">
<ScrollView :list="facilityList" :scroll-x="true" class="myScroll">
<div style="display: inline-block">
<div class="art-faclist">
<div v-for="item in facilityList" :key="item.code" class="art-fac-item" @click="handleFacility(item)">
<img class="logo" :src="item.filePath" alt="" />
<div>
<div class="name">{{ item.name }}</div>
<div class="nameEn">{{ item.nameEn }}</div>
</div>
</div>
</div>
</div>
</ScrollView>
</div>
</Transition>
<!-- 手势 -->
<Transition appear enter-active-class="animate__animated animate__fadeIn">
<img v-if="language === 'zh'" class="point" src="@/assets/images/guide/tip_zh.svg" alt="" />
<img v-else class="point" src="@/assets/images/guide/tip_en.svg" alt="" />
</Transition>
<!-- 区域缩略图 -->
<Transition appear enter-active-class="animate__animated animate__fadeIn">
<img v-if="floorIdx !== -1" class="area" src="@/assets/images/guide/area_emp.svg" alt="" />
</Transition>
<!-- 人行道等 -->
<Transition appear enter-active-class="animate__animated animate__fadeIn">
<Place v-if="floorIdx === -1" />
</Transition>
<!-- 艺术品列表 -->
<ArtList v-if="floorIdx === -1" />
<!-- 楼层缩略图 -->
<div v-if="floorIdx === -1" class="floor-pic-list">
<div
v-for="(item, index) in floorlist"
:key="index"
class="floor animate__animated animate__fadeIn"
:style="{ animationDelay: index / 5 + 's' }"
>
<img :src="item" alt="" />
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { toRefs } from 'vue'
import { useRootStore } from '@/store/root'
import { useGuideMapOperation } from '@/composables/useGuideMapOperation'
import { useFacilityNav } from '@/composables/useFacilityNav'
import { useGuideFilterShop } from '@/composables/useGuideFilterShop'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
import { useArea } from '@/composables/useArea'
import ScrollView from '@/base/ScrollView/ScrollView.vue'
import Floor from './Floor.vue'
import Area from './Area.vue'
import ShopList from './ShopList.vue'
import Place from './Place.vue'
import ArtList from './ArtList.vue'
const { floorIdx, selectedShopList, filterShopByFloorName, filterAboutCurrentInfo } = useGuideFilterShop() //
const { switchFloor, handleMapIcon, list, mapIdx } = useGuideMapOperation() //
const store = useRootStore()
const { switchLanguage } = useSwitchLanguage()
const { language, facilityList } = toRefs(store)
const { floorIdx, selectedShopList, changeFloor } = useGuideFilterShop() //
const { areaName, selectedShopListA, changeArea } = useArea() //
const { handleMapIcon, list, mapIdx } = useGuideMapOperation() //
const { handleFacility } = useFacilityNav() //
// handleMapIcon(list[1], 1)
const floorlist = [
require('@/assets/images/guide/minMap.svg'),
require('@/assets/images/guide/minMap.svg'),
require('@/assets/images/guide/minMap.svg'),
require('@/assets/images/guide/minMap.svg'),
require('@/assets/images/guide/minMap.svg'),
require('@/assets/images/guide/minMap.svg')
]
const artPlaceList = [
{
name: '猩猩的太空漫步',
nameEn: 'dddd',
icon: ''
},
{
name: '共生',
nameEn: 'dddd',
icon: ''
},
{
name: '超新星',
nameEn: 'dddd',
icon: ''
},
{
name: '盛开的山谷',
nameEn: 'dddd',
icon: ''
},
{
name: '琥珀',
nameEn: 'dddd',
icon: ''
}
]
</script>
<style lang="scss" scoped>
.guide-container {
.fac {
@include fl(space-between);
position: fixed;
bottom: 132px;
left: 488px;
z-index: 999;
width: 1432px;
height: 120px;
padding: 26px 56px 0 48px;
background: linear-gradient(275deg, rgb(255 255 255 / 40%) 0%, rgb(255 255 255 / 8%) 80.56%, rgb(255 255 255 / 0%) 100%);
.art-myScroll {
overflow: hidden;
max-width: 340px;
.artList {
@include fl(flex-start, flex-start);
.art-item {
margin-right: 16px;
text-align: center;
.logo {
width: 44px;
height: 44px;
margin-bottom: 6px;
border-radius: 14px;
}
.name {
width: 48px;
font-size: 12px;
font-family: 'font_regular';
text-align: center;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 12px;
}
}
}
}
.faclists {
@include fl(flex-start, flex-start);
.reset-dir {
width: 48px;
height: 64px;
margin-right: 16px;
text-align: center;
.top {
@include fl(center);
width: 44px;
height: 44px;
margin-bottom: 6px;
background: #fff;
border-radius: 12px;
img {
width: 24px;
height: 24px;
}
}
.ac {
background: #e00068;
img {
filter: grayscale(1) brightness(500%);
}
}
.txt {
width: 48px;
font-size: 12px;
font-family: 'font_regular';
text-align: center;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 12px;
}
}
.line {
width: 1px;
height: 32px;
margin: 0 32px 0 16px;
background: rgb(0 0 0 / 10%);
}
.myScroll {
overflow: hidden;
width: 592px;
.faclist {
@include fl(flex-start, flex-start);
.fac-item {
margin-right: 16px;
text-align: center;
.logo {
width: 44px;
height: 44px;
margin-bottom: 6px;
border-radius: 14px;
}
.name {
width: 48px;
font-size: 12px;
font-family: 'font_regular';
text-align: center;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 12px;
}
}
}
}
}
}
.art-fac {
@include fl(center);
position: fixed;
bottom: 132px;
left: 488px;
z-index: 999;
width: 1432px;
height: 120px;
background: linear-gradient(275deg, rgb(255 255 255 / 40%) 0%, rgb(255 255 255 / 8%) 80.56%, rgb(255 255 255 / 0%) 100%);
.myScroll {
overflow: hidden;
max-width: 1343px;
.art-faclist {
@include fl(flex-start, flex-start);
.art-fac-item {
@include fl();
margin-right: 40px;
.logo {
width: 28px;
height: 28px;
margin-right: 8px;
border-radius: 50%;
}
.name {
font-size: 12px;
font-family: 'font_regular';
white-space: nowrap;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
.nameEn {
font-size: 8px;
font-family: 'font_regular';
white-space: nowrap;
color: #615c59;
font-style: normal;
font-weight: 400;
line-height: 12px;
text-transform: uppercase;
}
}
}
}
}
.point {
position: fixed;
top: 40px;
left: 528px;
z-index: 999;
width: 246px;
height: 80px;
}
.area {
position: fixed;
top: 152px;
right: 170px;
z-index: 999;
width: 256px;
height: 100px;
}
.floor-pic-list {
position: fixed;
top: 232px;
right: 50px;
z-index: 998;
.floor {
width: 296px;
height: 86px;
padding: 3px 0;
margin-bottom: 8px;
background: linear-gradient(270deg, rgb(138 118 106 / 10%) 0%, rgb(138 118 106 / 0%) 100%);
border-radius: 0 24px 24px 0;
img {
width: 200px;
height: 80px;
}
}
}
}
</style>

75
src/views/Guide/Place.vue

@ -0,0 +1,75 @@
<template>
<div class="place-container">
<div v-for="item in placeList" :key="item.name" class="item">
<div
class="bar"
:style="{ backgroundColor: item.backgroundColor, borderColor: item.borderColor ? item.borderColor : item.backgroundColor }"
></div>
<div>
<div class="text">{{ item.name }}</div>
<div class="textEn">{{ item.nameEn }}</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
const placeList = [
{
name: '车行通道',
nameEn: 'TRAVEL LANE',
backgroundColor: '#615C59',
borderColor: '#615C59'
},
{
name: '人行通道',
nameEn: 'PEDESTRIAN LANE',
backgroundColor: '#FFF',
borderColor: '#615C59'
},
{
name: '水景',
nameEn: 'WATERSCAPE',
backgroundColor: '#61B5D0',
borderColor: '#61B5D0'
}
]
</script>
<style lang="scss" scoped>
.place-container {
@include fl();
position: fixed;
top: 152px;
left: 56px;
z-index: 999;
.item {
@include fl();
margin-right: 28px;
.bar {
width: 45px;
height: 12px;
margin-right: 10px;
border: 1px solid;
}
.text {
font-size: 12px;
font-family: 'font_bold';
color: #615c59;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
.textEn {
font-size: 8px;
font-family: 'font_regular';
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 12px;
}
}
}
</style>

49
src/views/Guide/ShopList.vue

@ -0,0 +1,49 @@
<template>
<div class="shop-list">
<Transition
mode="out-in"
appear
enter-active-class="animate__animated animate__fadeIn"
leave-active-class="animate__animated animate__fadeOut"
>
<ScrollView v-if="list.length !== 0" class="myScroll" :list="list" :pull-up="false">
<div class="lists">
<ShopItem v-for="item in list" :key="item.shopCode" :shop="item" :type="false" />
</div>
</ScrollView>
<img v-else src="@/assets/images/stay_tuned.svg" alt="" />
</Transition>
</div>
</template>
<script setup lang="ts">
import ScrollView from '@/base/ScrollView/ScrollView.vue'
import ShopItem from '@/components/ShopItem/ShopItem.vue'
interface Prop {
list: Shop[]
}
defineProps<Prop>()
</script>
<style lang="scss" scoped>
.shop-list {
@include fl(center);
position: fixed;
top: 152px;
left: 56px;
z-index: 998;
width: 432px;
height: 864px;
.myScroll {
overflow: hidden;
height: 864px;
.lists {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 8px;
grid-auto-flow: row;
}
}
}
</style>

14
src/views/Guide/list.ts

@ -1,7 +1,7 @@
export enum MapControl {
RESET = '复位',
DIRECTION = '我的方向',
ACTIVITY_BRAND = '活动品牌'
ACTIVITY_BRAND = '餐饮服务'
}
export type Item = {
@ -12,6 +12,12 @@ export type Item = {
}
export const list: Item[] = [
{
name: MapControl.ACTIVITY_BRAND,
nameEn: 'food',
icon: require('@/assets/images/guide/food.svg'),
iconActive: require('@/assets/images/guide/brand_active.svg')
},
{
name: MapControl.RESET,
nameEn: 'reset',
@ -23,11 +29,5 @@ export const list: Item[] = [
nameEn: 'direction',
icon: require('@/assets/images/guide/direction.svg'),
iconActive: require('@/assets/images/guide/direction_active.svg')
},
{
name: MapControl.ACTIVITY_BRAND,
nameEn: 'activity',
icon: require('@/assets/images/guide/brand.svg'),
iconActive: require('@/assets/images/guide/brand_active.svg')
}
]

211
src/views/Nav/Nav.vue

@ -1,8 +1,54 @@
<template>
<div></div>
<div class="bottom animate__animated animate__fadeIn">
<!-- 3d/2d -->
<div class="d2-d3" @click="change3D">
<div class="top">
<img v-show="cameraViews?.text === '3D'" :src="cameraViews?.image" alt="" />
<img v-show="cameraViews?.text === '2D'" :src="cameraViews?.image" alt="" />
</div>
<div class="name">{{ cameraViews?.text === '3D' ? $t('navs.3D') : $t('navs.2D') }}</div>
</div>
<!-- 三种模式 -->
<div class="mode-container">
<div v-for="(item, index) in methodsList" :key="item.name" class="item" @click="changeControl(item.name, index)">
<div class="top" :class="methodIdx === index && 'ac'">
<img :src="item.icon" alt="" />
</div>
<div class="name">{{ switchLanguage(item, 'name') }}</div>
</div>
</div>
<!-- 加速重播暂停 -->
<div class="btn-container">
<div class="item" @click="changeReplay">
<div class="top" :class="{ ac: replay }">
<img src="@/assets/images/nav/cb.svg" alt="" />
</div>
<div class="name">{{ $t('replay') }}</div>
</div>
<div class="item" @click="togglePause">
<div class="top" :class="{ ac: pause }">
<img v-show="!pause" src="@/assets/images/nav/zanting.svg" alt="" />
<img v-show="pause" src="@/assets/images/nav/zantingAc.svg" alt="" />
</div>
<div v-show="!pause" class="name">{{ $t('pause') }}</div>
<div v-show="pause" class="name">{{ $t('play') }}</div>
</div>
<div class="item" @click="handleSpeedUp">
<div class="top" :class="{ ac: speedUp }">
<img v-show="!speedUp" src="@/assets/images/nav/js.svg" alt="" />
<img v-show="speedUp" src="@/assets/images/nav/jsAc.svg" alt="" />
</div>
<div v-show="!speedUp" class="name">{{ $t('speedUp') }}</div>
<div v-show="speedUp" class="name">{{ $t('stopSpeedUp') }}</div>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
import { useMapNavControl } from '@/composables/useMapNavControl'
@ -10,14 +56,171 @@ import { useChangeNavMethod } from '@/composables/useChangeNavMethod'
import { useStartNavi } from '@/composables/useStartNavi'
import { useSetCameraViews } from '@/composables/useSetCameraViews'
import { useStatistics } from '@/composables/useStatistics'
import { useRouter } from 'vue-router'
import { NavMethods } from './methodsList'
import { useSwitchLanguage } from '@/composables/useSwitchLanguage'
const { switchLanguage } = useSwitchLanguage()
const store = useRootStore()
const { shop, device } = storeToRefs(store)
const { shop, device, showSearch } = storeToRefs(store)
const router = useRouter()
const pathGroupRef = ref()
useStatistics({ tag: 'navigation', shopCode: shop.value.shopCode })
const { replay, pause, speedUp, handleReplay, togglePause, handleSpeedUp, resetPause } = useMapNavControl()
const { directionInfo, pathShopList, backPathArray, startNavi } = useStartNavi(shop, device, resetPause)
const { methodIdx, methodsList, handleControl } = useChangeNavMethod(backPathArray)
const { cameraViews, setCameraViews } = useSetCameraViews(resetPause)
//
function back() {
router.go(-1)
}
// 线
function changeControl(name: NavMethods, index: number) {
pathGroupRef.value.resetPlayIdx()
pathGroupRef.value.myScroll.scrollTo(0, 0, 0)
handleControl(name, index)
}
// 3d/2d
function change3D() {
pathGroupRef.value.resetPlayIdx()
pathGroupRef.value.myScroll.scrollTo(0, 0, 0)
setCameraViews()
}
//
function changeReplay() {
pathGroupRef.value.resetPlayIdx()
pathGroupRef.value.myScroll.scrollTo(0, 0, 0)
handleReplay()
}
//
if (showSearch.value) {
store.SET_SHOW_SEARCH(false)
}
</script>
<style lang="scss" scoped>
.bottom {
@include fl();
position: fixed;
bottom: 132px;
left: 488px;
z-index: 998;
width: 1432px;
height: 120px;
padding: 24px 56px 18px 224px;
background: linear-gradient(275deg, rgb(255 255 255 / 40%) 0%, rgb(255 255 255 / 8%) 80.56%, rgb(255 255 255 / 0%) 100%);
.d2-d3 {
width: 120px;
height: 78px;
.top {
@include fl(center);
width: 120px;
height: 56px;
background: #fff;
border-radius: 8px;
img {
width: 32px;
height: 32px;
}
}
.name {
width: 120px;
margin-top: 8px;
font-size: 12px;
font-family: 'font_regular';
text-align: center;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
}
.mode-container {
@include fl();
width: 392px;
height: 78px;
margin-left: 64px;
.item {
width: 120px;
height: 78px;
margin-right: 16px;
.top {
@include fl(center);
width: 120px;
height: 56px;
background: #fff;
border-radius: 8px;
img {
width: 32px;
height: 32px;
}
}
.ac {
background: #e00068;
img {
filter: invert(1) brightness(300%);
}
}
.name {
width: 120px;
margin-top: 8px;
font-size: 12px;
font-family: 'font_regular';
text-align: center;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
}
}
.btn-container {
@include fl;
height: 78px;
margin-left: 376px;
.item {
width: 56px;
height: 78px;
margin-right: 16px;
.top {
@include fl(center);
width: 56px;
height: 56px;
background: #fff;
border-radius: 8px;
img {
width: 32px;
height: 32px;
}
}
.name {
width: 56px;
margin-top: 8px;
font-size: 12px;
font-family: 'font_regular';
text-align: center;
color: #8e9090;
font-style: normal;
font-weight: 400;
line-height: 14px;
}
.ac {
background: #e00068;
}
}
}
}
</style>

Loading…
Cancel
Save