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