backend-Tv/pages/player/player.vue
2025-07-19 19:41:27 +08:00

277 lines
6.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<unitv-page id="playPage" :show="true" ref="playPage" @back="pageBack">
<view class="movie-contain">
<unitv-video id="player" class="player" :src="moiveUrl" :autoplay="true">
</unitv-video>
<view class="movie-inter">
<view class="movie-title">{{moiveData.title}}</view>
<view class="movie-info"><text>影片信息{{moiveData.info}}</text></view>
<view class="movie-content">简介{{moiveData.comment}}</view>
<view>
<unitv-zone id="btn-zone" :autoFous="true" :column="2" down="list-zone" :item="0" :values="[0,1]" class="btn-zone">
<unitv-item :item="0" class="fullscreen-btn" @click="switchFullScreen">
<image mode="aspectFit" src="../../static/fullscreen.png"></image>
<view>全屏播放</view>
</unitv-item>
<unitv-item :item="1" class="favicon-btn">
<image mode="aspectFit" src="../../static/favicon.png"></image>
<view>收藏</view>
</unitv-item>
</unitv-zone>
</view>
</view>
</view>
<unitv-zone id="list-zone" class="list-zone" up="btn-zone" :down="(moiveType == 'multiple') ? 'resource-zone' : ''" :values="item" :column="8">
<unitv-item v-for="(a,index) in item" :item="index" :key="index" class="item" :style="a.movieFlag == '1' ? 'background-color: #CD7F32;' : ''" @click="websiteClick(a)" @hover="websiteHover(a)">{{a.website}}</unitv-item>
</unitv-zone>
<view class="title" v-if="moiveType == 'multiple'">影视剧集</view>
<unitv-zone id="resource-zone" class="resource-zone" up="list-zone" :values="moiveUrlList" :column="moiveUrlList.length" v-if="moiveType == 'multiple'">
<unitv-scroll>
<unitv-item v-for="(a,index) in moiveUrlList" :item="index" :key="index" class="item-resource">
<view class="item-resource-info">{{a.name}}</view>
</unitv-item>
</unitv-scroll>
</unitv-zone>
</unitv-page>
</view>
</template>
<script>
export default {
data() {
return {
item: [],
status:0,
handEvt:false,
currentTime:0,
moiveData:{
},
moiveType: '',
moiveUrl: "",
moiveUrlList:[]
}
},
onBackPress(options) {
this.$refs.playPage.evtBack();
return true;
},
onReady() {
this.viderContext = uni.createVideoContext("player");
},
onLoad(e){
console.log(e)
this.$api.get('/platCupfox/detail/'+e.id, null).then(res => {
console.log(res)
if(res == undefined || res == null || res == ''){
uni.showToast({
title: '视频资源数据异常,请检查接口数据',
icon:'none',
duration: 5000
});
return;
}
this.moiveData = res;
this.moiveType = res.type;
this.item = res.resources;
if(res.resources != null && res.resources.length > 0){
let aa = res.resources[0];
if(aa.movieFlag == '1'){
this.moiveUrl = aa.movieUrl;
if(res.type == 'multiple'){
this.moiveUrlList = aa.resourceUrlList;
}
}
}
})
},
methods: {
switchFullScreen() {
this.viderContext.requestFullScreen();
},
websiteClick(data){
if(data.movieFlag == '1'){
if(this.moiveType == 'multiple'){
this.moiveUrlList = data.resourceUrlList;
} else {
this.moiveUrl = data.movieUrl;
}
}else {
uni.showToast({
title: '当前站点视频还未解析,请联系系统管理员处理',
icon:'none',
duration: 2000
});
}
},
websiteHover(data){
console.log("websiteHover");
/* if(data.movieFlag == '1'){
if(this.moiveType == 'multiple'){
this.moiveUrlList = data.resourceUrlList;
}
} */
},
pageBack(e){
console.log("按了返回");
uni.reLaunch({
url: '../index/index'
});
return false;
},
}
}
</script>
<style>
page {
background-color: #070707;
background-image: linear-gradient(0deg, #222222 0%, #1f1f1f 51%, #1d1d1d 75%);
color: white;
padding: 10rpx;
background-image: linear-gradient(to bottom, #2E3092, #797979);
}
.movie-contain {
display: flex;
flex-direction: row;
}
.player {
width: 375rpx;
height: 200rpx;
}
.movie-inter {
width: 355rpx;
padding: 0 10rpx;
}
.movie-title {
font-size: 18rpx;
padding-bottom: 5rpx;
}
.movie-year {
padding-left: 5rpx;
}
.movie-year,
.movie-info,
.movie-content {
font-size: 16rpx;
color: #dadade;
line-height: 28rpx;
}
.movie-content {
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
line-height: 20rpx;
margin-bottom: 10rpx;
}
.btn-zone {
display: flex;
flex-direction: row;
}
.fullscreen-btn,
.favicon-btn {
width: 60rpx;
height: 60rpx;
margin-right: 10rpx;
background: #3e3e3e;
font-size: 12rpx;
border-radius: 2rpx;
text-align: center;
}
.fullscreen-btn image,
.favicon-btn image {
width: 22rpx;
height: 32rpx;
}
.list-zone {
width: 100%;
display: flex;
flex-wrap: wrap;
justify-content: left;
margin-bottom: 10rpx;
align-items: center;
padding: 5px;
}
.resource-zone{
width: 100%;
display: flex;
white-space: nowrap;
align-items: center;
padding: 1px;
}
.resource-zone .item-resource{
display: inline-block;
align-items: center;
justify-content: center;
text-align: center;
width: 82rpx;
height: 80rpx;
line-height: 80rpx;
margin: 5rpx;
background-color: #6b6b6b;
border-radius: 5rpx;
font-size: 12rpx;
}
.item-resource-info4 {
display: flex;
flex-wrap:wrap;
align-items: center;
justify-content: center;
text-align: center;
white-space: normal;
height: 80rpx;
line-height: 80rpx;
width: 82rpx;
}
.item {
width: 82rpx;
height: 30rpx;
margin: 5rpx;
text-align: center;
background-color: #6b6b6b;
border-radius: 5rpx;
align-items: center;
display: flex;
justify-content: center;
font-size: 12rpx;
}
.itemMovieFlag{
background-color: #CD7F32;
}
.item-hover {
transform: scale(1.04);
box-shadow: 2px 4px 6px #585dfa;
animation: glow 1500ms ease-out infinite alternate;
-webkit-transform: scale(1.04);
-webkit-box-shadow: 2px 4px 6px #585dfa;
-webkit-animation: glow 1500ms ease-out infinite alternate;
zoom: 1.05;
}
.title{
font-size: 15rpx;
}
</style>