482 lines
15 KiB
Vue
482 lines
15 KiB
Vue
<template>
|
|
<view>
|
|
<navbar :backopen="false"></navbar>
|
|
<view class="u-p-l-30 u-p-r-30" @click="$u.route('/pagesA/index/search')">
|
|
<u-search @click="$u.route('/pagesA/index/search')" placeholder="搜短剧名/演员名,免费看短剧" :showAction="false"
|
|
disabled borderColor="#C81F22" searchIconColor="#C81F22"
|
|
:inputStyle="{backgroundColor:'#fff'}"></u-search>
|
|
</view>
|
|
<view class="u-p-t-20 u-p-l-30 u-p-r-30">
|
|
<u-swiper :list="bannerList" IconShow keyName="src" @click="clickSwiper" radius="6" circular indicator
|
|
indicatorStyle="right: 20px" indicatorMode="dot" indicatorActiveColor="#C81F22"></u-swiper>
|
|
|
|
<view class="gitGiF u-m-t-30" v-if="dy_seek == '1'">
|
|
<view class="imtext">
|
|
<view class="leftTriangle"></view>
|
|
<view class="seek">
|
|
如何找到我们
|
|
</view>
|
|
<view class="rightTriangle"></view>
|
|
</view>
|
|
<image class="homeGif" :src="home_gif" mode=""></image>
|
|
</view>
|
|
|
|
<view class="u-b-f u-m-t-30 u-radius-20 u-p-t-30 u-p-b-30 u-p-l-20">
|
|
<u-tabs :list="videoMenuList" IconShow keyName="name" lineWidth="0" :curennt="curennt"
|
|
:activeStyle="{padding:'0rpx 20rpx',fontSize:'30rpx'}"
|
|
:inactiveStyle="{padding:'0rpx 20rpx',color:'#86909C',fontSize:'24rpx'}" @click="TabsClick">
|
|
<view slot="right" class="u-flex u-p-r-20" @click="$u.route('/pagesA/index/charts')">
|
|
<view class="u-color-666 u-font-24 u-m-r-10">全部</view>
|
|
<u-icon name="arrow-right"></u-icon>
|
|
</view>
|
|
</u-tabs>
|
|
<scroll-view scroll-x class="w-100">
|
|
<view class="u-flex u-col-top">
|
|
<view v-if="index<4" class="u-m-r-20" v-for="(item,index) in recommendList" :key="index">
|
|
<view @click.stop="govideo(item1.id)" class="u-flex u-col-top u-m-t-30 u-w-300 "
|
|
v-for="(item1,index1) in item" :key="index1">
|
|
<view class="u-relative">
|
|
<u-image :src="apiUrl+ item1.img" width="100rpx" height="140rpx"
|
|
radius="5"></u-image>
|
|
<image v-show="index == 0 && index1==0" src="/static/image/icon8.png"
|
|
class="u-w-40 u-h-40 u-absolute u-index-1" style="top: 0px;left:-2px;"></image>
|
|
<image v-show="index == 0 && index1==1" src="/static/image/icon9.png"
|
|
class="u-w-40 u-h-40 u-absolute u-index-1" style="top: 0px;left:-2px;"></image>
|
|
<image v-show="index == 0 && index1==2" src="/static/image/icon10.png"
|
|
class="u-w-40 u-h-40 u-absolute u-index-1" style="top: 0px;left:-2px;"></image>
|
|
<view v-show="index != 0"
|
|
class="u-w-40 u-h-40 u-b-F9E1E9 u-text-center u-lh-40 u-font-20 u-absolute u-index-1"
|
|
style="border-radius:0 0 20rpx 0 ;top: 0px;left:0px;">{{3*index+index1+1}}
|
|
</view>
|
|
</view>
|
|
<view class="u-flex-1 u-m-l-16 u-flex-col u-h-140 u-row-between">
|
|
<view class="u-word-break u-line-2 u-font-26">{{item1.name}}</view>
|
|
<view class="u-color-999 u-font-24">
|
|
<!-- {{item1.album_status == 1?'未上映':item1.album_status == 2?'更新中':'已完结'}} -->
|
|
共{{item1.sum}}集
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</scroll-view>
|
|
</view>
|
|
|
|
<view v-if="list.length>0" class="u-m-t-20 u-b-f u-radius-20 u-p-t-30 u-p-b-30 u-p-l-20 ">
|
|
<view class="u-flex">
|
|
<image src="/static/image/icon7.png" class="u-w-50 u-h-50"></image>
|
|
<view class="u-m-l-10 u-font-30">100分好剧</view>
|
|
</view>
|
|
<view class="u-flex u-flex-wrap u-col-top">
|
|
<view @click.stop="govideo(item.id)" class="u-m-t-30 u-m-r-20 u-w-200" v-for="(item,index) in list"
|
|
:key="index">
|
|
<view class="u-relative">
|
|
<u-image :src="apiUrl+ item.img" width="200rpx" height="280rpx" radius="6"></u-image>
|
|
<view
|
|
class="u-b-9505FF-09A7FF u-absolute u-index-1 u-w-72 u-h-40 u-text-center u-lh-40 u-color-f u-font-22"
|
|
style="border-radius: 12rpx 0 20rpx 0;top: 0px;left:0px;">{{item.video_tag}}</view>
|
|
</view>
|
|
<view class="u-m-t-10 u-word-break u-line-1 u-font-24">{{item.name}}</view>
|
|
<view class="u-m-t-10 u-word-break u-line-1 u-font-22 u-color-999">
|
|
<!-- {{item.album_status == 1?'未上映':item.album_status == 2?'更新中':'已完结'}} · -->
|
|
共{{item.sum}}集
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<u-tabs :list="tabsList" lineWidth="0" :curennt="onTabsIndex"
|
|
:activeStyle="{background:'linear-gradient(to right,#FF5205,#FF0591)',color:'#fff',borderRadius:'10rpx',padding:'8rpx 20rpx'}"
|
|
:inactiveStyle="{background:'#ECECEC',padding:'8rpx 20rpx',borderRadius:'10rpx'}"
|
|
@click="onTabsClick"></u-tabs>
|
|
<view v-if="CatList.length>0" class="u-flex u-flex-wrap u-col-top">
|
|
<view @click.stop="govideo(item.id)" class="u-m-t-30 u-m-r-16 u-w-210" v-for="(item,index) in CatList"
|
|
:key="index">
|
|
<view class="u-relative">
|
|
<u-image :src="apiUrl+ item.img" width="210rpx" height="280rpx" radius="6"></u-image>
|
|
<view v-show="item.type_text && item.type_text!=''"
|
|
class="yichu u-b-FF5205-FF0591 u-absolute u-index-1 u-text-center u-lh-40 u-color-f u-font-22 u-p-t-4 u-p-b-4 u-p-l-10 u-p-r-10"
|
|
style="border-radius: 12rpx 0 20rpx 0;top: 0px;left:0px;">
|
|
<span>{{item.type_text.split(",")[0]}}</span>
|
|
</view>
|
|
<view class="u-absolute u-index-1 u-color-f u-font-20 u-word-break"
|
|
style="bottom:6rpx;right:6rpx;">{{item.views}}人看过</view>
|
|
</view>
|
|
<view class="u-m-t-10 u-word-break u-line-1 u-font-24">{{item.name}}</view>
|
|
<view class="u-m-t-10 u-word-break u-line-1 u-font-22 u-color-999">
|
|
{{item.album_status == 1?'未上映':item.album_status == 2?'更新中':'已完结'}} · 共{{item.sum}}集
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<empty v-if="CatList.length<1"></empty>
|
|
<u-loadmore v-if="CatList.length>0" :status="status" icon-color="#999999" color="#999999" icon-type="circle"
|
|
margin-top="30" margin-bottom="30" />
|
|
</view>
|
|
|
|
<view v-if="show" class="u-fixed w-100 u-index-2" style="bottom: 40rpx;">
|
|
<view class="u-p-l-20 u-p-r-20">
|
|
<view class="u-b-383636 u-radius-20 u-p-t-10 u-p-b-10 u-p-l-20 u-p-r-20 u-flex u-col-top u-row-between">
|
|
<view class="u-flex">
|
|
<u-image :src="item.img" width="80rpx" height="120rpx" radius="6"></u-image>
|
|
<view class="u-flex-1 u-m-l-20 u-h-100 u-flex-col u-row-between u-p-t-10 u-p-b-10 u-color-f">
|
|
<view class="u-font-24 u-word-break u-line-1">{{LookInfo.vname}}</view>
|
|
<view class="u-font-20">{{LookInfo.mid}}集</view>
|
|
</view>
|
|
</view>
|
|
<view class="u-flex-col u-col-bottom">
|
|
<u-icon @click="show=false" stop name="close" color="#999" size="16"></u-icon>
|
|
<view @click.stop="govideo(LookInfo.vl_id)"
|
|
class="u-bnt-tabbar-FF5205-FF0591 u-radius-40 u-p-l-20 u-p-r-20 u-p-t-10 u-p-b-10 u-font-24 u-m-t-10">
|
|
继续播放</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
import navbar from '@/components/navbar.vue'
|
|
export default {
|
|
components: {
|
|
navbar,
|
|
},
|
|
data() {
|
|
return {
|
|
bannerList: [], //轮播图
|
|
videoMenuList: [], //剧栏目
|
|
curennt: 0, //剧栏目tab切换事件
|
|
recommendList: [], //剧栏目数据
|
|
list: [], //100分好剧列表数据
|
|
tabsList: [], //分类tab
|
|
onTabsIndex: 0, //分类tab当前索引
|
|
CatList: [], //列表
|
|
status: 'loadmore', //加载更多
|
|
parameter: {
|
|
limit: 20, //每页的总条数
|
|
page: 1, //页码
|
|
cat_id: '0', //分类id 全部=0
|
|
},
|
|
show: false, //底部最近观看短剧显示隐藏
|
|
LookInfo: {}, //最近观看短剧信息
|
|
apiUrl: '', //域名
|
|
home_gif: "",
|
|
dy_seek: ""
|
|
}
|
|
},
|
|
onLoad(e) {
|
|
this.config()
|
|
},
|
|
onShow() {
|
|
this.videoMenu()
|
|
this.VideoCatList()
|
|
// this.getVideoGroupList()
|
|
this.videoLookGive()
|
|
},
|
|
// 下拉到底事件
|
|
onReachBottom() {
|
|
//避免多次触发
|
|
if (this.status == 'loading' || this.status == 'nomore') {
|
|
return;
|
|
}
|
|
this.getVideoList()
|
|
},
|
|
methods: {
|
|
// 公共参数
|
|
config() {
|
|
let that = this;
|
|
that.$httpRequest({
|
|
url: '/api/video/indexdata',
|
|
method: 'GET',
|
|
data: {},
|
|
isLoading: true,
|
|
}).then(res => {
|
|
if (res.config.name) {
|
|
uni.setNavigationBarTitle({
|
|
title: res.config.name
|
|
});
|
|
}
|
|
uni.setStorageSync("config", res.config)
|
|
|
|
this.bannerList = res.config.banner //轮播图
|
|
|
|
|
|
// this.config = res.config;
|
|
// this.banners = res.config.banner
|
|
// this.listbz = res.listbz
|
|
// this.listjq = res.listjq
|
|
// // this.datasa = res.new
|
|
// this.hotdata = res.hotdata
|
|
// this.givedata = res.givedata
|
|
// this.freedata = res.freedata;
|
|
}).catch(err => {
|
|
console.log(err)
|
|
})
|
|
|
|
},
|
|
clickSwiper(index) {
|
|
console.log('ok')
|
|
console.log(url)
|
|
var fxpid = 1
|
|
if (uni.getStorageSync("userinfo")) {
|
|
fxpid = uni.getStorageSync("userinfo").id
|
|
}
|
|
uni.navigateTo({
|
|
url: '/' + vlid + '?mid=' + 0 + '&fxpid=' + fxpid
|
|
})
|
|
},
|
|
// 剧栏目新剧 那个
|
|
async videoMenu() {
|
|
let that = this;
|
|
await that.$httpRequest({
|
|
url: '/api/pno/videoMenu',
|
|
method: 'GET',
|
|
isLoading: true,
|
|
}).then(res => {
|
|
if (res.code == 1) {
|
|
res.data[0].after_image = require('@/static/image/icon2.png')
|
|
res.data[0].before_image = require('@/static/image/icon1.png')
|
|
res.data[1].after_image = require('@/static/image/icon4.png')
|
|
res.data[1].before_image = require('@/static/image/icon3.png')
|
|
res.data[2].after_image = require('@/static/image/icon6.png')
|
|
res.data[2].before_image = require('@/static/image/icon5.png')
|
|
this.videoMenuList = res.data
|
|
this.videoGroupList()
|
|
}
|
|
})
|
|
},
|
|
// 剧栏目tab切换事件
|
|
TabsClick(e) {
|
|
this.curennt = e.index
|
|
this.videoGroupList()
|
|
},
|
|
// 剧栏目列表数据
|
|
videoGroupList() {
|
|
this.$httpRequest({
|
|
url: '/api/pno/videoGroupList',
|
|
method: 'GET',
|
|
data: {
|
|
menu_id: this.videoMenuList[this.curennt].id
|
|
},
|
|
isLoading: true,
|
|
}).then(res => {
|
|
if (res.code == 1) {
|
|
// 使用reduce方法进行分组
|
|
let groupedArray = res.data.data.reduce((acc, curr, index) => {
|
|
// 检查当前索引是否能被3整除,以确定是否需要开始一个新的分组
|
|
if (index % 3 === 0) {
|
|
acc.push([curr]); // 开始新的分组并添加当前元素
|
|
} else {
|
|
// 将当前元素添加到最后一个分组中
|
|
acc[acc.length - 1].push(curr);
|
|
}
|
|
return acc;
|
|
}, []); // 初始值是一个空数组
|
|
this.recommendList = groupedArray
|
|
}
|
|
})
|
|
},
|
|
// 100分好剧
|
|
getVideoGroupList() {
|
|
this.$httpRequest({
|
|
url: '/api/pno/videoGroupList',
|
|
method: 'GET',
|
|
data: {
|
|
is_top: 1,
|
|
limit: 99
|
|
},
|
|
isLoading: true,
|
|
}).then(res => {
|
|
if (res.code == 1) {
|
|
this.list = res.data.data
|
|
}
|
|
})
|
|
},
|
|
// 分类tab列表数据
|
|
VideoCatList() {
|
|
this.$httpRequest({
|
|
url: '/api/pno/VideoCatList',
|
|
method: 'GET',
|
|
isLoading: true,
|
|
}).then(res => {
|
|
if (res.code == 1) {
|
|
res.data.unshift({
|
|
name: '全部',
|
|
id: 0
|
|
})
|
|
this.tabsList = res.data
|
|
this.clear()
|
|
}
|
|
})
|
|
},
|
|
// 分类tab切换事件
|
|
onTabsClick(e) {
|
|
this.onTabsIndex = e.index
|
|
this.clear()
|
|
},
|
|
clear() {
|
|
this.parameter.cat_id = this.tabsList[this.onTabsIndex].id
|
|
this.parameter.page = 1
|
|
this.CatList = []
|
|
this.getVideoList()
|
|
},
|
|
// 分类tab列表数据下拉刷新和上拉加载更多
|
|
getVideoList() {
|
|
this.$httpRequest({
|
|
url: '/api/pno/videoGroupList',
|
|
method: 'GET',
|
|
data: {
|
|
...this.parameter
|
|
},
|
|
isLoading: true,
|
|
}).then(res => {
|
|
if (res.code == 1) {
|
|
if (res.data.data.length < this.parameter.limit) {
|
|
this.status = 'nomore';
|
|
} else {
|
|
this.parameter.page = this.parameter.page + 1;
|
|
this.status = 'loadmore';
|
|
}
|
|
this.CatList = this.CatList.concat(res.data.data);
|
|
uni.stopPullDownRefresh();
|
|
}
|
|
})
|
|
|
|
// this.$api.videoGroupList(this.parameter).then(res => {
|
|
// if (res.code == 1) {
|
|
// if (res.data.data.length < this.parameter.limit) {
|
|
// this.status = 'nomore';
|
|
// } else {
|
|
// this.parameter.page = this.parameter.page + 1;
|
|
// this.status = 'loadmore';
|
|
// }
|
|
// this.CatList = this.CatList.concat(res.data.data);
|
|
// uni.stopPullDownRefresh();
|
|
// }
|
|
// })
|
|
},
|
|
// 底部最近观看短剧数据
|
|
async videoLookGive() {
|
|
// this.$api.videoLookGive().then(res => {
|
|
// if (res.code == 1) {
|
|
// if (res.data.id) {
|
|
// this.show = true
|
|
// this.LookInfo = res.data
|
|
// }
|
|
// }
|
|
// })
|
|
|
|
await this.$httpRequest({
|
|
url: "/api/video/videolog",
|
|
methods: "GET",
|
|
data: {
|
|
limit: 1,
|
|
page: this.page
|
|
}
|
|
}).then(res => {
|
|
if (res.total == 1) {
|
|
this.show = true
|
|
this.LookInfo = res.rows[0]
|
|
}
|
|
})
|
|
|
|
},
|
|
// 进入短剧播放页面
|
|
govideo(vlid) {
|
|
if (tt.canIUse('video-player')) {
|
|
uni.navigateTo({
|
|
url: '/pagesA/index/VideoPlayer?vl_id=' + vlid
|
|
})
|
|
return
|
|
this.$api.videoGroupInfo({
|
|
vl_id: vlid,
|
|
}).then(res => {
|
|
if (res.code == 1) {
|
|
if (res.data.video_look == false) {
|
|
uni.navigateTo({
|
|
url: '/pages/index/VideoPlayer?tt_album_id=' + res.data.album_id +
|
|
'&tt_episode_id=' + res.data.video_info[0].episode_id + '&vl_id=' +
|
|
vlid
|
|
})
|
|
} else {
|
|
uni.navigateTo({
|
|
url: '/pages/index/VideoPlayer?tt_album_id=' + res.data.album_id +
|
|
'&tt_episode_id=' + res.data.video_info[res.data.video_look.weigh -
|
|
1].episode_id + '&vl_id=' + vlid
|
|
})
|
|
}
|
|
|
|
} else {
|
|
this.$getMsg(res.msg)
|
|
}
|
|
})
|
|
} else {
|
|
this.$getMsg('当前版本过低,请升级抖音后观看')
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
.yichu {
|
|
display: -webkit-box;
|
|
/*将对象转为弹性盒模型展示*/
|
|
-webkit-box-orient: vertical;
|
|
/*设置弹性盒模型子元素的排列方式*/
|
|
-webkit-line-clamp: 1;
|
|
/*限制文本行数*/
|
|
overflow: hidden;
|
|
/*超出隐藏*/
|
|
}
|
|
|
|
::v-deep .u-tabs__wrapper__nav__item {
|
|
padding: 0 6rpx !important;
|
|
}
|
|
|
|
::v-deep .u-search__content {
|
|
background-color: #ffffff !important;
|
|
}
|
|
|
|
.gitGiF {
|
|
background-color: #fff;
|
|
padding: 20rpx;
|
|
border-radius: 20rpx;
|
|
font-size: 0rpx
|
|
}
|
|
|
|
.imtext {
|
|
display: flex;
|
|
justify-content: center;
|
|
margin-top: -30rpx;
|
|
margin-bottom: 12rpx;
|
|
}
|
|
|
|
.seek {
|
|
font-size: 24rpx;
|
|
background-color: #FE2C55;
|
|
color: #ffffff;
|
|
height: 32rpx;
|
|
line-height: 32rpx;
|
|
}
|
|
|
|
.leftTriangle {
|
|
width: 0;
|
|
height: 0;
|
|
border-top: 32rpx solid #FE2C55;
|
|
border-right: 32rpx solid #FE2C55;
|
|
border-left: 32rpx solid transparent;
|
|
}
|
|
|
|
.rightTriangle {
|
|
width: 0;
|
|
height: 0;
|
|
border-top: 32rpx solid #FE2C55;
|
|
border-right: 32rpx solid transparent;
|
|
border-left: 32rpx solid #FE2C55;
|
|
}
|
|
|
|
.homeGif {
|
|
width: 100%;
|
|
height: 320rpx;
|
|
}
|
|
</style> |