<template>
							 | 
						|
								  <view class="discount-container">
							 | 
						|
								    <!-- 顶部tab切换 -->
							 | 
						|
								    <uv-subsection 
							 | 
						|
								      :list="tabList" 
							 | 
						|
								      :current="currentTab" 
							 | 
						|
								      @change="onTabChange"
							 | 
						|
								      :activeColor="tabStyle.activeColor"
							 | 
						|
								      :inactiveColor="tabStyle.inactiveColor"
							 | 
						|
								      
							 | 
						|
								      :fontSize="tabStyle.fontSize"
							 | 
						|
								      :height="tabStyle.height"
							 | 
						|
								      custom-style="height: 80rpx;border-radius: 70rpx;position: sticky; left: 0; top: 0;right: 0;zIndex: 999" 
							 | 
						|
								      custom-item-style="border-radius: 60rpx;" 
							 | 
						|
								    ></uv-subsection>
							 | 
						|
								    
							 | 
						|
								    <!-- 优惠券列表 -->
							 | 
						|
								    <view class="coupon-list">
							 | 
						|
								      <view 
							 | 
						|
								        v-for="(coupon, index) in list" 
							 | 
						|
								        :key="index" 
							 | 
						|
								        class="coupon-item"
							 | 
						|
								        :class="{
							 | 
						|
								          'used-coupon': currentTab === 1,
							 | 
						|
								          'expired-coupon': currentTab === 2
							 | 
						|
								        }"
							 | 
						|
								      >
							 | 
						|
								        <!-- 左侧金额区域 -->
							 | 
						|
								        <view class="coupon-left">
							 | 
						|
								          <text class="coupon-symbol">¥</text>
							 | 
						|
								          <text class="coupon-amount">{{ coupon.money }}</text>
							 | 
						|
								          <!-- 状态盖章 -->
							 | 
						|
								          <image 
							 | 
						|
								            v-if="currentTab !== 0"
							 | 
						|
								            class="status-stamp"
							 | 
						|
								            :src="currentTab === 1 ? '/static/used-stamp.png' : '/static/expired-stamp.png'"
							 | 
						|
								            mode="aspectFit"
							 | 
						|
								          ></image>
							 | 
						|
								        </view>
							 | 
						|
								        
							 | 
						|
								        <!-- 右侧信息区域 -->
							 | 
						|
								        <view class="coupon-right">
							 | 
						|
								          <view class="coupon-title">{{ coupon.name }}</view>
							 | 
						|
								          <view class="coupon-expire">有效期至 {{ coupon.endTime }}</view>
							 | 
						|
								          
							 | 
						|
								          <!-- 使用按钮或状态 -->
							 | 
						|
								          <view class="coupon-action">
							 | 
						|
								            <uv-button 
							 | 
						|
								              v-if="currentTab === 0"
							 | 
						|
								              :customStyle="buttonStyle"
							 | 
						|
								              text="去使用"
							 | 
						|
								              @click="useCoupon(coupon)"
							 | 
						|
								            ></uv-button>
							 | 
						|
								            <view 
							 | 
						|
								              v-else 
							 | 
						|
								              class="coupon-status"
							 | 
						|
								              :class="{
							 | 
						|
								                'used-status': currentTab === 1,
							 | 
						|
								                'expired-status': currentTab === 2
							 | 
						|
								              }"
							 | 
						|
								            >
							 | 
						|
								              {{ currentTab === 1 ? '已使用' : '已过期' }}
							 | 
						|
								            </view>
							 | 
						|
								          </view>
							 | 
						|
								          
							 | 
						|
								          
							 | 
						|
								        </view>
							 | 
						|
								      </view>
							 | 
						|
								      
							 | 
						|
								      <uv-loading-icon text="加载中" textSize="30rpx" v-if="isLoading"></uv-loading-icon>
							 | 
						|
								      <!-- 空状态 -->
							 | 
						|
								      <uv-empty 
							 | 
						|
								        v-else-if="list === 0"
							 | 
						|
								        text="暂无优惠券"
							 | 
						|
								        :textColor="emptyStyle.textColor"
							 | 
						|
								        :textSize="emptyStyle.textSize"
							 | 
						|
								        :marginTop="emptyStyle.marginTop"
							 | 
						|
								      ></uv-empty>
							 | 
						|
								    </view>
							 | 
						|
								  </view>
							 | 
						|
								</template>
							 | 
						|
								
							 | 
						|
								<script>
							 | 
						|
								import ListMixins from '@/mixins/list'
							 | 
						|
								export default {
							 | 
						|
								  mixins: [ListMixins],
							 | 
						|
								  data() {
							 | 
						|
								    return {
							 | 
						|
								      mixinListApi: 'member.getCouponList',
							 | 
						|
								      currentTab: 0,
							 | 
						|
								      fromPage: '', // 来源页面标识
							 | 
						|
								      tabList: [
							 | 
						|
								        { name: '待使用' },
							 | 
						|
								        { name: '已使用' },
							 | 
						|
								        { name: '已过期' }
							 | 
						|
								      ],
							 | 
						|
								      
							 | 
						|
								      // tab样式配置
							 | 
						|
								      tabStyle: {
							 | 
						|
								        activeColor: '#06DADC',
							 | 
						|
								        inactiveColor: '#999',
							 | 
						|
								        bgColor: '#f8f8f8',
							 | 
						|
								        fontSize: '28rpx',
							 | 
						|
								        height: '80rpx'
							 | 
						|
								      },
							 | 
						|
								      
							 | 
						|
								      // 按钮样式配置
							 | 
						|
								      buttonStyle: {
							 | 
						|
								        backgroundColor: '#06DADC',
							 | 
						|
								        borderRadius: '99rpx',
							 | 
						|
								        width: '140rpx',
							 | 
						|
								        height: '60rpx',
							 | 
						|
								        fontSize: '30rpx',
							 | 
						|
								        color: '#fff'
							 | 
						|
								      },
							 | 
						|
								      
							 | 
						|
								      // 空状态样式配置
							 | 
						|
								      emptyStyle: {
							 | 
						|
								        textColor: '#999',
							 | 
						|
								        textSize: '28rpx',
							 | 
						|
								        marginTop: '200rpx'
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								  
							 | 
						|
								  onLoad(options) {
							 | 
						|
								    // 接收来源页面参数
							 | 
						|
								    if (options.from) {
							 | 
						|
								      this.fromPage = options.from
							 | 
						|
								    }
							 | 
						|
								  },
							 | 
						|
								  
							 | 
						|
								  computed: {
							 | 
						|
								
							 | 
						|
								  },
							 | 
						|
								  
							 | 
						|
								  methods: {
							 | 
						|
								    mixinSetParams() {
							 | 
						|
								      return {
							 | 
						|
								        status: String(this.currentTab)
							 | 
						|
								      }
							 | 
						|
								    },
							 | 
						|
								    onTabChange(index) {
							 | 
						|
								      this.currentTab = index
							 | 
						|
								      this.list = []
							 | 
						|
								      this.initPage()
							 | 
						|
								      this.getList(true)
							 | 
						|
								    },
							 | 
						|
								    
							 | 
						|
								    useCoupon(coupon) {
							 | 
						|
								      // 如果是从充值页面跳转过来的,选择优惠券后返回
							 | 
						|
								      if (this.fromPage === 'recharge') {
							 | 
						|
								        console.log('被选中了');
							 | 
						|
								        // 通过事件总线传递选中的优惠券数据
							 | 
						|
								        uni.$emit('couponSelected', {
							 | 
						|
								          id: coupon.id,
							 | 
						|
								          name: coupon.name,
							 | 
						|
								          money: coupon.money,
							 | 
						|
								          endTime: coupon.endTime
							 | 
						|
								        })
							 | 
						|
								        
							 | 
						|
								        uni.navigateBack()
							 | 
						|
								      } else {
							 | 
						|
								        // 其他情况的处理逻辑
							 | 
						|
								        uni.showToast({
							 | 
						|
								          title: '跳转到使用页面',
							 | 
						|
								          icon: 'none'
							 | 
						|
								        })
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								</script>
							 | 
						|
								
							 | 
						|
								<style lang="scss" scoped>
							 | 
						|
								.discount-container {
							 | 
						|
								  min-height: 100vh;
							 | 
						|
								  background-color: #f8f8f8;
							 | 
						|
								  padding-bottom: 50rpx;
							 | 
						|
								  .coupon-list {
							 | 
						|
								    padding: 40rpx 30rpx;
							 | 
						|
								    
							 | 
						|
								    .coupon-item {
							 | 
						|
								      display: flex;
							 | 
						|
								      background-color: #fff;
							 | 
						|
								      border-radius: 24rpx;
							 | 
						|
								      margin-bottom: 24rpx;
							 | 
						|
								      overflow: hidden;
							 | 
						|
								      position: relative;
							 | 
						|
								      padding: 8rpx;
							 | 
						|
								      // box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
							 | 
						|
								      
							 | 
						|
								      &.used-coupon,
							 | 
						|
								      &.expired-coupon {
							 | 
						|
								        .coupon-left {
							 | 
						|
								          background-color: #E3E3E3;
							 | 
						|
								          
							 | 
						|
								          .coupon-symbol,
							 | 
						|
								          .coupon-amount {
							 | 
						|
								            color: #FBFBFB;
							 | 
						|
								          }
							 | 
						|
								        }
							 | 
						|
								        
							 | 
						|
								
							 | 
						|
								      }
							 | 
						|
								      
							 | 
						|
								      .coupon-left {
							 | 
						|
								        width: 180rpx;
							 | 
						|
								        background-color: #FFF2F2;
							 | 
						|
								        display: flex;
							 | 
						|
								        // flex-direction: column;
							 | 
						|
								        align-items: center;
							 | 
						|
								        justify-content: center;
							 | 
						|
								        border-radius: 16rpx;
							 | 
						|
								        position: relative;
							 | 
						|
								        .coupon-symbol {
							 | 
						|
								          font-size: 24rpx;
							 | 
						|
								          color: #FF4800;
							 | 
						|
								          font-weight: bold;
							 | 
						|
								          margin-bottom: 10rpx;
							 | 
						|
								        }
							 | 
						|
								        
							 | 
						|
								        .coupon-amount {
							 | 
						|
								          font-size: 48rpx;
							 | 
						|
								          color: #FF4800;
							 | 
						|
								          font-weight: 500;
							 | 
						|
								          line-height: 1.4;
							 | 
						|
								        }
							 | 
						|
								
							 | 
						|
								        .status-stamp {
							 | 
						|
								          position: absolute;
							 | 
						|
								          bottom: 0rpx;
							 | 
						|
								          right: 0rpx;
							 | 
						|
								          width: 100rpx;
							 | 
						|
								          height: 100rpx;
							 | 
						|
								          
							 | 
						|
								          // opacity: 0.8;
							 | 
						|
								        }
							 | 
						|
								      }
							 | 
						|
								      
							 | 
						|
								      .coupon-right {
							 | 
						|
								        flex: 1;
							 | 
						|
								        margin-left: 20rpx;
							 | 
						|
								        padding: 40rpx 30rpx 20rpx;
							 | 
						|
								        position: relative;
							 | 
						|
								        width: 0px;
							 | 
						|
								
							 | 
						|
								        border-left: 2rpx dashed #DADADA;
							 | 
						|
								        .coupon-title {
							 | 
						|
								          font-size: 32rpx;
							 | 
						|
								          color: #181818;
							 | 
						|
								          font-weight: bold;
							 | 
						|
								          margin-bottom: 16rpx;
							 | 
						|
								        }
							 | 
						|
								        
							 | 
						|
								        .coupon-expire {
							 | 
						|
								          font-size: 28rpx;
							 | 
						|
								          color: #9B9B9B;
							 | 
						|
								          margin-bottom: 16rpx;
							 | 
						|
								        }
							 | 
						|
								        
							 | 
						|
								        .coupon-action {
							 | 
						|
								          display: flex;
							 | 
						|
								          justify-content: flex-start;
							 | 
						|
								          
							 | 
						|
								          .coupon-status {
							 | 
						|
								            padding: 10rpx 30rpx;
							 | 
						|
								            border-radius: 40rpx;
							 | 
						|
								            font-size: 30rpx;
							 | 
						|
								            text-align: center;
							 | 
						|
								            
							 | 
						|
								            &.used-status {
							 | 
						|
								              background-color: #E3E3E3;
							 | 
						|
								              color: #fff;
							 | 
						|
								            }
							 | 
						|
								            
							 | 
						|
								            &.expired-status {
							 | 
						|
								              background-color: #E3E3E3;
							 | 
						|
								              color: #fff;
							 | 
						|
								            }
							 | 
						|
								          }
							 | 
						|
								        }
							 | 
						|
								        
							 | 
						|
								
							 | 
						|
								      }
							 | 
						|
								    }
							 | 
						|
								  }
							 | 
						|
								}
							 | 
						|
								</style>
							 |