This commit is contained in:
2025-06-02 21:06:39 +08:00
parent 7d77a11dee
commit 86c7e52551
9 changed files with 380 additions and 228 deletions

View File

@@ -64,7 +64,7 @@
<script setup>
import { ref, watch, defineProps, defineEmits } from 'vue';
import { addSignUp, updateSignUpResult } from '../../api/tournament';
import { addSignUp, updateSignUpResult, getSignUpResultList } from '../../api/tournament';
const props = defineProps({
visible: Boolean,
@@ -130,16 +130,37 @@ const submitForm = async () => {
try {
if (props.isEditMode) {
const { id, ...dataToUpdate } = form.value;
// updateSignUpResult API 需要 player id
await updateSignUpResult(id, dataToUpdate);
alert('参赛记录更新成功!');
const { id, ...originalFormData } = form.value;
// 为API准备数据确保win和lose是字符串
const dataForApi = {
...originalFormData,
win: String(originalFormData.win || '0'),
lose: String(originalFormData.lose || '0')
};
try {
const response = await getSignUpResultList();
const existingRecord = response.find(item => item.id === id);
if (!existingRecord) {
throw new Error('找不到要更新的报名记录');
}
// 使用处理过的数据调用更新API
await updateSignUpResult(id, dataForApi);
alert('参赛记录更新成功!');
} catch (error) {
console.error('更新参赛记录失败:', error);
errorMessage.value = error.response?.data?.detail || error.message || '更新失败,请重试';
return;
}
} else {
// addSignUp API 需要 tournament_id as id, 和 tournament_name
// 添加新记录的逻辑
const dataToAdd = {
...form.value,
id: form.value.tournament_id, // tournament_id 作为 addSignUp 中的 id
type: form.value.team_name ? 'teamname' : 'individual'
id: form.value.tournament_id,
type: form.value.team_name ? 'teamname' : 'individual',
// 注意: form.value.win 和 form.value.lose 在 initialFormState 中默认为字符串 '0'
// 如果 addSignUp API 也严格要求字符串,且这些值可能变为数字,也需在此处 String()
};
await addSignUp(dataToAdd);
alert('参赛记录添加成功!');