Craft.vue 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. <script setup>
  2. import { ref, reactive } from "vue";
  3. import axios from "axios";
  4. import moment from "moment";
  5. import Navbar from "@/components/Navbar.vue";
  6. import { useMainStore } from "@/stores/store";
  7. const store = useMainStore();
  8. const breadcrumbs = reactive([
  9. {
  10. title: "首頁",
  11. disabled: false,
  12. href: "/",
  13. },
  14. {
  15. title: "工藝學群",
  16. disabled: false,
  17. href: "/ntcri/college-group/craft",
  18. },
  19. {
  20. title: "技藝工藝",
  21. disabled: true,
  22. },
  23. ]);
  24. const testData = [
  25. {
  26. title: "種子教師研習",
  27. start_time: "2023/06/15",
  28. end_time: "2023/06/20",
  29. address: "地方工藝館 工藝教室",
  30. img: store.getImageUrl("college-group/img.jpg"),
  31. },
  32. {
  33. title: "種子教師研習",
  34. start_time: "2023/06/15",
  35. end_time: "2023/06/20",
  36. address: "地方工藝館 工藝教室",
  37. img: store.getImageUrl("college-group/img.jpg"),
  38. },
  39. {
  40. title: "種子教師研習",
  41. start_time: "2023/06/15",
  42. end_time: "2023/06/20",
  43. address: "地方工藝館 工藝教室",
  44. img: store.getImageUrl("college-group/img.jpg"),
  45. },
  46. ];
  47. </script>
  48. <template>
  49. <div class="college-bg-img">
  50. <Navbar />
  51. <v-container fluid class="college-content pb-16 px-sm-0">
  52. <div class="college-banner">
  53. <img src="@/assets/img/college-group/craft/banner.png" alt="" />
  54. <h1>技藝工藝</h1>
  55. </div>
  56. <div class="main-block">
  57. <v-breadcrumbs
  58. :items="breadcrumbs"
  59. divider="/"
  60. class="mt-10 p-0"
  61. ></v-breadcrumbs>
  62. <div
  63. class="d-flex flex-column flex-sm-row align-center justify-space-between title"
  64. >
  65. <h2>校園扎根-教師限定課程</h2>
  66. <div class="search">
  67. <span>
  68. <input
  69. v-model="searchInput"
  70. type="text"
  71. @keyup.enter="search()"
  72. />
  73. <button @click="search()">
  74. <img src="@/assets/img/news/news-search-icon.png" alt="" />
  75. </button>
  76. </span>
  77. <div
  78. v-if="searchError"
  79. class="d-flex justify-center align-center error me-4"
  80. >
  81. <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
  82. 沒有符合搜尋條件的項目
  83. </div>
  84. </div>
  85. </div>
  86. <v-row>
  87. <v-col
  88. sm="6"
  89. md="4"
  90. cols="12"
  91. v-for="(item, index) in testData"
  92. :key="index"
  93. class="pa-5"
  94. >
  95. <div class="card">
  96. <h3>{{ item.title }}</h3>
  97. <img :src="item.img" alt="" class="cover-img" />
  98. <ul>
  99. <li class="d-flex align-center">
  100. <img src="@/assets/img/icon/date_icon.png" alt="" />
  101. <p class="mb-0 ms-3">
  102. {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
  103. {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
  104. </p>
  105. </li>
  106. <li class="d-flex align-center mt-3">
  107. <img src="@/assets/img/icon/location_icon.png" alt="" />
  108. <p class="mb-0 ms-3">
  109. {{ item.address }}
  110. </p>
  111. </li>
  112. </ul>
  113. </div>
  114. </v-col>
  115. </v-row>
  116. <div
  117. class="d-flex flex-column flex-sm-row align-center justify-space-between title"
  118. >
  119. <h2>輕工藝私塾</h2>
  120. <div class="search">
  121. <span>
  122. <input
  123. v-model="searchInput"
  124. type="text"
  125. @keyup.enter="search()"
  126. />
  127. <button @click="search()">
  128. <img src="@/assets/img/news/news-search-icon.png" alt="" />
  129. </button>
  130. </span>
  131. <div
  132. v-if="searchError"
  133. class="d-flex justify-center align-center error me-4"
  134. >
  135. <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
  136. 沒有符合搜尋條件的項目
  137. </div>
  138. </div>
  139. </div>
  140. <v-row>
  141. <v-col
  142. sm="6"
  143. md="4"
  144. cols="12"
  145. v-for="(item, index) in testData"
  146. :key="index"
  147. class="pa-5"
  148. >
  149. <div class="card">
  150. <h3>{{ item.title }}</h3>
  151. <img :src="item.img" alt="" class="cover-img" />
  152. <ul>
  153. <li class="d-flex align-center">
  154. <img src="@/assets/img/icon/date_icon.png" alt="" />
  155. <p class="mb-0 ms-3">
  156. {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
  157. {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
  158. </p>
  159. </li>
  160. <li class="d-flex align-center mt-3">
  161. <img src="@/assets/img/icon/location_icon.png" alt="" />
  162. <p class="mb-0 ms-3">
  163. {{ item.address }}
  164. </p>
  165. </li>
  166. </ul>
  167. </div>
  168. </v-col>
  169. </v-row>
  170. </div>
  171. </v-container>
  172. </div>
  173. </template>
  174. <style lang="scss" scoped>
  175. .content {
  176. padding: 0;
  177. width: 90%;
  178. @media (max-width: 600px) {
  179. width: 85%;
  180. }
  181. .main-block {
  182. padding: 100px 80px;
  183. margin-top: -30%;
  184. background-color: #fff;
  185. @media (max-width: 960px) {
  186. padding: 100px 50px;
  187. }
  188. @media (max-width: 600px) {
  189. padding: 100px 20px;
  190. }
  191. h2 {
  192. font-size: 30px;
  193. font-weight: 500;
  194. line-height: 32px;
  195. margin-left: 10px;
  196. @media (max-width: 960px) {
  197. font-size: 24px;
  198. }
  199. @media (max-width: 600px) {
  200. margin-left: 0;
  201. margin-bottom: 50px;
  202. }
  203. }
  204. .title {
  205. margin: 80px 0;
  206. @media (max-width: 600px) {
  207. margin: 50px 0;
  208. }
  209. }
  210. .v-breadcrumbs {
  211. position: relative;
  212. z-index: 100;
  213. justify-content: flex-start;
  214. @media (max-width: 600px) {
  215. justify-content: center;
  216. }
  217. }
  218. }
  219. }
  220. .card {
  221. letter-spacing: 1px;
  222. border-radius: 10px;
  223. box-shadow: 2px 2px 10px #aaaaaa;
  224. background-color: var(--sub-color);
  225. h3 {
  226. padding: 15px;
  227. font-size: 22px;
  228. font-weight: 400;
  229. text-align: center;
  230. margin-bottom: 15px;
  231. border-bottom: 2px solid #fff;
  232. }
  233. ul {
  234. padding: 20px;
  235. }
  236. .cover-img {
  237. padding: 0 15px;
  238. }
  239. }
  240. </style>