first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,137 @@
<template>
<div class="comment">
<div class="header">全部评论</div>
<ul class="contents" v-if="data.length != 0">
<li class="pinglun" v-for="(v,i) in data" :key="i">
<div class="pinglun_item">
<div class="pl_top">
<div class="top_left">
<img :src="v.image" alt="" />
<div class="names">
<div class="name">
<div class="name_left">{{v.nick_name}}</div>
<div class="name_right">
<img src="/static/img/icon/give_thumbs-up.png" alt="" />
<div class="zan">{{v.praise_count}}</div>
</div>
</div>
<div class="time">{{v.create_time}}</div>
</div>
</div>
</div>
<div class="pl_content">
{{v.content}}
</div>
</div>
</li>
</ul>
<div class="no" v-else>
<img src="/static/img/hm_bg_img_no.png" alt="">
<p>快来发表你的评论吧</p>
</div>
</div>
</template>
<script>
export default {
name: "v-comment",
props: {
data: {
type: Array,
default: () => [],
},
},
data() {
return {};
},
created() {},
methods: {},
};
</script>
<style scoped lang="less">
.header {
width: 100%;
height: 1.333rem;
line-height: 1.333rem;
padding-left: 0.32rem;
box-sizing: border-box;
font-weight: 700;
font-size: .43rem;
color: #333;
margin: 0;
}
.contents {
.pinglun {
padding: .5rem 0 .32rem 0;
.pl_top {
display: flex;
justify-content: space-between;
padding-left: 0.307rem;
padding-right: 0.32rem;
box-sizing: border-box;
.top_left {
display: flex;
width: 100%;
img {
width: 0.933rem;
height: 0.933rem;
border-radius: 50%;
}
.names {
margin-left: 0.267rem;
width: 87%;
.name {
display: flex;
justify-content: space-between;
align-items: center;
.name_left {
font-size: 0.373rem;
}
.name_right {
display: flex;
align-items: center;
img {
width: 0.347rem;
height: 0.36rem;
}
.zan {
font-size: 0.32rem;
color: #999999;
margin-left: 0.133rem;
}
}
}
.time {
font-size: 0.267rem;
color: #999999;
margin-top: 0.133rem;
}
}
}
}
.pl_content {
padding-left: 1.507rem;
padding-right: 0.52rem;
box-sizing: border-box;
margin-top: 0.4rem;
font-size: 0.373rem;
}
}
}
.no{
width: 5.56rem;
height: 4.653rem;
margin: auto;
margin-top: 0.6rem;
margin-bottom: 1.533rem;
img{
width: 100%;
}
p{
font-size: .37rem;
color: #999;
text-align: center;
}
}
</style>

View File

@@ -0,0 +1,64 @@
<template>
<div class="header">
<div class="left">
<img class="logo" src="/static/img/icon/gw_img_logo.png" alt="">
<img class="logo_text" src="/static/img/icon/logo_text_icon.png" alt="">
</div>
<div class="right">打开</div>
</div>
</template>
<script>
export default {
name: "v-header",
data() {
return {}
},
created() {
},
methods: {}
}
</script>
<style scoped lang="less">
.header {
width: 100%;
height: 1.333rem;
background-color: #000000;
opacity: 0.7;
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 999;
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 0.32rem;
box-sizing: border-box;
.left {
display: flex;
align-items: center;
.logo {
width: 0.867rem;
height: 0.867rem;
margin-right: 0.253rem;
}
.logo_text {
width: 1.76rem;
height: 0.613rem;
}
}
.right {
width: 1.92rem;
height: 0.693rem;
background-color: #d0302c;
border-radius: 0.107rem;
font-size: 0.32rem;
color: #ffffff;
text-align: center;
line-height: 0.693rem;
}
}
</style>

View File

@@ -0,0 +1,22 @@
<template>
<div class="kong">打开APP查看全部评论</div>
</template>
<script>
export default {
name: "v-kong",
}
</script>
<style lang="less" scoped>
.kong{
width: 9.36rem;
height: 1.173rem;
border-radius: 0.107rem;
border: solid 0.027rem #d0302c;
margin: 0 auto;
margin: 0.553rem 0.32rem 0.547rem 0.32rem;
font-size: 0.373rem;
line-height: 1.173rem;
color: #d0302c;
text-align: center;
}
</style>

View File

