<template> <view> <view v-if="mode === 2 && state.liveList.length" class="goods-md-wrap ss-flex ss-flex-wrap ss-col-top" :style="[{ margin: '-' + data.space + 'rpx' }]" > <view :style="[ { padding: data.space + 'rpx', }, ]" class="goods-list-box" v-for="item in state.liveList" :key="item.id" > <s-live-card class="goods-md-box" size="md" :goodsFields="goodsFields" :data="item" :titleColor="goodsFields.name?.color" :subTitleColor="goodsFields.anchor_name?.color" :topRadius="data.borderRadiusTop" :bottomRadius="data.borderRadiusBottom" @click="goRoom(item.roomid)" > </s-live-card> </view> </view> <view v-if="mode === 1 && state.liveList.length" class="goods-lg-box"> <view class="goods-box" :style="[{ marginBottom: data.space + 'px' }]" v-for="item in state.liveList" :key="item.id" > <s-live-card class="goods-card" size="sl" :goodsFields="goodsFields" :data="item" :titleColor="goodsFields.name?.color" :subTitleColor="goodsFields.anchor_name.color" :topRadius="data.borderRadiusTop" :bottomRadius="data.borderRadiusBottom" @tap="goRoom(item.roomid)" > </s-live-card> </view> </view> </view> </template> <script setup> import { reactive, onMounted } from 'vue'; import sheep from '@/sheep'; const state = reactive({ liveList: [], mpLink: '', }); const props = defineProps({ data: { type: Object, default() {}, }, styles: { type: Object, default() {}, }, }); const { mode, goodsFields, mpliveIds } = props.data ?? {}; const { marginLeft, marginRight } = props.styles ?? {}; async function getLiveListByIds(ids) { const { data } = await sheep.$api.app.mplive.getRoomList(ids); return data; } function goRoom(id) { // #ifdef MP-WEIXIN uni.navigateTo({ url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${id}`, }); // #endif // #ifndef MP-WEIXIN uni.showModal({ title: '提示', confirmText: '允许', content: '将打开小程序访问', success: async function (res) { if (res.confirm) { getMpLink(); } }, }); // #endif } function goMpLink() { // #ifdef H5 window.location = state.mpLink; // #endif // #ifdef APP-PLUS plus.runtime.openURL(state.mpLink); // #endif } async function getMpLink() { // #ifndef MP-WEIXIN if (state.mpLink === '') { const { error, data } = await sheep.$api.app.mplive.getMpLink(); if (error === 0) { state.mpLink = data; } } goMpLink(); // #endif } onMounted(async () => { state.liveList = await getLiveListByIds(mpliveIds); }); </script> <style lang="scss" scoped> .goods-list-box { width: 50%; flex-shrink: 0; box-sizing: border-box; overflow: hidden; } .goods-box { &:nth-last-of-type(1) { margin-bottom: 0 !important; } } .goods-md-box, .goods-sl-box { position: relative; } </style>