fix bugs
This commit is contained in:
@@ -8,13 +8,19 @@ import request from '@/utils/request.js'
|
||||
/**
|
||||
* 获取我的选手列表(普通评委)
|
||||
* @param {Object} params
|
||||
* @param {String} params.judgeId - 评委ID
|
||||
* @param {String} params.venueId - 场地ID
|
||||
* @param {String} params.projectId - 项目ID
|
||||
* @param {String} params.matchCode - 比赛编码(推荐方式)
|
||||
* @param {String} params.judgeId - 评委ID(备选方式)
|
||||
* @param {String} params.venueId - 场地ID(备选方式)
|
||||
* @param {String} params.projectId - 项目ID(备选方式)
|
||||
* @returns {Promise}
|
||||
*
|
||||
* 注意:此接口需要后端实现
|
||||
* 建议路径: GET /api/mini/athletes
|
||||
*
|
||||
* 推荐实现方式:
|
||||
* 1. 优先从 Token 中解析评委信息(最安全)
|
||||
* 2. 或使用 matchCode 参数,后端根据 Token 中的邀请码关联查询
|
||||
* 3. 或使用 judgeId + venueId + projectId 直接查询
|
||||
*/
|
||||
export function getMyAthletes(params) {
|
||||
return request({
|
||||
|
||||
@@ -32,10 +32,22 @@ export function login(params) {
|
||||
// 普通评委有固定场地,裁判长可以查看所有场地
|
||||
venueId: role === 'pub' ? '1' : null,
|
||||
venueName: role === 'pub' ? '第一场地' : null,
|
||||
// 分配的项目列表
|
||||
// 分配的项目列表(对象数组格式)
|
||||
projects: role === 'pub'
|
||||
? ['女子组长拳', '男子组陈氏太极拳']
|
||||
: ['女子组长拳', '男子组陈氏太极拳', '女子组双剑(含长穗双剑)', '男子组杨氏太极拳', '女子组刀术', '男子组棍术', '女子组枪术', '男子组剑术']
|
||||
? [
|
||||
{ projectId: 1, projectName: '女子组长拳' },
|
||||
{ projectId: 2, projectName: '男子组陈氏太极拳' }
|
||||
]
|
||||
: [
|
||||
{ projectId: 1, projectName: '女子组长拳' },
|
||||
{ projectId: 2, projectName: '男子组陈氏太极拳' },
|
||||
{ projectId: 3, projectName: '女子组双剑(含长穗双剑)' },
|
||||
{ projectId: 4, projectName: '男子组杨氏太极拳' },
|
||||
{ projectId: 5, projectName: '女子组刀术' },
|
||||
{ projectId: 6, projectName: '男子组棍术' },
|
||||
{ projectId: 7, projectName: '女子组枪术' },
|
||||
{ projectId: 8, projectName: '男子组剑术' }
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -121,7 +121,8 @@ export default {
|
||||
// 保存用户信息到全局数据
|
||||
getApp().globalData = {
|
||||
userRole, // 'pub' 或 'admin'
|
||||
matchCode: this.matchCode,
|
||||
matchCode: this.matchCode, // 比赛编码
|
||||
inviteCode: this.inviteCode, // 邀请码(重要:用于后续API调用)
|
||||
matchId,
|
||||
matchName,
|
||||
matchTime,
|
||||
|
||||
@@ -216,14 +216,10 @@ export default {
|
||||
return
|
||||
}
|
||||
|
||||
// 收集选中的扣分项
|
||||
// 收集选中的扣分项ID
|
||||
const selectedDeductions = this.deductions
|
||||
.filter(item => item.checked)
|
||||
.map(item => ({
|
||||
deductionId: item.deductionId,
|
||||
deductionName: item.deductionName,
|
||||
deductionScore: item.deductionScore
|
||||
}))
|
||||
.map(item => item.deductionId)
|
||||
|
||||
try {
|
||||
uni.showLoading({
|
||||
|
||||
@@ -22,7 +22,15 @@
|
||||
</view>
|
||||
|
||||
<view class="project-section">
|
||||
<view class="project-btn active">{{ projectInfo.name }}</view>
|
||||
<view
|
||||
class="project-btn"
|
||||
:class="{ active: index === currentProjectIndex }"
|
||||
v-for="(project, index) in projects"
|
||||
:key="project.projectId"
|
||||
@click="switchProject(index)"
|
||||
>
|
||||
{{ project.projectName }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@@ -89,6 +97,8 @@ export default {
|
||||
name: ''
|
||||
},
|
||||
judgeId: '',
|
||||
projects: [], // 所有分配的项目列表
|
||||
currentProjectIndex: 0, // 当前选中的项目索引
|
||||
players: [],
|
||||
scoredCount: 0,
|
||||
totalCount: 0
|
||||
@@ -112,14 +122,12 @@ export default {
|
||||
name: globalData.venueName || '场地'
|
||||
}
|
||||
|
||||
// 加载项目信息
|
||||
const projects = globalData.projects || []
|
||||
const currentIndex = globalData.currentProjectIndex || 0
|
||||
const currentProject = projects[currentIndex] || {}
|
||||
this.projectInfo = {
|
||||
id: currentProject.projectId,
|
||||
name: currentProject.projectName || '项目'
|
||||
}
|
||||
// 加载项目列表
|
||||
this.projects = globalData.projects || []
|
||||
this.currentProjectIndex = globalData.currentProjectIndex || 0
|
||||
|
||||
// 设置当前项目信息
|
||||
this.updateCurrentProject()
|
||||
|
||||
this.judgeId = globalData.judgeId
|
||||
|
||||
@@ -128,7 +136,8 @@ export default {
|
||||
console.log('评分列表页加载:', {
|
||||
judgeId: this.judgeId,
|
||||
venueId: this.venueInfo.id,
|
||||
projectId: this.projectInfo.id
|
||||
projectId: this.projectInfo.id,
|
||||
projectsCount: this.projects.length
|
||||
})
|
||||
}
|
||||
|
||||
@@ -147,12 +156,36 @@ export default {
|
||||
// 🔥 关键改动:使用 dataAdapter 获取选手列表
|
||||
// Mock模式:调用 mock/athlete.js 的 getMyAthletes 函数
|
||||
// API模式:调用 api/athlete.js 的 getMyAthletes 函数(GET /api/mini/athletes)
|
||||
const response = await dataAdapter.getData('getMyAthletes', {
|
||||
|
||||
// 构建请求参数
|
||||
// 优先使用 matchCode(比赛编码),这样后端可以根据邀请码关联查询
|
||||
const app = getApp()
|
||||
const globalData = app.globalData || {}
|
||||
|
||||
const params = {
|
||||
// 方案1:使用比赛编码(推荐,后端可以根据邀请码关联)
|
||||
matchCode: globalData.matchCode,
|
||||
|
||||
// 方案2:使用具体的ID(作为备选)
|
||||
judgeId: this.judgeId,
|
||||
venueId: this.venueInfo.id,
|
||||
projectId: this.projectInfo.id
|
||||
}
|
||||
|
||||
// 移除无效参数
|
||||
Object.keys(params).forEach(key => {
|
||||
if (params[key] === undefined || params[key] === null || params[key] === '') {
|
||||
delete params[key]
|
||||
}
|
||||
})
|
||||
|
||||
// 调试信息
|
||||
if (config.debug) {
|
||||
console.log('请求运动员列表参数:', params)
|
||||
}
|
||||
|
||||
const response = await dataAdapter.getData('getMyAthletes', params)
|
||||
|
||||
uni.hideLoading()
|
||||
|
||||
// 保存选手列表
|
||||
@@ -190,6 +223,50 @@ export default {
|
||||
uni.navigateTo({
|
||||
url: '/pages/score-detail/score-detail'
|
||||
})
|
||||
},
|
||||
|
||||
/**
|
||||
* 更新当前项目信息
|
||||
*/
|
||||
updateCurrentProject() {
|
||||
const currentProject = this.projects[this.currentProjectIndex] || {}
|
||||
this.projectInfo = {
|
||||
id: currentProject.projectId,
|
||||
name: currentProject.projectName || '项目'
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 切换项目
|
||||
* @param {Number} index - 项目索引
|
||||
*/
|
||||
async switchProject(index) {
|
||||
// 如果点击的是当前项目,不做处理
|
||||
if (index === this.currentProjectIndex) {
|
||||
return
|
||||
}
|
||||
|
||||
// 更新当前项目索引
|
||||
this.currentProjectIndex = index
|
||||
|
||||
// 更新全局数据中的项目索引
|
||||
const app = getApp()
|
||||
app.globalData.currentProjectIndex = index
|
||||
|
||||
// 更新当前项目信息
|
||||
this.updateCurrentProject()
|
||||
|
||||
// 调试信息
|
||||
if (config.debug) {
|
||||
console.log('切换项目:', {
|
||||
index: index,
|
||||
projectId: this.projectInfo.id,
|
||||
projectName: this.projectInfo.name
|
||||
})
|
||||
}
|
||||
|
||||
// 重新加载选手列表
|
||||
await this.loadPlayers()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -310,7 +387,8 @@ export default {
|
||||
.project-section {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
flex-wrap: wrap;
|
||||
gap: 20rpx;
|
||||
}
|
||||
|
||||
.project-btn {
|
||||
@@ -321,6 +399,12 @@ export default {
|
||||
font-size: 28rpx;
|
||||
color: #1B7C5E;
|
||||
font-weight: 500;
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
.project-btn:active {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.project-btn.active {
|
||||
|
||||
@@ -70,10 +70,29 @@ function request(options = {}) {
|
||||
|
||||
// GET请求:将params拼接到URL
|
||||
if (method === 'GET' && params && Object.keys(params).length > 0) {
|
||||
const queryString = Object.keys(params)
|
||||
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
|
||||
.join('&')
|
||||
fullUrl += (url.includes('?') ? '&' : '?') + queryString
|
||||
// 过滤掉 undefined、null、空字符串的参数
|
||||
const validParams = Object.keys(params).filter(key => {
|
||||
const value = params[key]
|
||||
return value !== undefined && value !== null && value !== ''
|
||||
})
|
||||
|
||||
if (validParams.length > 0) {
|
||||
const queryString = validParams
|
||||
.map(key => {
|
||||
const value = params[key]
|
||||
// 确保值不是 undefined 字符串
|
||||
if (typeof value === 'string' && value === 'undefined') {
|
||||
return null
|
||||
}
|
||||
return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`
|
||||
})
|
||||
.filter(item => item !== null)
|
||||
.join('&')
|
||||
|
||||
if (queryString) {
|
||||
fullUrl += (url.includes('?') ? '&' : '?') + queryString
|
||||
}
|
||||
}
|
||||
requestData = undefined // GET请求不使用data字段
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user