SyuanYu il y a 1 an
Parent
commit
8e1e40825f
30 fichiers modifiés avec 1000 ajouts et 874 suppressions
  1. 15 5
      src/assets/css/style.css
  2. 0 0
      src/assets/css/style.css.map
  3. 14 5
      src/assets/css/style.scss
  4. BIN
      src/assets/img/college-group/banner.png
  5. BIN
      src/assets/img/college-group/generation/01.png
  6. BIN
      src/assets/img/college-group/generation/02.png
  7. BIN
      src/assets/img/college-group/generation/03.png
  8. BIN
      src/assets/img/college-group/generation/04.png
  9. BIN
      src/assets/img/college-group/generation/05.png
  10. BIN
      src/assets/img/college-group/generation/06.png
  11. BIN
      src/assets/img/college-group/generation/07.png
  12. BIN
      src/assets/img/college-group/generation/08.png
  13. BIN
      src/assets/img/college-group/generation/世代工藝-07.jpg
  14. BIN
      src/assets/img/college-group/generation/世代工藝-08.jpg
  15. BIN
      src/assets/img/college-group/generation/世代工藝-09.jpg
  16. BIN
      src/assets/img/college-group/generation/世代工藝-10.jpg
  17. BIN
      src/assets/img/college-group/generation/世代工藝-11.jpg
  18. BIN
      src/assets/img/college-group/generation/世代工藝-12.jpg
  19. 28 0
      src/components/Map.vue
  20. 26 13
      src/components/Navbar.vue
  21. 87 30
      src/router/index.js
  22. 163 187
      src/views/CollegeGroup/Craft.vue
  23. 170 190
      src/views/CollegeGroup/Cross.vue
  24. 48 61
      src/views/CollegeGroup/Future.vue
  25. 78 74
      src/views/CollegeGroup/Generation.vue
  26. 94 0
      src/views/CollegeGroup/Main.vue
  27. 182 192
      src/views/CollegeGroup/Repair.vue
  28. 76 93
      src/views/CollegeGroup/Teenager.vue
  29. 19 2
      src/views/Home.vue
  30. 0 22
      src/views/User/Dashboard.vue

+ 15 - 5
src/assets/css/style.css

@@ -66,6 +66,11 @@ input:focus-visible {
     max-width: 1300px !important;
   }
 }
