<script setup>
import { ref, watch, } from 'vue'
import request from '@/utils/request'
import { useRoute } from 'vue-router'
const route = useRoute()

// 响应式数据
const list = ref([])
const pageSize = ref(10)
const pageNum = ref(1)
const total = ref(0)
const finished = ref(false)
const loading = ref(false)
const emptyTipsShow = ref(false)

// 下拉选项
const range = ref([
  { text: "现金钱包", value: 4 },
  { text: "团队奖励", value: 6 },
])

// 获取路由参数中的tab
const active = ref(Number(route.query.type) || 5)

// 重置列表状态
const resetList = () => {
  list.value = []
  pageNum.value = 1
  finished.value = false
  loading.value = false
  total.value = 0
  emptyTipsShow.value = false
  // getList()
}

watch(active, () => {
  resetList()
})

const getList = async () => {
  try {
    const data = {
      withdrawType: active.value,
      beginDate: ""
    }
    const res = await request.post(`/ops/withdraw/list?pageNum=${pageNum.value}&pageSize=${pageSize.value}`, data)
    if (res.code === 200) {
      list.value = [...list.value, ...(res.rows || [])]
      total.value = res.total || 0
      if (list.value.length >= total.value) {
        finished.value = true
      } else {
        pageNum.value++
      }
      if (list.value.length >= total.value) {
        finished.value = true
      }
    } else {
      showFailToast(res.msg || '加载失败')
      finished.value = true
    }
  } catch (error) {
    console.error('获取列表失败:', error)
    showFailToast('加载失败,请重试')
    finished.value = true
  } finally {
    loading.value = false
  }
}

// Tab 点击处理
const handleClick = (item) => {
  if (active.value == item.value) return
  active.value = item.value
  resetList()
}

</script>

<template>
  <div class="wallet-detail">
    <!-- Tabs -->
    <var-tabs v-model:active="active" class="fixed-tabs">
      <var-tab
        v-for="item in range"
        :key="item.value"
        :name="item.value"
        @click="handleClick(item)"
      >
        {{ item.text }}
      </var-tab>
    </var-tabs>

    <!-- List -->
    <van-list
      class="list-container"
      v-model:loading="loading"
      :finished="finished"
      finished-text="没有更多了"
      @load="getList"
    >
      <div v-for="(item, index) in list" :key="index" class="detail-item">
        <!-- 头部信息 -->
        <div class="item-header">
          <div class="type-info">
            <span class="type-text">
              {{ item.withdrawType == 4 ? "现金钱包" : 
                 item.withdrawType == 6 ? "团队奖励" : "" }}
            </span>
          </div>
          <div class="amount">
            +{{ item.withdrawAmount }}元
          </div>
        </div>

        <!-- 交易信息 -->
        <div class="item-content">
          <div class="transaction-info">
            <template v-if="item.status == '0' || item.status == '1'">
              <div class="processing">审核中</div>
            </template>
            <template v-else-if="item.status == '2'">
              <div class="success">已到账,请查收</div>
            </template>
            <template v-else-if="item.status == '3'">
              <div class="failed">驳回</div>
            </template>
          </div>
          <div class="balance">
            {{ item.bankName }}{{ item.bankNum?.slice(-4) }}
          </div>
        </div>

        <!-- 底部信息 -->
        <div class="item-footer">
          <time>{{ item.createTime }}</time>
        </div>
      </div>
    </van-list>
  </div>
</template>

<style lang="scss" scoped>
.wallet-detail {
  background: url("@/static/home/beijing.png");
  background-size: 100% 100%;
  background-repeat: no-repeat;
  padding-bottom: 15px;
  height: 100%;
  box-sizing: border-box;

  .list-container {
    height: calc(100vh - 130px);
    border-radius: 10px;
    margin: 10px 15px 15px;
    box-sizing: border-box;
    overflow-y: auto;
    background: #fff;
  }

  .detail-item {
    padding: 15px;
    border-bottom: 1px solid #eee;

    .item-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-bottom: 10px;

      .type-text {
        font-size: 14px;
        color: #333;
      }

      .amount {
        font-size: 14px;
        color: #f44336;
      }
    }

    .item-content {
      display: flex;
      justify-content: space-between;
      font-size: 13px;
      color: #666;
      margin-bottom: 5px;

      .processing {
        color: #ff9800;
      }

      .success {
        color: #4caf50;
      }

      .failed {
        color: #f44336;
      }
    }

    .item-footer {
      font-size: 12px;
      color: #999;
    }
  }

  .loading-text,
  .finished-text {
    padding: 15px 0;
    text-align: center;
    color: #999;
    font-size: 14px;
  }

  .empty-tips {
    text-align: center;
    padding: 100px 0;
    color: #999;
    font-size: 14px;
  }
}
</style>