<template>
  <view class="promotion-page">
    <!-- 顶部渐变导航栏 -->
    <view class="nav-bar" :style="{height: navBarTotalHeight + 'px', paddingTop: statusBarHeight + 'px'}">
      <view class="nav-bar-inner">
        <view class="back-icon" @tap="navigateBack">
          <uni-icons type="left" size="22" color="#222" />
        </view>
        <view class="nav-bar-title">爱简收·推客联盟</view>
        <view class="nav-bar-right">
          <uni-icons type="more-filled" size="22" color="#222" />
        </view>
      </view>
    </view>
    <!-- 打钩标签区 -->
    <view class="feature-tags" :style="{marginTop: navBarTotalHeight+statusBarHeight + 'px'}">
      <view class="tag" v-for="(t, i) in featureTags" :key="i">
        <text class="check">✓</text>
        <text class="text">{{t}}</text>
      </view>
    </view>
    <!-- 主内容区（卡片悬浮覆盖打钩区） -->
    <view class="main-content">
      <!-- 用户卡片 -->
      <view class="user-card">
        <view class="user-info-row">
          <view class="avatar-box">
            <view class="avatar-frame">
              <image class="avatar-img" :src="userInfo.avatar" mode="aspectFill" />
              <view class="avatar-badge" :class="userTypeBadgeClass">{{ userTypeText }}</view>
            </view>
          </view>
          <view class="user-meta">
            <view class="nickname">{{userInfo.name}}</view>
            <view class="userid">ID: {{userInfo.intentioCode}}</view>
          </view>
          <view class="user-count">
            推广人数
            <view class="user-count-value">{{ promotionCount }}</view>
          </view>
        </view>
        <view class="user-stats-row">
          <view class="stat-block">
            <view class="stat-label">可提现佣金(元)</view>
            <view class="stat-value main">{{userInfo.money || 0}}</view>
            <button class="withdraw-btn" @click="goWithdraw">提现</button>
          </view>
          <view class="stat-divider"></view>
          <view class="stat-block">
            <view class="stat-label">累计提现(元)</view>
            <view class="stat-value">{{userInfo.integerPrice || 0}}</view>
            <button class="record-btn" @click="goWithdrawRecord">提现记录</button>
          </view>
        </view>
        <view class="bottom-menu-row">
          <view class="menu-item" @tap="goProfitDetail">
            <view class="menu-icon red">
              <uni-icons type="wallet" size="32" color="#fff" />
            </view>
            <text class="menu-text">收益明细</text>
          </view>
          <view class="menu-item" @tap="goTeam">
            <view class="menu-icon blue">
              <uni-icons type="person" size="32" color="#fff" />
            </view>
            <text class="menu-text">我的团队</text>
          </view>
        </view>
      </view>
      <!-- 推广排行榜 -->
      <view class="rank-section">
        <view class="rank-title">推广排行榜</view>
        <view class="rank-list">
          <view class="rank-item" v-for="(item, idx) in rankList.slice(0, 5)" :key="idx">
            <view class="rank-icon">
              <image v-if="idx<3" :src="getRankIcon(idx+1)" class="crown" mode="aspectFit" />
              <image v-else :src="getRankIcon(idx+1)" class="num-icon" mode="aspectFit" />
            </view>
            <image class="rank-avatar" :src="item.headImage" mode="aspectFill" />
            <text class="rank-phone">{{item.nickName}}</text>
            <text class="rank-amount">¥{{item.price}}</text>
          </view>
        </view>
      </view>
      <!-- 权益说明表格 -->
      <view class="rights-section">
        <view class="rights-title">权益说明</view>
        <image :src="indexLvxingUrl" mode="widthFix" class="rights-image" />
      </view>
      <!-- 联系客服二维码 -->
      <view class="qrcode-section">
        <view class="qrcode-title">联系客服</view>
        <image class="qrcode-img" :src="qrcodeUrl" mode="aspectFit" @click="openQrcodeModal" />
        <text class="qrcode-modal-benefit">添加客服可以获取更多推广福利</text>
      </view>
    </view>
    <!-- 底部按钮区 -->
    <view class="bottom-btns">
      <button class="btn gray" @tap="goQrcode">我的推广码</button>
      <!-- <button class="btn green" @tap="goUpgrade" v-if="status== 3">立即升级推广官</button> -->
      <!-- <button class="btn gray"  v-if="status==0" @tap="showProgressModal = true">查看申请进度</button> -->
      <!-- 以上按钮已注释，仅保留“我的二维码”按钮 -->
    </view>
    <!-- 申请进度弹窗 -->
    <view v-if="showProgressModal" class="progress-modal-mask">
      <view class="progress-modal-box">
        <view class="progress-modal-title">申请进度</view>
        <!-- 步骤条 -->
        <view class="progress-steps">
          <view :class="['step', promotionStatus >= 0 ? 'active' : '']">
            <text :class="{'active': promotionStatus >= 0}">1</text>
            <span>已提交</span>
          </view>
          <view class="step-line"></view>
          <view :class="['step', promotionStatus == 0 ? 'active' : (promotionStatus == 1 ? 'active' : (promotionStatus == 2 ? 'active' : ''))]">
            <text :class="{'active': promotionStatus == 0 || promotionStatus == 1 || promotionStatus == 2}">2</text>
            <span v-if="promotionStatus == 0">审核中</span>
            <span v-else-if="promotionStatus == 1">审核通过</span>
            <span v-else-if="promotionStatus == 2">已驳回</span>
          </view>
        </view>
        <!-- 底部按钮区 -->
        <view class="progress-modal-list">
          <view class="progress-modal-item" @tap="goToFaq">
            <text>在线客服</text>
            <uni-icons type="right" size="22" color="#bbb" />
          </view>
          <view class="progress-modal-item" @tap="goToFaq">
            <text>客服电话</text>
            <uni-icons type="right" size="22" color="#bbb" />
          </view>
        </view>
        <button class="progress-modal-btn" @tap="showProgressModal = false">我知道了</button>
      </view>
    </view>
    
    <!-- 客服二维码放大弹窗 -->
    <view v-if="showQrcodeModal" class="qrcode-modal-mask" @click="closeQrcodeModal">
      <view class="qrcode-modal-content" @click.stop>
        <view class="qrcode-modal-header">
          <text class="qrcode-modal-title">联系客服</text>
          <view class="qrcode-modal-close" @click="closeQrcodeModal">
            <uni-icons type="close" size="24" color="#999"></uni-icons>
          </view>
        </view>
        <view class="qrcode-modal-body">
          <image 
            v-if="qrcodeUrl" 
            :src="qrcodeUrl" 
            mode="aspectFit" 
            class="qrcode-modal-img"
            :show-menu-by-longpress="true"
            @longpress="onQrcodeLongPress"
          />
          <view v-else class="qrcode-placeholder">
            <text>二维码加载中...</text>
          </view>
          <text class="qrcode-modal-tip">长按识别二维码添加客服微信</text>
          <text class="qrcode-modal-benefit">添加客服可以获取更多推广福利</text>
        </view>
      </view>
    </view>
  </view>
