index.vue 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <script setup lang="ts">
  2. import { useRouter } from "vue-router";
  3. import ModelList, { baseURL } from "@/assets/data/Model/index.ts";
  4. import { useModel } from "@/store/Model";
  5. import { ModelType } from "@/types/Model/index";
  6. import Tabbar from "@/components/Tabbar.vue";
  7. const router = useRouter();
  8. const store = useModel();
  9. const baseImageUrl = computed(() => {
  10. return baseURL + "/image/bldgModel/";
  11. });
  12. // 跳转到模型详情页
  13. const goDetail = (code: string) => {
  14. console.log("code", code);
  15. const current = ModelList.find((item: ModelType) => {
  16. return item.code === code;
  17. });
  18. store.currentScene = current!;
  19. router.push({
  20. name: "modelDetail",
  21. query: {
  22. code: code,
  23. },
  24. });
  25. };
  26. const goChange = () => {
  27. router.push({
  28. name: "modelChange",
  29. });
  30. };
  31. onMounted(() => {
  32. // store.list = ModelList;
  33. setTimeout(() => {
  34. window.scrollTo({
  35. top: 560,
  36. left: 0,
  37. behavior: "smooth",
  38. });
  39. });
  40. });
  41. </script>
  42. <template>
  43. <div class="model">
  44. <!-- <div class="map-top">芜湖市优秀文物建筑</div> -->
  45. <img class="model-bg" :src="baseImageUrl + 'home.jpg'" alt="" />
  46. <!-- 点击位置 -->
  47. <!-- 大教堂 -->
  48. <div
  49. class="click-box"
  50. v-for="(item, index) in ModelList"
  51. :key="index"
  52. :style="{
  53. top: item.top,
  54. left: item.left,
  55. }"
  56. @click="goDetail(item.code)"
  57. ></div>
  58. <div class="plate-box" @click="goChange"></div>
  59. </div>
  60. <Tabbar />
  61. </template>
  62. <style lang="less" scoped>
  63. .model {
  64. overflow: auto;
  65. width: 100%;
  66. height: 100vh;
  67. height: calc(var(--vh, 1vh) * 100);
  68. position: relative;
  69. .map-top {
  70. width: 100%;
  71. height: 8vh;
  72. background: var(--color-bg);
  73. font-size: 1rem;
  74. text-align: center;
  75. line-height: 8vh;
  76. letter-spacing: 3px;
  77. color: #4d4d4d;
  78. }
  79. .model-bg {
  80. width: 100%;
  81. background-size: cover;
  82. }
  83. .click-box {
  84. width: 70%;
  85. height: 12rem;
  86. position: absolute;
  87. // background: #017c01a1;
  88. }
  89. .plate-box {
  90. width: 30%;
  91. height: 10%;
  92. top: 10%;
  93. right: 5%;
  94. position: absolute;
  95. background: #017c0100;
  96. }
  97. }
  98. </style>