| 
						 | 
						- <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>
 
 
  |