Bläddra i källkod

feat(gameEventProject): 更新参赛组别字段映射

- 将原groups字段替换为rgName(参赛组别名称)和rgId(排名分组ID)
- 更新类型定义中的接口字段
- 修改表格列的prop属性指向rgName字段
- 调整表单选择器绑定到rgId并添加变更处理函数
- 初始化数据中更新对应字段名称
zhou 2 veckor sedan
förälder
incheckning
06080e0b0a
2 ändrade filer med 29 tillägg och 8 borttagningar
  1. 13 3
      src/api/system/gameEventProject/types.ts
  2. 16 5
      src/views/system/gameEventProject/index.vue

+ 13 - 3
src/api/system/gameEventProject/types.ts

@@ -123,7 +123,12 @@ export interface GameEventProjectVO {
   /**
    * 参赛组别
    */
-  groups: string;
+  rgName: string;
+
+  /**
+   * 排名分组ID
+   */
+  rgId: string | number;
 
   /**
    * 参赛人数
@@ -289,9 +294,14 @@ export interface GameEventProjectForm extends BaseEntity {
   gender?: string;
 
   /**
-   * 参赛组别(多选用数组,提交前转字符串)
+   * 参赛组别名称
+   */
+  rgName?: string;
+
+  /**
+   * 排名分组ID
    */
-  groups?: string | string[];
+  rgId?: string | number;
 
   /**
    * 计时格式

+ 16 - 5
src/views/system/gameEventProject/index.vue

@@ -74,7 +74,7 @@
             <dict-tag :options="sys_group_sex" :value="scope.row.gender || ''" />
           </template>
         </el-table-column>
-        <el-table-column label="参赛组别" align="center" width="120" prop="groups" v-if="columns[18]?.visible" />
+        <el-table-column label="参赛组别" align="center" width="120" prop="rgName" v-if="columns[18]?.visible" />
         <el-table-column label="比赛阶段" align="center" prop="gameStage" v-if="columns[13].visible">
           <template #default="scope">
             <dict-tag :options="game_stage" :value="scope.row.gameStage || ''" />
@@ -199,10 +199,10 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="参赛组别" prop="groups">
+            <el-form-item label="参赛组别" prop="rgId">
               <div style="display: flex; width: 100%; align-items: center">
-                <el-select v-model="form.groups" filterable placeholder="请选择参赛组别" style="flex: 1">
-                  <el-option v-for="item in rankGroupOptions" :key="item.rgId" :label="item.rgName" :value="item.rgName" />
+                <el-select v-model="form.rgId" filterable placeholder="请选择参赛组别" style="flex: 1" @change="handleRankGroupChange">
+                  <el-option v-for="item in rankGroupOptions" :key="item.rgId" :label="item.rgName" :value="item.rgId" />
                 </el-select>
                 <el-button link type="primary" icon="Plus" style="margin-left: 5px; font-size: 18px" @click="handleAddRankGroup" />
               </div>
@@ -553,7 +553,8 @@ const initFormData: GameEventProjectForm = {
   gameRound: undefined,
   gameStage: undefined,
   gender: undefined,
-  groups: undefined,
+  rgName: undefined,
+  rgId: undefined,
   status: '0',
   remark: undefined,
   timingFormat: '0',
@@ -736,6 +737,16 @@ watch(() => form.value.scoreRule, (newVal) => {
   }
 });
 
+/** 参赛组别切换 */
+const handleRankGroupChange = (val: string | number) => {
+  const group = rankGroupOptions.value.find(item => item.rgId === val);
+  if (group) {
+    form.value.rgName = group.rgName;
+  } else {
+    form.value.rgName = undefined;
+  }
+};
+
 /** 处理排名方式切换逻辑 */
 const handleOrderChange = (type: number) => {
   if (type === 3 && orderGroup.val3 === '4') {