Browse Source

fix: 品牌页面和导航页面做了部分

pull/2/head
deepblues 3 years ago
parent
commit
61f464ca72
  1. 4
      public/static/offline/JSON/GetDevCoordinateByIP.json
  2. 78
      public/static/offline/JSON/GetMapInfo.json
  3. BIN
      public/static/offline/iotFile/19/0QbPfyN2cvDiy1te5odlp.png
  4. BIN
      public/static/offline/iotFile/19/DRpW_lE-UYF6Ftuhrlsdp.png
  5. BIN
      public/static/offline/iotFile/19/T25A8zEygrRp9WxBOlXj_.png
  6. BIN
      public/static/offline/iotFile/19/V2UUfgleZ3SUV4H_shCq2.jpeg
  7. 9
      src/assets/images/header/logo.svg
  8. 3
      src/assets/images/nav/back.svg
  9. 5
      src/assets/images/nav/floorTofloor.svg
  10. 11
      src/assets/images/nav/tip_en.svg
  11. 11
      src/assets/images/nav/tip_zh.svg
  12. BIN
      src/assets/images/shopDetail/bg_go.png
  13. 4
      src/assets/images/shopDetail/close.svg
  14. 3
      src/assets/images/shopDetail/icon_address.svg
  15. 3
      src/assets/images/shopDetail/icon_tel.svg
  16. 3
      src/assets/images/shopDetail/icon_time.svg
  17. 16
      src/assets/images/shopDetail/like_normal.svg
  18. 10
      src/assets/images/shopDetail/like_sel.svg
  19. 60
      src/base/Masker/Masker.vue
  20. 9
      src/components/Header/Header.vue
  21. 7
      src/components/Map/Map.vue
  22. 2
      src/components/PublicComponent/PublicComponent.vue
  23. 332
      src/components/ShopDetail/ShopDetail.vue
  24. 32
      src/composables/useInitMap.ts
  25. 2
      src/composables/useSetCameraViews.ts
  26. 7
      src/http/api/brand/index.ts
  27. 5
      src/http/api/brand/types.ts
  28. 11
      src/i18n/lang/en.json
  29. 11
      src/i18n/lang/tw.json
  30. 11
      src/i18n/lang/zh.json
  31. 2
      src/router/routes.ts
  32. 11
      src/views/Brand/Brand.vue
  33. 150
      src/views/Nav/Nav.vue

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

@ -10,9 +10,9 @@
"building": "A",
"buildingCode": "suG1YjUhWnvRBJm3ULnCo",
"buildingOrder": 0,
"floor": "B4",
"floor": "L1",
"floorCode": "uDKfemAB1vCVZsudb_hmh",
"floorOrder": 0,
"floorOrder": 4,
"ip": "192.168.1.209",
"mac": "4CEDFBCAFF27",
"location": "0",

78
public/static/offline/JSON/GetMapInfo.json

@ -20,8 +20,10 @@
"building": "A",
"floor": "L1",
"houseNumber": "L101",
"businessHours": "",
"contact": "",
"businessHours": "10:00~22:00",
"contact": "1212121212122",
"intro": "slafdj辣椒粉的雷克萨记得镂空发送江东父老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分老塑料袋咖啡降落伞的发接撒老地方雷克萨的积分卢萨卡的积分卢萨卡的积分两三点空间放看拉萨的积分雷克萨的积分拉萨的积分了看的撒就弗兰克萨大积分卢萨卡的积分",
"introEn": "sadfsadfsfdasdfsadfsadfsadf",
"gender": 3,
"minAge": 1,
"maxAge": 100,
@ -30,10 +32,10 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
"doorMaterialList": ["/iotFile/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
"foodMaterialList": [],
"spelling": "xing ba ke ",
"initials": "XBK",
@ -71,7 +73,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -137,7 +139,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -178,7 +180,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -220,7 +222,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -286,7 +288,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
@ -327,7 +329,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -393,7 +395,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -434,7 +436,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -476,7 +478,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -542,7 +544,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
@ -583,7 +585,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -649,7 +651,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -690,7 +692,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -732,7 +734,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -798,7 +800,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
@ -839,7 +841,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -905,7 +907,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -946,7 +948,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -988,7 +990,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1054,7 +1056,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
@ -1095,7 +1097,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1161,7 +1163,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1202,7 +1204,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1244,7 +1246,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1310,7 +1312,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
@ -1351,7 +1353,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1417,7 +1419,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1458,7 +1460,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1500,7 +1502,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1566,7 +1568,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": ["/iotFile/2023/04/19/V2UUfgleZ3SUV4H_shCq2.jpeg"],
@ -1607,7 +1609,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1673,7 +1675,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1714,7 +1716,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],
@ -1756,7 +1758,7 @@
"thirdZhiCode": "",
"isNewShop": 0,
"xaxis": "",
"yaxis": "",
"yaxis": "10",
"navXaxis": "",
"navYaxis": "",
"doorMaterialList": [],

