Переглянути джерело

feat(tournaments): 添加起始盲注级别配置功能

- 在赛事和模板页面增加起始盲注级别下拉选择框
- 新增起始盲注级别字段到表单数据模型
- 扩展API类型定义以支持起始盲注级别参数
- 初始化并同步三级盲注结构选项数据
- 更新详情接口调用逻辑以填充起始盲注级别值
fugui001 2 тижнів тому
батько
коміт
2e3e777864

+ 1 - 0
src/api/system/business/tournaments/types.ts

@@ -171,6 +171,7 @@ export interface TournamentsForm extends BaseEntity {
   gameVariant?: string;
   qualifierType?: string;
   qualifierValue?: number;
+  startBlindLevel?: number;
   targetTournamentId?: number;
   introduction?: string;
 }

+ 2 - 0
src/api/system/business/tournamentsTemplate/types.ts

@@ -62,6 +62,7 @@ export interface TournamentsVO {
   signTime?: number;
   gameVariant?: number;
   qualifierType?: number;
+  startBlindLevel?: number;
   /**
    * 道具ID
    */
@@ -108,6 +109,7 @@ export interface TournamentsForm extends BaseEntity {
   qualifierType?: string;
   qualifierValue?: string;
   targetTournamentId?: number;
+  startBlindLevel?: number;
 
   /**
    * 起始记分牌数量

+ 8 - 1
src/views/system/business/tournaments/index.vue

@@ -403,6 +403,7 @@
         <el-form-item label="晋级条件值" prop="qualifierValue" v-if="form.qualifierType === '2'">
           <el-input v-model="form.qualifierValue" placeholder="请输入晋级条件值" :disabled="dialog.mode === 'view'" />
         </el-form-item>
+
         <el-form-item label="报名时长" prop="signTime">
           <el-select v-model="form.signTime" placeholder="请选择" :disabled="dialog.mode === 'view'">
             <el-option v-for="dict in tournaments_time" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
@@ -470,7 +471,11 @@
             <el-option v-for="item in itemOptionsStructuresLevel2" :key="item.id" :label="item.label" :value="item.id" />
           </el-select>
         </el-form-item>
-
+        <el-form-item label="起始级别" prop="startBlindLevel">
+          <el-select v-model="form.startBlindLevel" placeholder="选项" style="width: 200px" :disabled="dialog.mode === 'view'">
+            <el-option v-for="item in itemOptionsStructuresLevel3" :key="item.id" :label="item.label" :value="item.id" />
+          </el-select>
+        </el-form-item>
         <el-form-item label="起始记分牌数量" prop="startingChips">
           <el-input v-model="form.startingChips" placeholder="请输入起始记分牌数量" :disabled="dialog.mode === 'view'" />
         </el-form-item>
@@ -815,6 +820,7 @@ const loadItemStructuresOptions = async () => {
 // 下拉选项数据
 const itemOptionsStructuresLevel = ref<{ id: number; label: string }[]>([]);
 const itemOptionsStructuresLevel2 = ref<{ id: number; label: string }[]>([]);
+const itemOptionsStructuresLevel3 = ref<{ id: number; label: string }[]>([]);
 // 加载报名条件选项
 const handleBlindStructureChange = async (value: number) => {
   //data.form.lateRegistrationLevel = null;
@@ -833,6 +839,7 @@ const handleBlindStructureChange = async (value: number) => {
       }
       itemOptionsStructuresLevel.value = list;
       itemOptionsStructuresLevel2.value = list;
+      itemOptionsStructuresLevel3.value = list;
       // 判断当前选择的 lateRegistrationLevel 是否在新列表中
       const currentLevel = data.form.lateRegistrationLevel;
       if (currentLevel && !list.some((item) => item.id === currentLevel)) {

+ 9 - 0
src/views/system/business/tournamentsTemplate/index.vue

@@ -329,6 +329,12 @@
           </el-select>
         </el-form-item>
 
+        <el-form-item label="起始级别" prop="startBlindLevel">
+          <el-select v-model="form.startBlindLevel" placeholder="选项" style="width: 200px" :disabled="dialog.mode === 'view'">
+            <el-option v-for="item in itemOptionsStructuresLevel3" :key="item.id" :label="item.label" :value="item.id" />
+          </el-select>
+        </el-form-item>
+
         <el-form-item label="起始记分牌数量" prop="startingChips">
           <el-input v-model="form.startingChips" placeholder="请输入起始记分牌数量" :disabled="dialog.mode === 'view'" />
         </el-form-item>
@@ -574,6 +580,7 @@ const loadItemStructuresOptions = async () => {
 // 下拉选项数据
 const itemOptionsStructuresLevel = ref<{ id: number; label: string }[]>([]);
 const itemOptionsStructuresLevel2 = ref<{ id: number; label: string }[]>([]);
+const itemOptionsStructuresLevel3 = ref<{ id: number; label: string }[]>([]);
 // 加载报名条件选项
 const handleBlindStructureChange = async (value: number) => {
   //data.form.lateRegistrationLevel = null;
@@ -592,6 +599,7 @@ const handleBlindStructureChange = async (value: number) => {
       }
       itemOptionsStructuresLevel.value = list;
       itemOptionsStructuresLevel2.value = list;
+      itemOptionsStructuresLevel3.value = list;
       // 判断当前选择的 lateRegistrationLevel 是否在新列表中
       const currentLevel = data.form.lateRegistrationLevel;
       if (currentLevel && !list.some((item) => item.id === currentLevel)) {
@@ -916,6 +924,7 @@ const handleUpdate = async (row?: TournamentsVO, mode: 'edit' | 'view' = 'edit')
   form.value.signTime = signTime;
   form.value.gameVariant = String(res.data.gameVariant);
   form.value.qualifierType = String(res.data.qualifierType);
+  form.value.startBlindLevel = Number(res.data.startBlindLevel);
   competitionBg.value = res.data.competitionBg;
   competitionIcon.value = res.data.competitionIcon;
   // 处理奖励表单数据