</template>

<script>
import pullRefreshMixin from '@/pages/mixins/pullRefreshMixin.js'

export default {
  mixins: [pullRefreshMixin],
  data() {
    return {
      statusBarHeight: 0,
      navBarHeight: 44, // px
      navBarTotalHeight: 44, // px
      featureTags: ['收益高', '品类全', '到账快', '城市多'],
      userInfo: {
        avatar: '',
        name: '',
        id: '',
        type: '',
        balance: '',
        totalWithdraw: '',
      },
      promotionCount: 0, // 新增推广人数
      tabActive: 0,
      rankList: [
      ],
      status: 0,
      showProgressModal: false,
      showQrcodeModal: false,
      promotionStatus: null, // 0审核中 1已通过 2已驳回
      rejectReason: '',      // 驳回原因
    }
  },
  computed: {
    qrcodeUrl() {
			console.log(getApp().globalData.configData,'getApp().globalData.configData')
      const item =  getApp().globalData.configData.find(i => i.keyName === 'kefu_code')
      return item ? item.keyContent : ''
    },
    indexLvxingUrl() {
			console.log(getApp().globalData.configData,'getApp().globalData.configData')
      const item =  getApp().globalData.configData.find(i => i.keyName === 'index_lvxing')
      return item ? item.keyContent : ''
    },
    userTypeText() {
      return this.userInfo.isTuiTypeTitle || '推广官'
    },
    userTypeBadgeClass() {
      switch (this.userInfo.isTuiTypeTitle) {
        case '推广达人':
          return 'avatar-badge-expert'
        case '推广大使':
          return 'avatar-badge-ambassador'
        default:
          return 'avatar-badge-user'
      }
    },
  },
  onLoad() {
    const sysInfo = uni.getSystemInfoSync()
    this.statusBarHeight = sysInfo.statusBarHeight
    this.navBarHeight = 44
    this.navBarTotalHeight = this.statusBarHeight + this.navBarHeight
    this.getUserInfoByToken()
    this.getRankList()
    this.getMyPromotionInfo()
    this.getPromotionCount() // 新增
  },
  onShow(){
    this.getMyPromotionInfo()
    
  },
  onPullDownRefresh() {
    this.getUserInfoByToken()
    uni.stopPullDownRefresh()
  },
  methods: {
    async onRefresh() {
      // 模拟刷新数据
      await new Promise(resolve => setTimeout(resolve, 1000))
      uni.stopPullRefresh()
    },
    navigateBack() {
      uni.navigateBack()
    },
    getRankIcon(idx) {
      return `/static/tui/${idx}.png`
    },
    goQrcode() {
      uni.navigateTo({ url: '/pages/subcomponent/promo-qrcode' })
    },
    goUpgrade() {
      uni.navigateTo({ url: '/pages/subcomponent/upgrad' })
    },
    getUserInfoByToken() {
      this.$api('getUserByToken', {}, (res) => {
        if (res && res.success && res.result) {
          this.userInfo.avatar = res.result.headImage || ''
          this.userInfo.name = res.result.nickName || ''
          this.userInfo.id = res.result.id || ''
          this.userInfo.intentioCode = res.result.intentioCode || ''
          this.userInfo.money = res.result.money || ''
          this.userInfo.integerPrice = res.result.integerPrice || ''
          this.userInfo.isTuiTypeTitle = res.result.isTuiTypeTitle ||''
          // 你可以根据实际接口补充type、balance、totalWithdraw等字段
        }
      })
    },
    goWithdrawRecord() {
      uni.navigateTo({ url: '/pages/subcomponent/promotion-withdraw-record' })
    },
    goWithdraw() {
      uni.navigateTo({ url: '/pages/subcomponent/withdraw?fromPromotion=true' })
    },
    goProfitDetail() {
      uni.navigateTo({ url: '/pages/subcomponent/promotion-profit-detail' })
    },
    goTeam() {
      uni.navigateTo({ url: '/pages/subcomponent/promotion-team' })
    },
    getRankList(){
      this.$api('getRankList', {}, (res) => {
        if (res && res.success && res.result) {
          this.rankList = res.result.records || []
        }
      })
    },
    getMyPromotionInfo(){
      this.$api('getMyPromotionInfo', {}, (res) => {
        if (res && res.success && res.result) {
          this.status = res.result.status
          this.promotionStatus = res.result.status
          this.rejectReason = res.result.rejectReason || ''
          console.log(this.status,'this.status')
        }else{
          this.status = 3
          this.promotionStatus = 3
          console.log(this.status,'this.status')
        }
      })
    },
    getPromotionCount() {
      this.$api && this.$api('getPromotionCount', {}, res => {
        if (res && res.code === 200 && res.result && typeof res.result.result === 'number') {
          this.promotionCount = res.result.result
        } else {
          this.promotionCount = 0
        }
      })
    },
    goToFaq() {
      uni.navigateTo({ url: '/pages/subcomponent/admin_faq' })
    },
    
    // 显示客服二维码弹窗
    openQrcodeModal() {
      this.showQrcodeModal = true;
    },
    
    // 关闭二维码弹窗
    closeQrcodeModal() {
      this.showQrcodeModal = false;
    },
    
    // 处理二维码长按事件
    onQrcodeLongPress() {
      console.log('长按二维码');
      // 在微信小程序中，show-menu-by-longpress="true" 会自动处理长按识别
      // 这里可以添加一些反馈提示
      uni.showToast({
        title: '长按识别二维码',
        icon: 'none',
        duration: 1500
      });
    }
  }
}
</script>

