This commit is contained in:
2025-12-12 01:44:41 +08:00
parent 21abcaff53
commit 2f1d732a36
46 changed files with 7756 additions and 484 deletions

View File

@@ -53,45 +53,136 @@
</template>
<script>
import competitionAPI from '@/api/competition.js'
export default {
data() {
return {
banners: [
'/static/images/bananer1.png',
'/static/images/bananer2.png'
],
eventList: [
{
id: 1,
title: '2025年全国武术散打锦标赛暨第十七届世界武术锦标赛选拔赛',
location: '天津市-天津市体育中心',
registerTime: '2025.02.01-2025.02.10',
matchTime: '2025.02.01-2025.02.10',
registerCount: '25212',
status: 'open'
},
{
id: 2,
title: '2025年全国武术套路锦标赛',
location: '天津市-天津市体育中心',
registerTime: '2025.02.01-2025.02.10',
matchTime: '2025.02.01-2025.02.10',
registerCount: '25212',
status: 'finished'
},
{
id: 3,
title: '2025年全国武术散打锦标赛暨第十七届世界武术锦标赛选拔赛',
location: '天津市-天津市体育中心',
registerTime: '2025.02.01-2025.02.10',
matchTime: '2025.02.01-2025.02.10',
registerCount: '25212',
status: 'open'
}
]
banners: [],
eventList: []
};
},
onLoad() {
this.loadBanners()
this.loadEvents()
},
methods: {
/**
* 加载轮播图
*/
async loadBanners() {
try {
const res = await competitionAPI.getBannerList({
current: 1,
size: 5
})
// 如果后端返回的是分页数据
if (res.records) {
this.banners = res.records.map(item => item.imageUrl || item.image || item.url)
} else if (Array.isArray(res)) {
this.banners = res.map(item => item.imageUrl || item.image || item.url)
}
// 如果没有数据,使用默认轮播图
if (this.banners.length === 0) {
this.banners = [
'/static/images/bananer1.png',
'/static/images/bananer2.png'
]
}
} catch (err) {
console.error('加载轮播图失败:', err)
// 使用默认轮播图
this.banners = [
'/static/images/bananer1.png',
'/static/images/bananer2.png'
]
}
},
/**
* 加载精品赛事
*/
async loadEvents() {
try {
const res = await competitionAPI.getCompetitionList({
current: 1,
size: 10
})
console.log('赛事列表API返回:', res)
// 如果后端返回的是分页数据
let list = []
if (res.records) {
list = res.records
} else if (Array.isArray(res)) {
list = res
}
// 数据映射:将后端字段转换为前端需要的字段
this.eventList = list.map(item => {
// 尝试多个可能的时间字段
const regStartTime = item.registrationStartTime || item.registerStartTime || item.signUpStartTime
const regEndTime = item.registrationEndTime || item.registerEndTime || item.signUpEndTime
const startTime = item.startTime || item.competitionStartTime || item.beginTime
const endTime = item.endTime || item.competitionEndTime || item.finishTime
return {
id: item.id,
title: item.name || item.title || item.competitionName || '未命名赛事',
location: item.location || item.address || item.venue || '待定',
registerTime: this.formatTimeRange(regStartTime, regEndTime) ||
item.registerTime || item.registrationPeriod || '待定',
matchTime: this.formatTimeRange(startTime, endTime) ||
item.matchTime || item.competitionTime || '待定',
registerCount: item.registrationCount || item.registerCount || item.signUpCount || '0',
status: this.getStatus(item.status)
}
})
console.log('格式化后的赛事列表:', this.eventList)
} catch (err) {
console.error('加载赛事列表失败:', err)
}
},
/**
* 格式化时间范围
* @param {String} startTime 开始时间
* @param {String} endTime 结束时间
* @returns {String}
*/
formatTimeRange(startTime, endTime) {
if (!startTime || !endTime) return ''
const formatDate = (dateStr) => {
if (!dateStr) return ''
const date = new Date(dateStr)
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
return `${year}.${month}.${day}`
}
return `${formatDate(startTime)}-${formatDate(endTime)}`
},
/**
* 获取赛事状态
* @param {Number|String} status 状态码
* @returns {String}
*/
getStatus(status) {
// 根据后端状态码映射为前端需要的状态
// 1: 报名中, 2: 进行中, 3: 已结束
if (status === 3 || status === '3' || status === 'finished') {
return 'finished'
}
return 'open'
},
goToEventList() {
uni.navigateTo({
url: '/pages/event-list/event-list'
@@ -227,9 +318,9 @@ export default {
.register-btn {
background-color: #C93639;
color: #fff;
padding: 16rpx 50rpx;
padding: 10rpx 30rpx;
border-radius: 50rpx;
font-size: 28rpx;
font-size: 24rpx;
border: none;
}