This commit is contained in:
guochunsi
2026-01-16 15:04:30 +08:00
parent 358b08bb79
commit 2169bfee92
5 changed files with 374 additions and 316 deletions

View File

@@ -3,217 +3,268 @@
:title="!dataForm.id ? '新增' : '修改'"
:close-on-click-modal="false"
v-model="visible"
width="600px"
width="900px"
>
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="dataFormSubmit" label-width="120px">
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="招生计划" prop="groupId">
<el-select v-model="dataForm.groupId" filterable placeholder="请选择招生计划" :disabled="!!dataForm.id">
<el-option
v-for="item in planListLocal"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="姓名" prop="name">
<el-input v-model="dataForm.name" placeholder="姓名"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="电话" prop="phone">
<el-input v-model="dataForm.phone" placeholder="电话"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="dataForm.gender">
<el-radio v-for="item in sexyList" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="身份证" prop="idCard">
<el-input v-model="dataForm.idCard" placeholder="身份证"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="准考证" prop="admission">
<el-input v-model="dataForm.admission" placeholder="准考证"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="中考成绩" prop="achievement">
<el-input-number v-model="dataForm.achievement" :min="0" :max="700" placeholder="中考成绩" ></el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="对接人" prop="djUser" v-auth="'recruit_recruitprestudent_dj_sure'">
<el-select v-model="dataForm.djUser" filterable clearable placeholder="" >
<el-option
v-for="item in contactNameList"
:key="item.teacherNo"
:label="item.realName+'-'+item.deptCode"
:value="item.teacherNo">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="学校" prop="schoolId">
<el-select v-model="dataForm.schoolId" filterable placeholder="请选择学校" >
<el-option
v-for="item in schoolList"
:key="item.id"
:label="item.schoolName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="招生计划名称" prop="groupId">
<el-select v-model="dataForm.groupId" filterable placeholder="请选择招生计划" :disabled="!!dataForm.id">
<el-option
v-for="item in planListLocal"
:key="item.id"
:label="item.groupName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="dataForm.name" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item label="电话" prop="phone">
<el-input v-model="dataForm.phone" placeholder="电话"></el-input>
</el-form-item>
<el-form-item label="身份证" prop="idCard">
<el-input v-model="dataForm.idCard" placeholder="身份证"></el-input>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-select v-model="dataForm.gender">
<el-option
v-for="item in sexyList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="准考证" prop="admission">
<el-input v-model="dataForm.admission" placeholder="准考证"></el-input>
</el-form-item>
<el-form-item label="中考成绩" prop="achievement">
<el-input-number v-model="dataForm.achievement" :min="0" :max="700" placeholder="中考成绩"></el-input-number>
</el-form-item>
<el-form-item label="对接人" prop="djUser" v-if="permissions.recruit_recruitprestudent_dj_sure">
<el-select v-model="dataForm.djUser" filterable clearable placeholder="">
<el-option
v-for="item in contactNameList"
:key="item.teacherNo"
:label="item.realName+'-'+item.deptCode"
:value="item.teacherNo">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="学校" prop="schoolId">
<el-select v-model="dataForm.schoolId" filterable placeholder="请选择学校">
<el-option
v-for="item in schoolList"
:key="item.id"
:label="item.schoolName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业1" prop="planMajorOne">
<el-select v-model="dataForm.planMajorOne" filterable placeholder="请选择拟报专业1">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业2" prop="planMajorTwo">
<el-select v-model="dataForm.planMajorTwo" filterable clearable placeholder="请选择拟报专业2">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业3" prop="planMajorThree">
<el-select v-model="dataForm.planMajorThree" filterable clearable placeholder="请选择拟报专业3">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业4" prop="planMajorFour">
<el-select v-model="dataForm.planMajorFour" filterable clearable placeholder="请选择拟报专业4">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业5" prop="planMajorFive">
<el-select v-model="dataForm.planMajorFive" filterable clearable placeholder="请选择拟报专业5">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业6" prop="planMajorSix">
<el-select v-model="dataForm.planMajorSix" filterable clearable placeholder="请选择拟报专业6">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业7" prop="planMajorSeven">
<el-select v-model="dataForm.planMajorSeven" filterable clearable placeholder="请选择拟报专业7">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业8" prop="planMajorEight">
<el-select v-model="dataForm.planMajorEight" filterable clearable placeholder="请选择拟报专业8">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业9" prop="planMajorNine">
<el-select v-model="dataForm.planMajorNine" filterable clearable placeholder="请选择拟报专业9">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业10" prop="planMajorTen">
<el-select v-model="dataForm.planMajorTen" filterable clearable placeholder="请选择拟报专业10">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业11" prop="planMajorEleven">
<el-select v-model="dataForm.planMajorEleven" filterable clearable placeholder="请选择拟报专业11">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="拟报专业12" prop="planMajorTwelve">
<el-select v-model="dataForm.planMajorTwelve" filterable clearable placeholder="请选择拟报专业12">
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="拟报专业1" prop="planMajorOne">
<el-select v-model="dataForm.planMajorOne" filterable placeholder="请选择拟报专业1" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟报专业2" prop="planMajorTwo">
<el-select v-model="dataForm.planMajorTwo" filterable clearable placeholder="请选择拟报专业2" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="拟报专业3" prop="planMajorThree">
<el-select v-model="dataForm.planMajorThree" filterable clearable placeholder="请选择拟报专业3" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟报专业4" prop="planMajorFour">
<el-select v-model="dataForm.planMajorFour" filterable clearable placeholder="请选择拟报专业4" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="拟报专业5" prop="planMajorFive">
<el-select v-model="dataForm.planMajorFive" filterable clearable placeholder="请选择拟报专业5" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟报专业6" prop="planMajorSix">
<el-select v-model="dataForm.planMajorSix" filterable clearable placeholder="请选择拟报专业6" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="拟报专业7" prop="planMajorSeven">
<el-select v-model="dataForm.planMajorSeven" filterable clearable placeholder="请选择拟报专业7" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟报专业8" prop="planMajorEight">
<el-select v-model="dataForm.planMajorEight" filterable clearable placeholder="请选择拟报专业8" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="拟报专业9" prop="planMajorNine">
<el-select v-model="dataForm.planMajorNine" filterable clearable placeholder="请选择拟报专业9" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟报专业10" prop="planMajorTen">
<el-select v-model="dataForm.planMajorTen" filterable clearable placeholder="请选择拟报专业10" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="拟报专业11" prop="planMajorEleven">
<el-select v-model="dataForm.planMajorEleven" filterable clearable placeholder="请选择拟报专业11" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="拟报专业12" prop="planMajorTwelve">
<el-select v-model="dataForm.planMajorTwelve" filterable clearable placeholder="请选择拟报专业12" >
<el-option
v-for="item in planMajorList"
:key="item.id"
:label="item.majorName"
:value="item.id"
:disabled="isDisable(item.id)"
>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
@@ -226,14 +277,12 @@
</template>
<script setup lang="ts">
import { ref, reactive, computed, nextTick } from 'vue'
import { storeToRefs } from 'pinia'
import { useUserInfo } from '/@/stores/userInfo'
import { ref, reactive, nextTick } from 'vue'
import { ElNotification } from 'element-plus'
import { getObj, addObjStu, putObj } from '/@/api/recruit/recruitprestudent'
import { queryTeacherBaseByNoByAssets } from '/@/api/professional/professionaluser/teacherbase'
import { getList } from '/@/api/recruit/recruitstudentplangroup'
import { getDicts } from '/@/api/admin/dict'
import { queryAllTeacherByRecruit } from '/@/api/professional/professionaluser/teacherbase'
// Props
const props = defineProps<{
@@ -247,19 +296,6 @@ const emit = defineEmits<{
(e: 'refreshDataList'): void
}>()
// 使用 Pinia store
const userInfoStore = useUserInfo()
const { userInfos } = storeToRefs(userInfoStore)
// 创建权限对象
const permissions = computed(() => {
const perms: Record<string, boolean> = {}
userInfos.value.authBtnList.forEach((perm: string) => {
perms[perm] = true
})
return perms
})
// 表单引用
const dataFormRef = ref()
@@ -386,7 +422,7 @@ const dataFormSubmit = () => {
// 初始化方法
const init = (id: string | null) => {
dataForm.id = id || null
dataForm.id = id || ""
visible.value = true
canSubmit.value = true
@@ -399,7 +435,12 @@ const init = (id: string | null) => {
getDicts('sexy').then((res: any) => {
sexyList.value = res.data || []
})
// 这里如果需要教师列表,可以改用新的教师接口;当前项目中常用的是 queryTeacherBaseByNoByAssets
// 获取教师列表(对接人)
queryAllTeacherByRecruit().then((res: any) => {
contactNameList.value = res.data || []
}).catch(() => {
contactNameList.value = []
})
if (dataForm.id) {
getObj(dataForm.id).then((response: any) => {
Object.assign(dataForm, response.data)
@@ -424,7 +465,12 @@ defineExpose({
})
</script>
<style scoped>
<style lang="scss" scoped>
.el-form {
.el-form-item:last-of-type {
margin-bottom: 18px!important;
}
}
.dialog-footer {
text-align: right;
}