陶杰
2024-10-16 ef240131386f3f37cd3d0b232b4d237fb73d1132
sub_pages/customer/coupon/good-all.vue
@@ -14,19 +14,22 @@
            <view class="point-record m-r-a">
               <view class="text-center title">我的积分</view>
               <view class="flex" @click="goto('/sub_pages/customer/coupon/point-history',true)">
                  <image src="../../../static/images/customer/coupon/icon-point.png" class="point-icon">
                  <image src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/82/82d4e36b7d124dab843427c36454da93icon-point.png" class="point-icon">
                  </image>
                  {{currentInfo.currentPoint || 0}}
                  {{self_point}}
                  <uni-icons class="icon" type="right" size="32"></uni-icons>
               </view>
            </view>
            <view class="m-l-a m-r-0 rule" @click="goto('/pages/help/content?id=积分规则',false)">
               <view class="flex w-fit m-l-a m-r-15">
                  <view class="m-r-10">规则</view>
                  <image src="../../../static/images/customer/coupon/icon-rule.png" class="rule-icon">
                  <image src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/da/da4bfa0af86345a9ab3ce383b7fac830icon-rule.png" class="rule-icon">
                  </image>
               </view>
               <image class="good-point-icon" src="../../../static/images/customer/coupon/good-point-icon.png"
               <!-- src="../../../static/images/customer/coupon/good-point-icon.png" -->
               <image class="good-point-icon"
               src="https://hmy-flower.oss-cn-shanghai.aliyuncs.com/db/db114326a52e4f6d92f1d6769748e8e6yHXbwXV7T1A38e325506998c85122d1e6a0a1328f7b0.png"
                  mode="scaleToFill" />
            </view>
         </view>
@@ -48,15 +51,19 @@
         <view class="good-container p15 flex">
            <view v-for="(item,index) of list" :key="index" class="good-item" @click="toDetail(item)">
               <image class="cover" :src="item.cover" :lazy-load="true" mode="scaleToFill">
               <image class="cover" :src="item.cover" :lazy-load="true" mode="scaleToFill"
                  :class="[item.stock===0?'component-stock-zero':'']">
               </image>
               <view class="title">
                  {{item.name}}
               </view>
               <view class="flex score-info">
                  <view><span class="score">{{item.point||'-'}}</span>积分</view>
                  <view class="button m-l-a m-r-0" @click.stop="exchange('good',item)">兑换</view>
                  <view>
                     <view><span class="score">{{item.point||'-'}}</span> 积分</view>
                     <view class="desc-gray">库存:<span class="">{{item.stock||'0'}}</span></view>
                  </view>
                  <view class="button m-l-a m-r-0 m-t-20" @click.stop="exchange('good',item)">兑换</view>
               </view>
            </view>
         </view>
@@ -78,14 +85,18 @@
                     {{item.couponName||'-'}}
                  </view>
                  <view class="time">
                     领取后{{item.usageTimeNum||''}}{{item.usageTimeTypeName||''}}有效
                     {{item.getStartDate||'领取后'}}{{item.getEndDate&&(' 至 ' + item.getEndDate )||''}}有效
                  </view>
                  <view class="flex">
                     <view class="t-red">
                        {{item.point||'0'}}积分
                     </view>
                     <view class="button m-l-a m-r-0" @click="exchange('coupon',item)">
                        兑换
                     <view class="m-l-10 desc-gray">
                        库存:{{item.couponAmount||'0'}}
                     </view>
                     <view class="button m-l-a m-r-15" :class="[item.couponAmount===0?'over':'']"
                        @click="exchange('coupon',item)">
                        {{item.couponAmount===0?'已售磬':'兑换'}}
                     </view>
                  </view>
               </view>
@@ -99,6 +110,20 @@
<script>
   export default {
      computed: {
         self_point() {
            if (this.currentInfo.currentPoint) {
               if (this.currentInfo.currentPoint >= 10000) {
                  return (this.currentInfo.currentPoint / 10000 + '万')
               } else {
                  return this.currentInfo.currentPoint
               }
            }
            return 0
         }
      },
      methods: {
         changeTab(flg) {
            this.flg = '' + flg
@@ -107,6 +132,10 @@
            this.refreshList()
         },
         async exchange(type, item) {
            if (item.stock === 0 || item.couponAmount === 0) {
               this.$message.showToast('库存为0,无法兑换')
               return
            }
            var api = ''
            if (type == 'good') {
               api = '/api/customer/point/goods/exchange'
@@ -131,7 +160,14 @@
               //刷新积分               
               this.$store.dispatch('getCurrentInfo');
               await this.$message.showToast('兑换成功')
               if (type == 'good') {
                  item.stock -= 1
                  this.$forceUpdate()
               }
               if (type == 'coupon') {
                  item.couponAmount -= 1
                  this.$forceUpdate()
               }
            }
         },
         toDetail(item) {
@@ -158,7 +194,8 @@
               },
               {
                  name: '优惠券',
                  api: '/api/v2/coupon/app/activy/list',
                  // api: '/api/v2/coupon/app/activy/list',
                  api: '/api/v2/coupon/point/active/list',
               },
            ],
@@ -193,11 +230,12 @@
         this.listApi = '/api/customer/point/goods/list'
         this.getList()
      },
      onPullDownRefresh() {
      async onPullDownRefresh() {
         //刷新积分和刷新商品
         this.$store.dispatch('getCurrentInfo');
         // this.list = []
         this.refreshList()
         await this.refreshList()
         uni.stopPullDownRefresh()
      },
      onReachBottom() {
@@ -207,6 +245,8 @@
</script>
<style lang="scss" scoped>
   @import './coupon.scss';
   .good-list-container {
      .good-container {
         .good-item {
@@ -257,6 +297,11 @@
               text-align: center;
               line-height: 46rpx;
            }
            .button.over {
               color: #747374;
               border: 2rpx solid #747374;
            }
         }
         .good-item:nth-child(2n+1) {