detail.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <template>
  2. <div class="step2-detail">
  3. <div class="step2-detail__back" @click="$router.back()" />
  4. <div class="step2-detail-sidebar">
  5. <div
  6. class="step2-detail-sidebar-title animate__animated animate__duration-200 animate__fadeInLeft"
  7. >
  8. <p>{{ detail.realName }}</p>
  9. <p>{{ detail.era }}</p>
  10. </div>
  11. <img
  12. draggable="false"
  13. class="step2-detail-sidebar-img"
  14. :src="baseUrl + detail.img"
  15. />
  16. <swiper
  17. :modules="[FreeMode, Mousewheel]"
  18. :slides-per-view="'auto'"
  19. :space-between="7"
  20. :free-mode="true"
  21. :mousewheel="{
  22. enabled: true,
  23. forceToAxis: false,
  24. }"
  25. class="step2-detail-swiper"
  26. >
  27. <swiper-slide v-for="(item, index) in detail.imgs" :key="item.thumb">
  28. <el-image
  29. :src="baseUrl + item.thumb"
  30. fit="cover"
  31. preview-teleported
  32. :preview-src-list="detail.imgs.map((item) => baseUrl + item.img)"
  33. :initial-index="index"
  34. />
  35. </swiper-slide>
  36. </swiper>
  37. </div>
  38. <div class="step2-detail-content">
  39. <div v-if="detail.epigraph" class="step2-detail-epigraph">
  40. <p class="step2-detail-label">铭文详情</p>
  41. <div class="step2-detail-epigraph-content">
  42. <div class="step2-detail-epigraph-content-img">
  43. <el-image
  44. preview-teleported
  45. fit="contain"
  46. :src="baseUrl + detail.epigraph.thumb"
  47. :preview-src-list="[baseUrl + detail.epigraph.img]"
  48. />
  49. </div>
  50. <el-scrollbar class="step2-detail-epigraph-content-text">
  51. <p>{{ detail.epigraph.text }}</p>
  52. </el-scrollbar>
  53. </div>
  54. </div>
  55. <div class="step2-detail-desc">
  56. <p class="step2-detail-label">文字介绍</p>
  57. <el-scrollbar class="step2-detail-desc-text">
  58. <div v-html="detail.content" />
  59. </el-scrollbar>
  60. </div>
  61. </div>
  62. </div>
  63. </template>
  64. <script setup>
  65. import { useRoute } from "vue-router";
  66. import { IRON_BULL_LIST, MONSTER_LIST, BUILDING_LIST } from "@canal/base";
  67. import { Swiper, SwiperSlide } from "swiper/vue";
  68. import { FreeMode, Mousewheel } from "swiper/modules";
  69. import "swiper/css";
  70. const route = useRoute();
  71. const baseUrl = import.meta.env.VITE_PUBLIC_URL;
  72. const LIST = [IRON_BULL_LIST, MONSTER_LIST, BUILDING_LIST];
  73. const detail = LIST[route.params.id - 1][route.params.sid - 1];
  74. </script>
  75. <style scoped lang="scss">
  76. @use "./detail.scss";
  77. </style>