<script setup>
import { ref, watch, } from 'vue'
import request from '@/utils/request'
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: 1 },
  { text: "产品收益", value: 2 },
])

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

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

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

const getList = async () => {
  try {
    const data = {
      withdrawType: active.value,
      beginDate: "2025-01"
    }
    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 :name="item.value" v-for="item in range" :key="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 class="list" v-for="(item, index) in list" :key="index">
        <div class="left">
          <div class="title" v-if="item.walletType == 1">生活补贴</div>
          <div class="title" v-if="item.walletType == 2">产品收益</div>
          <div class="price">+{{ item.withdrawAmount }}元</div>
        </div>

        <div class="left">
          <div class="title">申请时间</div>
          <div class="date">{{ item.createTime }}</div>
        </div>

        <div class="left">
          <div class="title">申请状态</div>
          <div class="date status">
            <div class="title" v-if="item.status == 0">待打款</div>
            <div class="title" v-if="item.status == 1">资金校对中</div>
            <div class="title success" v-if="item.status == 2">已到账,请查收</div>
            <div class="title" v-if="item.status == 3">驳回</div>
          </div>
        </div>

        <var-steps :current="item.status" dot>
          <var-step v-if="item.status >= 0">提交申请</var-step>
          <var-step v-if="item.status >= 1">审核中</var-step>
          <var-step v-if="item.status >= 2">审核通过</var-step>
          <var-step v-if="item.status >= 3">到账失败</var-step>
        </var-steps>
      </div>

    </van-list>
  </div>
</template>

<style lang="scss" scoped>
.wallet-detail {
  height: 100vh;
  font-family: pingfang;
  box-sizing: border-box;
  overflow: hidden;
  .list-container {
    padding: 0 15px;
    background: #f5f6f8;
    height: calc(100vh - 90px);
    overflow-y: auto;
  }


  .list {
    background: #fff;
    margin-bottom: 10px;
    border-radius: 5px;
    padding: 10px;
    box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
    position: relative;

    .left {
      display: flex;
      justify-content: space-between;
      width: 100%;
      margin-bottom: 8px;

      .title {
        width: 140px;
        font-size: 16px;
        font-weight: 400;
        padding-bottom: 7px;
      }

      .date {
        font-size: 12px;
        color: #B2B2B2;
        height: 1.5vh;
        line-height: 1.5vh;

        &.status {
          text-align: right;

          .success {
            color: green;
          }
        }
      }

      .price {
        font-size: 18px;
        font-weight: bold;
        color: red;
      }
    }
  }
}
</style>