BIN
public/static/offline/iotFile/19/0QbPfyN2cvDiy1te5odlp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

BIN
public/static/offline/iotFile/19/DRpW_lE-UYF6Ftuhrlsdp.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

BIN
public/static/offline/iotFile/19/T25A8zEygrRp9WxBOlXj_.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

BIN
public/static/offline/iotFile/19/V2UUfgleZ3SUV4H_shCq2.jpeg

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 MiB

9
src/assets/images/header/logo.svg

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.0 KiB

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

@ -0,0 +1,3 @@
<svg width="28" height="26" viewBox="0 0 28 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.249999 13L13.0625 25.8125L18.3658 25.8125L7.4283 14.875L27.2805 14.875L27.2805 11.125L7.4283 11.125L18.3658 0.187501L13.0625 0.187501L0.249999 13Z" fill="#B7A475"/>
</svg>

After

Width:  |  Height:  |  Size: 280 B

5
src/assets/images/nav/floorTofloor.svg

@ -0,0 +1,5 @@
<svg width="32" height="40" viewBox="0 0 32 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M30.5647 35.9769C31.3477 36.7282 31.3477 37.9802 30.5647 38.7316C29.8261 39.4404 28.6598 39.4404 27.9212 38.7316L17.3848 28.6204C16.6109 27.8778 15.3891 27.8778 14.6152 28.6204L4.07882 38.7316C3.34019 39.4404 2.17392 39.4404 1.43529 38.7316C0.652344 37.9802 0.652346 36.7282 1.43529 35.9769L14.6152 23.3289C15.3891 22.5863 16.6109 22.5863 17.3848 23.3289L30.5647 35.9769Z" fill="white" fill-opacity="0.4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M30.5647 24.9769C31.3477 25.7282 31.3477 26.9802 30.5647 27.7316C29.8261 28.4404 28.6598 28.4404 27.9212 27.7316L17.3848 17.6204C16.6109 16.8778 15.3891 16.8778 14.6152 17.6204L4.07882 27.7316C3.34019 28.4404 2.17392 28.4404 1.43529 27.7316C0.652344 26.9802 0.652346 25.7282 1.43529 24.9769L14.6152 12.3289C15.3891 11.5863 16.6109 11.5863 17.3848 12.3289L30.5647 24.9769Z" fill="white" fill-opacity="0.7"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M30.5647 13.9769C31.3477 14.7282 31.3477 15.9802 30.5647 16.7316C29.8261 17.4404 28.6598 17.4404 27.9212 16.7316L17.3848 6.62045C16.6109 5.87783 15.3891 5.87783 14.6152 6.62045L4.07882 16.7316C3.34019 17.4404 2.17392 17.4404 1.43529 16.7316C0.652344 15.9802 0.652346 14.7282 1.43529 13.9769L14.6152 1.3289C15.3891 0.586279 16.6109 0.586281 17.3848 1.3289L30.5647 13.9769Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 32 KiB

BIN
src/assets/images/shopDetail/bg_go.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

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

@ -0,0 +1,4 @@
<svg width="60" height="60" viewBox="0 0 60 60" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="60" height="60" fill="black" fill-opacity="0.9"/>
<path d="M30 27.6436L38.25 19.3936L40.6067 21.7502L32.3567 30.0002L40.6067 38.2502L38.25 40.6069L30 32.3569L21.75 40.6069L19.3934 38.2502L27.6434 30.0002L19.3934 21.7502L21.75 19.3936L30 27.6436Z" fill="#84754E"/>
</svg>

After