@@ -0,0 +1,22 @@
<template>
<div class="live">
live
</div>
</template>
<script>
export default {
name: "live",
data() {
return {}
},
created() {
},
methods: {}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,104 @@
<template>
<div class="radio">
<v-video v-if="VideoUrl.length != 0"
ref="v_video"
:show="false"
:url="VideoUrl">
</v-video>
<div class="title">{{ radioData.title }}</div>
<img class="logo" :src="radioData.logo" alt="">
<img class="sound_spectrum"
:src="playStatus ? '/static/img/sound_spectrum2.png' : '/static/img/sound_spectrum.gif' " alt="">
<ul class="action">
<li @click="getRadio()">
<img src="/static/img/icon/live_broadcast_icon.png" alt="">
<span>当前直播</span>
</li>
<li>
<img class="play"
@click="playRadio"
:src=" playStatus ? '/static/img/radio_up.png' : '/static/img/radio_stop.png' "
alt="">
</li>
<li @click="openMenu">
<img src="/static/img/icon/program_list_icon.png" alt="">
<span>节目列表</span>
</li>
</ul>
<van-popup v-model="isShow" position="bottom" :style="{ height: '65%' }">
<div class="pop">
<div class="pop_title">节目单</div>
<ul>
<li v-for="(v,i) in menuList" :key="i" @click="changeItem(i)">
<div class="left">
<div class="left_title">{{ v.menu_name }}</div>
<div class="desc">{{ v.nick_name }}</div>
<img v-if="i == currentMenuIndex" src="/static/img/act-list.gif" alt="">
</div>
<div class="right">{{ v.start_time }}-{{ v.end_time }}</div>
</li>
</ul>
<div class="close" @click="isShow = false">关闭</div>
</div>
</van-popup>
</div>
</template>
<script>
export default {
name: "radio",
data() {
return {
playStatus: true,
isShow: false,
radioData: {},
menuList: [],
currentMenuIndex: 0,
VideoUrl: []
}
},
created() {
this.getRadio();
},
methods: {
changeItem(i) {
this.currentMenuIndex = i;
this.isShow = false;
},
async openMenu() {
if (this.menuList.length == 0) {
this.menuList = await this.$http.index.getMenuList()
}
this.isShow = true;
},
playRadio() {
this.playStatus = !this.playStatus;
if (this.playStatus) {
// 暂停
this.$refs.v_video.pause()
} else {
// 播放
this.$refs.v_video.play()
}
},
async getRadio() {
this.radioData = await this.$http.index.radio();
this.VideoUrl = [
{
type: "application/x-mpegURL",
src: "https://vse2-as-all78.secdn.net/logos-channel/live/biblescreen-ad-free/chunklist_sess105845977.m3u8"
// src: this.radioData.play_url
}
]
console.log(this.VideoUrl);
}
}
}
</script>
<style lang="less" scoped>
@import "~@page/radio.less";
</style>

View File

@@ -0,0 +1,55 @@
<template>
<div @click="show=close()" v-if="show" class="shi">
<div class="more">
<img src="/static/img/select-down.png" alt="" />
</div>
<div class="xu">
<div class="shi_text">打开APP阅读全文</div>
</div>
</div>
</template>
<script>
export default {
name: "v-shi",
data(){
return{
show:true
}
},
methods:{
close(){
this.show=false;
this.$emit("change")
}
}
};
</script>
<style lang="less" scoped>
.shi {
width: 100%;
.more {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 0.413rem;
img {
width: 0.693rem;
height: 0.533rem;
}
}
.xu{
.shi_text {
width: 9.36rem;
height: 1.173rem;
background-color: #d0302c;
border-radius: 0.107rem;
font-size: 0.373rem;
line-height: 1.173rem;
color: #ffffff;
margin: 0 auto;
text-align: center;
}
}
}
</style>

View File

@@ -0,0 +1,135 @@
<template>
<div class="tuijian">
<div class="tj_header">相关推荐</div>
<ul class="heng" v-if="them != 1">
<router-link :to="{ path: '/dib_bling', query: { id: v.id }}" tag="li" class="con" v-for="(v,i) in data" :key="i">
<div class="img">
<img :src="v.cover" alt="" />
</div>
<div class="nr">
{{v.title}}
</div>
</router-link>
</ul>
<ul class="shu" v-else>
<router-link :to="{ path: '/new_info', query: { id: v.id }}" tag="li" class="cons" v-for="(v,i) in data" :key="i">
<div class="shu_left">
<div class="wenzi">
{{v.title}}
</div>
<div class="rq">{{v.update_time}}</div>
</div>
<div class="shu_right">
<img :src="v.icon" alt="" />
</div>
</router-link>
</ul>
</div>
</template>
<script>
export default {
name: "v-tuijian",
props: {
data: {
type: Array,
default: () => [],
},
them: {
type: Number,
default: 2,
},
},
data() {
return {};
},
watch: {
$route(to, from) {
if (this.$route.query.id) {
console.info( "重新调用评论接口" );
}
}
},
created() {},
methods: {},
};
</script>
<style scoped lang="less">
.tuijian {
padding-left: 0.32rem;
padding-right: 0.32rem;
box-sizing: border-box;
.tj_header {
font-weight: 600;
height: 1.333rem;
line-height: 1.333rem;
font-size: 0.427rem;
}
.heng {
width: 100%;
display: flex;
overflow-x: auto;
overflow-y: hidden;
.con {
width: 3.653rem;
margin-right: 0.133rem;
flex-shrink: 0;
.img {
position: relative;
img {
width: 100%;
}
.time {
position: absolute;
bottom: 0.173rem;
right: 0.187rem;
font-size: 0.293rem;
color: #ffffff;
}
}
.nr {
font-size: 0.373rem;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
}
}
.shu {
.cons {
display: flex;
height: 3.747rem;
box-sizing: border-box;
padding-top: 0.5rem;
border-bottom: 0.001rem solid #999;
justify-content: space-between;
.shu_left {
.wenzi {
font-size: 0.427rem;
line-height: 0.667rem;
color: #333333;
}
.rq {
font-size: 0.32rem;
color: #999999;
margin-top: 0.573rem;
}
}
.shu_right {
img {
width: 3.013rem;
height: 2.267rem;
}
}
}
.cons:last-child {
border-bottom: 0;
}
}
}
</style>

View File

@@ -0,0 +1,63 @@
<template>
<div class="tv">
<van-cell-group>
<van-cell
@click="enterInfo(v)"
v-for="(v,i) in channelData" :key="i">
<template #default v-if="img">
<img v-if="v.id == id" class="playing" src="/static/img/act-list.gif" alt="">
</template>
<template #title>
<span class="tv_item_title">{{ v.title }}</span>
</template>
</van-cell>
</van-cell-group>
</div>
</template>
<script>
export default {
name: "tv",
props: {
img: {
type: Boolean,
default: false
},
id: {
type: Number,
default: 0
}
},
data() {
return {
channelData: []
}
},
created() {
this.channelList();
},
methods: {
enterInfo(v) {
this.$router.push({
name: 'tvInfo',
query: {
url: v.play_url,
id: v.id
}
})
},
async channelList() {
this.channelData = await this.$http.index.channelList({
page: 1,
count: 15
});
console.log(this.channelData)
}
}
}
</script>
<style lang="less" scoped>
@import "~@page/tv.less";
</style>

View File

@@ -0,0 +1,91 @@
<template>
<div class="vieo">
<video-player
v-show="show"
class="video-player-box"
ref="videoPlayer"
:options="playerOptions"
:playsinline="true">
</video-player>
</div>
</template>
<script>
import { videoPlayer } from 'vue-video-player'
import 'video.js/dist/video-js.css'
import "videojs-contrib-hls"
export default {
name: 'v-video',
props: {
url: {
type: Array,
default: () => []
},
imgposter:{
type: String ,
default: () => {}
},
show: {
type: Boolean,
default: true
}
},
data() {
return {
playerOptions: {
playbackRates: [0.5, 1.0, 1.5, 2.0],
autoplay: false,
muted: false,
loop: false,
preload: "none",
language: "zh-CN",
aspectRatio: "16:9",
fluid: false,
poster: this.imgposter,
sources: this.url,
notSupportedMessage: "此视频暂无法播放,请稍后再试",
controlBar: {
// 当前时间和总时间的 分隔符
timeDivider: true,
//当前播放时间
currentTimeDisplay: true,
// 总时间
durationDisplay: true,
/**
* 区分 currentTimeDisplay,timeDivider,durationDisplay
* remainingTimeDisplay显示默认样式,只显示当前播放时间,一般
* 为false
*/
remainingTimeDisplay: false,
fullscreenToggle: true,
},
}
}
},
created() {},
mounted() {
},
methods: {
play(event) {
this.player.play();
},
pause(event) {
this.player.pause();
},
},
computed: {
player() {
return this.$refs.videoPlayer.player
}
},
components: {
videoPlayer
}
}
</script>
<style>
</style>