|
@@ -31,19 +31,24 @@ const breadcrumbs = reactive([
|
|
|
|
|
|
const categoryList = reactive([
|
|
|
{
|
|
|
+ id: 1256,
|
|
|
title: "匠作之手",
|
|
|
+ active: true,
|
|
|
},
|
|
|
{
|
|
|
+ id: 1255,
|
|
|
title: "手作學習",
|
|
|
+ active: false,
|
|
|
},
|
|
|
{
|
|
|
- title: "他山之石",
|
|
|
+ id: 1221,
|
|
|
+ title: "工藝行旅",
|
|
|
+ active: false,
|
|
|
},
|
|
|
{
|
|
|
- title: "推薦影片",
|
|
|
- },
|
|
|
- {
|
|
|
- title: "最新影片",
|
|
|
+ id: 1253,
|
|
|
+ title: "檢測修復",
|
|
|
+ active: false,
|
|
|
},
|
|
|
]);
|
|
|
|
|
@@ -117,6 +122,14 @@ async function selectFilter(type, val) {
|
|
|
getClass();
|
|
|
}
|
|
|
|
|
|
+let activeCategory = ref(1256);
|
|
|
+
|
|
|
+function setCategory(id) {
|
|
|
+ activeCategory.value = id;
|
|
|
+ console.log("activeCategory.value", activeCategory.value);
|
|
|
+ getImediaVideo();
|
|
|
+}
|
|
|
+
|
|
|
const searchLocation = ref(null);
|
|
|
let imedia = reactive({
|
|
|
list: [],
|
|
@@ -130,8 +143,12 @@ watch(imediaCurrentPage, () => {
|
|
|
searchLocation.value.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
|
});
|
|
|
|
|
|
+let videoLoading = ref(false);
|
|
|
+
|
|
|
async function getImediaVideo() {
|
|
|
- let url = `${store.apiUrl}/api/get_media_data?media_categories_id=1256&page=${imediaCurrentPage.value}&page_size=8`;
|
|
|
+ videoLoading.value = true;
|
|
|
+
|
|
|
+ let url = `${store.apiUrl}/api/get_media_data?media_categories_id=${activeCategory.value}&page=${imediaCurrentPage.value}&page_size=8`;
|
|
|
|
|
|
try {
|
|
|
imedia.list = [];
|
|
@@ -142,8 +159,9 @@ async function getImediaVideo() {
|
|
|
|
|
|
imediaTotalPages.value = store.getTotalPages(list.sum, 8); // 計算頁數
|
|
|
console.log("imediaTotalPages", imediaTotalPages.value);
|
|
|
-
|
|
|
console.log("imedia list", imedia.list);
|
|
|
+
|
|
|
+ videoLoading.value = false;
|
|
|
} catch (error) {
|
|
|
loading.value = false;
|
|
|
console.error(error);
|
|
@@ -193,13 +211,25 @@ getImediaVideo();
|
|
|
<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">
|
|
|
+ <v-btn
|
|
|
+ @click="setCategory(item.id)"
|
|
|
+ class="mb-5"
|
|
|
+ :class="{ active: item.active }"
|
|
|
+ variant="outlined"
|
|
|
+ >
|
|
|
{{ item.title }}
|
|
|
</v-btn>
|
|
|
</li>
|
|
|
</ul>
|
|
|
</v-col>
|
|
|
<v-col sm="10" cols="12">
|
|
|
+ <div class="d-flex justify-center mb-10" v-if="videoLoading">
|
|
|
+ <v-progress-circular
|
|
|
+ color="grey-lighten-4"
|
|
|
+ indeterminate
|
|
|
+ ></v-progress-circular>
|
|
|
+ </div>
|
|
|
+
|
|
|
<v-row class="video-list">
|
|
|
<v-col
|
|
|
cols="12"
|
|
@@ -208,11 +238,6 @@ getImediaVideo();
|
|
|
:key="index"
|
|
|
class="mb-5 mb-md-0"
|
|
|
>
|
|
|
- <!-- <video controls class="w-100">
|
|
|
- <source :src="item.video" type="video/mp4" />
|
|
|
- <a :href="item.video"></a>
|
|
|
- </video> -->
|
|
|
-
|
|
|
<v-dialog
|
|
|
transition="dialog-top-transition"
|
|
|
width="853"
|
|
@@ -224,7 +249,6 @@ getImediaVideo();
|
|
|
v-bind="props"
|
|
|
class="mx-auto cover-img"
|
|
|
:lazy-src="item.image_m"
|
|
|
- height="13.75em"
|
|
|
cover
|
|
|
:src="item.image_m"
|
|
|
>
|
|
@@ -444,6 +468,11 @@ getImediaVideo();
|
|
|
opacity: 0;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .active {
|
|
|
+ color: #fff;
|
|
|
+ background-color: var(--purple);
|
|
|
+ }
|
|
|
}
|
|
|
.video-list {
|
|
|
h3 {
|
|
@@ -478,22 +507,23 @@ getImediaVideo();
|
|
|
overflow: hidden;
|
|
|
border-radius: 20px;
|
|
|
.v-img {
|
|
|
- height: 260px;
|
|
|
+ height: 225px;
|
|
|
width: 100%;
|
|
|
object-fit: cover;
|
|
|
border-radius: 20px;
|
|
|
transition: all 0.5s;
|
|
|
+ cursor: pointer;
|
|
|
|
|
|
@media (max-width: 1200px) {
|
|
|
- height: 190px;
|
|
|
+ height: 160px;
|
|
|
}
|
|
|
|
|
|
@media (max-width: 960px) {
|
|
|
- height: 38vw;
|
|
|
+ height: 32vw;
|
|
|
}
|
|
|
|
|
|
@media (max-width: 600px) {
|
|
|
- height: 45vw;
|
|
|
+ height: 37vw;
|
|
|
}
|
|
|
|
|
|
&:hover {
|