Width:  |  Height:  |  Size: 380 B

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

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 17.4164L14.125 13.2914C14.9408 12.4756 15.4963 11.4362 15.7213 10.3047C15.9463 9.17313 15.8308 8.00027 15.3892 6.9344C14.9477 5.86854 14.2 4.95753 13.2408 4.31658C12.2815 3.67563 11.1537 3.33353 10 3.33353C8.8463 3.33353 7.71851 3.67563 6.75924 4.31658C5.79997 4.95753 5.05229 5.86854 4.61076 6.9344C4.16923 8.00027 4.05368 9.17313 4.27871 10.3047C4.50374 11.4362 5.05926 12.4756 5.875 13.2914L10 17.4164ZM10 19.7731L4.69667 14.4698C3.64779 13.4209 2.93349 12.0845 2.64411 10.6296C2.35473 9.17479 2.50326 7.6668 3.07092 6.29636C3.63858 4.92592 4.59987 3.75458 5.83324 2.93048C7.0666 2.10637 8.51665 1.6665 10 1.6665C11.4834 1.6665 12.9334 2.10637 14.1668 2.93048C15.4001 3.75458 16.3614 4.92592 16.9291 6.29636C17.4968 7.6668 17.6453 9.17479 17.3559 10.6296C17.0665 12.0845 16.3522 13.4209 15.3033 14.4698L10 19.7731ZM10 10.8331C10.442 10.8331 10.866 10.6575 11.1785 10.345C11.4911 10.0324 11.6667 9.60847 11.6667 9.16644C11.6667 8.72441 11.4911 8.30049 11.1785 7.98793C10.866 7.67537 10.442 7.49977 10 7.49977C9.55798 7.49977 9.13405 7.67537 8.82149 7.98793C8.50893 8.30049 8.33334 8.72441 8.33334 9.16644C8.33334 9.60847 8.50893 10.0324 8.82149 10.345C9.13405 10.6575 9.55798 10.8331 10 10.8331ZM10 12.4998C9.11595 12.4998 8.2681 12.1486 7.64298 11.5235C7.01786 10.8983 6.66667 10.0505 6.66667 9.16644C6.66667 8.28238 7.01786 7.43454 7.64298 6.80942C8.2681 6.1843 9.11595 5.83311 10 5.83311C10.8841 5.83311 11.7319 6.1843 12.357 6.80942C12.9821 7.43454 13.3333 8.28238 13.3333 9.16644C13.3333 10.0505 12.9821 10.8983 12.357 11.5235C11.7319 12.1486 10.8841 12.4998 10 12.4998Z" fill="#84754E"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

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

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

After

Width:  |  Height:  |  Size: 1.4 KiB

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

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.99996 18.3332C5.39746 18.3332 1.66663 14.6023 1.66663 9.99984C1.66663 5.39734 5.39746 1.6665 9.99996 1.6665C14.6025 1.6665 18.3333 5.39734 18.3333 9.99984C18.3333 14.6023 14.6025 18.3332 9.99996 18.3332ZM9.99996 16.6665C11.7681 16.6665 13.4638 15.9641 14.714 14.7139C15.9642 13.4636 16.6666 11.7679 16.6666 9.99984C16.6666 8.23173 15.9642 6.53603 14.714 5.28579C13.4638 4.03555 11.7681 3.33317 9.99996 3.33317C8.23185 3.33317 6.53616 4.03555 5.28591 5.28579C4.03567 6.53603 3.33329 8.23173 3.33329 9.99984C3.33329 11.7679 4.03567 13.4636 5.28591 14.7139C6.53616 15.9641 8.23185 16.6665 9.99996 16.6665V16.6665ZM10.8333 9.99984H14.1666V11.6665H9.16663V5.83317H10.8333V9.99984Z" fill="#84754E"/>
</svg>

After

Width:  |  Height:  |  Size: 809 B

16
src/assets/images/shopDetail/like_normal.svg

@ -0,0 +1,16 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_119_12576)">
<rect width="30" height="30" rx="4" fill="white"/>
<g clip-path="url(#clip1_119_12576)">
<path d="M15.001 7.52898C17.35 5.41998 20.98 5.48998 23.243 7.75698C25.505 10.025 25.583 13.637 23.479 15.993L14.999 24.485L6.52101 15.993C4.41701 13.637 4.49601 10.019 6.75701 7.75698C9.02201 5.49298 12.645 5.41698 15.001 7.52898Z" fill="#E8DCC0"/>
</g>
</g>
<defs>
<clipPath id="clip0_119_12576">
<rect width="30" height="30" rx="4" fill="white"/>
</clipPath>
<clipPath id="clip1_119_12576">
<rect width="24" height="24" fill="white" transform="translate(3 3)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 715 B

10
src/assets/images/shopDetail/like_sel.svg

@ -0,0 +1,10 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_203_29905)">
<path d="M12.001 4.52898C14.35 2.41998 17.98 2.48998 20.243 4.75698C22.505 7.02498 22.583 10.637 20.479 12.993L11.999 21.485L3.52101 12.993C1.41701 10.637 1.49601 7.01898 3.75701 4.75698C6.02201 2.49298 9.64501 2.41698 12.001 4.52898Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_203_29905">
<rect width="24" height="24" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 500 B

60
src/base/Masker/Masker.vue

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

9
src/components/Header/Header.vue

@ -2,6 +2,7 @@
<header class="header-container">
<img src="../../assets/images/header/header_bg_blur.png" class="header-blur common-size" alt="" />
<img src="../../assets/images/header/header_bg.png" class="header-bg common-size" alt="" />
<img src="@/assets/images/header/logo.svg" class="logo" alt="" />
<div class="header-right">
<div class="flex">
<p class="current">{{ currentTime }}</p>
@ -62,7 +63,13 @@ function changeLang(lang: Language) {
.header-bg {
z-index: 2;
}
.logo {
position: absolute;
top: 42px;
left: 56px;
z-index: 3;
width: 130px;
}
.header-right {
position: absolute;
top: 25px;

7
src/components/Map/Map.vue

@ -40,9 +40,10 @@ function handleDetail() {
<style lang="scss" scoped>
/* stylelint-disable-next-line selector-id-pattern */
#mapContainer {
position: relative;
width: 1080px;
height: 1920px;
position: absolute;
z-index: 0;
width: 1220px;
height: 1080px;
}
.map-flex {
display: flex;

2
src/components/PublicComponent/PublicComponent.vue

@ -4,6 +4,7 @@
<!-- 地图容器 -->
<Map v-show="$route.meta.showMap" @handle-go="handleGO" @handle-detail="handleDetail" />
<shopDetail v-if="showDetail"></shopDetail>
<!-- 退出弹框 -->
<Logout v-model="logout" />
@ -14,6 +15,7 @@
</template>
<script setup lang="ts">
import shopDetail from '@/components/ShopDetail/ShopDetail.vue'
import { defineAsyncComponent, watch, onMounted, onBeforeUnmount } from 'vue'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'

332
src/components/ShopDetail/ShopDetail.vue

@ -0,0 +1,332 @@
<template>
<transition appear enter-active-class="animate__animated animate__fadeIn" leave-active-class="animate__animated animate__fadeOut">
<masker @click="close">
<transition appear enter-active-class="animate__animated animate__fadeInUp" leave-active-class="animate__animated animate__zoomOut">
<div class="shop-detail-wrapper">
<!-- 图片 -->
<div class="carousel">
<swiper
:autoplay="{
delay: 5000
}"
:observer="true"
:observe-parents="true"
:modules="modules"
:effect="'fade'"
:pagination="{ el: '.detail' }"
>
<swiper-slide v-for="(item, index) in shop.doorMaterialList" :key="index" class="slide">
<img :src="item.search(config.sourceUrl) >= 0 ? item : config.sourceUrl + item" class="banner" />
</swiper-slide>
</swiper>
<img v-if="!shop.doorMaterialList?.length" src="../../assets/images/nodata.svg" class="banner no-data" alt="" />
<div class="swiper-pagination detail"></div>
</div>
<!-- logo -->
<div class="logo-wrapper">
<img
v-if="shop.logoUrl"
class="shop-logo"
:src="shop.logoUrl.search(config.sourceUrl) >= 0 ? shop.logoUrl : config.sourceUrl + shop.logoUrl"
alt=""
/>
<img v-else class="shop-logo" src="@/assets/images/header/logo.svg" alt="" />
</div>
<!-- 名称和属性 -->
<div class="name-wrapper">
<div class="marquee-wrapper">
<marquees :speed="40" :delay="0.8" class="name" :content="switchLanguage(shop, 'shopName')"
>{{ switchLanguage(shop, 'shopName') }}
</marquees>
</div>
<!-- 点赞 -->
<div class="like-container" :class="{ 'no-click': isLiked }" @click="clickLike">
<img
:src="isLiked ? require('@/assets/images/shopDetail/like_sel.svg') : require('@/assets/images/shopDetail/like_normal.svg')"
alt=""
/>
<span>{{ $t('shop.like') }}</span>
</div>
<!-- 属性 -->
<div class="shop-attr-group">
<div class="ul">
<div v-if="shop.contact" class="working-item">
<img src="../../assets/images/shopDetail/icon_tel.svg" alt="" />
<span class="title">{{ shop.contact }}</span>
</div>
<div v-if="shop.houseNumber" class="working-item">
<img src="../../assets/images/shopDetail/icon_address.svg" alt="" />
<span class="title">{{ shop.floor + '-' + shop.houseNumber }}</span>
</div>
</div>
<div v-if="shop.businessHours" class="working-item">
<img src="../../assets/images/shopDetail/icon_time.svg" alt="" />
<span class="title">{{ shop.businessHours }}</span>
</div>
</div>
</div>
<!-- 详情 -->
<scroll-view :list="[switchLanguage(shop, 'intro')]" class="intro-scroll" :scrollbar="true" :pull-up="false" :refresh-delay="500">
<p class="intro" v-text="switchLanguage(shop, 'intro')"></p>
</scroll-view>
<!-- 导航按钮 -->
<div v-if="shop.yaxis" class="go" @click="handleGo">
<img src="@/assets/images/shopDetail/bg_go.png" alt="" />
<h5>{{ $t('shop.goBtn') }}</h5>
</div>
<!-- 关闭按钮 -->
<div class="exit" @click="close">
<img src="@/assets/images/shopDetail/close.svg" class="go_bg" alt="" />
</div>
</div>
</transition>
</masker>
</transition>
</template>
<script setup lang="ts">
import { Autoplay, Pagination, EffectFade } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue'
import 'swiper/css'
import 'swiper/css/pagination'
import 'swiper/css/effect-fade'
import scrollView from '@/base/ScrollView/ScrollView.vue'
import masker from '@/base/Masker/Masker.vue'
import marquees from '@/base/Marquees/Marquees.vue'
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { useStatistics } from '@/composables/useStatistics'
import { getBrandStar, setBrandStar } from '@/http/api/brand/index'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
const store = useRootStore()
const { shop, config, device } = storeToRefs(store)
const router = useRouter()
const modules = [Autoplay, Pagination, EffectFade]
const isLiked = ref(false) //like
//
function close() {
store.SET_SHOW_DETAIL(false)
}
//
function handleGo() {
store.SET_SHOW_DETAIL(false)
store.SET_SHOW_SEARCH(false)
router.push('/nav')
}
/**
* 点击like
*/
function clickLike() {
try {
setBrandStar({ projectCode: device.value.projectCode, shopCode: shop.value.shopCode as string }).then(res => {
if (res.code === 200) {
isLiked.value = true
}
})
} catch (error) {
console.log('error :>> ', error)
}
}
useStatistics({ tag: 'shop', shopCode: shop.value.shopCode })
</script>
<style scoped lang="scss">
:deep(.bscroll-vertical-scrollbar) {
background: rgb(0 0 0 / 1%);
border-radius: 4px;
opacity: 1 !important;
.bscroll-indicator {
background: #b7a475 !important;
border: none !important;
border-radius: 4px !important;
box-shadow: 0 8px 20px rgb(0 0 0 / 10%);
}
}
.shop-detail-wrapper {
--swiper-pagination-bullet-horizontal-gap: 8px;
--swiper-pagination-bullet-width: 24px;
--swiper-pagination-bullet-height: 4px;
--swiper-pagination-bullet-inactive-color: rgb(255 255 255 / 60%) !important;
--swiper-theme-color: #5a6670;
--animate-duration: 0.3s;
position: relative;
z-index: 9003;
display: inline-block;
width: 1586px;
height: 492px;
margin-top: 325px;
margin-left: 175px;
background: linear-gradient(to bottom, #d9d3c4 0%, #d9d3c4 52%, #e6e3db 52%, #e6e3db 100%);
.carousel {
position: relative;
z-index: 0;
overflow: hidden;
width: 852px;
height: 480px;
margin-top: -32px;
margin-left: -50px;
background: rgb(255 255 255 / 71.9%);
border-radius: 0;
.banner {
width: 100%;
height: 480px;
border-radius: 0;
object-fit: cover;
}
.no-data {
padding: 30px 192px;
background: #fff;
}
.detail {
bottom: 70px;
left: 78%;
width: 120px;
}
}
.logo-wrapper {
position: absolute;
top: -32px;
left: 300px;
z-index: 1;
width: 152px;
height: 152px;
padding: 12px;
background: #fff;
border-radius: 0;
img {
width: 128px;
height: 128px;
object-fit: scale-down;
}
}
.name-wrapper {
position: absolute;
top: 40px;
left: 852px;
z-index: 1;
.marquee-wrapper {
overflow: hidden;
width: 700px;
margin-bottom: 12px;
white-space: nowrap;
.name {
display: inline-block;
height: 36px;
font-size: 28px;
font-family: 'font_bold';
color: #595447;
font-weight: 700;
}
}
.like-container {
display: flex;
align-items: center;
margin-bottom: 46px;
img {
width: 24px;
margin-right: 8px;
}
span {
font-size: 16px;
font-family: 'font_regular';
color: #84754e;
font-style: normal;
font-weight: 400;
line-height: 24px;
}
&.isLiked {
pointer-events: none;
}
}
.shop-attr-group {
width: 500px;
.ul {
display: flex;
margin-bottom: 17px;
}
.working-item {
display: flex;
align-items: center;
img {
width: 20px;
height: 20px;
margin-right: 8px;
}
span {
margin-right: 24px;
font-size: 14px;
font-family: 'font_bold';
color: #84754e;
font-weight: 700;
}
}
}
}
.intro-scroll {
position: absolute;
top: 298px;
left: 852px;
z-index: 1;
overflow: hidden;
width: 722px;
height: 165px;
padding-right: 14px;
.intro {
font-size: 14px;
font-family: 'font_regular';
text-align: justify;
white-space: pre-wrap;
color: #736661;
line-height: 200%;
:deep(img) {
width: 100%;
}
}
}
.go {
position: absolute;
top: 38px;
right: -75px;
z-index: 1;
width: 150px;
img {
position: absolute;
width: 150px;
}
h5 {
position: absolute;
right: 0;
left: 0;
display: block;
margin: 85px auto 0;
font-size: 22px;
font-family: 'font_bold';
text-align: center;
color: #faeba9;
font-style: normal;
font-weight: 700;
}
}
.exit {
position: absolute;
top: -60px;
right: 0;
img {
width: 60px;
}
}
}
</style>

32
src/composables/useInitMap.ts

@ -14,22 +14,22 @@ export const useInitMap = async function () {
}))
//初始化地图
// window.MainMap_QM.init(
// () => {
// store.SET_MAP_STATUS(true)
// window.Map_QM.addEventListener('shop', onClickShop, false)
// window.Map_QM.renderer.domElement.addEventListener('webglcontextlost', onContextLost)
// },
// {
// build: device.value?.buildingOrder ?? 0,
// floor: device.value.floorOrder,
// navPoint: device.value.location,
// angle: device.value.angle,
// iconUrl: delPrefixOfFacilityList,
// mapData: data,
// shopData: shopList.value.slice()
// }
// )
window.MainMap_QM.init(
() => {
store.SET_MAP_STATUS(true)
window.Map_QM.addEventListener('shop', onClickShop, false)
window.Map_QM.renderer.domElement.addEventListener('webglcontextlost', onContextLost)
},
{
build: device.value?.buildingOrder ?? 0,
floor: device.value.floorOrder,
navPoint: device.value.location,
angle: device.value.angle,
iconUrl: delPrefixOfFacilityList,
mapData: data,
shopData: shopList.value.slice()
}
)
} catch (error) {
Message({ text: '获取地图数据失败', type: 'success' })
}

