zdtap-uniapp-main/pagesCoin/goodsDetail.vue
LYL521LN\刘娜 36162035cd first commit
2025-03-29 16:01:43 +08:00

255 lines
7.3 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 class="page-content">
<image class="banner" :src="breweryInfo.brandCover"></image>
<view class="info">
<view class="flex justify-between align-center" style="margin-bottom: 32rpx;" @click="goBreweryDetail">
<view class="flex align-center">
<image :src="breweryInfo.brandLogo" class="cover"></image>
<view>
<view>服务商家</view>
<view style="font-size: 32rpx;color: #303048">{{ breweryInfo.brandName}}</view>
</view>
</view>
<text class="cuIcon-right lg"></text>
</view>
<view class="flex align-start" style="margin-bottom: 28rpx;">
<view class="flex solids-right justify-between padding-right"
style="flex-direction: column;min-height: 136rpx;">
<text style="color: #000;font-size: 36rpx;width: 468rpx;">{{ detail.goodsName}}</text>
<text style="color: #5E5F60;font-size: 24rpx;">限量{{ detail.stockNum}}兑完即止</text>
</view>
<view class="text-center" style="width: 206rpx;font-size: 24rpx;">
已兑<text style="color: #39E5B1;font-size: 36rpx;margin-left: 8rpx;font-weight: 700;">{{ detail.salesCount }}</text>
</view>
</view>
<view class="flex align-center">
<image src="@/static/info-circle.png" style="width: 48rpx;height: 48rpx;margin-right: 16rpx;"></image>
<text style="color: #5E5F60;font-size: 24rpx;">限购说明此商品每人限兑1件</text>
</view>
</view>
<!-- <view class="container"> -->
<!-- 这里是好礼介绍 -->
<!-- <view class="text-center" style="font-size: 28rpx;color: #000;">
好礼介绍
</view>
<view>
<image :src="detail.goodsCover" style="width: 260rpx;height: 300rpx;"></image>
</view> -->
<!-- 这里是兑换须知 -->
<!-- <view class="text-center" style="font-size: 28rpx;color#000;">
兑换须知
</view>
<view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">1.兑换时间2022年12月1日-2022年12月31日</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">2.兑换地点大九酿造·Mahanine</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">3.兑换方式线下兑换</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">4.兑换数量每人限兑1件</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">5.兑换后请到兑换地点领取</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">6.兑换后请到兑换地点领取</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">7.兑换后请到兑换地点领取</view>
<view style="font-size: 24rpx;color: #5E5F60;margin-bottom: 20rpx;">8.兑换后请到兑换地点领取</view>
</view> -->
<!-- </view> -->
<!-- 兑换按钮区 -->
<view class="bottom-box">
<view v-if="!coinBalance.balance || coinBalance.balance < detail.redeemedNum" class="tip">
<image src="@/static/warning.png" style="margin-right: 24rpx;width: 25rpx;height: 25rpx;"></image>
<text>您的{{breweryInfo.brandName}}品牌币数量不足哦</text>
</view>
<view class="fun-box">
<view class="left">
<view style="margin-bottom: 20rpx;">{{ detail.redeemedNum}}
<image src="@/static/beerCoin.png" style="width: 30rpx;height: 30rpx;margin-left: 20rpx;">
</image>
</view>
<view class="flex align-center">当前可用品牌币{{ coinBalance.balance}}<image src="@/static/beerCoin.png"
style="width: 30rpx;height: 30rpx;margin-left: 20rpx;">
</image>
</view>
<!-- <view class="flex align-center">当前可用通用币0<image src="@/static/beerCoin.png"
style="width: 30rpx;height: 30rpx;margin-left: 20rpx;">
</image>
</view> -->
</view>
<view class="btn" @click="handleRedeem">
立即兑换
</view>
</view>
</view>
<loginPopup ref="loginRef"></loginPopup>
</view>
</template>
<script>
import loginPopup from '@/components/loginPopup.vue';
import { getGoodsInfo, getBreweryInfo,getBreweryCoinBalance } from '@/api/bar.js'
export default {
components: {
loginPopup
},
data() {
return {
id:'',
breweryId:'', // 品牌方id
detail: {},
breweryInfo:{},
coinBalance:{}
};
},
onLoad({id, breweryId}) {
if (!uni.getStorageSync('token')) {
this.$refs.loginRef.open()
return
}
this.id = id
this.breweryId = breweryId
this.getBreweryInfoFun()
},
onShow() {
this.getDetailFun()
this.getBreweryCoinBalanceFun()
},
methods: {
// 品牌方详情
getBreweryInfoFun() {
getBreweryInfo(this.breweryId).then(res => {
this.breweryInfo = res.data
})
},
// 获取详情
getDetailFun() {
uni.showLoading({
title: '加载中',
mask: true
})
getGoodsInfo(this.id).then(res => {
uni.hideLoading()
if (res.code == 200) {
this.detail = res.data
}
}).catch(err => {
uni.hideLoading()
})
},
// 跳转品牌方详情
goBreweryDetail() {
uni.navigateTo({
url: '/pages/index/brandHome?breweryId=' + this.breweryId
})
},
// 特定品牌啤酒币余额
getBreweryCoinBalanceFun() {
getBreweryCoinBalance(this.breweryId).then(res => {
console.log(res)
this.coinBalance = res.data
})
},
// 兑换
handleRedeem() {
uni.navigateTo({
url: '/pagesCoin/redeemOrder?goodsId=' + this.id
})
}
}
}
</script>
<style lang="scss" scoped>
.page-content {
// background: linear-gradient(180deg, #FEE034 0%, #FDFDFD 50%, #FDFDFD 100%);
// padding-top: 300rpx;
min-height: 100vh;
.banner {
width: 100%;
height: 724rpx;
}
.info {
position: relative;
border-radius: 30rpx;
background: #FFFFFF;
box-sizing: border-box;
border: 1px solid #F2F2F2;
padding: 20rpx 32rpx 30rpx;
margin-bottom: 18rpx;
margin-top: -150rpx;
z-index: 100;
.cover {
width: 72rpx;
height: 72rpx;
margin-right: 32rpx;
border-radius: 50%;
}
}
.container {
padding: 0 32rpx;
margin-top: 20rpx;
padding-bottom: 300rpx;
background: #FFFFFF;
}
.bottom-box {
position: fixed;
left: 0;
width: 100%;
bottom: 0;
background: #FFFFFF;
.tip {
height: 52rpx;
border-radius: 15px 15px 0px 0px;
background: rgba(255, 237, 52, 0.5);
color: #3D3D3D;
font-size: 20rpx;
padding-left: 38rpx;
display: flex;
align-items: center;
}
.fun-box {
height: 224rpx;
background: #FFFFFF;
box-shadow: 0px -4px 8px 0px rgba(0, 0, 0, 0.1);
// border-radius: 30rpx 30rpx 0px 0px;
display: flex;
justify-content: space-between;
align-items: center;
padding: 40rpx 32rpx 40rpx;
padding-bottom: calc(24rpx + constant(safe-area-inset-bottom));
padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
.left {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
view {
font-size: 20rpx;
color: #3D3D3D;
&:nth-child(1) {
font-size: 48rpx;
color: #3D3D3D;
font-weight: 700;
}
}
}
.btn {
width: 344rpx;
height: 82rpx;
background: #39E5B1;
border-radius: 12rpx;
font-size: 34rpx;
color: #000;
text-align: center;
line-height: 82rpx;
}
}
}
}
</style>