<style lang="scss" scoped>
.promotion-page {
  min-height: 100vh;
  background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  padding-bottom: calc(env(safe-area-inset-bottom) + 120rpx);
}

.nav-bar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 1000;
  width: 100vw;
  background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.03);
  .nav-bar-inner {
    display: flex;
    align-items: center;
    height: 44px;
    width: 100vw;
    position: relative;
  }
  .back-icon {
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    left: 0;
    top: 0;
  }
  .nav-bar-title {
    flex: 1;
    text-align: center;
    font-size: 36rpx;
    font-weight: bold;
    color: #222;
    letter-spacing: 2rpx;
    line-height: 44px;
  }
  .nav-bar-right {
    width: 44px;
    height: 44px;
    position: absolute;
    right: 0;
    top: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }
}

.feature-tags {
  // background: linear-gradient(to right, #b2f08d 0%, #39e9d2 100%);
  border-radius: 32rpx;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24rpx;
  height: 80rpx;
  box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  .tag {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    .check {
      width: 36rpx;
      height: 36rpx;
      background: #fff;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 28rpx;
      color: #13ac47;
      font-weight: bold;
      margin-right: 10rpx;
      box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
    }
    .text {
      color: #fff;
      font-size: 28rpx;
      font-weight: bold;
    }
  }
}