2
src/composables/useSetCameraViews.ts

@ -17,7 +17,7 @@ export const useSetCameraViews = (pauseFn?: () => void) => {
image: require('@/assets/images/nav/3D.svg')
}
}
const text = ref<CameraType>()
const text = ref<CameraType>('3D')
const cameraViews = computed(() => text.value && map[text.value])

7
src/http/api/brand/index.ts

@ -1,8 +1,13 @@
import { request } from '@/http/http'
import type { GroupList, BrandRes } from './types'
import type { GroupList, BrandRes, starPara } from './types'
export const getBrandInfo = () => request<BrandRes>({ url: `/JSON/getBrandShopList.json` })
export const getShopListByFloor = () => request<{ list: GroupList }>({ url: `/JSON/getBrandShopListByFloor.json` })
export const getShopListByIndustry = () => request<{ list: GroupList }>({ url: `/JSON/getBrandShopListByIndustryId.json` })
//点击喜欢按钮
export const setBrandStar = (data: starPara) => request<{ code: number }>({ url: `/api/guide/v1/web/setBrandStar`, data, method: 'get' })
//获取喜欢按钮
export const getBrandStar = (data: starPara) => request({ url: `/api/guide/v1/web/getBrandStar`, data, method: 'get' })

5
src/http/api/brand/types.ts

