Selaa lähdekoodia

fix(system): 修复添加裁判功能并优化项目显示

- 增加对赛事 ID 和裁判表单组件的非空校验
- 异步处理添加裁判操作,提高用户体验
- 修改项目列表显示逻辑,仅显示项目名称
- 增加错误处理和用户提示消息
- 优化默认赛事添加裁判功能
zhou 11 tuntia sitten
vanhempi
sitoutus
eef17ca7e0

+ 38 - 15
src/views/system/gameEvent/RefereeForm.vue

@@ -57,24 +57,47 @@ const allProjects = ref<{key: string, label: string }[]>([]);
 const eventId = ref<string>(''); // 新增:用于存储赛事ID
 
 const loadProjects = async () => {
-  const res = await listGameEventProject({
-    eventId: eventId.value, // 使用传递进来的赛事ID
-    pageNum: 1,
-    pageSize: 10,
-    orderByColumn: undefined,
-    isAsc: undefined,
-  });
-  allProjects.value = res.rows.map(item => ({
-    key: String(item.projectId),
-    label: `${item.projectName} - ${item.groupType}`
-  }));
-  console.log(allProjects.value);
+  try {
+    const res = await listGameEventProject({
+      eventId: eventId.value, // 使用传递进来的赛事ID
+      pageNum: 1,
+      pageSize: 1000, // 增加页面大小,确保获取所有项目
+      orderByColumn: undefined,
+      isAsc: undefined,
+    });
+    
+    allProjects.value = res.rows.map(item => ({
+      key: String(item.projectId),
+      label: item.projectName || '未命名项目' // 只显示项目名称,不拼接组别
+    }));
+    
+  } catch (error) {
+    console.error('加载项目失败:', error);
+    ElMessage.error('加载项目失败');
+  }
 };
 
 const openDialog = async (eventIdParam: string) => {
-  eventId.value = eventIdParam; // 接收并设置赛事ID
-  await loadProjects();
-  dialog.visible = true;
+  try {
+    
+    if (!eventIdParam) {
+      ElMessage.error('赛事ID不能为空');
+      return;
+    }
+    
+    eventId.value = eventIdParam; // 接收并设置赛事ID
+    
+    // 重置表单数据
+    form.account = '';
+    form.password = '';
+    form.projectIds = [];
+    
+    await loadProjects();
+    dialog.visible = true;
+  } catch (error) {
+    console.error('打开对话框失败:', error);
+    ElMessage.error('打开对话框失败');
+  }
 };
 
 const cancel = () => {

+ 37 - 8
src/views/system/gameEvent/index.vue

@@ -674,10 +674,25 @@ const handleAddParticipant = (row: GameEventVO) => {
   });
 };
 
-// 添加裁判按钮操作                                                                                                         1
+// 添加裁判按钮操作
 const handleAddReferee = async (row: GameEventVO) => {
-  // 打开裁判表单对话框并传递 eventId
-  refereeFormRef.value?.openDialog(String(row.eventId));
+  try {
+    if (!row.eventId) {
+      proxy?.$modal.msgError('赛事ID不能为空');
+      return;
+    }
+    
+    if (!refereeFormRef.value) {
+      proxy?.$modal.msgError('裁判表单组件未初始化');
+      return;
+    }
+    
+    // 打开裁判表单对话框并传递 eventId
+    refereeFormRef.value.openDialog(String(row.eventId));
+  } catch (error) {
+    console.error('添加裁判失败:', error);
+    proxy?.$modal.msgError('添加裁判失败');
+  }
 };
 
 // 预览按钮点击事件
@@ -919,12 +934,19 @@ const handleAddParticipantDefault = async () => {
 
 /** 添加裁判(默认赛事) */
 const handleAddRefereeDefault = async () => {
-  const defaultEvent = gameEventStore.defaultEventInfo;
-  if (!defaultEvent) {
-    proxy?.$modal.msgError('请先设置默认赛事');
-    return;
+  try {
+    const defaultEvent = gameEventStore.defaultEventInfo;
+    
+    if (!defaultEvent) {
+      proxy?.$modal.msgError('请先设置默认赛事');
+      return;
+    }
+    
+    await handleAddReferee(defaultEvent);
+  } catch (error) {
+    console.error('默认赛事添加裁判失败:', error);
+    proxy?.$modal.msgError('添加裁判失败');
   }
-  handleAddReferee(defaultEvent);
 };
 
 /** 预览(默认赛事) */
@@ -975,6 +997,13 @@ onMounted(() => {
   // 获取默认赛事信息
   gameEventStore.fetchDefaultEvent();
   getList();
+  
+  // 检查组件引用是否正确初始化
+  nextTick(() => {
+    console.log('组件引用检查:');
+    console.log('refereeFormRef.value:', refereeFormRef.value);
+    console.log('bibViewerDialogRef.value:', bibViewerDialogRef.value);
+  });
 });
 
 // 监听路由变化,当从编辑页返回时检查是否需要刷新列表

+ 1 - 1
src/views/system/gameReferee/index.vue

@@ -290,7 +290,7 @@ const loadProjects = async () => {
   // 赛事项目穿梭框可选数据拼接
   allProjects.value = res.rows.map(item => ({
     key: String(item.projectId),
-    label: `${item.projectName}-${item.groupType}` 
+    label: `${item.projectName}` 
   }));
 };