Преглед на файлове

feat(system): 添加赛事项目报名人数限制功能

- 在GameEventProject类型定义中新增limitMale、limitFemale、limitTeam字段
- 用于限制个人项目的男女报名人数和个人/团体项目的队伍数量
- 在表单界面添加报名限制配置区域,区分个人项目和团体项目的不同配置方式
- 个人项目显示限报男、限报女字段
- 团体项目显示限报队数、每队限男、每队限女字段
- 初始化表单数据时设置默认值为0
zhou преди 2 седмици
родител
ревизия
79f20caf5a
променени са 2 файла, в които са добавени 79 реда и са изтрити 1 реда
  1. 39 0
      src/api/system/gameEventProject/types.ts
  2. 40 1
      src/views/system/gameEventProject/index.vue

+ 39 - 0
src/api/system/gameEventProject/types.ts

@@ -157,6 +157,19 @@ export interface GameEventProjectVO {
    * 成绩数量
    */
   scoreCount: number;
+
+  /**
+   * 限报男生人数(个人项目总计/团体项目每队)
+   */
+  limitMale?: number;
+  /**
+   * 限报女生人数(个人项目总计/团体项目每队)
+   */
+  limitFemale?: number;
+  /**
+   * 团体项目限报队伍数
+   */
+  limitTeam?: number;
 }
 
 export interface GameEventProjectForm extends BaseEntity {
@@ -299,6 +312,19 @@ export interface GameEventProjectForm extends BaseEntity {
    * 成绩数量
    */
   scoreCount?: number;
+
+  /**
+   * 限报男生人数(个人项目总计/团体项目每队)
+   */
+  limitMale?: number;
+  /**
+   * 限报女生人数(个人项目总计/团体项目每队)
+   */
+  limitFemale?: number;
+  /**
+   * 团体项目限报队伍数
+   */
+  limitTeam?: number;
 }
 
 export interface GameEventProjectQuery extends PageQuery {
@@ -347,6 +373,19 @@ export interface GameEventProjectQuery extends PageQuery {
    */
   status?: string;
 
+  /**
+   * 限报男生人数(个人项目总计/团体项目每队)
+   */
+  limitMale?: number;
+  /**
+   * 限报女生人数(个人项目总计/团体项目每队)
+   */
+  limitFemale?: number;
+  /**
+   * 团体项目限报队伍数
+   */
+  limitTeam?: number;
+
   /**
    * 日期范围参数
    */

+ 40 - 1
src/views/system/gameEventProject/index.vue

@@ -381,6 +381,42 @@
             </el-form-item>
           </el-col>
         </el-row>
+
+        <el-divider content-position="left">
+          <el-icon style="vertical-align: middle; margin-right: 5px;"><User /></el-icon>
+          <span style="vertical-align: middle; font-weight: bold;">报名限制</span>
+        </el-divider>
+        <el-row :gutter="20">
+          <template v-if="form.classification === '0'">
+            <el-col :span="12">
+              <el-form-item label="限报男" prop="limitMale">
+                <el-input-number v-model="form.limitMale" :min="0" style="width: 100%" placeholder="限报男生人数" controls-position="right" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="限报女" prop="limitFemale">
+                <el-input-number v-model="form.limitFemale" :min="0" style="width: 100%" placeholder="限报女生人数" controls-position="right" />
+              </el-form-item>
+            </el-col>
+          </template>
+          <template v-else-if="form.classification === '1'">
+            <el-col :span="8">
+              <el-form-item label="限报队数" prop="limitTeam">
+                <el-input-number v-model="form.limitTeam" :min="0" style="width: 100%" placeholder="限报队伍数" controls-position="right" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="每队限男" prop="limitMale">
+                <el-input-number v-model="form.limitMale" :min="0" style="width: 100%" placeholder="每队限报男生" controls-position="right" />
+              </el-form-item>
+            </el-col>
+            <el-col :span="8">
+              <el-form-item label="每队限女" prop="limitFemale">
+                <el-input-number v-model="form.limitFemale" :min="0" style="width: 100%" placeholder="每队限报女生" controls-position="right" />
+              </el-form-item>
+            </el-col>
+          </template>
+        </el-row>
         
         <el-divider content-position="left">
           <el-icon style="vertical-align: middle; margin-right: 5px;"><EditPen /></el-icon>
@@ -523,7 +559,10 @@ const initFormData: GameEventProjectForm = {
   timingFormat: '0',
   distanceMode: '0',
   countUnit: '个',
-  scoreCount: 1
+  scoreCount: 1,
+  limitMale: 0,
+  limitFemale: 0,
+  limitTeam: 0
 };
 const data = reactive<PageData<GameEventProjectForm, GameEventProjectQuery>>({
   form: { ...initFormData },