.main-content {
  margin-top: 20rpx;
  padding-top: 88rpx;
  background: linear-gradient(180deg, #eaffe6 0%, #fff 30%);
  min-height: 100vh;
  width: 100vw;
  box-sizing: border-box;
  position: relative;
  z-index: 11;
  border-radius: 40rpx 40rpx 0 0;
  overflow: hidden;
}

.user-card {
  margin: 0 32rpx;
  background: linear-gradient(to bottom, #f6fff2 0%, #fff 100%);
  border-radius: 32rpx;
  box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.12);
  padding: 48rpx 36rpx 36rpx 36rpx;
  border: none;
  position: relative;
  top: -40rpx;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  .user-info-row {
    display: flex;
    align-items: center;
    padding-bottom: 0;
    margin-bottom: 32rpx;
    // background-color: #fff;
    .avatar-box {
      margin-right: 24rpx;
      display: flex;
      flex-direction: column;
      align-items: center;
      .avatar-frame {
        width: 104rpx;
        height: 104rpx;
        border-radius: 10rpx;
        overflow: hidden;
        position: relative;
        background: #f2f2f2;
        box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.10);
        .avatar-img {
          width: 104rpx;
          height: 80rpx;
          object-fit: cover;
          display: block;
        }
        .avatar-badge {
          position: absolute;
          left: 0;
          bottom: 0;
          width: 100%;
          height: 32rpx;
          line-height: 32rpx;
          background: rgba(238, 238, 238, 0.95);
          color: #999;
          font-size: 24rpx;
          text-align: center;
          border-bottom-left-radius: 10rpx;
          border-bottom-right-radius: 10rpx;
          font-weight: 400;
          letter-spacing: 2rpx;
          z-index: 2;
        }
        .avatar-badge-user {
          background: rgba(238, 238, 238, 0.95);
          color: #999;
        }
        .avatar-badge-expert {
          background: linear-gradient(90deg, #ff8917, #ffd01e);
          color: #fff;
          font-weight: 600;
        }
        .avatar-badge-ambassador {
          background: linear-gradient(90deg, #b2f08d, #39e9d2);
          color: #fff;
          font-weight: 600;
        }
      }
    }
    .user-meta {
      flex: 1;
      display: flex;
      flex-direction: column;
      justify-content: center;
      .nickname {
        font-size: 32rpx;
        font-weight: bold;
        color: #222;
        margin-bottom: 6rpx;
      }
      .userid {
        font-size: 24rpx;
        color: #bbb;
      }
    }
    .user-count {
      display: flex;
      flex-direction: column;
      align-items: center;
      font-size: 28rpx;
      color: #222;
      font-weight: bold;
      .user-count-value {
        font-size: 36rpx;
        color: #13ac47;
        margin-top: 4rpx;
        font-weight: bold;
      }
    }
  }
  .user-stats-row {
    display: flex;
    align-items: stretch;
    justify-content: center;
    background: #f2fff6;
    border-radius: 24rpx;
    margin: 0 0 8rpx 0;
    padding: 32rpx 0;
    box-sizing: border-box;
    .stat-block {
      flex: 1;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      padding: 0 24rpx;
      .stat-label {
        font-size: 24rpx;
        color: #bbb;
        margin-bottom: 12rpx;
        text-align: center;
      }
      .stat-value {
        font-size: 40rpx;
        color: #222;
        font-weight: bold;
        margin-bottom: 18rpx;
        &.main {
          color: #13ac47;
          font-size: 48rpx;
        }
      }
      .withdraw-btn, .record-btn {
        width: 180rpx;
        height: 56rpx;
        border-radius: 28rpx;
        font-size: 26rpx;
        font-weight: bold;
        margin-top: 0;
        display: flex;
        align-items: center;
        justify-content: center;
        text-align: center;
        box-sizing: border-box;
      }
      .withdraw-btn {
        background: linear-gradient(90deg, #b2f08d, #39e9d2);
        color: #fff;
        border: none;
      }
      .record-btn {
        background: #fff;
        color: #13ac47;
        border: 2rpx solid #13ac47;
        &:active, &:focus {
          opacity: 0.8;
        }
      }
    }
    .stat-divider {
      width: 2rpx;
      height: 72rpx;
      background: #e0e0e0;
      margin: 0 16rpx;
      border-radius: 2rpx;
      align-self: center;
    }
  }
  .bottom-menu-row {
    display: flex;
    justify-content: center;
    align-items: center;
    margin: 40rpx 0 0 0;
    .menu-item {
      display: flex;
      align-items: center;
      margin: 0 40rpx;
      .menu-icon {
        width: 56rpx;
        height: 56rpx;
        border-radius: 50%;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-right: 12rpx;
        &.red {
          background: #ff7e6a;
        }
        &.blue {
          background: #7eb6ff;
        }
      }
      .menu-text {
        font-size: 28rpx;
        color: #222;
        font-weight: 500;
      }
    }
  }
}

.rank-section {
  margin: 32rpx 32rpx 0 32rpx;
  .rank-title {
    font-size: 30rpx;
    color: #222;
    font-weight: bold;
    text-align: center;
    margin-bottom: 24rpx;
  }
  .rank-list {
    background: #fff;
    border-radius: 24rpx;
    box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
    overflow: hidden;
    .rank-item {
      display: flex;
      align-items: center;
      padding: 0 44rpx;
      height: 104rpx;
      border-bottom: 1rpx solid #f3f3f3;
      &:last-child {
        border-bottom: none;
      }
      .rank-icon {
        width: 44rpx;
        display: flex;
        align-items: center;
        justify-content: center;
        .crown, .num-icon {
          width: 36rpx;
          height: 36rpx;
        }
      }
      .rank-avatar {
        width: 48rpx;
        height: 48rpx;
        border-radius: 50%;
        margin: 0 18rpx 0 10rpx;
        background: #f5f5f5;
      }
      .rank-phone {
        flex: 1;
        font-size: 28rpx;
        color: #222;
        font-weight: bold;
      }
      .rank-amount {
        font-size: 30rpx;
        color: #b98c4a;
        font-weight: bold;
        min-width: 120rpx;
        text-align: right;
      }
    }
  }
}

.rights-section {
  margin: 40rpx 32rpx 0 32rpx;
  .rights-title {
    font-size: 30rpx;
    color: #222;
    font-weight: bold;
    text-align: center;
    margin-bottom: 24rpx;
  }
  .rights-image {
    width: 100%;
    height: auto;
  }
}

.qrcode-section {
  margin: 48rpx 32rpx 0 32rpx;
  background: #fff;
  border-radius: 32rpx;
  box-shadow: 0 4rpx 24rpx rgba(60, 167, 250, 0.08);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 32rpx 0 40rpx 0;
  .qrcode-title {
    font-size: 28rpx;
    color: #222;
    font-weight: bold;
    margin-bottom: 24rpx;
  }
  .qrcode-img {
    width: 220rpx;
    height: 220rpx;
    background: #fff;
    border-radius: 24rpx;
    box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
    cursor: pointer;
    transition: transform 0.2s ease;
    
    &:active {
      transform: scale(0.95);
    }
  }
}

.bottom-btns {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  justify-content: space-between;
  padding: 24rpx 32rpx calc(env(safe-area-inset-bottom) + 24rpx) 32rpx;
  background: #fff;
  z-index: 100;
  .btn {
    flex: 1;
    height: 88rpx;
    border-radius: 44rpx;
    font-size: 32rpx;
    font-weight: bold;
    margin: 0 12rpx;
    border: none;
    background: linear-gradient(90deg, #b2f08d, #39e9d2);
    display: flex;
  align-items: center;
  justify-content: center;
    &.gray {
      background: linear-gradient(90deg, #b2f08d, #39e9d2);
      color: #fff;
    }
    &.green {
      background: linear-gradient(90deg, #42dfc2, #9be48f);
      color: #fff;
    }
  }
}

.bottom-menu-row {
  display: flex;
  justify-content: center;
  align-items: center;
  margin: 40rpx 0 0 0;
  .menu-item {
    display: flex;
    align-items: center;
    margin: 0 40rpx;
    .menu-icon {
      width: 56rpx;
      height: 56rpx;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-right: 12rpx;
      &.red {
        background: #ff7e6a;
      }
      &.blue {
        background: #7eb6ff;
      }
    }
    .menu-text {
      font-size: 28rpx;
      color: #222;
      font-weight: 500;
    }
  }
}

.progress-modal-mask {
  position: fixed;
  left: 0; right: 0; top: 0; bottom: 0;
  background: rgba(0,0,0,0.25);
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
}
.progress-modal-box {
  width: 80vw;
  max-width: 420px;
  background: linear-gradient(180deg, #f3fff2 0%, #eafff6 100%);
  border-radius: 32rpx;
  box-shadow: 0 8rpx 32rpx rgba(60, 167, 250, 0.10);
  padding: 56rpx 0 32rpx 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.progress-modal-title {
  font-size: 34rpx;
  color: #222;
  font-weight: bold;
  text-align: center;
  margin-bottom: 48rpx;
  white-space: pre-line;
}
.progress-steps {
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 32rpx 0 24rpx 0;
  .step {
    display: flex;
    flex-direction: column;
    align-items: center;
    color: #bbb;
    &.active {
      color: #13ac47;
      font-weight: bold;
    }
    text {
      width: 40rpx;
      height: 40rpx;
      border-radius: 50%;
      background: #eee;
      display: flex;
      align-items: center;
      justify-content: center;
      margin-bottom: 8rpx;
      font-size: 26rpx;
      &.active {
        background: #13ac47;
        color: #fff;
      }
    }
    span {
      font-size: 24rpx;
    }
  }
  .step-line {
    width: 60rpx;
    height: 4rpx;
    background: #eee;
    margin: 0 12rpx;
  }
}
.progress-modal-list {
  width: 88%;
  display: flex;
  flex-direction: column;
  gap: 18rpx;
  margin-bottom: 48rpx;
}
.progress-modal-item {
  border-radius: 18rpx;
  height: 80rpx;
  display: flex;
  align-items: center;
  justify-content: space-between;
  font-size: 30rpx;
  color: #222;
  padding: 0 32rpx;
  box-shadow: 0 2rpx 8rpx rgba(60, 167, 250, 0.04);
}
.progress-modal-btn {
  width: 88%;
  height: 88rpx;
  background: linear-gradient(90deg, #b2f08d, #39e9d2);
  color: #222;
  font-size: 32rpx;
  font-weight: bold;
  border-radius: 44rpx;
  margin-top: 8rpx;
  box-shadow: 0 4rpx 16rpx rgba(60, 167, 250, 0.08);
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
}

// 客服二维码弹窗样式
.qrcode-modal-mask {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.6);
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  backdrop-filter: blur(5rpx);
}

.qrcode-modal-content {
  background: #fff;
  border-radius: 24rpx;
  width: 600rpx;
  max-width: 90vw;
  animation: fadeInScale 0.3s ease;
  overflow: hidden;
}

.qrcode-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 40rpx 40rpx 20rpx 40rpx;
  border-bottom: 1rpx solid #f0f0f0;
}

.qrcode-modal-title {
  font-size: 36rpx;
  font-weight: bold;
  color: #333;
}

.qrcode-modal-close {
  padding: 10rpx;
  margin: -10rpx;
}

.qrcode-modal-body {
  padding: 40rpx;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.qrcode-modal-img {
  width: 400rpx;
  height: 400rpx;
  border-radius: 16rpx;
  margin-bottom: 30rpx;
  box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.1);
}

.qrcode-placeholder {
  width: 400rpx;
  height: 400rpx;
  border-radius: 16rpx;
  margin-bottom: 30rpx;
  background: #f5f5f5;
  display: flex;
  justify-content: center;
  align-items: center;
  
  text {
    color: #999;
    font-size: 28rpx;
  }
}

.qrcode-modal-tip {
  font-size: 28rpx;
  color: #666;
  text-align: center;
  line-height: 1.4;
  margin-bottom: 10rpx;
}

.qrcode-modal-benefit {
  font-size: 26rpx;
  color: #13ac47;
  text-align: center;
  font-weight: bold;
}

@keyframes fadeInScale {
  from {
    opacity: 0;
    transform: scale(0.8);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
</style>