vr-shopxo-uniapp/pages/plugins/live/pull/pull.vue

115 lines
4.2 KiB
Vue
Raw Normal View History

2025-10-27 10:38:30 +00:00
<template>
2025-11-28 10:19:51 +00:00
<view :class="theme_view + ' live-bg'">
2025-12-02 09:11:52 +00:00
<view class="w h" @dblclick="handle_double_click" @touchend="handle_touch_end" :data-ignore="false">
<live-video ref="liveVideo" :src="live_config.pull_flv_url || 'http://live-pull-all.shopxo.vip/68f764013572f9240ca7ce6c/shopxo122.m3u8'" @ended="ended" @mutedAutoPlaySuccess="muted_auto_play_success"></live-video>
2025-12-02 09:11:52 +00:00
<!-- 简化版点赞效果组件 -->
2025-12-02 10:10:03 +00:00
<full-screen-like-effect ref="fullScreenLikeEffect" :custom-images="like_show_imgs"></full-screen-like-effect>
2025-11-25 02:30:43 +00:00
</view>
2025-12-02 09:11:52 +00:00
<view v-if="!is_loading" class="live-content pointer-events-none">
2025-11-28 08:01:50 +00:00
<template v-if="!is_live_ended">
2025-12-02 09:11:52 +00:00
<live-content ref="liveContent" :live-config="live_config" :live-show-imgs="like_show_imgs" @live-back="live_back" @handleDoubleClick="handle_double_click" @handleTouchEnd="handle_touch_end"></live-content>
2025-11-28 08:01:50 +00:00
</template>
<template v-else>
2025-11-28 10:19:51 +00:00
<view class="live-ended flex-row align-c jc-c">
<view class="flex-col align-c">
<text class="live-ended-text">直播已结束</text>
<button plain size="mini" class="mt-10 live-ended-button" @tap="live_back">
<text class="cr-f pa-5">退出直播间</text>
</button>
2025-11-28 10:19:51 +00:00
</view>
2025-11-28 08:01:50 +00:00
</view>
</template>
2025-11-26 03:14:15 +00:00
</view>
<!-- 静音提示 -->
2025-12-01 06:46:35 +00:00
<view v-if="!is_loading && !is_live_ended && is_muted_auto_play_success" class="live-muted flex-row align-c jc-c">
<view class="live-muted-tips">
因浏览器限制静音<text class="ml-5 cr-f live-muted-text" @tap="muted_tap"></text>
</view>
</view>
2025-10-27 10:38:30 +00:00
</view>
</template>
<script>
2025-11-27 09:28:29 +00:00
import liveVideo from './components/video/video.vue';
import liveContent from './components/live-content/live-content.vue';
2025-12-01 10:25:01 +00:00
// 引入点赞效果组件
2025-12-02 10:10:03 +00:00
import fullScreenLikeEffect from './components/full-screen-like-effect/full-screen-like-effect.vue';
2025-11-27 10:11:14 +00:00
// 引入混入公共逻辑避免nvue和vue使用同一套逻辑出现问题
import mixins from './mixins/mixins.js';
2025-10-27 13:29:50 +00:00
const app = getApp();
export default {
2025-11-24 07:26:22 +00:00
components: {
2025-11-26 03:14:15 +00:00
liveVideo,
2025-12-01 10:25:01 +00:00
liveContent,
2025-12-02 10:10:03 +00:00
fullScreenLikeEffect
2025-11-24 07:26:22 +00:00
},
2025-11-27 10:11:14 +00:00
mixins: [mixins],
2025-10-27 13:29:50 +00:00
data() {
return {
2025-11-27 10:11:14 +00:00
theme_view: app.globalData.get_theme_value_view(),
is_muted_auto_play_success: false,
}
},
methods: {
muted_auto_play_success() {
this.is_muted_auto_play_success = true;
},
// 静音提示点击
muted_tap() {
this.$refs.liveVideo.muted_tap();
// 关闭静音提示
this.is_muted_auto_play_success = false;
2025-10-27 13:29:50 +00:00
}
2025-10-27 10:38:30 +00:00
},
}
</script>
2025-11-28 09:20:46 +00:00
<style lang="scss" scoped>
2025-11-28 10:19:51 +00:00
.live-bg {
background-image: linear-gradient(to bottom,#ba623c,#14766a);
}
2025-11-26 03:14:15 +00:00
.live-content {
position: absolute;
top: 0;
left: 0;
z-index: 9;
width: 100%;
height: 100%;
}
.live-muted {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 10;
width: 100%;
height: 100%;
.live-muted-tips {
background: rgba(0, 0, 0, 0.5);
border-radius: 20rpx;
padding: 15rpx 20rpx;
font-size: 32rpx;
color: #fff;
}
.live-muted-text {
color: rgba(210,27,70,1);
padding-bottom: 4rpx;
font-size:16px;
}
.live-muted-text:hover {
color: rgba(210,27,70,1);
border-bottom: 1px solid rgba(210,27,70,1);
}
}
2025-11-28 08:01:50 +00:00
.live-ended {
2025-11-28 09:20:46 +00:00
width: 100vw;
height: 100vh;
background-image: linear-gradient(to bottom,#AD18F9,#05DFC7);
2025-11-28 09:20:46 +00:00
.live-ended-text {
color:#fff;
font-size:16px;
2025-11-28 09:20:46 +00:00
}
2025-11-28 08:01:50 +00:00
}
2025-12-01 10:25:01 +00:00
.live-ended-button {
border-radius: 6px;
border-color: #fff;
}
2025-10-27 10:38:30 +00:00
</style>