lrj
昨天 dc643ba44fd2a426263015491268a0f0d6b4671d
web/src/views/player/index.vue
@@ -46,6 +46,12 @@
          <el-icon><Search /></el-icon>
          搜索
        </el-button>
        <el-button type="warning" @click="debugAPI">
          调试API
        </el-button>
        <span style="margin-left: 10px; color: #666; font-size: 12px;">
          活动选项数量: {{ activityOptions.length }}
        </span>
      </div>
      <!-- 学员列表 -->
@@ -235,11 +241,81 @@
// 加载活动选项
const loadActivityOptions = async () => {
  try {
    console.log('=== 开始加载活动选项 ===')
    console.log('调用getAllActivities API...')
    const activities = await getAllActivities()
    // 只显示状态为1(进行中)的比赛及其阶段
    activityOptions.value = (activities || []).filter(activity => activity.state === 1)
  } catch (e: any) {
    console.error('加载活动选项失败:', e)
    console.log('API返回的原始数据:', activities)
    console.log('数据类型:', typeof activities)
    console.log('是否为数组:', Array.isArray(activities))
    if (activities && Array.isArray(activities)) {
      console.log('活动数量:', activities.length)
      activities.forEach((activity, index) => {
        console.log(`活动${index + 1}:`, {
          id: activity.id,
          name: activity.name,
          state: activity.state,
          pid: activity.pid
        })
      })
      // 过滤出正在进行的比赛(不是阶段)
      const filtered = activities.filter(activity =>
        activity.state === 1 && (activity.pid === 0 || activity.pid === "0")
      )
      console.log('过滤条件: state === 1 && (pid === 0 || pid === "0")')
      console.log('过滤后的活动:', filtered)
      activityOptions.value = filtered
      console.log('设置到activityOptions.value:', activityOptions.value)
      console.log('activityOptions.value.length:', activityOptions.value.length)
      // 强制触发响应式更新
      setTimeout(() => {
        console.log('延迟检查activityOptions.value:', activityOptions.value)
        console.log('延迟检查activityOptions.value.length:', activityOptions.value.length)
      }, 100)
    } else {
      console.error('API返回的数据格式不正确:', activities)
    }
  } catch (error) {
    console.error('=== 加载活动选项失败 ===')
    console.error('错误详情:', error)
    console.error('错误消息:', error.message)
    console.error('错误堆栈:', error.stack)
    ElMessage.error('加载活动选项失败: ' + error.message)
  }
}
// 调试API函数
const debugAPI = async () => {
  console.log('=== 开始API调试 ===')
  // 检查认证状态
  const token = localStorage.getItem('auth_token')
  const userInfo = localStorage.getItem('user_info')
  console.log('认证状态检查:')
  console.log('Token:', token ? '已存在' : '不存在')
  console.log('Token内容:', token)
  console.log('用户信息:', userInfo ? '已存在' : '不存在')
  console.log('用户信息内容:', userInfo)
  if (!token) {
    ElMessage.error('未找到认证token,请先登录')
    return
  }
  // 测试API调用
  try {
    console.log('开始测试getAllActivities API...')
    const activities = await getAllActivities()
    console.log('API调用成功,返回数据:', activities)
    ElMessage.success(`API调用成功,获取到${activities?.length || 0}个活动`)
  } catch (error) {
    console.error('API调用失败:', error)
    ElMessage.error('API调用失败: ' + error.message)
  }
}
@@ -272,8 +348,17 @@
}
onMounted(() => {
  loadActivityOptions()
  loadData()
  console.log('=== Player页面onMounted被调用 ===')
  console.log('当前时间:', new Date().toLocaleTimeString())
  console.log('activityOptions初始值:', activityOptions.value)
  console.log('直接加载活动选项进行测试...')
  // 立即调用API测试
  loadActivityOptions().catch(error => {
    console.error('loadActivityOptions调用失败:', error)
  })
  // loadData() // 暂时注释掉,专注于活动选项加载
})
</script>