Эх сурвалжийг харах

feat(gameAthlete): 添加手机号字段并优化表单和列显示

- 在运动员列表中新增“手机号”列,并控制其显示状态
- 在新增/编辑表单中添加手机号输入项
- 调整列配置,将手机号列设置为默认显示
- 优化项目列表提交逻辑,移除冗余代码
- 在赛事项目运动员表单中也增加手机号输入框
- 使用字典数据渲染性别选项,替换原有硬编码
- 初始化表单字段为 undefined,避免空字符串导致的问题
zhou 3 долоо хоног өмнө
parent
commit
083bb2c713

+ 5 - 2
src/views/system/gameAthlete/index.vue

@@ -66,6 +66,7 @@
           </template>
         </el-table-column>
         <el-table-column label="年龄" align="center" prop="age" v-if="columns[5].visible" />
+        <el-table-column label="手机号" align="center" prop="phone" v-if="columns[11].visible" />
         <el-table-column label="参与项目" align="center" prop="projectList" width="200px" v-if="columns[6].visible">
           <template #default="scope">
             {{ formatProjectList(scope.row.projectList) }}
@@ -125,6 +126,9 @@
         <el-form-item label="年龄" prop="age">
           <el-input v-model="form.age" placeholder="请输入年龄" />
         </el-form-item>
+        <el-form-item label="手机号" prop="phone">
+          <el-input v-model="form.phone" placeholder="请输入手机号" />
+        </el-form-item>
         <el-form-item label="参与项目" prop="projectList">
           <el-transfer
             v-model="projectListStr"
@@ -230,6 +234,7 @@ const columns = ref<FieldOption[]>([
   // { key: 14, label: '号码', visible: true },
   { key: 9, label: '状态', visible: true },
   { key: 10, label: '备注', visible: true },
+  { key: 11, label: '手机号', visible: true },
 ]);
 
 const queryFormRef = ref<ElFormInstance>();
@@ -472,9 +477,7 @@ const submitForm = () => {
         const submitForm = { ...form.value };
         if (submitForm.selectedProjects && submitForm.selectedProjects.length > 0) {
           submitForm.projectList = submitForm.selectedProjects;
-          // submitForm.projectValue = submitForm.selectedProjects.join(',');
         } else {
-          // submitForm.projectValue = '';
           submitForm.projectList = [];
         }
         // 删除selectedProjects属性,因为它不需要提交到后端

+ 18 - 7
src/views/system/gameEvent/athlete.vue

@@ -44,13 +44,20 @@
           <el-col :span="12">
             <el-form-item label="性别" prop="gender">
               <el-radio-group v-model="athleteForm.gender">
-                <el-radio value="0">男</el-radio>
-                <el-radio value="1">女</el-radio>
+                <el-radio v-for="item in sys_user_sex" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
               </el-radio-group>
             </el-form-item>
           </el-col>
         </el-row>
 
+        <el-row :gutter="20">
+          <el-col :span="12">
+            <el-form-item label="手机号" prop="phone">
+              <el-input v-model="athleteForm.phone" placeholder="输入号码" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+
         <el-row :gutter="20">
           <el-col :span="24">
             <el-form-item label="赛事项目" prop="projectValue">
@@ -80,6 +87,9 @@ import { listGameEventProject } from '@/api/system/gameEventProject';
 import { addGameAthlete } from '@/api/system/gameAthlete';
 import { GameAthleteForm } from '@/api/system/gameAthlete/types';
 
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { sys_user_sex, game_event_status } = toRefs<any>(proxy?.useDict('sys_user_sex','game_event_status'));
+
 const router = useRouter();
 const route = useRoute();
 
@@ -87,12 +97,13 @@ const athleteFormRef = ref<any>(null);
 
 const athleteForm = reactive({
   eventId: route.params.eventId as string,
-  eventName: '',
-  name: '',
-  athleteCode: '',
-  unit: '',
+  eventName: undefined,
+  name: undefined,
+  athleteCode: undefined,
+  unit: undefined,
   age: 0,
-  gender: '',
+  gender: '1',
+  phone: undefined,
   projectValue: [] as number[]  // 确保初始化为数组
 });