From 9857f8cdadf9bbda695a689f42e0e8cecfefab3f Mon Sep 17 00:00:00 2001 From: Liuyi <candymxq888@outlook.com> Date: 星期四, 21 十一月 2024 17:08:07 +0800 Subject: [PATCH] 添加积分兑换 --- pages/pointsMall/pointsExchangeRecord/index.vue | 198 +++++++++++++++++++++++++++++++++++++----------- 1 files changed, 151 insertions(+), 47 deletions(-) diff --git a/pages/pointsMall/pointsExchangeRecord/index.vue b/pages/pointsMall/pointsExchangeRecord/index.vue index 58ca621..29d3eef 100644 --- a/pages/pointsMall/pointsExchangeRecord/index.vue +++ b/pages/pointsMall/pointsExchangeRecord/index.vue @@ -10,6 +10,42 @@ pointExchangeList.value = res.data.list }) } + //兑换码相关 + const popupCode = ref() + const codeValue = ref('') + const codeGoodsName = ref('') + //点击兑换 + function showConvertCode(redeemCode,goodsName){ + codeValue.value = redeemCode + popupCode.value.open() + codeGoodsName.value = goodsName + } + //弹窗改变事件 + let codeInterVal + async function popupChange(e){ + console.log('tanchuan',e) + if(e.show == true){ + console.log('打开弹窗') + codeInterVal = setInterval(async() =>{ + await searchPoints() + pointExchangeList.value.forEach((item) =>{ + if(item.redeemCode == codeValue.value){ + if(item.receiveStatus == 1){ + clearInterval(codeInterVal) + popupCode.value.close() + uni.showToast({ + title:'领取成功!' + }) + } + } + }) + },2000) + }else if(e.show == false){ + console.log('关闭弹窗') + clearInterval(codeInterVal) + await searchPoints() + } + } onMounted(async() =>{ await searchPoints() }) @@ -17,23 +53,38 @@ </script> <template> <view class="container"> - <point-navbar title='兑换记录'></point-navbar> + <point-navbar title='兑换订单'></point-navbar> <view class="content"> <view class="main" v-if="pointExchangeList.length > 0"> <block v-for="(item,index) in pointExchangeList"> <view class="item"> - <view class="item-left"> - <text class="item-methods">兑换商品:{{item.goodsName}}</text> - <view class="item-status"> - <text>领取状态:</text> - <text>{{item.receiveStatusView}}</text> + <view class="item-box"> + <view class="item-row1"> + <text>兑换商品:</text> + <text class="goods-name">{{item.goodsName}}</text> </view> - <text class="item-time">兑换时间:{{item.exchangeDate}}</text> - <text v-if="item.receiveStatus == 1" class="item-time">领取时间:{{item.receiveDate}}</text> - </view> - <view class="item-right"> - <text class="money">-{{item.integralAmount}}</text> - <image src="../../../static/images/pointMall/advert/money1.svg"></image> + <view class="item-row2"> + <view class="status"> + <text>领取状态:</text> + <text class="status-value">{{item.receiveStatusView}}</text> + </view> + <view class="advert-code" v-if="item.receiveStatus == 0" @click="showConvertCode(item.redeemCode,item.goodsName)"> + <text>出示兑换码</text> + </view> + </view> + <view class="item-row3"> + <view>积分消耗:</view> + <view class="points"> + <text class="points-value">-{{item.integralAmount}}</text> + <image class="points-img" src="../../../static/images/pointMall/advert/money1.svg"></image> + </view> + </view> + <view class="item-row4"> + <view class="time"> + <text class="time-value">兑换时间:{{item.exchangeDate}}</text> + <text v-if="item.receiveStatus == 1" class="time-value">领取时间:{{item.receiveDate}}</text> + </view> + </view> </view> </view> </block> @@ -43,6 +94,16 @@ <text>暂无记录</text> </view> </view> + <uni-popup ref="popupCode" @change="popupChange" type="center" background-color="#fff" border-radius="10px"> + <view class="convert-code"> + <text class="code-title">兑换码</text> + <view class="code-value"> + <!-- <l-qrcode :value="codeValue" size="260rpx" color="rgb(12, 15, 36)"></l-qrcode> --> + <text>{{codeValue}}</text> + </view> + <text>商品名称:{{codeGoodsName}}</text> + </view> + </uni-popup> </view> </template> @@ -72,46 +133,68 @@ height:260rpx; border-bottom:1rpx solid #D8D8D8; box-sizing:border-box; - padding-bottom:10rpx; + padding:20rpx 0 10rpx; margin-bottom:10rpx; - justify-content:space-between; - align-items:flex-end; - display: flex; - .item-left{ + .item-box{ + width:100%; height:100%; - display:flex; - flex-direction:column; - justify-content:flex-end; - align-items: flex-start; - font-weight:500; - font-size: 32rpx; - color: #59544e; - .item-methods{ - margin-bottom:20rpx; + display: flex; + flex-direction: column; + justify-content:space-around; + font-weight:500; + font-size: 32rpx; + color: #5f5b57; + .item-row1{ + width:100%; + .goods-name{ + color: #4b4845; + } } - .item-time{ - font-weight: 300; - font-size:26rpx; - color: #909090; + .item-row2{ + width:100%; + display: flex; + justify-content: space-between; + align-items: center; + .status-value{ + color: #e2ac21; + } + .advert-code{ + width: 200rpx; + height:55rpx; + background: linear-gradient(to right,#efa339,#fbc671); + border-radius:30rpx; + display: flex; + justify-content: center; + align-items: center; + color: #FFF; + letter-spacing:1rpx; + font-size: 30rpx; + } } - .item-status{ - margin-bottom:20rpx; + .item-row3{ + display: flex; + .points{ + display: flex; + align-items: center; + .points-img{ + width:40rpx; + height:40rpx; + margin-left:5rpx; + } + .points-value{ + color: #efab22; + } + } } - } - .item-right{ - height:100%; - display:flex; - justify-content:flex-end; - align-items:flex-end; - image{ - width:40rpx; - height:40rpx; - margin-left:5rpx; - } - .money{ - font-weight: 500; - font-size: 32rpx; - color: #efab22; + .item-row4{ + width:100%;; + .time{ + font-weight: 300; + font-size:26rpx; + color: #909090; + display: flex; + flex-direction: column; + } } } } @@ -134,5 +217,26 @@ } } } + .convert-code{ + width: 550rpx; + height: 550rpx; + display: flex; + flex-direction: column; + align-items: center; + justify-content:space-evenly; + padding:10rpx 0; + box-sizing: border-box; + .code-title{ + font-weight:600; + } + .code-value{ + padding: 30rpx; + border:1rpx solid #e2e2e2; + box-sizing: border-box; + border-radius:10rpx; + font-weight:600; + letter-spacing:1rpx; + } + } } </style> -- Gitblit v1.9.3