@ -36,3 +36,8 @@ export type BrandRes = {
industryFatherList: Industry[]
floorList: floorItem[]
}
export type starPara = {
shopCode: string //店铺编码
projectCode: string //项目编码
}

11
src/i18n/lang/en.json

@ -7,5 +7,14 @@
"play": "Play",
"speedUp": "Speed up",
"stopSpeedUp": "Stop acceleration",
"search_home": "Search"
"search_home": "Search",
"shop": {
"goBtn": "GO",
"like": "like"
},
"go": {
"start": "start",
"end": "end",
"back": "Back"
}
}

11
src/i18n/lang/tw.json

@ -7,5 +7,14 @@
"play": "播放",
"speedUp": "加速",
"stopSpeedUp": "停止加速",
"search_home": "搜索"
"search_home": "搜索",
"shop": {
"goBtn": "導航到店",
"like": "喜歡"
},
"go": {
"start": "开始",
"end": "结束",
"back": "返回"
}
}

11
src/i18n/lang/zh.json

@ -7,5 +7,14 @@
"play": "播放",
"speedUp": "加速",
"stopSpeedUp": "停止加速",
"search_home": "搜索"
"search_home": "搜索",
"shop": {
"goBtn": "导航到店",
"like": "喜欢"
},
"go": {
"start": "开始",
"end": "结束",
"back": "返回"
}
}

