Ver código fonte

feat(judge): 添加裁判表单中的机构和职务选择功能

- 在裁判表单中新增机构输入字段
- 添加职务选择下拉框,支持从职务列表中选择
- 集成职务选择API,实现职务数据的获取和展示
- 修改表单验证配置以支持新字段
- 优化表单布局结构,提升用户体验
fugui001 2 semanas atrás
pai
commit
2640dd9cb5

+ 4 - 0
src/api/system/physical/judge/types.ts

@@ -40,6 +40,10 @@ export interface JudgeForm extends BaseEntity {
    * 工作年限(年)
    */
   workYears?: number;
+
+  positionId?: number;
+
+  organization?: string;
 }
 
 export interface JudgeQuery extends PageQuery {

+ 34 - 1
src/views/system/physical/judge/index.vue

@@ -122,10 +122,17 @@
             </el-upload>
           </div>
         </el-form-item>
-
         <el-form-item label="工作年限" prop="workYears">
           <el-input v-model="form.workYears" placeholder="请输入工作年限" />
         </el-form-item>
+        <el-form-item label="机构" prop="workYears">
+          <el-input v-model="form.organization" placeholder="请输入机构" />
+        </el-form-item>
+        <el-form-item label="职务选择" prop="positionId">
+          <el-select v-model="form.positionId" placeholder="请选择职务">
+            <el-option v-for="item in positionOptions" :key="item.id" :label="item.label" :value="item.id" />
+          </el-select>
+        </el-form-item>
       </el-form>
       <template #footer>
         <div class="dialog-footer">
@@ -191,6 +198,7 @@ import { JudgeVO, JudgeQuery, JudgeForm } from '@/api/system/physical/judge/type
 import { uploadTournament } from '@/api/system/business/tournaments';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 import { parseTime } from '@/utils/dateUtils';
+import { selectJudgePositionSelList } from '@/api/system/physical/judgePosition';
 const judgeList = ref<JudgeVO[]>([]);
 const buttonLoading = ref(false);
 const loading = ref(true);
@@ -345,6 +353,7 @@ const handleExport = () => {
 
 onMounted(() => {
   getList();
+  loadPositionOptions();
 });
 // 裁判图片上传相关
 const judgeIconPreviewUrl = ref('');
@@ -525,4 +534,28 @@ const submitImportForm = () => {
     }
   });
 };
+
+const positionOptions = ref<{ id: number; label: string }[]>([]);
+const loadPositionOptions = async () => {
+  try {
+    const res = await selectJudgePositionSelList();
+    if (res.code === 200) {
+      // 使用 unknown 中间类型进行类型转换
+      const data = res.data as unknown as { id: number; name: string }[];
+      const list = [];
+      for (let i = 0; i < data.length; i++) {
+        const item = data[i];
+        list.push({
+          id: item.id,
+          label: item.name
+        });
+      }
+      positionOptions.value = list;
+    } else {
+      alert('加载失败:' + res.msg);
+    }
+  } catch (error) {
+    console.error('请求出错:', error);
+  }
+};
 </script>