feat(LiveRoom): 优化直播间页面布局和功能

-调整了直播间的布局结构,增加了出价和支付相关功能- 添加了竞拍记录的显示,包括领先者、竞价时间等信息
- 优化了开启出价按钮的样式和提示文字- 调整了播放器的初始化配置,提高了稳定性
This commit is contained in:
xingyy 2025-01-15 11:45:46 +08:00
parent 03d22960f0
commit 824ffca63b

View File

@ -1,9 +1,10 @@
<script setup> <script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue' import {ref, onMounted, onBeforeUnmount} from 'vue'
import Aliplayer from 'aliyun-aliplayer' import Aliplayer from 'aliyun-aliplayer'
import 'aliyun-aliplayer/build/skins/default/aliplayer-min.css' import 'aliyun-aliplayer/build/skins/default/aliplayer-min.css'
import lock4 from '@/static/images/lock4@2x.png' import lock4 from '@/static/images/lock4@2x.png'
import lockdfd from '@/static/images/lockdfd@2x.png' import lockdfd from '@/static/images/lockdfd@2x.png'
const player = ref(null) const player = ref(null)
const quoteStatus = ref(false) const quoteStatus = ref(false)
const isPlayerReady = ref(false) const isPlayerReady = ref(false)
@ -11,7 +12,7 @@ const config = useRuntimeConfig()
const props = defineProps({ const props = defineProps({
fullLive: { fullLive: {
type: Boolean, type: Boolean,
default: false, default: true,
}, },
}) })
const playerConfig = { const playerConfig = {
@ -38,8 +39,10 @@ const initializePlayer = () => {
playerInstance?.play() playerInstance?.play()
}) })
player.value?.on('error', handlePlayerError) player.value?.on('error', handlePlayerError)
player.value?.on('rtsTraceId', (event) => {}) player.value?.on('rtsTraceId', (event) => {
player.value?.on('rtsFallback', (event) => {}) })
player.value?.on('rtsFallback', (event) => {
})
} catch (error) { } catch (error) {
console.error('播放器初始化失败:', error) console.error('播放器初始化失败:', error)
} }
@ -61,8 +64,9 @@ onBeforeUnmount(() => {
</script> </script>
<template> <template>
<div class="relative h-full" > <div class="relative h-full">
<div id="J_prismPlayer" class="w-screen" :style="fullLive?'height: calc(100vh - var(--van-nav-bar-height))':'height:100%'"></div> <div id="J_prismPlayer" class="w-screen"
:style="fullLive?'height: calc(100vh - var(--van-nav-bar-height))':'height:100%'"></div>
<template v-if="fullLive"> <template v-if="fullLive">
<div class="absolute bg-#fff w-60px top-196px right-0 z-999 rounded-l-4px"> <div class="absolute bg-#fff w-60px top-196px right-0 z-999 rounded-l-4px">
<div <div
@ -70,7 +74,8 @@ onBeforeUnmount(() => {
<div>拍品</div> <div>拍品</div>
<div>(1/188)</div> <div>(1/188)</div>
</div> </div>
<div class="w-full h-60px flex flex-col items-center justify-center" @click="changeStatus"> <div class="w-full h-60px flex flex-col items-center justify-center border-b-1px border-b-#D3D3D3"
@click="changeStatus">
<div class="mb-3px"> <div class="mb-3px">
<img :src="quoteStatus ? lockdfd : lock4" <img :src="quoteStatus ? lockdfd : lock4"
class="w-16px h-21px" class="w-16px h-21px"
@ -81,6 +86,12 @@ onBeforeUnmount(() => {
{{ quoteStatus ? '关闭出价' : '开启出价' }} {{ quoteStatus ? '关闭出价' : '开启出价' }}
</div> </div>
</div> </div>
<div
class="w-full h-60px text-#DD9C56 flex flex-col justify-center items-center ">
<div class="text-10px ">RMB</div>
<div class="text-12px">5,000</div>
<div class="text-10px">去支付</div>
</div>
</div> </div>
<div class="absolute top-505px left-1/2 transform -translate-x-1/2 flex flex-col items-center"> <div class="absolute top-505px left-1/2 transform -translate-x-1/2 flex flex-col items-center">
<div class="text-16px text-#FFB25F font-600"> <div class="text-16px text-#FFB25F font-600">
@ -95,7 +106,28 @@ onBeforeUnmount(() => {
:class="`w-344px h-[40px] ${quoteStatus ? 'bg-#FFB25F' : 'bg-#D6D6D8'} rounded-4px ${quoteStatus ? 'text-#fff' : 'text-#7D7D7F'} text-14px flex justify-center items-center mt-10px mb-10px`"> :class="`w-344px h-[40px] ${quoteStatus ? 'bg-#FFB25F' : 'bg-#D6D6D8'} rounded-4px ${quoteStatus ? 'text-#fff' : 'text-#7D7D7F'} text-14px flex justify-center items-center mt-10px mb-10px`">
{{ quoteStatus ? '确认出价 RMB 3,000' : '点击"开启出价",即刻参与竞拍 ' }} {{ quoteStatus ? '确认出价 RMB 3,000' : '点击"开启出价",即刻参与竞拍 ' }}
</div> </div>
<div class="w-344px h-86px bg-#fff rounded-4px"> <div class="w-344px h-86px bg-#fff rounded-4px text-14px text-#939393 pt-7px pb-7px flex flex-col justify-between">
<div class="flex">
<div class="flex-grow-1 text-center">领先</div>
<div class="flex-grow-1 text-center">现场竞价</div>
<div class="flex-grow-1 text-center">10:12:12</div>
<div class="flex-grow-1 text-center">RMB5,500</div>
<div class="flex-grow-1 text-center"></div>
</div>
<div class="flex">
<div class="flex-grow-1 text-center">领先</div>
<div class="flex-grow-1 text-center">现场竞价</div>
<div class="flex-grow-1 text-center">10:12:12</div>
<div class="flex-grow-1 text-center">RMB5,500</div>
<div class="flex-grow-1 text-center"></div>
</div>
<div class="flex">
<div class="flex-grow-1 text-center">领先</div>
<div class="flex-grow-1 text-center">现场竞价</div>
<div class="flex-grow-1 text-center">10:12:12</div>
<div class="flex-grow-1 text-center">RMB5,500</div>
<div class="flex-grow-1 text-center"></div>
</div>
</div> </div>
</div> </div>
</template> </template>
@ -104,6 +136,16 @@ onBeforeUnmount(() => {
</template> </template>
<style scoped> <style scoped>
.grid-container {
display: grid;
grid-template-columns: repeat(5, 1fr);
grid-template-rows: repeat(3, 1fr);
}
.grid-item {
display: flex;
justify-content: center;
align-items: center;
}
.my-rolling-text { .my-rolling-text {
--van-rolling-text-item-width: 10px; --van-rolling-text-item-width: 10px;
--van-rolling-text-font-size: 16px; --van-rolling-text-font-size: 16px;
@ -115,7 +157,8 @@ onBeforeUnmount(() => {
--van-rolling-text-font-size: 16px; --van-rolling-text-font-size: 16px;
--van-rolling-text-color: #FFF; --van-rolling-text-color: #FFF;
} }
:deep(.prism-license-watermark){
display: none!important; :deep(.prism-license-watermark) {
display: none !important;
} }
</style> </style>