2
src/router/routes.ts

@ -12,7 +12,7 @@ export const routes: RouteRecordRaw[] = [
path: '/guide',
component: () => import(/* webpackChunkName: "guide" */ '@/views/Guide/Guide.vue'),
meta: {
showMap: false
showMap: true
}
},
{

11
src/views/Brand/Brand.vue

@ -50,7 +50,7 @@ import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
const store = useRootStore()
const { shopList } = storeToRefs(store)
const { shopList, device } = storeToRefs(store)
type FloorItem = {
floor: string
@ -131,7 +131,10 @@ getBrandInfo().then(({ data }) => {
zmList.value.push({ industryName: letter, isSpecial: 0, ...temp })
})
copyShopList.value = [...shopList.value]
// copyShopList.value = [...shopList.value]
const current = floorList.value.find(item => item.floor === device.value.floor)
const currentIndex = floorList.value.findIndex(item => item.floor === device.value.floor)
handleClickFloor(current as FloorItem, currentIndex)
})
//
function changeType(item: any) {
@ -174,6 +177,7 @@ function clickShop(item: Shop) {
<style scoped lang="scss">
:deep(.bscroll-vertical-scrollbar) {
z-index: 1 !important;
background: rgb(0 0 0 / 1%);
border-radius: 8px;
opacity: 1 !important;
@ -259,9 +263,10 @@ function clickShop(item: Shop) {
width: 1372px;
height: 759px;
padding-right: 24px;
.shop-group {
position: relative;
display: grid;
padding-bottom: 90px;
grid-template-columns: repeat(5, 230px);
gap: 24px 48px;
}

150
src/views/Nav/Nav.vue

@ -1,8 +1,40 @@
<template>
<div></div>
<div class="nav-container">
<!-- 返回 -->
<div class="backcom" :style="{ pointerEvents: isBack ? 'auto' : 'none' }" @click="backModule">
<img class="img" src="@/assets/images/nav/back.svg" alt="" />
<span>{{ $t('go.back') }}</span>
</div>
<!-- 手势tip -->
<img
class="hand-tip"
:src="language === 'zh' ? require('@/assets/images/nav/tip_zh.svg') : require('@/assets/images/nav/tip_en.svg')"
alt=""
/>
<!-- 起始结束楼层 -->
<div class="floor-container">
<div class="start-floor floor" :class="{ 'blue-mode': dirFloor.start.txt === '起点' }">
<span class="name" v-text="dirFloor.start.floor"></span>
<p class="pos">
<!-- <img :src="dirFloor.start.icon" alt="" class="icon" /> -->
<!-- {{ dirFloor.start.txt }} -->
</p>
</div>
<img class="dir" :style="{ transform: dirFloor.start.rotate }" :src="require('@/assets/images/nav/floorTofloor.svg')" alt="" />
<div class="end-floor floor" :class="{ 'blue-mode': dirFloor.end.txt === '起点' }">
<span class="name" v-text="dirFloor.end.floor"></span>
<p class="pos">
<!-- <img :src="dirFloor.end.icon" alt="" class="icon" /> -->
<!-- {{ dirFloor.end.txt }} -->
</p>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, watch, computed } from 'vue'
import { storeToRefs } from 'pinia'
import { useRootStore } from '@/store/root'
import { useMapNavControl } from '@/composables/useMapNavControl'
@ -10,9 +42,14 @@ import { useChangeNavMethod } from '@/composables/useChangeNavMethod'
import { useStartNavi } from '@/composables/useStartNavi'
import { useSetCameraViews } from '@/composables/useSetCameraViews'
import { useStatistics } from '@/composables/useStatistics'
import { hideMapDialog } from '@/composables/useInitMap'
import { i18n } from '@/i18n'
import { useRouter } from 'vue-router'
const store = useRootStore()
const { shop, device } = storeToRefs(store)
const { shop, device, language } = storeToRefs(store)
const router = useRouter()
useStatistics({ tag: 'navigation', shopCode: shop.value.shopCode })
@ -20,4 +57,113 @@ const { replay, pause, speedUp, handleReplay, togglePause, handleSpeedUp, resetP
const { directionInfo, pathShopList, backPathArray, startNavi } = useStartNavi(shop, device, resetPause)
const { methodIdx, methodsList, handleControl } = useChangeNavMethod(backPathArray)
const { cameraViews, setCameraViews } = useSetCameraViews(resetPause)
const isBack = ref(false)
//
function backModule() {
router.back()
}
//
const dirFloor = computed(() => {
const isT2B = device.value.floorOrder >= shop.value.floorOrder
return {
start: {
floor: isT2B ? device.value.floor : shop.value.floor,
// icon: isT2B ? require('../../assets/images/nav/icon_start.svg') : require('../../assets/images/nav/icon_end.svg'),
txt: isT2B ? i18n.global.t('go.start') : i18n.global.t('go.end'),
rotate: isT2B ? 'rotate(180deg)' : 'rotate(0deg)'
},
end: {
floor: isT2B ? shop.value.floor : device.value.floor,
// icon: isT2B ? require('../../assets/images/nav/icon_end.svg') : require('../../assets/images/nav/icon_start.svg'),
txt: isT2B ? i18n.global.t('go.end') : i18n.global.t('go.start')
}
}
})
onMounted(() => {
hideMapDialog()
const timeId = setTimeout(() => {
clearTimeout(timeId)
isBack.value = true
}, 1000)
})
onBeforeUnmount(() => {
window.Map_QM.changePathDir(cameraViews.value.text)
window.Map_QM.showFloor(device.value.floorOrder)
})
watch(shop, newVal => {
startNavi({ ...newVal })
})
</script>
<style lang="scss" scoped>
.nav-container {
position: absolute;
width: 100vw;
height: 100vh;
pointer-events: none;
& > * {
pointer-events: auto;
}
.backcom {
position: absolute;
top: 207px;
left: 80px;
z-index: 500;
display: flex;
align-items: center;
font-size: 28px;
font-family: 'font_bold';
color: #b7a475;
font-style: normal;
font-weight: 700;
img {
margin-right: 4px;
}
}
.hand-tip {
position: absolute;
top: 112px;
left: 881px;
z-index: 1;
}
.floor-container {
position: absolute;
top: 312px;
left: 80px;
z-index: 1;
display: flex;
align-items: center;
width: 56px;
height: 196px;
text-align: center;
flex-direction: column;
.floor {
display: flex;
justify-content: center;
align-items: center;
width: 56px;
height: 56px;
background-color: #fff;
border-radius: 4px;
.name {
margin-right: 0;
font-size: 28px;
font-family: 'font_bold';
color: #9b8c85;
}
// &.blue-mode {
// }
}
.dir {
flex-shrink: 0;
width: 18px;
margin-top: 32px;
margin-bottom: 32px;
}
}
}
</style>

Loading…
Cancel
Save