比赛
All checks were successful
Deploy to Server / deploy (push) Successful in 36s

This commit is contained in:
jeremygan2021
2026-03-10 13:32:04 +08:00
parent 3ada996915
commit af763b1bee
7 changed files with 447 additions and 31 deletions

View File

@@ -2,6 +2,7 @@ import { View, Text, Image, Button, Checkbox, CheckboxGroup, RichText } from '@t
import Taro, { useDidShow, usePullDownRefresh } from '@tarojs/taro'
import { useState } from 'react'
import { login as silentLogin } from '../../utils/request'
import { getMyEnrollments } from '../../api'
import './index.scss'
export default function UserIndex() {
@@ -9,10 +10,14 @@ export default function UserIndex() {
const [showLoginModal, setShowLoginModal] = useState(false)
const [isAgreed, setIsAgreed] = useState(false)
const [showAgreement, setShowAgreement] = useState(false) // For showing agreement content
const [myEnrollments, setMyEnrollments] = useState<any[]>([])
useDidShow(() => {
const info = Taro.getStorageSync('userInfo')
if (info) setUserInfo(info)
if (info) {
setUserInfo(info)
fetchEnrollments()
}
})
usePullDownRefresh(async () => {
@@ -20,6 +25,7 @@ export default function UserIndex() {
const res = await silentLogin()
if (res) {
setUserInfo(res)
fetchEnrollments()
}
Taro.stopPullDownRefresh()
} catch (e) {
@@ -28,6 +34,17 @@ export default function UserIndex() {
}
})
const fetchEnrollments = async () => {
try {
const res = await getMyEnrollments()
if (Array.isArray(res)) {
setMyEnrollments(res)
}
} catch (e) {
console.error('Fetch enrollments failed', e)
}
}
const goOrders = () => Taro.navigateTo({ url: '/pages/order/list' })
const goDistributor = () => Taro.navigateTo({ url: '/subpackages/distributor/index' })
const goInvite = () => Taro.navigateTo({ url: '/subpackages/distributor/invite' })
@@ -36,6 +53,18 @@ export default function UserIndex() {
const goActivityList = (tab = 'all') => Taro.navigateTo({ url: `/subpackages/forum/activity/index?tab=${tab}` })
const goCompetitionList = () => Taro.navigateTo({ url: '/pages/competition/index' })
const goUploadProject = () => {
// 找到所有有效的选手报名
const contestantEnrollments = myEnrollments.filter(e => e.role === 'contestant')
if (contestantEnrollments.length === 1) {
// 如果只有一个,直接去详情页
Taro.navigateTo({ url: `/pages/competition/detail?id=${contestantEnrollments[0].competition}` })
} else {
// 否则去列表页
Taro.navigateTo({ url: '/pages/competition/index' })
}
}
const handleAddress = async () => {
try {
const res = await Taro.chooseAddress()
@@ -254,6 +283,8 @@ export default function UserIndex() {
}
}
const isContestant = myEnrollments.some(e => e.role === 'contestant')
const serviceGroups = [
{
title: '基础服务',
@@ -261,7 +292,13 @@ export default function UserIndex() {
{ title: '我的订单', icon: '📦', action: goOrders },
{ title: '地址管理', icon: '📝', action: handleAddress },
{ title: '活动管理', icon: '⌚️', action: () => goActivityList('mine') },
]
},
{
title: '比赛服务',
items: [
{ title: '赛事中心', icon: '🏆', action: goCompetitionList },
...(isContestant ? [{ title: '上传比赛资料', icon: '📤', action: goUploadProject }] : [])
]
},
{