|
|
@ -1,5 +1,4 @@ |
|
|
|
<template> |
|
|
|
<template> |
|
|
|
|
|
|
|
|
|
|
|
<div v-wechat-title="class1_title + ' - ' + class2_title + $route.meta.title" v-if="class1_title && class2_title"></div> |
|
|
|
<div v-wechat-title="class1_title + ' - ' + class2_title + $route.meta.title" v-if="class1_title && class2_title"></div> |
|
|
|
<div v-wechat-title="class1_title + ' - ' + $route.meta.title" v-if="class1_title && !class2_title"></div> |
|
|
|
<div v-wechat-title="class1_title + ' - ' + $route.meta.title" v-if="class1_title && !class2_title"></div> |
|
|
|
<div v-wechat-title="class2_title + ' - ' + $route.meta.title" v-if="class2_title && !class1_title"></div> |
|
|
|
<div v-wechat-title="class2_title + ' - ' + $route.meta.title" v-if="class2_title && !class1_title"></div> |
|
|
@ -7,14 +6,12 @@ |
|
|
|
|
|
|
|
|
|
|
|
<div class="video-page w1200 m-dn"> |
|
|
|
<div class="video-page w1200 m-dn"> |
|
|
|
<div class="type"> |
|
|
|
<div class="type"> |
|
|
|
|
|
|
|
|
|
|
|
<div class="category"> |
|
|
|
<div class="category"> |
|
|
|
<div class="wrapper"> |
|
|
|
<div class="wrapper"> |
|
|
|
<span class="title">课程方向</span> |
|
|
|
<span class="title">课程方向</span> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" :class="{ active: query.class1 === 0 }" @click="changeCategory(0)">全部</li> |
|
|
|
<li class="category-item" :class="{ active: query.class1 === 0 }" @click="changeCategory(0)">全部</li> |
|
|
|
<li class="category-item" v-for="(item,i) in class1_list" :key="i" |
|
|
|
<li class="category-item" v-for="(item, i) in class1_list" :key="i" :class="{ active: query.class1 === item.id }" @click="changeCategory(item.id, item.name)"> |
|
|
|
:class="{active: query.class1 === item.id}" @click="changeCategory(item.id,item.name)"> |
|
|
|
|
|
|
|
{{ item.name }} |
|
|
|
{{ item.name }} |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
@ -26,8 +23,7 @@ |
|
|
|
<span class="title">课程标签</span> |
|
|
|
<span class="title">课程标签</span> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" :class="{ active: query.class2 === 0 }" @click="changeCategory2(0)">全部</li> |
|
|
|
<li class="category-item" :class="{ active: query.class2 === 0 }" @click="changeCategory2(0)">全部</li> |
|
|
|
<li class="category-item" v-for="(item,i) in class2_list" :key="i" |
|
|
|
<li class="category-item" v-for="(item, i) in class2_list" :key="i" :class="{ active: query.class2 === item.id }" @click="changeCategory2(item.id, item.name)"> |
|
|
|
:class="{active: query.class2 === item.id}" @click="changeCategory2(item.id,item.name)"> |
|
|
|
|
|
|
|
{{ item.name }} |
|
|
|
{{ item.name }} |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
@ -38,16 +34,14 @@ |
|
|
|
<div class="wrapper"> |
|
|
|
<div class="wrapper"> |
|
|
|
<span class="title">课程价格</span> |
|
|
|
<span class="title">课程价格</span> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" v-for="(item,i) in priceList" :key="i" :class="{active: query.price === item.id}" |
|
|
|
<li class="category-item" v-for="(item, i) in priceList" :key="i" :class="{ active: query.price === item.id }" @click="changePrice(item.id)">{{ item.name }}</li> |
|
|
|
@click="changePrice(item.id)">{{item.name}}</li> |
|
|
|
|
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="sort flex-1"> |
|
|
|
<div class="sort flex-1"> |
|
|
|
<div class="wrapper"> |
|
|
|
<div class="wrapper"> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" v-for="(item,i) in sortList" :key="i" :class="{active: query.sort === item.id}" |
|
|
|
<li class="category-item" v-for="(item, i) in sortList" :key="i" :class="{ active: query.sort === item.id }" @click="changeSort(item.id)"> |
|
|
|
@click="changeSort(item.id)"> |
|
|
|
|
|
|
|
<el-tooltip :content="item.label" placement="top"> |
|
|
|
<el-tooltip :content="item.label" placement="top"> |
|
|
|
<span>{{ item.name }} <i :class="item.icon"></i></span> |
|
|
|
<span>{{ item.name }} <i :class="item.icon"></i></span> |
|
|
|
</el-tooltip> |
|
|
|
</el-tooltip> |
|
|
@ -60,7 +54,6 @@ |
|
|
|
|
|
|
|
|
|
|
|
<!-- v-if="onresize > 1200" 暂时不需要这个判断 --> |
|
|
|
<!-- v-if="onresize > 1200" 暂时不需要这个判断 --> |
|
|
|
<el-skeleton :loading="loading" animated class="m-dn"> |
|
|
|
<el-skeleton :loading="loading" animated class="m-dn"> |
|
|
|
|
|
|
|
|
|
|
|
<template #template> |
|
|
|
<template #template> |
|
|
|
<div class="w1200 video-page"> |
|
|
|
<div class="w1200 video-page"> |
|
|
|
<div class="video-wrap"> |
|
|
|
<div class="video-wrap"> |
|
|
@ -75,12 +68,9 @@ |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
<template #default> |
|
|
|
<template #default> |
|
|
|
|
|
|
|
|
|
|
|
<div class="video-page w1200 m-dn"> |
|
|
|
<div class="video-page w1200 m-dn"> |
|
|
|
|
|
|
|
|
|
|
|
<div class="video-wrap"> |
|
|
|
<div class="video-wrap"> |
|
|
|
<ul class="video-list"> |
|
|
|
<ul class="video-list"> |
|
|
|
|
|
|
|
|
|
|
|
<li class="video-item" v-for="(item, i) in videoList" :key="i"> |
|
|
|
<li class="video-item" v-for="(item, i) in videoList" :key="i"> |
|
|
|
<router-link :to="'/video/' + item.id" target="_blank"> |
|
|
|
<router-link :to="'/video/' + item.id" target="_blank"> |
|
|
|
<div class="imgps"> |
|
|
|
<div class="imgps"> |
|
|
@ -88,11 +78,8 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<h2 class="hide-txt2 f16">{{ item.it618_name }}</h2> |
|
|
|
<h2 class="hide-txt2 f16">{{ item.it618_name }}</h2> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div v-if="item.it618_saleprice" class="saleprice"> |
|
|
|
<div v-if="item.it618_saleprice" class="saleprice"> |
|
|
|
<span class="colff3"> |
|
|
|
<span class="colff3"> <i class="f14">¥</i>{{ item.it618_saleprice }} </span> |
|
|
|
<i class="f14">¥</i>{{item.it618_saleprice}} |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
<del>¥{{ item.it618_price }}</del> |
|
|
|
<del>¥{{ item.it618_price }}</del> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="tag" v-else>{{ item.it618_saleprice ? item.it618_saleprice : "免费" }}</div> |
|
|
|
<div class="tag" v-else>{{ item.it618_saleprice ? item.it618_saleprice : "免费" }}</div> |
|
|
@ -107,18 +94,15 @@ |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<el-empty :image-size="90" description="暂无数据" v-if="videoList.length<=0"> |
|
|
|
<el-empty :image-size="90" description="暂无数据" v-if="videoList.length <= 0"> </el-empty> |
|
|
|
</el-empty> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div style="margin: 30px 0 10px"> |
|
|
|
<div style="margin: 30px 0 10px"> |
|
|
|
<el-pagination class="pagination" v-model:currentPage="query.page" background layout="prev, pager, next" |
|
|
|
<el-pagination class="pagination" v-model:currentPage="query.page" background layout="prev, pager, next" @current-change="handleCurrentChange" :total="total" :page-size="query.perpage" /> |
|
|
|
@current-change="handleCurrentChange" :total="total" :page-size="query.perpage" /> |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-skeleton> |
|
|
|
</el-skeleton> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 移动端 --> |
|
|
|
<!-- 移动端 --> |
|
|
|
<div class="tool-box-m dn m-db"> |
|
|
|
<div class="tool-box-m dn m-db"> |
|
|
|
<div class="flex-3"> |
|
|
|
<div class="flex-3"> |
|
|
@ -130,8 +114,7 @@ |
|
|
|
</span> |
|
|
|
</span> |
|
|
|
<template #dropdown> |
|
|
|
<template #dropdown> |
|
|
|
<el-dropdown-menu> |
|
|
|
<el-dropdown-menu> |
|
|
|
<el-dropdown-item class="category-item" v-for="(item,i) in sortList" :key="i" |
|
|
|
<el-dropdown-item class="category-item" v-for="(item, i) in sortList" :key="i" :class="{ col008: query.sort === item.id }" @click="changeSort(item.id, item.name)"> |
|
|
|
:class="{col008: query.sort === item.id}" @click="changeSort(item.id,item.name)"> |
|
|
|
|
|
|
|
<span>{{ item.name }}</span> |
|
|
|
<span>{{ item.name }}</span> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-item> |
|
|
|
</el-dropdown-menu> |
|
|
|
</el-dropdown-menu> |
|
|
@ -143,15 +126,11 @@ |
|
|
|
<span style="margin-right: 6px; margin-top: -2px;">筛选课程</span> |
|
|
|
<span style="margin-right: 6px; margin-top: -2px;">筛选课程</span> |
|
|
|
<i class="iconfont icon-shaixuan1 f14"></i> |
|
|
|
<i class="iconfont icon-shaixuan1 f14"></i> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 移动端视频列表 --> |
|
|
|
<!-- 移动端视频列表 --> |
|
|
|
<el-skeleton :loading="loading" animated class="dn m-db"> |
|
|
|
<el-skeleton :loading="loading" animated class="dn m-db"> |
|
|
|
|
|
|
|
|
|
|
|
<template #template> |
|
|
|
<template #template> |
|
|
|
<div class="w1200 video-page"> |
|
|
|
<div class="w1200 video-page"> |
|
|
|
<div class="video-wrap"> |
|
|
|
<div class="video-wrap"> |
|
|
@ -171,7 +150,6 @@ |
|
|
|
|
|
|
|
|
|
|
|
<template #default> |
|
|
|
<template #default> |
|
|
|
<div class="dn m-db"> |
|
|
|
<div class="dn m-db"> |
|
|
|
|
|
|
|
|
|
|
|
<van-list v-model:loading="loading_m" :finished="max_total" :offset="0" finished-text="没有更多了" error-text="请求失败,点击重新加载" @load="loadVlist"> |
|
|
|
<van-list v-model:loading="loading_m" :finished="max_total" :offset="0" finished-text="没有更多了" error-text="请求失败,点击重新加载" @load="loadVlist"> |
|
|
|
<div class="video-list-m"> |
|
|
|
<div class="video-list-m"> |
|
|
|
<li class="item" v-for="(item, i) in videoList" :key="i"> |
|
|
|
<li class="item" v-for="(item, i) in videoList" :key="i"> |
|
|
@ -184,9 +162,7 @@ |
|
|
|
<h2 class="hide-txt f16">{{ item.it618_name }}</h2> |
|
|
|
<h2 class="hide-txt f16">{{ item.it618_name }}</h2> |
|
|
|
|
|
|
|
|
|
|
|
<div v-if="item.it618_saleprice" class="saleprice"> |
|
|
|
<div v-if="item.it618_saleprice" class="saleprice"> |
|
|
|
<span class="colff3"> |
|
|
|
<span class="colff3"> <i class="f14">¥</i>{{ item.it618_saleprice }} </span> |
|
|
|
<i class="f14">¥</i>{{item.it618_saleprice}} |
|
|
|
|
|
|
|
</span> |
|
|
|
|
|
|
|
<del>¥{{ item.it618_price }}</del> |
|
|
|
<del>¥{{ item.it618_price }}</del> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
@ -200,25 +176,19 @@ |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</van-list> |
|
|
|
</van-list> |
|
|
|
|
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
</template> |
|
|
|
</el-skeleton> |
|
|
|
</el-skeleton> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 筛选抽屉 --> |
|
|
|
<!-- 筛选抽屉 --> |
|
|
|
<el-drawer v-model="videDrawer" :with-header="false" title="筛选课程" direction="btt" custom-class="video-drawer" |
|
|
|
<el-drawer v-model="videDrawer" :with-header="false" title="筛选课程" direction="btt" custom-class="video-drawer" size="86%"> |
|
|
|
size="86%"> |
|
|
|
|
|
|
|
<el-scrollbar style=" position: absolute; height: 90%; margin:14px 6px 0;" height="300" always> |
|
|
|
<el-scrollbar style=" position: absolute; height: 90%; margin:14px 6px 0;" height="300" always> |
|
|
|
<div class="category"> |
|
|
|
<div class="category"> |
|
|
|
<div class="wrapper-video-m"> |
|
|
|
<div class="wrapper-video-m"> |
|
|
|
<div class="title">课程方向</div> |
|
|
|
<div class="title">课程方向</div> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" :class="{ active: query.class1 === 0 }" @click="changeCategory(0)">全部</li> |
|
|
|
<li class="category-item" :class="{ active: query.class1 === 0 }" @click="changeCategory(0)">全部</li> |
|
|
|
<li class="category-item" v-for="(item,i) in class1_list" :key="i" |
|
|
|
<li class="category-item" v-for="(item, i) in class1_list" :key="i" :class="{ active: query.class1 === item.id }" @click="screening_memory(item.id, 'class1')"> |
|
|
|
:class="{active: query.class1 === item.id}" @click="screening_memory(item.id,'class1')"> |
|
|
|
|
|
|
|
{{ item.name }} |
|
|
|
{{ item.name }} |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
@ -230,8 +200,7 @@ |
|
|
|
<div class="title">课程标签</div> |
|
|
|
<div class="title">课程标签</div> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" :class="{ active: query.class2 === 0 }" @click="changeCategory2(0)">全部</li> |
|
|
|
<li class="category-item" :class="{ active: query.class2 === 0 }" @click="changeCategory2(0)">全部</li> |
|
|
|
<li class="category-item" v-for="(item,i) in class2_list" :key="i" |
|
|
|
<li class="category-item" v-for="(item, i) in class2_list" :key="i" :class="{ active: query.class2 === item.id }" @click="screening_memory(item.id, 'class2')"> |
|
|
|
:class="{active: query.class2 === item.id}" @click="screening_memory(item.id,'class2')"> |
|
|
|
|
|
|
|
{{ item.name }} |
|
|
|
{{ item.name }} |
|
|
|
</li> |
|
|
|
</li> |
|
|
|
</ul> |
|
|
|
</ul> |
|
|
@ -242,8 +211,7 @@ |
|
|
|
<div class="wrapper-video-m"> |
|
|
|
<div class="wrapper-video-m"> |
|
|
|
<div class="title">课程价格</div> |
|
|
|
<div class="title">课程价格</div> |
|
|
|
<ul> |
|
|
|
<ul> |
|
|
|
<li class="category-item" v-for="(item,i) in priceList" :key="i" :class="{active: query.price === item.id}" |
|
|
|
<li class="category-item" v-for="(item, i) in priceList" :key="i" :class="{ active: query.price === item.id }" @click="changePrice(item.id)">{{ item.name }}</li> |
|
|
|
@click="changePrice(item.id)">{{item.name}}</li> |
|
|
|
|
|
|
|
</ul> |
|
|
|
</ul> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
@ -251,20 +219,36 @@ |
|
|
|
|
|
|
|
|
|
|
|
<div class="vtool-foot-box"> |
|
|
|
<div class="vtool-foot-box"> |
|
|
|
<div class="vtool-foot-m flex-3"> |
|
|
|
<div class="vtool-foot-m flex-3"> |
|
|
|
<div class="chongzhi" @click="videDrawer=flase; changeCategory(0);changeCategory2(0);changePrice(0);">重置</div> |
|
|
|
<div |
|
|
|
<div class="queding" @click="screening(); videDrawer=false">确定</div> |
|
|
|
class="chongzhi" |
|
|
|
|
|
|
|
@click=" |
|
|
|
|
|
|
|
videDrawer = flase; |
|
|
|
|
|
|
|
changeCategory(0); |
|
|
|
|
|
|
|
changeCategory2(0); |
|
|
|
|
|
|
|
changePrice(0); |
|
|
|
|
|
|
|
" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
重置 |
|
|
|
|
|
|
|
</div> |
|
|
|
|
|
|
|
<div |
|
|
|
|
|
|
|
class="queding" |
|
|
|
|
|
|
|
@click=" |
|
|
|
|
|
|
|
screening(); |
|
|
|
|
|
|
|
videDrawer = false; |
|
|
|
|
|
|
|
" |
|
|
|
|
|
|
|
> |
|
|
|
|
|
|
|
确定 |
|
|
|
|
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
</el-drawer> |
|
|
|
</el-drawer> |
|
|
|
|
|
|
|
|
|
|
|
</template> |
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
|
|
<script> |
|
|
|
<script> |
|
|
|
import { reactive, toRefs } from "vue"; |
|
|
|
import { reactive, toRefs } from "vue"; |
|
|
|
import { getVideoList, getCourseDirection, getCourseTag } from "@/api/video"; |
|
|
|
import { getVideoList, getCourseDirection, getCourseTag } from "@/api/video"; |
|
|
|
import { useRoute, useRouter } from 'vue-router'; |
|
|
|
import { useRoute, useRouter } from "vue-router"; |
|
|
|
import { Button, List, Cell } from 'vant'; |
|
|
|
import { Button, List, Cell } from "vant"; |
|
|
|
export default { |
|
|
|
export default { |
|
|
|
name: "videoindex", |
|
|
|
name: "videoindex", |
|
|
|
components: { |
|
|
|
components: { |
|
|
@ -273,8 +257,8 @@ |
|
|
|
[Cell.name]: Cell, |
|
|
|
[Cell.name]: Cell, |
|
|
|
}, |
|
|
|
}, |
|
|
|
setup() { |
|
|
|
setup() { |
|
|
|
const route = useRoute() |
|
|
|
const route = useRoute(); |
|
|
|
const router = useRouter() |
|
|
|
const router = useRouter(); |
|
|
|
let get_class1 = route.query.class1 ? parseInt(route.query.class1) : 0; |
|
|
|
let get_class1 = route.query.class1 ? parseInt(route.query.class1) : 0; |
|
|
|
let get_class2 = route.query.class2 ? parseInt(route.query.class2) : 0; |
|
|
|
let get_class2 = route.query.class2 ? parseInt(route.query.class2) : 0; |
|
|
|
let get_sort = route.query.sort ? parseInt(route.query.sort) : 0; |
|
|
|
let get_sort = route.query.sort ? parseInt(route.query.sort) : 0; |
|
|
@ -312,14 +296,14 @@ |
|
|
|
}, |
|
|
|
}, |
|
|
|
loading: true, |
|
|
|
loading: true, |
|
|
|
loading_m: false, |
|
|
|
loading_m: false, |
|
|
|
class1_title: '', |
|
|
|
class1_title: "", |
|
|
|
class2_title: '', |
|
|
|
class2_title: "", |
|
|
|
curSortName: '默认排序', |
|
|
|
curSortName: "默认排序", |
|
|
|
videDrawer: false, |
|
|
|
videDrawer: false, |
|
|
|
video_total: 0, |
|
|
|
video_total: 0, |
|
|
|
max_total: false, |
|
|
|
max_total: false, |
|
|
|
start_perpage: 16, |
|
|
|
start_perpage: 16, |
|
|
|
onresize: '', |
|
|
|
onresize: "", |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 移动端 记忆筛选 |
|
|
|
// 移动端 记忆筛选 |
|
|
@ -337,7 +321,7 @@ |
|
|
|
state.query.price = params; |
|
|
|
state.query.price = params; |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// 移动端 确定筛选 |
|
|
|
// 移动端 确定筛选 |
|
|
|
const screening = () => { |
|
|
|
const screening = () => { |
|
|
@ -346,7 +330,7 @@ |
|
|
|
...state.query, |
|
|
|
...state.query, |
|
|
|
}; |
|
|
|
}; |
|
|
|
fetVideoList(params); |
|
|
|
fetVideoList(params); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
const changeCategory = (id, title) => { |
|
|
|
const changeCategory = (id, title) => { |
|
|
|
state.class1_title = title; |
|
|
|
state.class1_title = title; |
|
|
@ -356,8 +340,8 @@ |
|
|
|
query: { |
|
|
|
query: { |
|
|
|
class1: id, |
|
|
|
class1: id, |
|
|
|
class2: state.query.class2, |
|
|
|
class2: state.query.class2, |
|
|
|
} |
|
|
|
}, |
|
|
|
}) |
|
|
|
}); |
|
|
|
getClass2(id); |
|
|
|
getClass2(id); |
|
|
|
state.query.class1 = id; |
|
|
|
state.query.class1 = id; |
|
|
|
state.query.class2 = 0; |
|
|
|
state.query.class2 = 0; |
|
|
@ -376,8 +360,8 @@ |
|
|
|
query: { |
|
|
|
query: { |
|
|
|
class1: state.query.class1, |
|
|
|
class1: state.query.class1, |
|
|
|
class2: id, |
|
|
|
class2: id, |
|
|
|
} |
|
|
|
}, |
|
|
|
}) |
|
|
|
}); |
|
|
|
state.query.class2 = id; |
|
|
|
state.query.class2 = id; |
|
|
|
state.query.page = 1; |
|
|
|
state.query.page = 1; |
|
|
|
const params = { |
|
|
|
const params = { |
|
|
@ -441,18 +425,17 @@ |
|
|
|
|
|
|
|
|
|
|
|
// 二级分类 |
|
|
|
// 二级分类 |
|
|
|
const getClass2 = async (class1_id) => { |
|
|
|
const getClass2 = async (class1_id) => { |
|
|
|
let getId = class1_id > 0 ? class1_id : ''; |
|
|
|
let getId = class1_id > 0 ? class1_id : ""; |
|
|
|
const params = { |
|
|
|
const params = { |
|
|
|
directionTag: getId |
|
|
|
directionTag: getId, |
|
|
|
} |
|
|
|
}; |
|
|
|
console.log(params); |
|
|
|
console.log(params); |
|
|
|
|
|
|
|
|
|
|
|
const res = await getCourseTag(params) |
|
|
|
const res = await getCourseTag(params); |
|
|
|
if (res.code === 200) { |
|
|
|
if (res.code === 200) { |
|
|
|
state.class2_list = res.data; |
|
|
|
state.class2_list = res.data; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取视频列表 |
|
|
|
// 获取视频列表 |
|
|
|
const fetVideoList = async (query) => { |
|
|
|
const fetVideoList = async (query) => { |
|
|
@ -473,7 +456,6 @@ |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
state.max_total = false; |
|
|
|
state.max_total = false; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -483,14 +465,13 @@ |
|
|
|
const handleCurrentChange = (val) => { |
|
|
|
const handleCurrentChange = (val) => { |
|
|
|
const params = { |
|
|
|
const params = { |
|
|
|
...state.query, |
|
|
|
...state.query, |
|
|
|
page: val |
|
|
|
page: val, |
|
|
|
}; |
|
|
|
}; |
|
|
|
fetVideoList(params) |
|
|
|
fetVideoList(params); |
|
|
|
window.scrollTo(0, 0); |
|
|
|
window.scrollTo(0, 0); |
|
|
|
// setTimeout(function () { |
|
|
|
// setTimeout(function () { |
|
|
|
// toTop(); |
|
|
|
// toTop(); |
|
|
|
// }, 300); |
|
|
|
// }, 300); |
|
|
|
|
|
|
|
|
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// const toTop = () => { |
|
|
|
// const toTop = () => { |
|
|
@ -514,19 +495,18 @@ |
|
|
|
// 滚动加载 |
|
|
|
// 滚动加载 |
|
|
|
const loadVlist = () => { |
|
|
|
const loadVlist = () => { |
|
|
|
setTimeout(() => { |
|
|
|
setTimeout(() => { |
|
|
|
state.start_perpage += 8 |
|
|
|
state.start_perpage += 8; |
|
|
|
const params = { |
|
|
|
const params = { |
|
|
|
...state.query, |
|
|
|
...state.query, |
|
|
|
perpage: state.start_perpage |
|
|
|
perpage: state.start_perpage, |
|
|
|
}; |
|
|
|
}; |
|
|
|
// if (state.onresize < 1200) { |
|
|
|
// if (state.onresize < 1200) { |
|
|
|
state.videoList.push(fetVideoList(params)); |
|
|
|
state.videoList.push(fetVideoList(params)); |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
state.loading_m = false; |
|
|
|
state.loading_m = false; |
|
|
|
|
|
|
|
|
|
|
|
}, 800); |
|
|
|
}, 800); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
return { |
|
|
|
return { |
|
|
|
calcNum, |
|
|
|
calcNum, |
|
|
@ -556,7 +536,7 @@ |
|
|
|
flex-direction: column; |
|
|
|
flex-direction: column; |
|
|
|
justify-content: space-around; |
|
|
|
justify-content: space-around; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
|
border: 1px solid #CEDDF2; |
|
|
|
border: 1px solid #ceddf2; |
|
|
|
padding: 14px 24px 6px 24px; |
|
|
|
padding: 14px 24px 6px 24px; |
|
|
|
margin: 30px 0 24px; |
|
|
|
margin: 30px 0 24px; |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
@ -605,7 +585,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
color: #0082fc; |
|
|
|
color: #0082fc; |
|
|
|
background-color: #D9ECFF; |
|
|
|
background-color: #d9ecff; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -625,7 +605,7 @@ |
|
|
|
right: 0; |
|
|
|
right: 0; |
|
|
|
margin: auto; |
|
|
|
margin: auto; |
|
|
|
height: 1px; |
|
|
|
height: 1px; |
|
|
|
background-color: #CEDDF2; |
|
|
|
background-color: #ceddf2; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -640,20 +620,19 @@ |
|
|
|
padding-top: 10px; |
|
|
|
padding-top: 10px; |
|
|
|
|
|
|
|
|
|
|
|
&:after { |
|
|
|
&:after { |
|
|
|
content: ' '; |
|
|
|
content: " "; |
|
|
|
width: 276px; |
|
|
|
width: 276px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.video-item { |
|
|
|
.video-item { |
|
|
|
transition: all .3s; |
|
|
|
transition: all 0.3s; |
|
|
|
width: 276px; |
|
|
|
width: 276px; |
|
|
|
height: 342px; |
|
|
|
height: 342px; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
|
margin-bottom: 22px; |
|
|
|
margin-bottom: 22px; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
box-shadow: 0px 1px 12px 0px #DCE5FF; |
|
|
|
box-shadow: 0px 1px 12px 0px #dce5ff; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
&.video-item:hover .img { |
|
|
|
&.video-item:hover .img { |
|
|
@ -671,8 +650,7 @@ |
|
|
|
width: 276px; |
|
|
|
width: 276px; |
|
|
|
height: 184px; |
|
|
|
height: 184px; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
|
transition: all .3s; |
|
|
|
transition: all 0.3s; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
h2 { |
|
|
|
h2 { |
|
|
@ -691,7 +669,7 @@ |
|
|
|
text-align: center; |
|
|
|
text-align: center; |
|
|
|
background: rgba(40, 195, 70, 0.08); |
|
|
|
background: rgba(40, 195, 70, 0.08); |
|
|
|
border-radius: 12px; |
|
|
|
border-radius: 12px; |
|
|
|
color: #28C346; |
|
|
|
color: #28c346; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.saleprice { |
|
|
|
.saleprice { |
|
|
@ -700,13 +678,11 @@ |
|
|
|
|
|
|
|
|
|
|
|
del { |
|
|
|
del { |
|
|
|
margin-left: 8px; |
|
|
|
margin-left: 8px; |
|
|
|
color: #B3C1D3; |
|
|
|
color: #b3c1d3; |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.info { |
|
|
|
.info { |
|
|
|
width: 260px; |
|
|
|
width: 260px; |
|
|
|
padding: 16px 18px 0 18px; |
|
|
|
padding: 16px 18px 0 18px; |
|
|
@ -722,7 +698,6 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.video-item { |
|
|
|
.video-item { |
|
|
|
width: 276px; |
|
|
|
width: 276px; |
|
|
|
height: 342px; |
|
|
|
height: 342px; |
|
|
@ -796,10 +771,9 @@ |
|
|
|
|
|
|
|
|
|
|
|
<style lang="scss"> |
|
|
|
<style lang="scss"> |
|
|
|
/*响应式-移动端*/ |
|
|
|
/*响应式-移动端*/ |
|
|
|
@import '~@/assets/css/m.css'; |
|
|
|
@import "~@/assets/css/m.css"; |
|
|
|
|
|
|
|
|
|
|
|
@media screen and (max-width: 1200px) { |
|
|
|
@media screen and (max-width: 1200px) { |
|
|
|
|
|
|
|
|
|
|
|
html, |
|
|
|
html, |
|
|
|
body { |
|
|
|
body { |
|
|
|
background-color: #f3f8ff; |
|
|
|
background-color: #f3f8ff; |
|
|
@ -850,7 +824,7 @@ |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
color: #0082fc; |
|
|
|
color: #0082fc; |
|
|
|
background-color: #D9ECFF; |
|
|
|
background-color: #d9ecff; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -906,7 +880,7 @@ |
|
|
|
margin-top: 20px; |
|
|
|
margin-top: 20px; |
|
|
|
|
|
|
|
|
|
|
|
.item { |
|
|
|
.item { |
|
|
|
transition: all .3s; |
|
|
|
transition: all 0.3s; |
|
|
|
width: 49% !important; |
|
|
|
width: 49% !important; |
|
|
|
height: 110px !important; |
|
|
|
height: 110px !important; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
@ -914,7 +888,7 @@ |
|
|
|
margin-bottom: 18px; |
|
|
|
margin-bottom: 18px; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
box-shadow: 0px 1px 12px 0px #DCE5FF; |
|
|
|
box-shadow: 0px 1px 12px 0px #dce5ff; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.rtbox, |
|
|
|
.rtbox, |
|
|
@ -951,8 +925,7 @@ |
|
|
|
width: 160px !important; |
|
|
|
width: 160px !important; |
|
|
|
height: 110px !important; |
|
|
|
height: 110px !important; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
|
transition: all .3s; |
|
|
|
transition: all 0.3s; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
h2 { |
|
|
|
h2 { |
|
|
@ -970,7 +943,7 @@ |
|
|
|
text-align: center; |
|
|
|
text-align: center; |
|
|
|
background: rgba(40, 195, 70, 0.08); |
|
|
|
background: rgba(40, 195, 70, 0.08); |
|
|
|
border-radius: 12px; |
|
|
|
border-radius: 12px; |
|
|
|
color: #28C346; |
|
|
|
color: #28c346; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.info { |
|
|
|
.info { |
|
|
@ -991,16 +964,14 @@ |
|
|
|
|
|
|
|
|
|
|
|
.v_lod_txt { |
|
|
|
.v_lod_txt { |
|
|
|
text-align: center; |
|
|
|
text-align: center; |
|
|
|
color: #7E8FA3; |
|
|
|
color: #7e8fa3; |
|
|
|
margin-top: 14px; |
|
|
|
margin-top: 14px; |
|
|
|
font-size: 14px; |
|
|
|
font-size: 14px; |
|
|
|
letter-spacing: 2px; |
|
|
|
letter-spacing: 2px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@media screen and (max-width: 800px) { |
|
|
|
@media screen and (max-width: 800px) { |
|
|
|
|
|
|
|
/* 视频课列表 */ |
|
|
|
/* 视频看列表 */ |
|
|
|
|
|
|
|
.video-list-m { |
|
|
|
.video-list-m { |
|
|
|
display: flex; |
|
|
|
display: flex; |
|
|
|
justify-content: space-around !important; |
|
|
|
justify-content: space-around !important; |
|
|
@ -1012,7 +983,7 @@ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.item { |
|
|
|
.item { |
|
|
|
transition: all .3s; |
|
|
|
transition: all 0.3s; |
|
|
|
width: 100% !important; |
|
|
|
width: 100% !important; |
|
|
|
height: 100px !important; |
|
|
|
height: 100px !important; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
@ -1020,7 +991,7 @@ |
|
|
|
margin-bottom: 16px; |
|
|
|
margin-bottom: 16px; |
|
|
|
|
|
|
|
|
|
|
|
&:hover { |
|
|
|
&:hover { |
|
|
|
box-shadow: 0px 1px 12px 0px #DCE5FF; |
|
|
|
box-shadow: 0px 1px 12px 0px #dce5ff; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.rtbox, |
|
|
|
.rtbox, |
|
|
@ -1055,8 +1026,7 @@ |
|
|
|
width: 150px !important; |
|
|
|
width: 150px !important; |
|
|
|
height: 100px !important; |
|
|
|
height: 100px !important; |
|
|
|
border-radius: 8px; |
|
|
|
border-radius: 8px; |
|
|
|
transition: all .3s; |
|
|
|
transition: all 0.3s; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
h2 { |
|
|
|
h2 { |
|
|
@ -1074,7 +1044,7 @@ |
|
|
|
text-align: center; |
|
|
|
text-align: center; |
|
|
|
background: rgba(40, 195, 70, 0.08); |
|
|
|
background: rgba(40, 195, 70, 0.08); |
|
|
|
border-radius: 12px; |
|
|
|
border-radius: 12px; |
|
|
|
color: #28C346; |
|
|
|
color: #28c346; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.info { |
|
|
|
.info { |
|
|
|