NewsDetail.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <script setup>
  2. import { ref, reactive } from "vue";
  3. import { useRoute } from "vue-router";
  4. import axios from "axios";
  5. import moment from "moment";
  6. import Navbar from "@/components/Navbar.vue";
  7. const route = useRoute();
  8. const newsId = route.params.id; // 網址參數
  9. const news = reactive({
  10. data: [],
  11. });
  12. let loading = ref(false);
  13. (async function getData() {
  14. loading.value = true;
  15. try {
  16. const response = await axios.get(
  17. `${store.apiUrl}/api/get_news?news_id=${newsId}`
  18. );
  19. news.data = response.data.news[0];
  20. loading.value = false;
  21. console.log("news.data", news.data);
  22. } catch (error) {
  23. console.error(error);
  24. }
  25. })();
  26. </script>
  27. <template>
  28. <Navbar />
  29. <div class="position-relative">
  30. <img
  31. src="@/assets/img/news/news-01.png"
  32. alt="臺灣工藝學校全球學習共享平台"
  33. class="material-img"
  34. />
  35. <v-container class="pa-0 py-16 position-relative">
  36. <div class="content">
  37. <div v-if="loading" class="d-flex justify-center my-10">
  38. <v-progress-circular
  39. color="grey-lighten-4"
  40. indeterminate
  41. ></v-progress-circular>
  42. </div>
  43. <div v-else class="article">
  44. <v-row>
  45. <v-col cols="12">
  46. <div class="d-flex align-center mb-10">
  47. <v-chip size="large" variant="elevated" class="px-8 me-3">
  48. {{ news.data.category }}
  49. </v-chip>
  50. <p>
  51. {{ moment(`${news.data.create_time}`).format("YYYY.MM.DD") }}
  52. </p>
  53. </div>
  54. <h2>{{ news.data.title }}</h2>
  55. <!-- <img src="@/assets/img/img-01.jpg" alt="臺灣工藝學校全球學習共享平台" class="cover-img" /> -->
  56. <!-- <img :src="`https://cmm.ai/ntcri/${news.data.cover_img}`" alt="臺灣工藝學校全球學習共享平台" /> -->
  57. </v-col>
  58. <v-col cols="12" class="mt-10">
  59. <section
  60. class="d-flex flex-column pa-0"
  61. v-html="news.data.content"
  62. ></section>
  63. <!-- <div class="btn-block mt-10">
  64. <v-btn rounded="xl" color="grey-darken-2" class="px-7">
  65. 檔案下載
  66. </v-btn>
  67. <v-btn rounded="xl" color="grey-darken-2" class="px-7 ms-3">
  68. 前往連結
  69. </v-btn>
  70. </div> -->
  71. </v-col>
  72. </v-row>
  73. </div>
  74. </div>
  75. <router-link to="/news" class="mt-16 back-link"
  76. >< 返回重要訊息</router-link
  77. >
  78. </v-container>
  79. <img
  80. src="@/assets/img/news/news-01.png"
  81. alt="臺灣工藝學校全球學習共享平台"
  82. class="material-img"
  83. />
  84. </div>
  85. </template>
  86. <style lang="scss" scoped>
  87. .content {
  88. padding: 1.25em;
  89. background-image: url("@/assets/img/news/news-bg.webp");
  90. background-position: center;
  91. background-size: cover;
  92. border-radius: 3.125em;
  93. @media (max-width: 960px) {
  94. width: 90%;
  95. margin: auto;
  96. }
  97. }
  98. .material-img {
  99. position: absolute;
  100. &:first-child {
  101. top: -15vw;
  102. }
  103. &:last-child {
  104. bottom: -9.375em;
  105. z-index: -5;
  106. transform: scaleX(-1);
  107. @media (max-width: 600px) {
  108. bottom: -3.125em;
  109. }
  110. }
  111. }
  112. </style>