395 lines
9.8 KiB
Vue
395 lines
9.8 KiB
Vue
<template>
|
||
<view class="page">
|
||
<image class="banner" mode="aspectFill" :src="info.cover"></image>
|
||
<view class="container">
|
||
<view class="rules-btn" @click="handleRules">活动细则</view>
|
||
<view class="share-btn" @click="handleShare">分享</view>
|
||
<view class="header-box">
|
||
<view class="title">{{info.pageName}}</view>
|
||
<view class="desc">本月完成限定酒款累计目标,赢取奖励</view>
|
||
</view>
|
||
<view v-if="info.activity" class="top">
|
||
<view class="box-title">活动即将结束</view>
|
||
<view style="color: #9E9E9E;font-size: 24rpx;font-weight: 500;margin-bottom: 16rpx;">
|
||
{{info.activity.endDate}}
|
||
</view>
|
||
<view class="num-box flex justify-between" style="color: #9E9E9E;font-size: 24rpx;font-weight: 500;">
|
||
<text>0桶</text>
|
||
<text>{{ info.activity.activityTarget}}桶</text>
|
||
</view>
|
||
<view class="num-box">
|
||
<view class="sub" style="margin-bottom: 16rpx;">时间:首次扫码开始累计 <text
|
||
style="color:#DE3C4B">{{info.activity.duration || '30'}}天内</text></view>
|
||
<view class="sub">目标:<text style="color:#DE3C4B">限定酒款</text>累计扫码 ≥
|
||
{{ info.activity.activityTarget}}桶
|
||
</view>
|
||
</view>
|
||
<view v-if="info.activity.activityRewardType == 1">
|
||
<view class="margin-bottom-sm" style="padding-top: 24rpx;">目标奖励</view>
|
||
<view v-if="info.activity.activityRewardGoods" class="flex align-center">
|
||
<image :src="info.activity.activityRewardGoods.goodsCover"
|
||
style="width: 144rpx;height: 204rpx;margin-right:20rpx;"></image>
|
||
<view class="flex-1">
|
||
<view class="flex flex-1 align-center">
|
||
<view class="flex-1">
|
||
<view class="word-all margin-bottom-sm" style="color:#1E2019">
|
||
{{activityInfo.activityRewardGoods.goodsName}}
|
||
</view>
|
||
<!-- <view class="word-all margin-bottom-sm" style="color:rgba(30, 32, 25, 0.8)">风味西打酒</view>
|
||
<view class="word-all margin-bottom-sm" style="color:#1E2019">TasteRoom 风味屋</view> -->
|
||
</view>
|
||
<view class="text-red text-right">x<text
|
||
class="text-xxl text-bold">{{activityInfo.activityRewardCount}}</text></view>
|
||
</view>
|
||
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view v-if="info.activity.activityRewardType == 2" class="bg-white margin-bottom-sm"
|
||
style="border-radius:36rpx;">
|
||
<view class="margin-bottom-sm" style="padding-top: 24rpx;">目标奖励</view>
|
||
<view class="flex align-center">
|
||
<!-- <image src="@/static/img/icon-logo.png" class="margin-right"
|
||
style="width: 72rpx;height: 72rpx;border-radius: 30rpx;"></image> -->
|
||
<view class="flex flex-1 align-center">
|
||
<view class="flex-1 word-all" style="color:#1E2019">啤酒币</view>
|
||
<view class="text-red text-right">x<text
|
||
class="text-xxl text-bold">{{ info.activity.activityRewardCount }}</text></view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
<view class="bottom">
|
||
<view class="flex justify-between">
|
||
<text class="box-title">限定酒款11</text>
|
||
<image src="@/static/arrow-right.png" class="more-icon"></image>
|
||
</view>
|
||
<!-- <scroll-view scroll-x="true" class="scroll-container">
|
||
|
||
<view class="beer-box" v-for="(it, index) in info.beers" :key="index" @click="toReview(it)">
|
||
<image :src="it.cover" class="cover"></image>
|
||
<view class="title word-all">{{ it.beerName}}</view>
|
||
<view class="desc word-all">{{ it.beerStyles }}</view>
|
||
<view class="desc word-all">{{ it.brandName }}</view>
|
||
<view class="flex align-center num">
|
||
<image src="@/static/vector.png" style="width: 20rpx;height: 20rpx;margin-right: 10rpx;">
|
||
</image>
|
||
{{ it.beerOverallRating || 0 }}({{ it.beerReviewsCount || 0}})
|
||
</view>
|
||
</view>
|
||
</scroll-view> -->
|
||
<rowBeer :beers="info.beers" />
|
||
</view>
|
||
<view class="flex justify-center">
|
||
<button class="cu-btn bg-zd scan-btn" @click="startScan">
|
||
<text class="cuIcon-qr_code" style="margin-right: 20rpx;"></text>
|
||
扫桶标自动开始累计</button>
|
||
</view>
|
||
</view>
|
||
|
||
<uni-popup ref="p1" type="center" :is-mask-click="false">
|
||
<view class="p-body flex flex-col" style="width: 500rpx;height: 660rpx;">
|
||
<view style="padding: 28rpx;flex:1">
|
||
<view class="title">活动细则</view>
|
||
<view class="p-text margin-bottom">累积活动达成目标值后,系统自动发起兑付,无需人工操作,对应活动的品牌方会安排兑付相应的返利商品/啤酒币.
|
||
您可以在'我参与的'栏目查看进度.</view>
|
||
</view>
|
||
<view class="p-btn" @click="closeP(1)">我知道了</view>
|
||
</view>
|
||
</uni-popup>
|
||
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
getFeaturePage
|
||
} from "@/api/platform.js"
|
||
import rowBeer from '@/components/rowBeer.vue'
|
||
export default {
|
||
components: {
|
||
rowBeer
|
||
},
|
||
data() {
|
||
return {
|
||
id: '',
|
||
info: {}, // 专辑信息
|
||
showRules: false, // 活动细则
|
||
};
|
||
},
|
||
onLoad({
|
||
id
|
||
}) {
|
||
this.id = id
|
||
this.getFeatureInfo()
|
||
uni.showShareMenu({
|
||
menus: ['shareAppMessage', 'shareTimeline']
|
||
})
|
||
},
|
||
methods: {
|
||
// 获取专辑信息
|
||
getFeatureInfo() {
|
||
getFeaturePage(this.id).then(res => {
|
||
console.log(res)
|
||
this.info = res.data
|
||
})
|
||
},
|
||
// 跳转酒评页
|
||
toReview(it) {
|
||
uni.navigateTo({
|
||
url: "/pages/index/review?beerId=" + it.id
|
||
})
|
||
},
|
||
// 活动细则
|
||
handleRules() {
|
||
this.$refs.p1.open()
|
||
},
|
||
// 关闭弹窗
|
||
closeP() {
|
||
this.$refs.p1.close()
|
||
},
|
||
// 分享
|
||
handleShare() {
|
||
if(this.info.cover.include('http://')){
|
||
this.info.cover.replace('http://','https://')
|
||
}
|
||
uni.downloadFile({
|
||
url: this.info.cover,
|
||
success: (res) => {
|
||
console.log(res)
|
||
// #ifdef MP-WEIXIN
|
||
uni.showShareImageMenu({
|
||
provider: 'weixin',
|
||
// path: '/pages/index/featureInfo?id=' + this.id,
|
||
path: res.tempFilePath,
|
||
shareType: 0,
|
||
success: (res) => {
|
||
console.log(res)
|
||
},
|
||
fail: (err) => {
|
||
console.log(err)
|
||
}
|
||
})
|
||
// #endif
|
||
}
|
||
})
|
||
|
||
|
||
},
|
||
startScan() {
|
||
uni.switchTab({
|
||
url: "/pages/index/scan?featureId=" + this.id
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.page {
|
||
.banner {
|
||
width: 100%;
|
||
min-height: 600rpx;
|
||
}
|
||
|
||
.container {
|
||
position: relative;
|
||
border-radius: 12rpx;
|
||
padding: 24rpx;
|
||
padding-bottom: calc(24rpx + constant(safe-area-inset-bottom));
|
||
padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
|
||
background: #F2F2F2;
|
||
margin-top: -40rpx;
|
||
z-index: 1;
|
||
|
||
.rules-btn {
|
||
position: absolute;
|
||
top: -70rpx;
|
||
left: 24rpx;
|
||
font-family: Roboto;
|
||
font-size: 20rpx;
|
||
font-weight: normal;
|
||
color: #0B0E26;
|
||
border-radius: 40rpx;
|
||
background: #D8D8D8;
|
||
width: 126rpx;
|
||
height: 44rpx;
|
||
line-height: 44rpx;
|
||
text-align: center;
|
||
}
|
||
|
||
.share-btn {
|
||
position: absolute;
|
||
top: -70rpx;
|
||
right: 24rpx;
|
||
font-family: Roboto;
|
||
font-size: 20rpx;
|
||
font-weight: normal;
|
||
color: #0B0E26;
|
||
border-radius: 40rpx;
|
||
background: #D8D8D8;
|
||
|
||
width: 114rpx;
|
||
height: 44rpx;
|
||
line-height: 44rpx;
|
||
text-align: center;
|
||
}
|
||
|
||
.header-box {
|
||
.title {
|
||
font-family: Roboto;
|
||
font-size: 32rpx;
|
||
font-weight: bold;
|
||
color: #0B0E26;
|
||
margin-bottom: 16rpx;
|
||
}
|
||
|
||
.desc {
|
||
font-family: Roboto;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
color: #9D9D9D;
|
||
margin-bottom: 16rpx;
|
||
}
|
||
}
|
||
|
||
.top {
|
||
border-radius: 12rpx;
|
||
background: #FFFFFF;
|
||
padding: 24rpx;
|
||
margin-bottom: 36rpx;
|
||
|
||
.box-title {
|
||
font-family: Roboto;
|
||
font-size: 36rpx;
|
||
font-weight: bold;
|
||
color: #3D3D3D;
|
||
margin-bottom: 20rpx;
|
||
}
|
||
|
||
.num-box {
|
||
padding: 24rpx 0;
|
||
border-bottom: 1px solid #D8D8D8;
|
||
|
||
.sub {
|
||
font-family: Roboto;
|
||
font-size: 28rpx;
|
||
font-weight: 500;
|
||
line-height: 42rpx;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
.bottom {
|
||
border-radius: 12rpx;
|
||
background: #FFFFFF;
|
||
padding: 24rpx;
|
||
margin-bottom: 36rpx;
|
||
|
||
.box-title {
|
||
font-family: Roboto;
|
||
font-size: 28rpx;
|
||
font-weight: bold;
|
||
color: #3D3D3D;
|
||
}
|
||
|
||
.more-icon {
|
||
width: 48rpx;
|
||
height: 48rpx;
|
||
transition: all 0.3;
|
||
transform: rotate(-90deg);
|
||
}
|
||
|
||
// .scroll-container {
|
||
// display: flex;
|
||
// flex-direction: row;
|
||
// white-space: nowrap;
|
||
// height: 490rpx;
|
||
|
||
// .beer-box {
|
||
// width: 208rpx;
|
||
// background: #FFFFFF;
|
||
// margin-right: 16rpx;
|
||
// margin-bottom: 36rpx;
|
||
// box-sizing: border-box;
|
||
// display: inline-block;
|
||
|
||
// &:nth-child(1) {
|
||
// margin-left: 32rpx;
|
||
// }
|
||
|
||
// .cover {
|
||
// width: 208rpx;
|
||
// height: 300rpx;
|
||
// border-radius: 12rpx;
|
||
// margin-bottom: 18rpx;
|
||
// }
|
||
|
||
// .title {
|
||
// font-size: 28rpx;
|
||
// color: #1E2019;
|
||
// margin-bottom: 12rpx;
|
||
// color: #19191B;
|
||
// }
|
||
|
||
// .desc {
|
||
// font-size: 24rpx;
|
||
// color: #A5A7B9;
|
||
// margin-bottom: 12rpx;
|
||
// color: #979797;
|
||
// }
|
||
|
||
// .num {
|
||
|
||
// font-size: 20rpx;
|
||
// color: #5F5F63;
|
||
// }
|
||
// }
|
||
// }
|
||
}
|
||
|
||
.scan-btn {
|
||
border-radius: 12rpx;
|
||
width: 654rpx;
|
||
height: 88rpx;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
.p-body {
|
||
border-radius: 12rpx;
|
||
background: #F2F2F2;
|
||
|
||
.title {
|
||
margin-bottom: 46rpx;
|
||
font-family: Roboto;
|
||
font-size: 32rpx;
|
||
font-weight: normal;
|
||
text-align: center;
|
||
color: #3D3D3D;
|
||
}
|
||
|
||
.p-text {
|
||
font-family: Roboto;
|
||
font-size: 28rpx;
|
||
font-weight: normal;
|
||
color: #9E9E9E;
|
||
}
|
||
|
||
.p-btn {
|
||
width: 100%;
|
||
height: 90rpx;
|
||
border-radius: 0px 0px 12rpx 12rpx;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
background: #39E5B1;
|
||
font-family: Roboto;
|
||
font-size: 32rpx;
|
||
font-weight: normal;
|
||
color: #3D3D3D;
|
||
}
|
||
}
|
||
</style> |