|
|
<template> <view class="exchangeDetailBox"> <global-loading /> <view class="topBg"> <view class="exchangeCoupon flex-items"> <view class="couponInfo"> <view class="font-color-FFF fs60">{{currentCoupon.couponType === 1 ? `满${currentCoupon.fullMoney}减${currentCoupon.reduceMoney}元` : `打${currentCoupon.reduceMoney}折`}}</view> <view class="font-color-FFF mar-top-30 fs48">{{currentCoupon.couponType === 1 ? '满减券' : '折扣券'}}</view> </view> </view> </view> <view class="cent mar-top-30"> <view class="bg integralInfo flex-display flex-sp-between"> <view class="integralLeft flex-display"> <view> <view class="fs48 font-color-C83732 flex-items"> <view class="mar-right-20">{{currentCoupon.credit||0}}积分</view> <view class="remaining fs24 font-color-C83732"> 还剩{{currentCoupon.stockNumber||0}}件 </view> </view> <view class="fs32 font-color-333" v-if="currentCoupon.fullMoney !== 0">满{{currentCoupon.fullMoney}}{{currentCoupon.couponType === 1 ? '减' : '打'}}{{currentCoupon.reduceMoney}}{{currentCoupon.couponType === 1 ? '元' : '折'}}券</view> <view class="fs32 font-color-333" v-if="currentCoupon.fullMoney === 0">无门槛{{currentCoupon.couponType === 1 ? '减' : '打'}}{{currentCoupon.reduceMoney}}{{currentCoupon.couponType === 1 ? '元' : '折'}}券</view> </view> </view> <view class="integralRight flex-column-plus flex-end"> <view class="remaining fs28 font-color-999">已兑{{currentCoupon.takeCount||0}}</view> </view> </view> </view> <view class="cent mar-top-30"> <view class="bg exchangeCondition"> <view class="conditionTit fs32 font-color-333 font-weight-bold">兑换条件</view> <view class="flex-items flex-sp-between mar-top-30"> <text class="fs28 font-color-333">有效期</text> <text class="fs28 font-color-999">{{currentCoupon.startTime.replace(/-/g, '.')}}-{{ currentCoupon.endTime.replace(/-/g, '.')}}</text> </view> <view class="flex-items flex-sp-between mar-top-30"> <text class="fs28 font-color-333">兑换须知</text> <text class="fs28 font-color-999">虚拟权益兑换后不可退换</text> </view> </view> </view> <view class="cent mar-top-30"> <view class="bg proCondition"> <view class="conditionTit fs32 font-color-333 font-weight-bold">可用商品</view> <view class="productItemBox mar-top-30"> <view class="productItem" v-for="item of productList" :key="item.productId" @click="goodsDateils(item.shopId,item.productId,item.skuId)"> <view class="productImg"> <image :src="item.image"></image> </view> <view class="productTit mar-top-10 fs28 font-color-333">{{ item.productName }}</view> <view class="productPrice font-color-C83732 fs40">¥{{ item.price }}</view> </view> </view> </view> </view>
<wx-send-coupon @success="success" :couponList="[currentCoupon]" :isExchange="true"> <view class="exchangeBtnBg flex-items"> <view class="exchangeBtn">立即兑换</view> </view> </wx-send-coupon>
<!-- 签到弹窗 --> <tui-modal :show="exchangeTips" :custom="true" :fadein="true"> <view class="Put-box1"> <view class="text-align fs34 fs-bold"> 是否兑换此优惠券 </view> <view class="flex-display flex-sp-between"> <view class="btn" @click="exchangeTips = false"> 取消 </view> <view class="btn submit" @click="exchangeFn"> 确定 </view> </view> </view> </tui-modal> </view> </template>
<script> import tuiModal from "@/components/modal/modal"; import NET from "../../utils/request"; import API from "../../config/api"; import WxSendCoupon from "../../components/wx/wxSendCoupon"; export default { name: "exchangeDetail", components: { WxSendCoupon, tuiModal }, data() { return { productList: [], page: 1, pageSize: 10, loadingType: 0, currentCoupon: { stockNumber:0, credit:0, takeCount:0 }, exchangeTips: false } }, onReachBottom(){ if(this.loadingType == 1){ uni.stopPullDownRefresh() }else{ this.page = this.page + 1 this.getProductList() } }, onLoad(options) { if (options.data) { this.currentCoupon = JSON.parse(options.data) this.getProductList() } }, methods: { getProductList() { // uni.showLoading({
// title: '加载中...',
// })
NET.request(API.getCouponProducts, { activityId: this.currentCoupon.couponId, page: this.page, pageSize: this.pageSize }, 'GET').then(res => { // uni.hideLoading()
if (res.data.list.length === 0) { this.loadingType = 1 } else { this.productList = this.productList.concat(res.data.list) } }).catch(res => { // uni.hideLoading()
}) }, receiveCoupon() { this.exchangeTips = true }, exchangeFn() { let paramsData = { couponId: this.currentCoupon.couponId, source: 3 } NET.request(API.exchangeCoupon, paramsData, 'POST').then(res => { this.exchangeTips = false uni.showToast({ title: '兑换成功', icon:"success" }) setTimeout(() => { uni.navigateTo({ url: '/pages_category_page1/integral/index?tabActive=2' }) }, 1500) }).catch(res => { if(res.code !== '200'){ uni.showToast({ title:res.data.message, icon:"none" }) } }) }, // 商品详情
goodsDateils(shopId, productId, skuId){ uni.navigateTo({ url: '/pages_category_page1/goodsModule/goodsDetails?shopId='+shopId + '&productId='+productId +'&skuId='+skuId }) }, success(){ uni.showToast({ title: '兑换成功', icon:"success" }) setTimeout(() => { uni.navigateTo({ url: '/pages_category_page1/integral/index?tabActive=2' }) }, 1500) } } } </script>
<style lang="scss" scoped> page { background: #F8F8F8; } .exchangeDetailBox { padding-bottom: 200rpx; background: #F8F8F8; .topBg { background: url("http://36.138.125.206:8081/ceres-local-file/image/integral_bg.png") no-repeat left top; background-size: contain; height: 350rpx; padding: 40rpx 20rpx 0 20rpx; .exchangeCoupon { background: url("http://36.138.125.206:8081/ceres-local-file/static/images/exchagneCoupon.png") no-repeat left top; background-size: contain; height: 302rpx; border-radius: 16rpx; .couponInfo { color: #FDFED6; margin-left: 48rpx; font-weight: 400; } } } .cent { padding: 0 20rpx; .bg { background: #FFFFFF; padding: 30rpx; border-radius: 16rpx; } } .integralInfo { .integralLeft { .remaining { width: auto; height: 48rpx; line-height: 48rpx; padding: 0 15rpx; text-align: center; background: rgba(200, 55, 50, 0.16); border-radius: 24rpx 24rpx 24rpx 0; font-weight:300; } } } .conditionTit { border-bottom: 2rpx solid #F3F4F5; height: 92rpx; line-height: 92rpx; } .productItemBox { display: flex; flex-wrap: wrap; justify-content: flex-start; width: 100%; .productItem { height: 420rpx; flex: 1; margin: 0 20rpx 40rpx 0; width: calc((100% - 20rpx) / 2); min-width: calc((100% - 20rpx) / 2); max-width: calc((100% - 20rpx) / 2); &:nth-child(2n) { margin-right: 0; } } } .proCondition { .productItem { .productImg { width: 325rpx; height: 325rpx; image { width: 100%; height: 100%; } } .productTit { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .productPrice { margin-top: 15rpx; } } } .exchangeBtnBg { width: 750rpx; height: 164rpx; background: #FFFFFF; box-shadow: 0 -1rpx 0rpx rgba(197, 202, 207, 0.5); padding: 0 20rpx; position: fixed; left: 0; bottom: 0; .exchangeBtn { width: 100%; height: 100rpx; line-height: 100rpx; text-align: center; background: #333333; border-radius: 50rpx; color: #FFEBC4; } } .Put-box1 { .btn { text-align: center; margin-top: 40rpx; border: 1px solid #333333; height: 80upx; line-height: 80upx; width: 100%; color: #333333; }
.submit { background-color: #333333; color: #FFEBC4; margin-left: 20rpx; } } } </style>
|