From 3714621173c606c4c58439ed8941100ce9ddea14 Mon Sep 17 00:00:00 2001
From: Codex Assistant <codex@example.com>
Date: 星期三, 05 十一月 2025 15:10:49 +0800
Subject: [PATCH] bug
---
web/src/views/ActivityForm.vue | 168 +++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 124 insertions(+), 44 deletions(-)
diff --git a/web/src/views/ActivityForm.vue b/web/src/views/ActivityForm.vue
index 4e6d7d3..931fa32 100644
--- a/web/src/views/ActivityForm.vue
+++ b/web/src/views/ActivityForm.vue
@@ -143,7 +143,7 @@
</div>
</div>
- <div v-if="form.value && form.value.stages && form.value.stages.length > 0" class="stages-list">
+ <div v-if="form && form.stages && form.stages.length > 0" class="stages-list">
<div v-for="(stage, index) in sortedFormStages" :key="index" class="stage-item">
<div class="stage-info">
<div class="stage-header">
@@ -396,7 +396,7 @@
<el-select v-model="currentStudent.lastStageId" placeholder="璇烽�夋嫨闃舵" style="width: 100%">
<el-option label="鏃�" :value="null" />
<el-option
- v-for="stage in (form.value?.stages || [])"
+ v-for="stage in (form?.stages || [])"
:key="stage.id"
:label="stage.name"
:value="stage.id"
@@ -476,10 +476,10 @@
// 璁$畻杩囨护鍚庣殑璇勫鍒楄〃
const filteredJudges = computed(() => {
if (!judgeSearchText.value.trim()) {
- return allJudges.value
+ return allJudges.value.filter(judge => judge && judge.id && judge.name)
}
return allJudges.value.filter(judge =>
- judge.name.toLowerCase().includes(judgeSearchText.value.toLowerCase())
+ judge && judge.name && judge.name.toLowerCase().includes(judgeSearchText.value.toLowerCase())
)
})
@@ -580,7 +580,7 @@
try {
judgeLoading.value = true
const judges = await getAllJudges()
- allJudges.value = judges || []
+ allJudges.value = (judges || []).filter(judge => judge && judge.id && judge.name)
} catch (error) {
console.error('鍔犺浇璇勫鍒楄〃澶辫触:', error)
ElMessage.error('鍔犺浇璇勫鍒楄〃澶辫触: ' + error.message)
@@ -610,7 +610,7 @@
playerMax: activity.playerMax,
state: activity.state,
stages: activity.stages || [],
- judges: activity.judges || [],
+ judges: (activity.judges || []).filter(judge => judge && judge.id && judge.name),
students: activity.students || [],
mediaFiles: []
}
@@ -678,8 +678,8 @@
// 鑾峰彇榛樿闃舵鍚嶇О - 浣跨敤鏇寸伒娲荤殑鍛藉悕鏂瑰紡锛岄伩鍏嶇‖缂栫爜鐗瑰畾闃舵鍚嶇О
const getDefaultStageName = (index) => {
// 鎻愪緵涓�浜涘父鐢ㄧ殑闃舵鍚嶇О寤鸿锛屼絾涓嶅己鍒朵娇鐢�
- const suggestedNames = ['', '绗竴闃舵', '绗簩闃舵', '绗笁闃舵', '绗洓闃舵', '绗簲闃舵']
- return suggestedNames[index] || `绗�${index}闃舵`
+ const suggestedNames = ['绗竴闃舵', '绗簩闃舵', '绗笁闃舵', '绗洓闃舵', '绗簲闃舵']
+ return suggestedNames[index - 1] || `绗�${index}闃舵`
}
// 鑾峰彇闃舵鍦ㄥ師濮嬫暟缁勪腑鐨勭储寮�
@@ -794,6 +794,12 @@
// 璇勫绠$悊
const addJudge = () => {
+ // 妫�鏌ユ瘮璧涙槸鍚﹀凡淇濆瓨
+ if (!isEdit.value && !form.value.id) {
+ ElMessage.warning('璇峰厛淇濆瓨姣旇禌淇℃伅鍚庡啀娣诲姞璇勫')
+ return
+ }
+
resetJudgeDialog()
judgeDialogVisible.value = true
}
@@ -1102,6 +1108,8 @@
const handleMediaUpload = async (activityId) => {
if (!form.value || !form.value.mediaFiles) return
+ const failedFiles = []
+
try {
for (const mediaFile of form.value.mediaFiles) {
// 璺宠繃宸茬粡鏈� id 鐨勫獟浣撴枃浠讹紙宸蹭繚瀛樼殑锛�
@@ -1144,13 +1152,21 @@
mediaFile.uploadResult = uploadResult
} catch (error) {
console.error(`濯掍綋鏂囦欢 ${mediaFile.name} 澶勭悊澶辫触:`, error)
- ElMessage.error(`鏂囦欢 ${mediaFile.name} 涓婁紶澶辫触: ${error.message}`)
- // 涓嶆姏鍑洪敊璇紝缁х画澶勭悊鍏朵粬鏂囦欢
+ failedFiles.push({
+ name: mediaFile.name,
+ error: error.message
+ })
}
+ }
+
+ // 濡傛灉鏈夋枃浠朵笂浼犲け璐ワ紝鎶涘嚭閿欒
+ if (failedFiles.length > 0) {
+ const failedNames = failedFiles.map(f => f.name).join(', ')
+ throw new Error(`浠ヤ笅鏂囦欢涓婁紶澶辫触: ${failedNames}`)
}
} catch (error) {
console.error('濯掍綋鏂囦欢澶勭悊澶辫触:', error)
- // 涓嶅奖鍝嶄富娴佺▼锛屽彧璁板綍閿欒
+ throw error // 鎶涘嚭閿欒璁╀笂灞傚鐞�
}
}
@@ -1164,6 +1180,11 @@
submitting.value = true
+ console.log('=== 寮�濮嬩繚瀛樻瘮璧� ===')
+ console.log('form.value:', form.value)
+ console.log('form.value.stages:', form.value.stages)
+ console.log('form.value.judges:', form.value.judges)
+
// 鍑嗗淇濆瓨鏁版嵁锛屽彧鍖呭惈鍚庣鏀寔鐨勫瓧娈�
const saveData = {
name: form.value.name,
@@ -1174,31 +1195,50 @@
ratingSchemeId: form.value.ratingSchemeId,
playerMax: form.value.playerMax,
state: form.value.state || 1,
- stages: form.value.stages ? form.value.stages.map(stage => {
- const stageData = {
- name: stage.name,
- description: stage.description,
- matchTime: stage.matchTime,
- address: stage.address,
- playerMax: stage.playerMax,
- sortOrder: stage.sortOrder,
- state: stage.state || 1
- }
- // 鍙湪鏈夋湁鏁圛D鏃舵墠娣诲姞id瀛楁
- if (stage.id) {
- stageData.id = stage.id
- }
- // 鍙湪鏈夋湁鏁坮atingSchemeId鏃舵墠娣诲姞璇ュ瓧娈�
- if (stage.ratingSchemeId) {
- stageData.ratingSchemeId = stage.ratingSchemeId
- }
- return stageData
- }) : [],
- judges: form.value.judges ? form.value.judges.filter(judge => judge.id && judge.name).map(judge => ({
- judgeId: judge.id,
- judgeName: judge.name,
- stageIds: judge.stageIds || []
- })) : []
+ stages: form.value.stages ? (() => {
+ console.log('=== 澶勭悊stages ===')
+ console.log('鍘熷stages:', form.value.stages)
+ const filteredStages = form.value.stages.filter(stage => stage)
+ console.log('杩囨护鍚巗tages:', filteredStages)
+ return filteredStages.map((stage, index) => {
+ console.log(`澶勭悊stage ${index}:`, stage)
+ const stageData = {
+ name: stage.name,
+ description: stage.description,
+ matchTime: stage.matchTime,
+ address: stage.address,
+ playerMax: stage.playerMax,
+ sortOrder: stage.sortOrder,
+ state: stage.state || 1
+ }
+ // 鍙湪鏈夋湁鏁圛D鏃舵墠娣诲姞id瀛楁
+ if (stage.id) {
+ stageData.id = stage.id
+ }
+ // 鍙湪鏈夋湁鏁坮atingSchemeId鏃舵墠娣诲姞璇ュ瓧娈�
+ if (stage.ratingSchemeId) {
+ stageData.ratingSchemeId = stage.ratingSchemeId
+ }
+ console.log(`澶勭悊鍚巗tage ${index}:`, stageData)
+ return stageData
+ })
+ })() : [],
+ judges: form.value.judges ? (() => {
+ console.log('=== 澶勭悊judges ===')
+ console.log('鍘熷judges:', form.value.judges)
+ const filteredJudges = form.value.judges.filter(judge => judge && judge.id && judge.name)
+ console.log('杩囨护鍚巎udges:', filteredJudges)
+ return filteredJudges.map((judge, index) => {
+ console.log(`澶勭悊judge ${index}:`, judge)
+ const judgeData = {
+ judgeId: judge.id,
+ judgeName: judge.name,
+ stageIds: judge.stageIds || []
+ }
+ console.log(`澶勭悊鍚巎udge ${index}:`, judgeData)
+ return judgeData
+ })
+ })() : []
}
// 濡傛灉鏄紪杈戞ā寮忥紝娣诲姞id瀛楁
@@ -1213,29 +1253,61 @@
const result = await saveActivity(saveData)
+ console.log('=== 淇濆瓨缁撴灉 ===')
+ console.log('result:', result)
+ console.log('result type:', typeof result)
+ console.log('result.id:', result?.id)
+ console.log('result.id type:', typeof result?.id)
+ console.log('JSON.stringify(result):', JSON.stringify(result, null, 2))
+
// 濡傛灉鏄柊澧烇紝鏇存柊form鐨刬d
if (!isEdit.value && result && result.id) {
form.value.id = result.id
}
// 澶勭悊濯掍綋鏂囦欢涓婁紶鍜屼繚瀛�
+ let mediaUploadSuccess = true
if (form.value.mediaFiles && form.value.mediaFiles.length > 0) {
- const activityId = result.id || form.value.id
+ // 淇activityId鑾峰彇閫昏緫锛氫紭鍏堜娇鐢╮esult.id锛堟柊澧炴椂锛夛紝鍏舵浣跨敤form.value.id锛堢紪杈戞椂锛�
+ const activityId = result?.id || form.value.id
+ console.log('=== 濯掍綋鏂囦欢涓婁紶 ===')
+ console.log('result:', result)
+ console.log('form.value.id:', form.value.id)
+ console.log('鏈�缁坅ctivityId:', activityId)
+
if (activityId) {
- await handleMediaUpload(activityId)
+ try {
+ await handleMediaUpload(activityId)
+ console.log('濯掍綋鏂囦欢涓婁紶鎴愬姛')
+ } catch (mediaError) {
+ console.error('濯掍綋鏂囦欢涓婁紶澶辫触:', mediaError)
+ mediaUploadSuccess = false
+ ElMessage.warning('姣旇禌淇濆瓨鎴愬姛锛屼絾閮ㄥ垎濯掍綋鏂囦欢涓婁紶澶辫触锛岃绋嶅悗閲嶆柊缂栬緫娣诲姞')
+ }
+ } else {
+ console.error('鏃犳硶鑾峰彇activityId锛岃烦杩囧獟浣撴枃浠朵笂浼�')
+ mediaUploadSuccess = false
+ ElMessage.warning('姣旇禌淇濆瓨鎴愬姛锛屼絾鏃犳硶鑾峰彇姣旇禌ID锛屽獟浣撴枃浠朵笂浼犲け璐�')
}
}
- ElMessage.success(isEdit.value ? '鏇存柊鎴愬姛' : '鍒涘缓鎴愬姛')
-
- // 濡傛灉鏄柊澧烇紝涓嶈嚜鍔ㄨ繑鍥烇紝璁╃敤鎴峰彲浠ョ户缁坊鍔犺瘎濮斿拰瀛﹀憳
- if (isEdit.value) {
- goBack()
+ if (mediaUploadSuccess) {
+ ElMessage.success(isEdit.value ? '鏇存柊鎴愬姛' : '鍒涘缓鎴愬姛')
}
+
+ // 淇濆瓨鎴愬姛鍚庤繑鍥炲垪琛ㄩ〉闈�
+ goBack()
} catch (error) {
+ console.error('=== 淇濆瓨姣旇禌澶辫触 ===')
+ console.error('閿欒瀵硅薄:', error)
+ console.error('閿欒娑堟伅:', error.message)
+ console.error('閿欒鍫嗘爤:', error.stack)
+ console.error('褰撳墠form.value:', form.value)
+
if (error.message) {
- console.error('淇濆瓨姣旇禌澶辫触:', error)
ElMessage.error('淇濆瓨澶辫触: ' + error.message)
+ } else {
+ ElMessage.error('淇濆瓨澶辫触: 鏈煡閿欒')
}
} finally {
submitting.value = false
@@ -1254,7 +1326,15 @@
await loadActivity()
// 濡傛灉鏄柊寤烘ā寮忎笖娌℃湁闃舵锛岃嚜鍔ㄥ垱寤轰竴涓樁娈�
+ console.log('妫�鏌ラ粯璁ら樁娈靛垱寤烘潯浠�:', {
+ isEdit: isEdit.value,
+ hasForm: !!form.value,
+ hasStages: !!(form.value && form.value.stages),
+ stagesLength: form.value && form.value.stages ? form.value.stages.length : 'undefined'
+ })
+
if (!isEdit.value && form.value && form.value.stages && form.value.stages.length === 0) {
+ console.log('鍒涘缓榛樿闃舵')
onStageCountChange(1)
}
})
--
Gitblit v1.8.0