+@media (max-width: 1300px) {
+  .v-container {
+    padding: 15px 30px !important;
+  }
+}
 
 .search {
   display: flex;
@@ -109,10 +114,10 @@ input:focus-visible {
 }
 
 .college-banner {
+  margin-top: 25px;
   display: flex;
   justify-content: center;
   position: relative;
-  top: -8vw;
   right: 0;
   left: 0;
   z-index: 1;
@@ -122,14 +127,17 @@ input:focus-visible {
 }
 .college-banner h1 {
   position: absolute;
-  top: 50%;
-  left: 11%;
+  top: 45%;
+  right: 3%;
   font-size: 40px;
   font-weight: 500;
+  color: #fff;
+  text-shadow: 2px 2px 10px #555555;
   word-wrap: break-word;
 }
 @media (max-width: 1200px) {
   .college-banner h1 {
+    right: 5%;
     font-size: 36px;
   }
 }
@@ -142,7 +150,6 @@ input:focus-visible {
   .college-banner h1 {
     font-size: 20px;
     top: 45%;
-    left: 5%;
   }
 }
 
@@ -158,16 +165,18 @@ input:focus-visible {
 }
 .college-content .main-block {
   padding: 150px 80px;
-  margin-top: -30%;
+  margin-top: -20%;
   background-image: url("@/assets/img/course/background.png");
   background-size: cover;
   position: relative;
   left: 0;
   right: 0;
+  z-index: 10;
 }
 @media (max-width: 960px) {
   .college-content .main-block {
     padding: 100px 50px;
+    margin-top: -22%;
     background-position: 0 1vw;
   }
 }
@@ -238,6 +247,7 @@ input:focus-visible {
 }
 .main-card .card-title h3,
 .main-card .card-info p {
+  line-height: 22px;
   overflow: hidden;
   text-overflow: ellipsis;
   display: -webkit-box;

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/assets/css/style.css.map


+ 14 - 5
src/assets/css/style.scss

@@ -68,6 +68,10 @@ input:focus-visible {
   @media (min-width: 1920px) {
     max-width: 1300px !important;
   }
+
+  @media (max-width: 1300px) {
+    padding: 15px 30px !important;
+  }
 }
 
 .search {
@@ -118,10 +122,10 @@ input:focus-visible {
 }
 
 .college-banner {
+  margin-top: 25px;
   display: flex;
   justify-content: center;
   position: relative;
-  top: -8vw;
   right: 0;
   left: 0;
   z-index: 1;
@@ -132,13 +136,16 @@ input:focus-visible {
 
   h1 {
     position: absolute;
-    top: 50%;
-    left: 11%;
+    top: 45%;
+    right: 3%;
     font-size: 40px;
     font-weight: 500;
+    color: #fff;
+    text-shadow: 2px 2px 10px #555555;
     word-wrap: break-word;
 
     @media (max-width: 1200px) {
+      right: 5%;
       font-size: 36px;
     }
 
@@ -149,7 +156,6 @@ input:focus-visible {
     @media (max-width: 600px) {
       font-size: 20px;
       top: 45%;
-      left: 5%;
     }
   }
 }
@@ -165,16 +171,18 @@ input:focus-visible {
 
   .main-block {
     padding: 150px 80px;
-    margin-top: -30%;
+    margin-top: -20%;
     background-image: url('@/assets/img/course/background.png');
     background-size: cover;
     position: relative;
     left: 0;
     right: 0;
+    z-index: 10;
     // background-color: #fff;
 
     @media (max-width: 960px) {
       padding: 100px 50px;
+      margin-top: -22%;
       background-position: 0 1vw;
     }
 
@@ -247,6 +255,7 @@ input:focus-visible {
 
   .card-title h3,
   .card-info p {
+    line-height: 22px;
     // 超過兩行則省略
     overflow: hidden;
     text-overflow: ellipsis;

BIN
src/assets/img/college-group/banner.png


BIN
src/assets/img/college-group/generation/01.png


BIN
src/assets/img/college-group/generation/02.png


BIN
src/assets/img/college-group/generation/03.png


BIN
src/assets/img/college-group/generation/04.png


BIN
src/assets/img/college-group/generation/05.png


BIN
src/assets/img/college-group/generation/06.png


BIN
src/assets/img/college-group/generation/07.png


BIN
src/assets/img/college-group/generation/08.png


BIN
src/assets/img/college-group/generation/世代工藝-07.jpg


BIN
src/assets/img/college-group/generation/世代工藝-08.jpg


BIN
src/assets/img/college-group/generation/世代工藝-09.jpg


BIN
src/assets/img/college-group/generation/世代工藝-10.jpg


BIN
src/assets/img/college-group/generation/世代工藝-11.jpg


BIN
src/assets/img/college-group/generation/世代工藝-12.jpg


+ 28 - 0
src/components/Map.vue

@@ -70,6 +70,34 @@ onMounted(() => {
     "https://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}"
   ).addTo(map);
 
+  // 取得使用者的當前位置座標
+  map.locate({ setView: true, maxZoom: 16 });
+  console.log(
+    "使用者的當前位置座標",
+    map.locate({ setView: true, maxZoom: 16 })
+  );
+
+  let customIcon = L.icon({
+    iconUrl: store.getImageUrl("map-icon/icon_house05.png"),
+    iconSize: [30, 50],
+  });
+
+  // 當取得位置成功時,將地圖中心設定為使用者位置
+  function onLocationFound(e) {
+    L.marker(e.latlng, { icon: customIcon })
+      .addTo(map)
+      .bindPopup("您的位置")
+      .openPopup();
+  }
+
+  // 當取得位置失敗時,顯示錯誤提示
+  function onLocationError(e) {
+    alert("無法取得位置或拒絕提供位置訪問權限。");
+  }
+
+  map.on("locationfound", onLocationFound);
+  map.on("locationerror", onLocationError);
+
   // const popup = L.popup();
   const markers = L.markerClusterGroup();
 

+ 26 - 13
src/components/Navbar.vue

@@ -1,8 +1,10 @@
 <script setup>
 import { ref, reactive } from "vue";
+import { useRouter } from 'vue-router';
 import { useMainStore } from "@/stores/store";
 import Login from "@/views/Login.vue";
 
+const router = useRouter();
 const store = useMainStore();
 let menuShow = ref(false);
 let collegeMenuShow = ref(false);
@@ -25,6 +27,13 @@ function handleMouseEvents(event) {
   }
 }
 
+function handleClick(url) {
+  console.log('handleClick', url);
+  menuShow.value = false;
+  collegeMenuShow.value = false;
+  router.push(url);
+}
+
 const collegeList = reactive([
   {
     title: "世代工藝",
@@ -100,7 +109,9 @@ const collegeList = reactive([
         >
           <ul>
             <li v-for="(item, index) in collegeList" :key="index">
-              <router-link :to="item.url">{{ item.title }}</router-link>
+              <a href="javascript:;" @click="handleClick(item.url)">{{ item.title }}</a>
+
+              <!-- <router-link :to="item.url">{{ item.title }}</router-link> -->
             </li>
           </ul>
         </div>
@@ -157,40 +168,42 @@ const collegeList = reactive([
     padding: 10px 20px 10px 10px;
   }
 
-  @media (max-width: 767px) {
-    top: 20px;
-  }
-
   img {
     width: 100%;
     max-width: 370px;
     margin-top: 5px;
+    @media (max-width: 600px) {
+      max-width: 300px;
+    }
   }
 
   .menu {
     display: flex;
     align-items: center;
     list-style: none;
-    // box-shadow: 1px 1px 4px #ccc;
 
     @media (max-width: 1280px) {
       position: absolute;
-      top: 80px;
-    left: -1px;
-    right: -1px;
+      top: 81px;
+      left: 0;
+      right: 0;
       z-index: 100;
       overflow: hidden;
       flex-direction: column;
-      // box-shadow: 1px 1px 4px #ccc;
       max-height: 0;
       transition: max-height 0.3s ease-in-out;
-      border: 1px solid;
-    border-top: none;
+      box-shadow: 1px 1px 5px #aaaaaa;
+    }
+
+    @media (max-width: 600px) {
+      top: 71px;
     }
 
     &.slider {
       max-height: 700px;
       overflow: initial;
+      // border: 1px solid;
+      // border-top: none;
     }
 
     & > li {
@@ -232,7 +245,7 @@ const collegeList = reactive([
       width: 130px;
       background: #fff;
       text-align: center;
-      box-shadow: 1px 1px 4px #ccc;
+      box-shadow: 1px 1px 5px #aaaaaa;
       transition: all 0.3s;
 
       @media (max-width: 1280px) {

+ 87 - 30
src/router/index.js

@@ -8,6 +8,8 @@ const News = defineAsyncComponent(() => import('@/views/News.vue'));
 const NewsDetail = defineAsyncComponent(() => import('@/views/NewsDetail.vue'));
 const CourseList = defineAsyncComponent(() => import('@/views/CourseList.vue'));
 const CourseDetail = defineAsyncComponent(() => import('@/views/CourseDetail.vue'));
+// 八大學群
+const CollegeGroup = defineAsyncComponent(() => import('@/views/CollegeGroup/Main.vue'));
 const Craft = defineAsyncComponent(() => import('@/views/CollegeGroup/Craft.vue'));
 const Generation = defineAsyncComponent(() => import('@/views/CollegeGroup/Generation.vue'));
 const Future = defineAsyncComponent(() => import('@/views/CollegeGroup/Future.vue'));
@@ -58,6 +60,61 @@ const routes = [
       },
     ],
   },
+  {
+    path: '/college-group',
+    component: CollegeGroup,
+    redirect: '/college-group/craft',
+    children: [
+      {
+        path: 'craft',
+        name: 'Craft',
+        component: Craft,
+        meta: {
+          title: '技藝工藝',
+        },
+      },
+      {
+        path: 'generation',
+        name: 'Generation',
+        component: Generation,
+        meta: {
+          title: '世代工藝',
+        },
+      },
+      {
+        path: 'future',
+        name: 'Future',
+        component: Future,
+        meta: {
+          title: '未來工藝',
+        },
+      },
+      {
+        path: 'repair',
+        name: 'Repair',
+        component: Repair,
+        meta: {
+          title: '修護工藝',
+        },
+      },
+      {
+        path: 'teenager',
+        name: 'Teenager',
+        component: Teenager,
+        meta: {
+          title: '青年工藝',
+        },
+      },
+      {
+        path: 'cross',
+        name: 'Cross',
+        component: Cross,
+        meta: {
+          title: '跨域工藝',
+        },
+      }
+    ],
+  },
   {
     path: '/news',
     name: 'News',
@@ -78,36 +135,36 @@ const routes = [
     name: 'CourseDetail',
     component: CourseDetail
   },
-  {
-    path: '/college-group/craft',
-    name: 'Craft',
-    component: Craft
-  },
-  {
-    path: '/college-group/generation',
-    name: 'Generation',
-    component: Generation
-  },
-  {
-    path: '/college-group/future',
-    name: 'Future',
-    component: Future
-  },
-  {
-    path: '/college-group/repair',
-    name: 'Repair',
-    component: Repair
-  },
-  {
-    path: '/college-group/teenager',
-    name: 'Teenager',
-    component: Teenager
-  },
-  {
-    path: '/college-group/cross',
-    name: 'Cross',
-    component: Cross
-  },
+  // {
+  //   path: '/college-group/craft',
+  //   name: 'Craft',
+  //   component: Craft
+  // },
+  // {
+  //   path: '/college-group/generation',
+  //   name: 'Generation',
+  //   component: Generation
+  // },
+  // {
+  //   path: '/college-group/future',
+  //   name: 'Future',
+  //   component: Future
+  // },
+  // {
+  //   path: '/college-group/repair',
+  //   name: 'Repair',
+  //   component: Repair
+  // },
+  // {
+  //   path: '/college-group/teenager',
+  //   name: 'Teenager',
+  //   component: Teenager
+  // },
+  // {
+  //   path: '/college-group/cross',
+  //   name: 'Cross',
+  //   component: Cross
+  // },
 ];
 
 const router = createRouter({

+ 163 - 187
src/views/CollegeGroup/Craft.vue

@@ -2,7 +2,6 @@
 import { ref, reactive } from "vue";
 import axios from "axios";
 import moment from "moment";
-import Navbar from "@/components/Navbar.vue";
 import { useMainStore } from "@/stores/store";
 
 const store = useMainStore();
@@ -50,202 +49,179 @@ const testData = [
 </script>
 
 <template>
-  <div class="college-bg-img">
-    <Navbar />
-    <v-container fluid class="college-content pb-16 px-sm-0">
-      <div class="college-banner">
-        <img src="@/assets/img/college-group/craft/banner.png" alt="" />
-        <h1>技藝工藝</h1>
+  <v-breadcrumbs
+    :items="breadcrumbs"
+    divider="/"
+    class="mt-10 pa-0"
+  ></v-breadcrumbs>
+
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>校園扎根-教師限定課程</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
       </div>
-      <div class="main-block">
-        <v-breadcrumbs
-          :items="breadcrumbs"
-          divider="/"
-          class="mt-10 pa-0"
-        ></v-breadcrumbs>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>校園扎根-教師限定課程</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
+  <v-row>
+    <v-col
+      sm="6"
+      md="4"
+      cols="12"
+      v-for="(item, index) in testData"
+      :key="index"
+      class="pa-5"
+    >
+      <div class="main-card">
+        <section class="card-title">
+          <h3>{{ item.title }}</h3>
+        </section>
+        <div class="card-info">
+          <img :src="item.img" alt="" class="cover-img" />
+          <ul>
+            <li class="d-flex align-center">
+              <img src="@/assets/img/icon/date_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
+                {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+              </p>
+            </li>
+            <li class="d-flex align-center mt-3">
+              <img src="@/assets/img/icon/location_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ item.address }}
+              </p>
+            </li>
+          </ul>
         </div>
+      </div>
+    </v-col>
+  </v-row>
 
-        <v-row>
-          <v-col
-            sm="6"
-            md="4"
-            cols="12"
-            v-for="(item, index) in testData"
-            :key="index"
-            class="pa-5"
-          >
-            <div class="main-card">
-              <section class="card-title">
-                <h3>{{ item.title }}</h3>
-              </section>
-              <div class="card-info">
-                <img :src="item.img" alt="" class="cover-img" />
-                <ul>
-                  <li class="d-flex align-center">
-                    <img src="@/assets/img/icon/date_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
-                      {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                    </p>
-                  </li>
-                  <li class="d-flex align-center mt-3">
-                    <img src="@/assets/img/icon/location_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ item.address }}
-                    </p>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </v-col>
-        </v-row>
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>輕工藝私塾</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
+      </div>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>輕工藝私塾</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
+  <v-row>
+    <v-col
+      sm="6"
+      md="4"
+      cols="12"
+      v-for="(item, index) in testData"
+      :key="index"
+      class="pa-5"
+    >
+      <div class="main-card">
+        <section class="card-title">
+          <h3>{{ item.title }}</h3>
+        </section>
+        <div class="card-info">
+          <img :src="item.img" alt="" class="cover-img" />
+          <ul>
+            <li class="d-flex align-center">
+              <img src="@/assets/img/icon/date_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
+                {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+              </p>
+            </li>
+            <li class="d-flex align-center mt-3">
+              <img src="@/assets/img/icon/location_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ item.address }}
+              </p>
+            </li>
+          </ul>
         </div>
+      </div>
+    </v-col>
+  </v-row>
 
-        <v-row>
-          <v-col
-            sm="6"
-            md="4"
-            cols="12"
-            v-for="(item, index) in testData"
-            :key="index"
-            class="pa-5"
-          >
-            <div class="main-card">
-              <section class="card-title">
-                <h3>{{ item.title }}</h3>
-              </section>
-              <div class="card-info">
-                <img :src="item.img" alt="" class="cover-img" />
-                <ul>
-                  <li class="d-flex align-center">
-                    <img src="@/assets/img/icon/date_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
-                      {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                    </p>
-                  </li>
-                  <li class="d-flex align-center mt-3">
-                    <img src="@/assets/img/icon/location_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ item.address }}
-                    </p>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </v-col>
-        </v-row>
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>手作體驗課程</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
+      </div>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>手作體驗課程</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
+  <v-row>
+    <v-col
+      sm="6"
+      md="4"
+      cols="12"
+      v-for="(item, index) in testData"
+      :key="index"
+      class="pa-5"
+    >
+      <div class="main-card">
+        <section class="card-title">
+          <h3>{{ item.title }}</h3>
+        </section>
+        <div class="card-info">
+          <img :src="item.img" alt="" class="cover-img" />
+          <ul>
+            <li class="d-flex align-center">
+              <img src="@/assets/img/icon/date_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
+                {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+              </p>
+            </li>
+            <li class="d-flex align-center mt-3">
+              <img src="@/assets/img/icon/location_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ item.address }}
+              </p>
+            </li>
+          </ul>
         </div>
-
-        <v-row>
-          <v-col
-            sm="6"
-            md="4"
-            cols="12"
-            v-for="(item, index) in testData"
-            :key="index"
-            class="pa-5"
-          >
-            <div class="main-card">
-              <section class="card-title">
-                <h3>{{ item.title }}</h3>
-              </section>
-              <div class="card-info">
-                <img :src="item.img" alt="" class="cover-img" />
-                <ul>
-                  <li class="d-flex align-center">
-                    <img src="@/assets/img/icon/date_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
-                      {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                    </p>
-                  </li>
-                  <li class="d-flex align-center mt-3">
-                    <img src="@/assets/img/icon/location_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ item.address }}
-                    </p>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </v-col>
-        </v-row>
       </div>
-    </v-container>
-  </div>
+    </v-col>
+  </v-row>
 </template>
 
 <style lang="scss" scoped>

+ 170 - 190
src/views/CollegeGroup/Cross.vue

@@ -2,11 +2,11 @@
 import { ref, reactive } from "vue";
 import axios from "axios";
 import moment from "moment";
-import Navbar from "@/components/Navbar.vue";
 import { useMainStore } from "@/stores/store";
 
 const store = useMainStore();
 
+
 const breadcrumbs = reactive([
   {
     title: "首頁",
@@ -30,7 +30,8 @@ const testData = [
     start_time: "2023/06/15",
     end_time: "2023/06/20",
     address: "地方工藝館 工藝教室",
-    introduction: "為推動工藝融入學校教育,促進工藝美學校園扎根,透過手作體驗課程,培育學校教師成為種子教師,並回到教學現場發展工藝體驗課程,傳遞工藝所能帶來的生活連結與美好體驗,誘發學生「動手做工藝」的學習興趣,開啟工藝與教育融合共好的無限可能性! 以「綠工藝」核心理念~自然、循環、平衡、寬容、生命力,將工藝體驗課程引介進入教育系統,透過辦理工藝手作課程,培育校園工藝種子人才,發展手作體驗課程,讓工藝融入教學,傳遞工藝所能帶來的生活連結與美好體驗,達到臺灣工藝價值的社會實踐。",
+    introduction:
+      "為推動工藝融入學校教育,促進工藝美學校園扎根,透過手作體驗課程,培育學校教師成為種子教師,並回到教學現場發展工藝體驗課程,傳遞工藝所能帶來的生活連結與美好體驗,誘發學生「動手做工藝」的學習興趣,開啟工藝與教育融合共好的無限可能性! 以「綠工藝」核心理念~自然、循環、平衡、寬容、生命力,將工藝體驗課程引介進入教育系統,透過辦理工藝手作課程,培育校園工藝種子人才,發展手作體驗課程,讓工藝融入教學,傳遞工藝所能帶來的生活連結與美好體驗,達到臺灣工藝價值的社會實踐。",
     img: store.getImageUrl("college-group/img.jpg"),
   },
   {
@@ -38,7 +39,8 @@ const testData = [
     start_time: "2023/06/15",
     end_time: "2023/06/20",
     address: "地方工藝館 工藝教室",
-     introduction: "為推動工藝融入學校教育,促進工藝美學校園扎根,透過手作體驗課程,培育學校教師成為種子教師,並回到教學現場發展工藝體驗課程,傳遞工藝所能帶來的生活連結與美好體驗,誘發學生「動手做工藝」的學習興趣,開啟工藝與教育融合共好的無限可能性! 以「綠工藝」核心理念~自然、循環、平衡、寬容、生命力,將工藝體驗課程引介進入教育系統,透過辦理工藝手作課程,培育校園工藝種子人才,發展手作體驗課程,讓工藝融入教學,傳遞工藝所能帶來的生活連結與美好體驗,達到臺灣工藝價值的社會實踐。",
+    introduction:
+      "為推動工藝融入學校教育,促進工藝美學校園扎根,透過手作體驗課程,培育學校教師成為種子教師,並回到教學現場發展工藝體驗課程,傳遞工藝所能帶來的生活連結與美好體驗,誘發學生「動手做工藝」的學習興趣,開啟工藝與教育融合共好的無限可能性! 以「綠工藝」核心理念~自然、循環、平衡、寬容、生命力,將工藝體驗課程引介進入教育系統,透過辦理工藝手作課程,培育校園工藝種子人才,發展手作體驗課程,讓工藝融入教學,傳遞工藝所能帶來的生活連結與美好體驗,達到臺灣工藝價值的社會實踐。",
     img: store.getImageUrl("college-group/img.jpg"),
   },
   {
@@ -46,209 +48,187 @@ const testData = [
     start_time: "2023/06/15",
     end_time: "2023/06/20",
     address: "地方工藝館 工藝教室",
-     introduction: "為推動工藝融入學校教育,促進工藝美學校園扎根,透過手作體驗課程,培育學校教師成為種子教師,並回到教學現場發展工藝體驗課程,傳遞工藝所能帶來的生活連結與美好體驗,誘發學生「動手做工藝」的學習興趣,開啟工藝與教育融合共好的無限可能性! 以「綠工藝」核心理念~自然、循環、平衡、寬容、生命力,將工藝體驗課程引介進入教育系統,透過辦理工藝手作課程,培育校園工藝種子人才,發展手作體驗課程,讓工藝融入教學,傳遞工藝所能帶來的生活連結與美好體驗,達到臺灣工藝價值的社會實踐。",
+    introduction:
+      "為推動工藝融入學校教育,促進工藝美學校園扎根,透過手作體驗課程,培育學校教師成為種子教師,並回到教學現場發展工藝體驗課程,傳遞工藝所能帶來的生活連結與美好體驗,誘發學生「動手做工藝」的學習興趣,開啟工藝與教育融合共好的無限可能性! 以「綠工藝」核心理念~自然、循環、平衡、寬容、生命力,將工藝體驗課程引介進入教育系統,透過辦理工藝手作課程,培育校園工藝種子人才,發展手作體驗課程,讓工藝融入教學,傳遞工藝所能帶來的生活連結與美好體驗,達到臺灣工藝價值的社會實踐。",
     img: store.getImageUrl("college-group/img.jpg"),
   },
 ];
 </script>
 
 <template>
-  <div class="college-bg-img">
-    <Navbar />
-    <v-container fluid class="college-content pb-16 px-sm-0">
-      <div class="college-banner">
-        <img src="@/assets/img/college-group/cross/banner.png" alt="" />
-        <h1>跨域工藝</h1>
+  <v-breadcrumbs
+    :items="breadcrumbs"
+    divider="/"
+    class="mt-10 pa-0"
+  ></v-breadcrumbs>
+
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>智財</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
       </div>
-      <div class="main-block">
-        <v-breadcrumbs
-          :items="breadcrumbs"
-          divider="/"
-          class="mt-10 pa-0"
-        ></v-breadcrumbs>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>智財</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
+  <v-row>
+    <v-col
+      sm="6"
+      md="4"
+      cols="12"
+      v-for="(item, index) in testData"
+      :key="index"
+      class="pa-5"
+    >
+      <div class="main-card">
+        <section class="card-title">
+          <h3>{{ item.title }}</h3>
+        </section>
+        <div class="card-info">
+          <img :src="item.img" alt="" class="cover-img" />
+          <ul>
+            <li class="d-flex align-center">
+              <img src="@/assets/img/icon/date_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
+                {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+              </p>
+            </li>
+            <li class="d-flex align-center mt-3">
+              <img src="@/assets/img/icon/location_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ item.address }}
+              </p>
+            </li>
+          </ul>
         </div>
+      </div>
+    </v-col>
+  </v-row>
 
-        <v-row>
-          <v-col
-            sm="6"
-            md="4"
-            cols="12"
-            v-for="(item, index) in testData"
-            :key="index"
-            class="pa-5"
-          >
-            <div class="main-card">
-              <section class="card-title">
-                <h3>{{ item.title }}</h3>
-              </section>
-              <div class="card-info">
-                <img :src="item.img" alt="" class="cover-img" />
-                <ul>
-                  <li class="d-flex align-center">
-                    <img src="@/assets/img/icon/date_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
-                      {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                    </p>
-                  </li>
-                  <li class="d-flex align-center mt-3">
-                    <img src="@/assets/img/icon/location_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ item.address }}
-                    </p>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </v-col>
-        </v-row>
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>法律</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
+      </div>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>法律</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
+  <v-row>
+    <v-col
+      sm="6"
+      md="4"
+      cols="12"
+      v-for="(item, index) in testData"
+      :key="index"
+      class="pa-5"
+    >
+      <div class="main-card">
+        <section class="card-title">
+          <h3>{{ item.title }}</h3>
+        </section>
+        <div class="card-info">
+          <img :src="item.img" alt="" class="cover-img" />
+          <ul>
+            <li class="d-flex align-center">
+              <img src="@/assets/img/icon/date_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
+                {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+              </p>
+            </li>
+            <li class="d-flex align-center mt-3">
+              <img src="@/assets/img/icon/location_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ item.address }}
+              </p>
+            </li>
+          </ul>
         </div>
+      </div>
+    </v-col>
+  </v-row>
 
-        <v-row>
-          <v-col
-            sm="6"
-            md="4"
-            cols="12"
-            v-for="(item, index) in testData"
-            :key="index"
-            class="pa-5"
-          >
-            <div class="main-card">
-              <section class="card-title">
-                <h3>{{ item.title }}</h3>
-              </section>
-              <div class="card-info">
-                <img :src="item.img" alt="" class="cover-img" />
-                <ul>
-                  <li class="d-flex align-center">
-                    <img src="@/assets/img/icon/date_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
-                      {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                    </p>
-                  </li>
-                  <li class="d-flex align-center mt-3">
-                    <img src="@/assets/img/icon/location_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ item.address }}
-                    </p>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </v-col>
-        </v-row>
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>商業</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
+      </div>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>商業</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
+  <v-row>
+    <v-col
+      sm="6"
+      md="4"
+      cols="12"
+      v-for="(item, index) in testData"
+      :key="index"
+      class="pa-5"
+    >
+      <div class="main-card">
+        <section class="card-title">
+          <h3>{{ item.title }}</h3>
+        </section>
+        <div class="card-info">
+          <img :src="item.img" alt="" class="cover-img" />
+          <ul>
+            <li class="d-flex align-center">
+              <img src="@/assets/img/icon/date_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
+                {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+              </p>
+            </li>
+            <li class="d-flex align-center mt-3">
+              <img src="@/assets/img/icon/location_icon.png" alt="" />
+              <p class="mb-0 ms-3">
+                {{ item.address }}
+              </p>
+            </li>
+          </ul>
         </div>
-
-        <v-row>
-          <v-col
-            sm="6"
-            md="4"
-            cols="12"
-            v-for="(item, index) in testData"
-            :key="index"
-            class="pa-5"
-          >
-            <div class="main-card">
-              <section class="card-title">
-                <h3>{{ item.title }}</h3>
-              </section>
-              <div class="card-info">
-                <img :src="item.img" alt="" class="cover-img" />
-                <ul>
-                  <li class="d-flex align-center">
-                    <img src="@/assets/img/icon/date_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }} -
-                      {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                    </p>
-                  </li>
-                  <li class="d-flex align-center mt-3">
-                    <img src="@/assets/img/icon/location_icon.png" alt="" />
-                    <p class="mb-0 ms-3">
-                      {{ item.address }}
-                    </p>
-                  </li>
-                </ul>
-              </div>
-            </div>
-          </v-col>
-        </v-row>
       </div>
-    </v-container>
-  </div>
+    </v-col>
+  </v-row>
 </template>
 
 <style lang="scss" scoped>

+ 48 - 61
src/views/CollegeGroup/Future.vue

@@ -42,69 +42,56 @@ const testData = [
 </script>
 
 <template>
-  <div class="college-bg-img">
-    <Navbar />
-    <v-container fluid class="college-content pb-16 px-sm-0">
-      <div class="college-banner">
-        <img src="@/assets/img/college-group/future/banner.png" alt="" />
-        <h1>未來工藝</h1>
-      </div>
-      <div class="main-block">
-        <v-breadcrumbs
-          :items="breadcrumbs"
-          divider="/"
-          class="mt-10 p-0"
-        ></v-breadcrumbs>
+  <v-breadcrumbs
+    :items="breadcrumbs"
+    divider="/"
+    class="mt-10 p-0"
+  ></v-breadcrumbs>
 
-        <div class="title">
-          <h2>研發補助</h2>
-        </div>
-
-        <ul>
-          <li v-for="(item, index) in testData" :key="index" class="mb-10">
-            <v-card
-              variant="outlined"
-              class="d-flex flex-md-row flex-column align-center pa-5"
-            >
-              <v-row class="align-center">
-                <v-col sm="4" cols="12">
-                  <img src="@/assets/img/img-04.jpg" alt="" />
-                </v-col>
-                <v-col sm="8" cols="12">
-                  <section
-                    class="d-flex flex-column px-5 px-sm-10 py-5 py-md-0"
-                  >
-                    <h2 class="ms-0 mb-16">{{ item.title }}</h2>
-                    <span class="d-flex align-center">
-                      <v-icon
-                        color="gray"
-                        icon="mdi-calendar-range"
-                        class="me-2"
-                      ></v-icon>
-                      <p>
-                        {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }}
-                        ~ {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                      </p>
-                    </span>
-                    <span class="d-flex align-center mt-3">
-                      <v-icon
-                        color="gray"
-                        icon="mdi-map-marker"
-                        class="me-2"
-                      ></v-icon>
-                      <p>
-                        {{ item.address }}
-                      </p>
-                    </span>
-                  </section>
-                </v-col>
-              </v-row>
-            </v-card>
-          </li>
-        </ul>
-      </div>
-    </v-container>
+  <div class="title">
+    <h2>研發補助</h2>
   </div>
+
+  <ul>
+    <li v-for="(item, index) in testData" :key="index" class="mb-10">
+      <v-card
+        variant="outlined"
+        class="d-flex flex-md-row flex-column align-center pa-5"
+      >
+        <v-row class="align-center">
+          <v-col sm="4" cols="12">
+            <img src="@/assets/img/img-04.jpg" alt="" />
+          </v-col>
+          <v-col sm="8" cols="12">
+            <section class="d-flex flex-column px-5 px-sm-10 py-5 py-md-0">
+              <h2 class="ms-0 mb-16">{{ item.title }}</h2>
+              <span class="d-flex align-center">
+                <v-icon
+                  color="gray"
+                  icon="mdi-calendar-range"
+                  class="me-2"
+                ></v-icon>
+                <p>
+                  {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }}
+                  ~ {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+                </p>
+              </span>
+              <span class="d-flex align-center mt-3">
+                <v-icon
+                  color="gray"
+                  icon="mdi-map-marker"
+                  class="me-2"
+                ></v-icon>
+                <p>
+                  {{ item.address }}
+                </p>
+              </span>
+            </section>
+          </v-col>
+        </v-row>
+      </v-card>
+    </li>
+  </ul>
 </template>
 
 <style lang="scss" scoped>

+ 78 - 74
src/views/CollegeGroup/Generation.vue

@@ -1,6 +1,51 @@
 <script setup>
-import { ref, reactive } from "vue";
-import Navbar from "@/components/Navbar.vue";
+import { reactive } from "vue";
+import { useMainStore } from "@/stores/store";
+
+const store = useMainStore();
+
+const data = reactive([
+  {
+    name: "2014 年工藝成就獎得主-施至輝",
+    title: "重要傳統藝術-粧佛保存者",
+    img: store.getImageUrl("college-group/generation/01.png"),
+  },
+  {
+    name: "在日昇之處的人間國寶-陳利友妹",
+    title: "十字繡工藝",
+    img: store.getImageUrl("college-group/generation/02.png"),
+  },
+  {
+    name: "賽德克工藝文化體驗 人間國寶-張鳳英",
+    title: "賦予編織新風貌",
+    img: store.getImageUrl("college-group/generation/03.png"),
+  },
+  {
+    name: "羅美玉-入選2020年「臺灣工藝之家」",
+    title: "",
+    img: store.getImageUrl("college-group/generation/04.png"),
+  },
+  {
+    name: "2021 年國家工藝成就獎得主-陳三火",
+    title: "",
+    img: store.getImageUrl("college-group/generation/05.png"),
+  },
+  {
+    name: "2020 年國家工藝成就獎得主-陳啟村",
+    title: "",
+    img: store.getImageUrl("college-group/generation/06.png"),
+  },
+  {
+    name: "2017 國家工藝成就獎得主-張憲平",
+    title: "竹編工藝 藤編工藝",
+    img: store.getImageUrl("college-group/generation/07.png"),
+  },
+  {
+    name: "2010 國家工藝成就獎得主-蘇世雄",
+    title: "陶瓷工藝",
+    img: store.getImageUrl("college-group/generation/08.png"),
+  },
+]);
 
 const breadcrumbs = reactive([
   {
@@ -21,87 +66,46 @@ const breadcrumbs = reactive([
 </script>
 
 <template>
-  <div class="college-bg-img">
-    <Navbar />
-    <v-container fluid class="college-content pb-16 px-sm-0">
-      <div class="college-banner">
-        <img
-          src="@/assets/img/college-group/generation/banner.png"
-          alt=""
-        />
-        <h1>世代工藝</h1>
-      </div>
-      <div class="main-block">
-        <v-breadcrumbs
-          :items="breadcrumbs"
-          divider="/"
-          class="mt-10 p-0"
-        ></v-breadcrumbs>
+  <v-breadcrumbs
+    :items="breadcrumbs"
+    divider="/"
+    class="mt-10 p-0"
+  ></v-breadcrumbs>
 
-        <div class="title">
-          <h2>人間國寶</h2>
-        </div>
+  <div class="title">
+    <h2>人間國寶</h2>
+  </div>
+
+  <v-row>
+    <v-col md="6" cols="12" v-for="(item, index) in data" :key="index">
+      <img :src="item.img" alt="" />
+      <h3>{{ item.name }}</h3>
+      <h4 v-if="item.title !== ''" class="mt-2">{{ item.title }}</h4>
+    </v-col>
+  </v-row>
 
-        <v-row>
-          <v-col md="6" cols="12">
-            <img
-              src="@/assets/img/college-group/generation/世代工藝-07.jpg"
-              alt=""
-            />
-            <h3>2014 年工藝成就獎得主-施至輝</h3>
-          </v-col>
-          <v-col md="6" cols="12">
-            <img
-              src="@/assets/img/college-group/generation/世代工藝-08.jpg"
-              alt=""
-            />
-            <h3>在日昇之處的人間國寶-陳利友妹</h3>
-          </v-col>
-          <v-col md="5" cols="12">
-            <img
-              src="@/assets/img/college-group/generation/世代工藝-09.jpg"
-              alt=""
-            />
-            <h3>賽德克工藝文化體驗 人間國寶-張鳳英 賦予編織新風貌</h3>
-          </v-col>
-          <v-col md="7" cols="12">
-            <img
-              src="@/assets/img/college-group/generation/世代工藝-10.jpg"
-              alt=""
-            />
-            <h3>噶瑪蘭族香蕉絲織布-嚴玉英工藝師</h3>
-          </v-col>
-          <v-col md="7" cols="12">
-            <img
-              src="@/assets/img/college-group/generation/世代工藝-11.jpg"
-              alt=""
-            />
-            <h3>羅美玉-入選 2020 年「臺灣工藝之家」</h3>
-          </v-col>
-          <v-col md="5" cols="12">
-            <img
-              src="@/assets/img/college-group/generation/世代工藝-12.jpg"
-              alt=""
-            />
-            <h3>2020 年國家工藝成就獎得主-陳啟村</h3>
-          </v-col>
-        </v-row>
-      </div>
-    </v-container>
+  <div class="title d-flex align-end">
+    <h2 class="mb-0">瀕危工藝-影音</h2>
+    <small class="ms-5">預計上架中</small>
   </div>
 </template>
 
 <style lang="scss" scoped>
 .v-row {
   padding-bottom: 30px;
-  border-bottom: 5px solid #e37bca;
 }
-h3 {
-  padding: 15px 10px;
-  color: #fff;
-  background: #000;
-  text-align: center;
+h3,
+h4 {
   font-weight: 400;
-  line-height: 24px;
+  text-align: center;
+}
+
+small {
+  font-size: 18px;
+  letter-spacing: 1px;
+  @media (max-width: 960px) {
+    font-size: 16px;
+    padding-bottom: 5px;
+  }
 }
 </style>

+ 94 - 0
src/views/CollegeGroup/Main.vue

@@ -0,0 +1,94 @@
+<script setup>
+import { ref, reactive, computed, watch } from "vue";
+import { useRouter, useRoute } from "vue-router";
+import { useMainStore } from "@/stores/store";
+import axios from "axios";
+import moment from "moment";
+import Navbar from "@/components/Navbar.vue";
+
+const route = useRoute();
+const router = useRouter();
+const store = useMainStore();
+
+let title = ref("");
+title.value = route.meta.title;
+
+// 切換路由時取得 metaTitle
+router.beforeEach((to, from) => {
+  title.value = to.meta.title;
+});
+
+console.log("this.$route.meta.", router);
+
+const path = computed(() => this.$route.matched[0].name);
+console.log("path", path);
+</script>
+
+<template>
+  <div class="college-bg-img">
+    <Navbar />
+    <v-container fluid class="college-content pb-16 px-lg-0">
+      <div class="college-banner">
+        <img src="@/assets/img/college-group/banner.png" alt="" />
+        <h1>{{ title }}</h1>
+      </div>
+      <div class="main-block">
+        <router-view></router-view>
+      </div>
+    </v-container>
+  </div>
+</template>
+
+<style lang="scss" scoped>
+.content {
+  padding: 0;
+  width: 90%;
+
+  @media (max-width: 600px) {
+    width: 85%;
+  }
+  .main-block {
+    padding: 100px 80px;
+    margin-top: -30%;
+    background-color: #fff;
+
+    @media (max-width: 960px) {
+      padding: 100px 50px;
+    }
+
+    @media (max-width: 600px) {
+      padding: 100px 20px;
+    }
+
+    h2 {
+      font-size: 30px;
+      font-weight: 500;
+      line-height: 32px;
+      margin-left: 10px;
+
+      @media (max-width: 960px) {
+        font-size: 24px;
+      }
+
+      @media (max-width: 600px) {
+        margin-left: 0;
+        margin-bottom: 50px;
+      }
+    }
+    .title {
+      margin: 80px 0;
+      @media (max-width: 600px) {
+        margin: 50px 0;
+      }
+    }
+    .v-breadcrumbs {
+      position: relative;
+      z-index: 100;
+      justify-content: flex-start;
+      @media (max-width: 600px) {
+        justify-content: center;
+      }
+    }
+  }
+}
+</style>

+ 182 - 192
src/views/CollegeGroup/Repair.vue

@@ -56,213 +56,203 @@ const testData_2 = [
 </script>
 
 <template>
-  <div class="college-bg-img">
-    <Navbar />
-    <v-container fluid class="college-content pb-16 px-sm-0">
-      <div class="college-banner">
-        <img src="@/assets/img/college-group/repair/banner.png" alt="" />
-        <h1>修護工藝</h1>
+  <v-breadcrumbs
+    :items="breadcrumbs"
+    divider="/"
+    class="mt-10 p-0"
+  ></v-breadcrumbs>
+
+  <v-row class="mt-16">
+    <v-col cols="12" md="6">
+      <h3 class="text-center mb-5">國家工藝檢測修護平臺</h3>
+      <div class="video">
+        <iframe
+          width="560"
+          height="315"
+          src="https://www.youtube.com/embed/eIOkU2q9WHA"
+          title="YouTube video player"
+          frameborder="0"
+          allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
+          allowfullscreen
+        ></iframe>
+      </div>
+    </v-col>
+    <v-col cols="12" md="6">
+      <h3 class="text-center mb-5">臺灣工藝聯合醫院-草鞋墩分院</h3>
+      <div class="video">
+        <iframe
+          width="560"
+          height="315"
+          src="https://www.youtube.com/embed/Rb318IkMo80"
+          title="YouTube video player"
+          frameborder="0"
+          allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
+          allowfullscreen
+        ></iframe>
       </div>
-      <div class="main-block">
-        <v-breadcrumbs
-          :items="breadcrumbs"
-          divider="/"
-          class="mt-10 p-0"
-        ></v-breadcrumbs>
+    </v-col>
+  </v-row>
 
-        <v-row class="mt-16">
-          <v-col cols="12" md="6">
-            <h3 class="text-center mb-5">國家工藝檢測修護平臺</h3>
-            <div class="video">
-              <iframe
-                width="560"
-                height="315"
-                src="https://www.youtube.com/embed/eIOkU2q9WHA"
-                title="YouTube video player"
-                frameborder="0"
-                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
-                allowfullscreen
-              ></iframe>
-            </div>
-          </v-col>
-          <v-col cols="12" md="6">
-            <h3 class="text-center mb-5">臺灣工藝聯合醫院-草鞋墩分院</h3>
-            <div class="video">
-              <iframe
-                width="560"
-                height="315"
-                src="https://www.youtube.com/embed/Rb318IkMo80"
-                title="YouTube video player"
-                frameborder="0"
-                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
-                allowfullscreen
-              ></iframe>
-            </div>
-          </v-col>
-        </v-row>
+  <v-row class="mt-16 article-block">
+    <v-col cols="12" sm="7" md="8">
+      <h4 class="mb-5">首創工藝聯合醫院,診斷修復再現舊物新生命</h4>
+      <p>
+        工藝中心在愛物惜物、自然永續的綠工藝精神下,成立「臺灣工藝檢測修護聯盟」,串聯專業學術單位、團體或個人工作室等成為一個工藝的照護聯合網,就像一所工藝的聯合醫院,為博物館、常民工藝或是生活收藏等需求者,提供檢測、維護及修復的服務,猶如醫院的體檢、衛教保健到診斷治療,全臺分區各有據點,提供大眾就近在地的友善服務。
+        「臺灣工藝聯合醫院-草鞋墩分院」就是照護聯合網絡的一個據點,由廖偉淇、蔣昆原、張璽元、葉璨榮、陳宜妙5位修復師進駐,服務項目有陶瓷、金屬、漆及複合媒材等修復,歡迎大家隨時來問診交流、學習工藝保養維護,親自體驗舊物新生的感動。
+        <br />
+        「國家工藝檢測修護平臺」開始受理申請,有檢測、修復及維護需求者,皆可透過「國家工藝檢測修護平臺」網站提出申請,或電話撥打0800-222-800洽詢。
+      </p>
+    </v-col>
+    <v-col
+      cols="12"
+      sm="5"
+      md="4"
+      class="d-flex flex-column align-center align-md-end justify-space-around"
+    >
+      <section>
+        <h4>檢測x修復x維護</h4>
+        <h4>保存x循環x再生</h4>
+      </section>
+      <span class="btn mt-10 mt-sm-0">
+        <v-btn block size="large"
+          >點我前往 <br />
+          「國家工藝檢測修護平臺」</v-btn
+        >
+      </span>
+    </v-col>
+  </v-row>
 
-        <v-row class="mt-16 article-block">
-          <v-col cols="12" sm="7" md="8">
-            <h4 class="mb-5">首創工藝聯合醫院,診斷修復再現舊物新生命</h4>
-            <p>
-              工藝中心在愛物惜物、自然永續的綠工藝精神下,成立「臺灣工藝檢測修護聯盟」,串聯專業學術單位、團體或個人工作室等成為一個工藝的照護聯合網,就像一所工藝的聯合醫院,為博物館、常民工藝或是生活收藏等需求者,提供檢測、維護及修復的服務,猶如醫院的體檢、衛教保健到診斷治療,全臺分區各有據點,提供大眾就近在地的友善服務。
-              「臺灣工藝聯合醫院-草鞋墩分院」就是照護聯合網絡的一個據點,由廖偉淇、蔣昆原、張璽元、葉璨榮、陳宜妙5位修復師進駐,服務項目有陶瓷、金屬、漆及複合媒材等修復,歡迎大家隨時來問診交流、學習工藝保養維護,親自體驗舊物新生的感動。
-              <br />
-              「國家工藝檢測修護平臺」開始受理申請,有檢測、修復及維護需求者,皆可透過「國家工藝檢測修護平臺」網站提出申請,或電話撥打0800-222-800洽詢。
-            </p>
-          </v-col>
-          <v-col
-            cols="12"
-            sm="5"
-            md="4"
-            class="d-flex flex-column align-center align-md-end justify-space-around"
-          >
-            <section>
-              <h4>檢測x修復x維護</h4>
-              <h4>保存x循環x再生</h4>
-            </section>
-            <span class="btn mt-10 mt-sm-0">
-              <v-btn block size="large"
-                >點我前往 <br />
-                「國家工藝檢測修護平臺」</v-btn
-              >
-            </span>
-          </v-col>
-        </v-row>
+  <div
+    class="d-flex flex-column flex-sm-row align-center justify-space-between title"
+  >
+    <h2>修護課程</h2>
+    <div class="search">
+      <span>
+        <input v-model="searchInput" type="text" @keyup.enter="search()" />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
+      </div>
+    </div>
+  </div>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-space-between title"
-        >
-          <h2>修護課程</h2>
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
+  <ul class="course-list">
+    <li v-for="(item, index) in testData_1" :key="index" class="mb-10">
+      <v-card variant="outlined" class="d-flex flex-column align-center pa-0">
+        <h2 class="text-center ma-0 pa-3">{{ item.title }}</h2>
+
+        <div class="d-flex flex-column flex-sm-row align-center content">
+          <img src="@/assets/img/img-04.jpg" alt="" />
+          <section
+            class="d-flex flex-column justify-space-between px-5 px-sm-10 py-5 py-md-0"
+          >
+            <p>{{ item.describe }}</p>
+            <div class="mt-10">
+              <span class="d-flex align-center">
+                <v-icon
+                  color="gray"
+                  icon="mdi-calendar-range"
+                  class="me-2"
+                ></v-icon>
+                <p>
+                  {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }}
+                  ~ {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
+                </p>
+              </span>
+              <span class="d-flex align-center mt-1">
+                <v-icon
+                  color="gray"
+                  icon="mdi-map-marker"
+                  class="me-2"
+                ></v-icon>
+                <p>
+                  {{ item.address }}
+                </p>
+              </span>
             </div>
-          </div>
+          </section>
         </div>
+      </v-card>
+    </li>
+  </ul>
+
+  <div class="d-flex justify-end">
+    <button class="past-btn">觀看已過期課程</button>
+  </div>
 
-        <ul class="course-list">
-          <li v-for="(item, index) in testData_1" :key="index" class="mb-10">
-            <v-card
-              variant="outlined"
-              class="d-flex flex-column align-center pa-0"
-            >
-              <h2 class="text-center ma-0 pa-3">{{ item.title }}</h2>
+  <h2 class="my-10">工藝修護師</h2>
 
-              <div class="d-flex flex-column flex-sm-row align-center content">
-                <img src="@/assets/img/img-04.jpg" alt="" />
-                <section
-                  class="d-flex flex-column justify-space-between px-5 px-sm-10 py-5 py-md-0"
-                >
-                  <p>{{ item.describe }}</p>
-                  <div class="mt-10">
-                    <span class="d-flex align-center">
-                      <v-icon
-                        color="gray"
-                        icon="mdi-calendar-range"
-                        class="me-2"
-                      ></v-icon>
-                      <p>
-                        {{ moment(`${item.start_time}`).format("YYYY/MM/DD") }}
-                        ~ {{ moment(`${item.end_time}`).format("YYYY/MM/DD") }}
-                      </p>
-                    </span>
-                    <span class="d-flex align-center mt-1">
-                      <v-icon
-                        color="gray"
-                        icon="mdi-map-marker"
-                        class="me-2"
-                      ></v-icon>
-                      <p>
-                        {{ item.address }}
-                      </p>
-                    </span>
-                  </div>
-                </section>
-              </div>
-            </v-card>
-          </li>
+  <v-row class="master-list">
+    <v-col
+      cols="12"
+      md="6"
+      class="v-col-md-6 v-col-12 d-flex flex-column flex-md-row align-center justify-md-center"
+    >
+      <img src="@/assets/img/college-group/repair/修護-12.png" alt="" />
+      <section class="mt-5 mt-md-0 ms-md-5">
+        <h3>廖偉淇</h3>
+        <span class="d-block mt-3 mb-5">金工木印工作室</span>
+        <ul>
+          <li>主要修護媒材</li>
+          <li>金屬:金/銀首飾、銀/銅茶具、餐具。</li>
+          <li>陶瓷:花器、餐具、茶道具、香道具。</li>
+          <li>主要修復技法:鋦瓷、漆繕、金工鍛造、脫腊鑄造。</li>
         </ul>
+      </section>
+    </v-col>
+    <v-col
+      cols="12"
+      md="6"
+      class="v-col-md-6 v-col-12 d-flex flex-column flex-md-row align-center justify-md-center"
+    >
+      <img src="@/assets/img/college-group/repair/修護-13.png" alt="" />
+      <section class="mt-5 mt-md-0 ms-md-5">
+        <h3>陳高登</h3>
+        <span class="d-block mt-3 mb-5">金工木印工作室</span>
+        <ul>
+          <li>主要修護媒材</li>
+          <li>陶瓷器物</li>
+        </ul>
+      </section>
+    </v-col>
+  </v-row>
 
-        <div class="d-flex justify-end">
-          <button class="past-btn">觀看已過期課程</button>
-        </div>
-
-        <h2 class="my-10">工藝修護師</h2>
+  <h2 class="mt-16 mb-10">修護故事</h2>
 
-        <v-row class="master-list">
-          <v-col cols="12" md="6" class="v-col-md-6 v-col-12 d-flex flex-column flex-md-row align-center justify-md-center">
-            <img src="@/assets/img/college-group/repair/修護-12.png" alt="" />
-            <section class="mt-5 mt-md-0 ms-md-5">
-              <h3>廖偉淇</h3>
-              <span class="d-block mt-3 mb-5">金工木印工作室</span>
-              <ul>
-                <li>主要修護媒材</li>
-                <li>金屬:金/銀首飾、銀/銅茶具、餐具。</li>
-                <li>陶瓷:花器、餐具、茶道具、香道具。</li>
-                <li>主要修復技法:鋦瓷、漆繕、金工鍛造、脫腊鑄造。</li>
-              </ul>
-            </section>
+  <ul class="story-list">
+    <li v-for="(item, index) in testData_2" :key="index" class="mb-5">
+      <section class="d-flex">
+        <p class="mx-3 my-5 date">
+          {{ moment(`${item.start_time}`).format("YYYY-MM-DD") }}
+        </p>
+      </section>
+      <v-card
+        variant="outlined"
+        class="d-flex flex-md-row flex-column align-center pa-5"
+      >
+        <v-row class="align-center">
+          <v-col cols="12" sm="5" md="3">
+            <router-link :to="`/news/${item.news_id}`" class="cover-img">
+              <img src="@/assets/img/img-04.jpg" alt="" />
+            </router-link>
           </v-col>
-          <v-col cols="12" md="6" class="v-col-md-6 v-col-12 d-flex flex-column flex-md-row align-center justify-md-center">
-            <img src="@/assets/img/college-group/repair/修護-13.png" alt="" />
-            <section class="mt-5 mt-md-0 ms-md-5">
-              <h3>陳高登</h3>
-              <span class="d-block mt-3 mb-5">金工木印工作室</span>
-              <ul>
-                <li>主要修護媒材</li>
-                <li>陶瓷器物</li>
-              </ul>
+          <v-col cols="12" sm="7" md="9">
+            <section class="d-flex flex-column py-5 py-md-0">
+              <h2 class="mb-8">{{ item.title }}</h2>
+              <p v-html="item.describe"></p>
             </section>
           </v-col>
         </v-row>
-
-        <h2 class="mt-16 mb-10">修護故事</h2>
-
-        <ul class="story-list">
-          <li v-for="(item, index) in testData_2" :key="index" class="mb-5">
-            <section class="d-flex">
-              <p class="mx-3 my-5 date">
-                {{ moment(`${item.start_time}`).format("YYYY-MM-DD") }}
-              </p>
-            </section>
-            <v-card
-              variant="outlined"
-              class="d-flex flex-md-row flex-column align-center pa-5"
-            >
-              <v-row class="align-center">
-                <v-col cols="12" sm="5" md="3">
-                  <router-link :to="`/news/${item.news_id}`" class="cover-img">
-                    <img src="@/assets/img/img-04.jpg" alt="" />
-                  </router-link>
-                </v-col>
-                <v-col cols="12" sm="7" md="9">
-                  <section class="d-flex flex-column py-5 py-md-0">
-                    <h2 class="mb-8">{{ item.title }}</h2>
-                    <p v-html="item.describe"></p>
-                  </section>
-                </v-col>
-              </v-row>
-            </v-card>
-          </li>
-        </ul>
-      </div>
-    </v-container>
-  </div>
+      </v-card>
+    </li>
+  </ul>
 </template>
 
 <style lang="scss" scoped>

+ 76 - 93
src/views/CollegeGroup/Teenager.vue

@@ -79,59 +79,45 @@ const categoryList = reactive([
 </script>
 
 <template>
-  <div class="college-bg-img">
-    <Navbar />
-    <v-container fluid class="college-content pb-16 px-sm-0">
-      <div class="college-banner">
-        <img src="@/assets/img/college-group/teenager/banner.png" alt="" />
-        <h1>青年工藝</h1>
-      </div>
-      <div class="main-block">
-        <v-breadcrumbs
-          :items="breadcrumbs"
-          divider="/"
-          class="mt-10 p-0"
-        ></v-breadcrumbs>
+  <v-breadcrumbs
+    :items="breadcrumbs"
+    divider="/"
+    class="mt-10 p-0"
+  ></v-breadcrumbs>
 
-        <div
-          class="d-flex flex-column flex-sm-row align-center justify-end title"
-        >
-          <div class="search">
-            <span>
-              <input
-                v-model="searchInput"
-                type="text"
-                @keyup.enter="search()"
-                placeholder="關鍵字搜尋"
-              />
-              <button @click="search()">
-                <img src="@/assets/img/news/news-search-icon.png" alt="" />
-              </button>
-            </span>
-            <div
-              v-if="searchError"
-              class="d-flex justify-center align-center error me-4"
-            >
-              <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
-              沒有符合搜尋條件的項目
-            </div>
-          </div>
-        </div>
+  <div class="d-flex flex-column flex-sm-row align-center justify-end title">
+    <div class="search">
+      <span>
+        <input
+          v-model="searchInput"
+          type="text"
+          @keyup.enter="search()"
+          placeholder="關鍵字搜尋"
+        />
+        <button @click="search()">
+          <img src="@/assets/img/news/news-search-icon.png" alt="" />
+        </button>
+      </span>
+      <div
+        v-if="searchError"
+        class="d-flex justify-center align-center error me-4"
+      >
+        <v-icon color="primary" icon="mdi-alert" class="me-2"></v-icon>
+        沒有符合搜尋條件的項目
+      </div>
+    </div>
+  </div>
 
-        <v-row>
-          <v-col sm="2" cols="12" class="px-0">
-            <ul class="btn-list">
-              <li
-                v-for="(item, index) in categoryList"
-                :key="index"
-                class="mx-3"
-              >
-                <v-btn class="mb-5" variant="outlined">
-                  {{ item.title }}
-                </v-btn>
-              </li>
-            </ul>
-            <!-- <v-btn
+  <v-row>
+    <v-col sm="2" cols="12" class="px-0">
+      <ul class="btn-list">
+        <li v-for="(item, index) in categoryList" :key="index" class="mx-3">
+          <v-btn class="mb-5" variant="outlined">
+            {{ item.title }}
+          </v-btn>
+        </li>
+      </ul>
+      <!-- <v-btn
               v-for="(item, index) in categoryList"
               :key="index"
               :class="{ 'me-5': index !== categoryList.length - 1 }"
@@ -140,48 +126,45 @@ const categoryList = reactive([
             >
               {{ item.title }}
             </v-btn> -->
-          </v-col>
-          <v-col sm="10" cols="12">
-            <ul>
-              <li
-                v-for="(item, index) in testData"
-                :key="index"
-                class="post-item pa-5"
-                rounded="xl"
-              >
-                <section class="d-flex">
-                  <p class="category mb-5">
-                    <span></span>
-                    {{ item.category }}
-                  </p>
-                  <p class="ms-5">
-                    {{ moment(`${item.date}`).format("YYYY-MM-DD") }}
-                  </p>
-                </section>
-                <v-card
-                  variant="outlined"
-                  class="d-flex flex-md-row flex-column align-center pa-5"
-                >
-                  <v-row class="align-center">
-                    <v-col cols="12">
-                      <h3>{{ item.title }}</h3>
-                      <ul>
-                        <li class="d-flex align-center mt-3">
-                          <p class="mb-0 ms-3">
-                            {{ item.introduction }}
-                          </p>
-                        </li>
-                      </ul>
-                    </v-col>
-                  </v-row>
-                </v-card>
-              </li>
-            </ul>
-          </v-col>
-        </v-row>
-      </div>
-    </v-container>
-  </div>
+    </v-col>
+    <v-col sm="10" cols="12">
+      <ul>
+        <li
+          v-for="(item, index) in testData"
+          :key="index"
+          class="post-item pa-5"
+          rounded="xl"
+        >
+          <section class="d-flex">
+            <p class="category mb-5">
+              <span></span>
+              {{ item.category }}
+            </p>
+            <p class="ms-5">
+              {{ moment(`${item.date}`).format("YYYY-MM-DD") }}
+            </p>
+          </section>
+          <v-card
+            variant="outlined"
+            class="d-flex flex-md-row flex-column align-center pa-5"
+          >
+            <v-row class="align-center">
+              <v-col cols="12">
+                <h3>{{ item.title }}</h3>
+                <ul>
+                  <li class="d-flex align-center mt-3">
+                    <p class="mb-0 ms-3">
+                      {{ item.introduction }}
+                    </p>
+                  </li>
+                </ul>
+              </v-col>
+            </v-row>
+          </v-card>
+        </li>
+      </ul>
+    </v-col>
+  </v-row>
 </template>
 
 <style lang="scss" scoped>

+ 19 - 2
src/views/Home.vue

@@ -167,7 +167,24 @@ const getClassList = async (locationId) => {
                   :to="`/course-detail/${item.class_name_id}`"
                   class="link"
                 >
-                  <img :src="item.cover_img" alt="" />
+                <v-img
+                    :lazy-src="item.cover_img"
+                    cover
+                    :src="item.cover_img"
+                  >
+                    <template v-slot:placeholder>
+                      <div
+                        class="d-flex align-center justify-center fill-height"
+                      >
+                        <v-progress-circular
+                          color="grey-lighten-4"
+                          indeterminate
+                        ></v-progress-circular>
+                      </div>
+                    </template>
+                  </v-img>
+
+                  <!-- <img :src="item.cover_img"  :lazy-src="item.cover_img" alt="" /> -->
                 </router-link>
                 <section>
                   <h2>{{ item.name }}</h2>
@@ -267,7 +284,7 @@ const getClassList = async (locationId) => {
       margin-right: 20px;
       border-radius: 5px;
       overflow: hidden;
-      img {
+      .v-img {
         // width: 100%;
         height: 175px;
         margin-right: 20px;

+ 0 - 22
src/views/User/Dashboard.vue

@@ -90,28 +90,6 @@ let items = [
 
       <v-col cols="12" md="9">
         <router-view></router-view>
-        <!-- <v-card class="h-100">
-          <v-tabs v-model="tab" color="primary" align-tabs="start">
-            <v-tab :value="1">我的收藏</v-tab>
-            <v-tab :value="2">我的學習</v-tab>
-          </v-tabs>
-          <v-window v-model="tab">
-            <v-window-item :value="1">
-              <v-container>
-                <v-row>
-                  <v-col> 我的收藏 </v-col>
-                </v-row>
-              </v-container>
-            </v-window-item>
-            <v-window-item :value="2">
-              <v-container>
-                <v-row>
-                  <v-col> 我的學習 </v-col>
-                </v-row>
-              </v-container>
-            </v-window-item>
-          </v-window>
-        </v-card> -->
       </v-col>
     </v-row>
   </v-container>

Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff