This commit is contained in:
guochunsi
2026-01-21 19:32:54 +08:00
parent 2034b49934
commit f06a784018
2 changed files with 178 additions and 149 deletions

View File

@@ -37,9 +37,31 @@
<el-input type="text" v-model="dataForm.oldName" :disabled="!isEdit"></el-input> <el-input type="text" v-model="dataForm.oldName" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6">
<el-form-item label="证件类型" prop="idCardType">
<el-select v-model="dataForm.idCardType" filterable placeholder="请选择证件类型" class="w-full" :disabled="!isEdit">
<el-option
v-for="item in idCardTypeList"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="身份证号" prop="idNumber">
<el-input
v-model="dataForm.idNumber"
placeholder="身份证号"
maxlength="20"
v-input-filter="'idcard'">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="性别" prop="gender"> <el-form-item label="性别" prop="gender">
<el-select v-model="dataForm.gender" class="w-full" :disabled="!isEdit" > <el-select v-model="dataForm.gender" class="w-full" :disabled="!isEdit || dataForm.idCardType=='0'" >
<el-option <el-option
v-for="item in sexy" v-for="item in sexy"
:key="item.value" :key="item.value"
@@ -51,7 +73,44 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="民族" prop="nationality"> <el-form-item label="民族" prop="nationality">
<el-input type="text" v-model="dataForm.nationality" :disabled="!isEdit"></el-input> <el-select v-model="dataForm.nationality" filterable placeholder="请选择民族" class="w-full" :disabled="!isEdit">
<el-option
v-for="item in nationalityList"
:key="item.nationCode"
:label="item.nationName"
:value="item.nationName">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="准考证号" prop="examRegistrationNumbers">
<el-input
v-model="dataForm.examRegistrationNumbers"
placeholder="准考证号"
maxlength="20"
:disabled="!isEdit"
v-input-filter="'alphanumeric'">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="成绩" prop="score">
<el-input-number
v-model="dataForm.score"
placeholder="成绩"
:min="0"
:max="1000"
:disabled="!isEdit"
@change="calculateCorrectedScore">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="form-row">
<el-col :span="12">
<el-form-item label="毕业学校" prop="schoolOfGraduation">
<el-input type="text" v-model="dataForm.schoolOfGraduation" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@@ -105,58 +164,46 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20" class="form-row">
<el-col :span="12">
<el-form-item label="毕业学校" prop="schoolOfGraduation">
<el-input type="text" v-model="dataForm.schoolOfGraduation" :disabled="!isEdit"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 证件信息 --> <!-- 证件信息 -->
<el-row :gutter="20" class="form-row">
<el-col :span="8">
<el-form-item label="身份证号" prop="idNumber">
<el-input
v-model="dataForm.idNumber"
placeholder="身份证号"
maxlength="20"
v-input-filter="'idcard'">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="准考证号" prop="examRegistrationNumbers">
<el-input
v-model="dataForm.examRegistrationNumbers"
placeholder="准考证号"
maxlength="20"
:disabled="!isEdit"
v-input-filter="'alphanumeric'">
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="成绩" prop="score">
<el-input-number
v-model="dataForm.score"
placeholder="成绩"
:min="0"
:max="1000"
:disabled="!isEdit"
@change="calculateCorrectedScore">
</el-input-number>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="dataForm.degreeOfEducation=='1'" :gutter="20" class="form-row"> <el-row v-if="dataForm.degreeOfEducation=='1'" :gutter="20" class="form-row">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="成绩折算分" prop="correctedScore"> <el-form-item label="学校归属地" prop="schoolArea">
<el-input-number <el-select v-model="dataForm.schoolArea" filterable placeholder="请选择学校归属地" class="w-full" :disabled="!isEdit" @change="changeFrom">
v-model="dataForm.correctedScore" <el-option
:min="0" v-for="item in schoolFromList"
:max="1000" :key="item.value"
disabled> :label="item.label"
</el-input-number> :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='2')" :span="6">
<el-form-item label="学校所在省市" prop="jsOtherCity">
<el-select v-model="dataForm.jsOtherCity" filterable placeholder="请选择学校所在省市" class="w-full"
:disabled="!isEdit" @change="changeSchoolCode">
<el-option
v-for="item in schoolCodeList"
:key="item.regionId"
:label="item.regionName"
:value="item.regionId">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='3')" :span="6">
<el-form-item label="外省" prop="otherProvince">
<el-select v-model="dataForm.otherProvince" filterable placeholder="请选择学校所在省市" class="w-full"
:disabled="!isEdit" @change="changeSchoolCode">
<el-option
v-for="item in areaHomeProvinceList"
:key="item.code"
:label="item.name"
:value="item.code">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@@ -171,48 +218,19 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="学校归属地" prop="schoolArea"> <el-form-item label="成绩折算分" prop="correctedScore">
<el-select v-model="dataForm.schoolArea" filterable placeholder="请选择学校归属地" class="w-full" :disabled="!isEdit" @change="changeFrom"> <el-input-number
<el-option v-model="dataForm.correctedScore"
v-for="item in schoolFromList" :min="0"
:key="item.value" :max="1000"
:label="item.label" disabled>
:value="item.value"> </el-input-number>
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='2')" :gutter="20" class="form-row">
<el-col :span="24">
<el-form-item label="学校所在省市" prop="jsOtherCity">
<el-select v-model="dataForm.jsOtherCity" filterable placeholder="请选择学校所在省市" class="w-full"
:disabled="!isEdit" @change="changeSchoolCode">
<el-option
v-for="item in schoolCodeList"
:key="item.regionId"
:label="item.regionName"
:value="item.regionId">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='3')" :gutter="20" class="form-row">
<el-col :span="24">
<el-form-item label="外省" prop="otherProvince">
<el-select v-model="dataForm.otherProvince" filterable placeholder="请选择学校所在省市" class="w-full"
:disabled="!isEdit" @change="changeSchoolCode">
<el-option
v-for="item in areaHomeProvinceList"
:key="item.code"
:label="item.name"
:value="item.code">
</el-option>
</el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<!-- 户口所在地 --> <!-- 户口所在地 -->
<el-row :gutter="20" class="form-row"> <el-row :gutter="20" class="form-row">
<el-col :span="12"> <el-col :span="12">
@@ -340,7 +358,7 @@
<!-- 专业信息 --> <!-- 专业信息 -->
<div class="form-section"> <div class="form-section">
<div class="section-title">专业信息</div> <div class="section-title">专业信息</div>
<el-row :gutter="20" class="form-row"> <el-row v-if="dataForm.id" :gutter="20" class="form-row">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="拟报专业1" prop="wishMajorOne"> <el-form-item label="拟报专业1" prop="wishMajorOne">
<el-select v-model="dataForm.wishMajorOne" filterable clearable placeholder="请选择专业" class="w-full"> <el-select v-model="dataForm.wishMajorOne" filterable clearable placeholder="请选择专业" class="w-full">
@@ -595,11 +613,11 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <!-- <el-col :span="8">
<el-form-item label="原序号" prop="oldSerialNumber"> <el-form-item label="原序号" prop="oldSerialNumber">
<el-input type="text" v-model="dataForm.oldSerialNumber" :disabled="!isEdit"></el-input> <el-input type="text" v-model="dataForm.oldSerialNumber" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col> -->
<el-col :span="8"> <el-col :span="8">
<el-form-item label="辨色力" prop="colorDiscrimination"> <el-form-item label="辨色力" prop="colorDiscrimination">
<el-select v-model="dataForm.colorDiscrimination" filterable clearable placeholder="请选择辨色力" class="w-full" :disabled="!isEdit"> <el-select v-model="dataForm.colorDiscrimination" filterable clearable placeholder="请选择辨色力" class="w-full" :disabled="!isEdit">
@@ -627,13 +645,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20" class="form-row">
<el-col :span="24">
<el-form-item label="审核备注" prop="auditRemarks">
<el-input type="textarea" v-model="dataForm.auditRemarks" placeholder="审核备注" :rows="2" :disabled="!isEdit"></el-input>
</el-form-item>
</el-col>
</el-row>
</div> </div>
</el-form> </el-form>
<template #footer v-if="isEdit"> <template #footer v-if="isEdit">
@@ -658,7 +669,7 @@ import { ref, reactive, nextTick, watch, computed } from 'vue'
import { ElNotification } from 'element-plus' import { ElNotification } from 'element-plus'
import { Picture } from '@element-plus/icons-vue' import { Picture } from '@element-plus/icons-vue'
import { useMessageBox } from '/@/hooks/message' import { useMessageBox } from '/@/hooks/message'
import { getObj, putObj, addObj } from '/@/api/recruit/recruitstudentsignup' import { getObj, putObj, addObj ,makeCorrectScore} from '/@/api/recruit/recruitstudentsignup'
import { list as listByGroupId } from '/@/api/recruit/recruitstudentschool' import { list as listByGroupId } from '/@/api/recruit/recruitstudentschool'
import { getList } from "/@/api/recruit/recruitstudentplangroup" import { getList } from "/@/api/recruit/recruitstudentplangroup"
import { listByEdu } from "/@/api/recruit/recruitstudentplan" import { listByEdu } from "/@/api/recruit/recruitstudentplan"
@@ -667,6 +678,7 @@ import { useDict } from '/@/hooks/dict'
import { areaList, areaSonList } from "/@/api/recruit/recruitstudentschool" import { areaList, areaSonList } from "/@/api/recruit/recruitstudentschool"
import { list as scoreList } from "/@/api/recruit/recruitstudentplancorrectscoreconfig" import { list as scoreList } from "/@/api/recruit/recruitstudentplancorrectscoreconfig"
import { queryAllTeacher } from "/@/api/professional/professionaluser/teacherbase" import { queryAllTeacher } from "/@/api/professional/professionaluser/teacherbase"
import { getNationalList } from "/@/api/basic/basicnation"
import { verifyIdCardAll, verifyAdmissionNumber } from '/@/utils/toolsValidate' import { verifyIdCardAll, verifyAdmissionNumber } from '/@/utils/toolsValidate'
const messageBox = useMessageBox() const messageBox = useMessageBox()
@@ -690,12 +702,7 @@ const eduList = ref<any[]>([])
const imgList = ref<string[]>([]) const imgList = ref<string[]>([])
const type = ref<number | null>(null) const type = ref<number | null>(null)
const isShow = ref(false) const isShow = ref(false)
const isEdit = ref(false)
// 计算属性:判断是否为编辑模式
const isEdit = computed(() => {
console.log(type.value)
return type.value === 1
})
// 户口性质 // 户口性质
const residenceTypeList = ref<any[]>([]) const residenceTypeList = ref<any[]>([])
const schoolCodeList = ref<any[]>([]) const schoolCodeList = ref<any[]>([])
@@ -719,7 +726,8 @@ const twoMajorList = ref<any[]>([])
const agencyFeeList = ref<any[]>([]) const agencyFeeList = ref<any[]>([])
const tuitionFeeList = ref<any[]>([]) const tuitionFeeList = ref<any[]>([])
const schoolFromList = ref<any[]>([]) const schoolFromList = ref<any[]>([])
const nationalityList = ref<any[]>([])
const idCardTypeList = ref<any[]>([])
const dataForm = reactive({ const dataForm = reactive({
id: "", id: "",
groupId: "", groupId: "",
@@ -788,6 +796,7 @@ const dataForm = reactive({
jsOtherCity:"", jsOtherCity:"",
householdPic:"", householdPic:"",
otherProvince:"", otherProvince:"",
idCardType:"",
scorePhotoList: [] as string[], scorePhotoList: [] as string[],
graPicList: [] as string[], graPicList: [] as string[],
yyPicList: [] as string[], yyPicList: [] as string[],
@@ -883,18 +892,15 @@ const dataRule = {
parentTel_1: [ parentTel_1: [
{required: true, message: '家长手机不能为空', trigger: 'change'} {required: true, message: '家长手机不能为空', trigger: 'change'}
], ],
wishMajor_1: [ // wishMajor_1: [
{required: true, message: '拟报专业不能为空', trigger: 'change'} // {required: true, message: '拟报专业不能为空', trigger: 'change'}
// ],
contactName: [
{required: true, message: '联系人不能为空', trigger: 'change'}
], ],
nutrition: [ colorDiscrimination: [
{required: true, message: '辨色力不能为空', trigger: 'change'} {required: true, message: '辨色力不能为空', trigger: 'change'}
], ],
height: [
{required: true, message: '身高cm不能为空', trigger: 'change'}
],
weight: [
{required: true, message: '体重kg不能为空', trigger: 'change'}
],
correctedScore:[ correctedScore:[
{required: true, message: '折算分不能为空', trigger: 'change'} {required: true, message: '折算分不能为空', trigger: 'change'}
] ]
@@ -904,6 +910,8 @@ const dataRule = {
const init = (id: string | null, typeParam: number) => { const init = (id: string | null, typeParam: number) => {
dataForm.id = id || null dataForm.id = id || null
type.value = typeParam type.value = typeParam
isEdit.value = typeParam == 1 ? true : false
console.log('typeParam',typeParam,'isEdit',isEdit.value)
visible.value = true visible.value = true
canSubmit.value = true canSubmit.value = true
initData() initData()
@@ -920,7 +928,8 @@ const init = (id: string | null, typeParam: number) => {
areaHomeAreaList.value = [] areaHomeAreaList.value = []
// 批量获取数据字典(新增和编辑都需要) 文化程度 学费 代办费 户口性质 学校归属地 // 批量获取数据字典(新增和编辑都需要) 文化程度 学费 代办费 户口性质 学校归属地
getDictsByTypes(['finance_student_source', 'agency_fee', 'tuition_fee','house_hold_properties','recruit_school_form']).then((res: any) => { getDictsByTypes(['id_type','finance_student_source', 'agency_fee', 'tuition_fee','house_hold_properties','recruit_school_form']).then((res: any) => {
idCardTypeList.value = res.data.id_type || []
eduList.value = res.data.finance_student_source || [] eduList.value = res.data.finance_student_source || []
agencyFeeList.value = res.data.agency_fee || [] agencyFeeList.value = res.data.agency_fee || []
tuitionFeeList.value = res.data.tuition_fee || [] tuitionFeeList.value = res.data.tuition_fee || []
@@ -1136,6 +1145,10 @@ const initData = () => {
getList().then((data: any) => { getList().then((data: any) => {
planList.value = data.data planList.value = data.data
}) })
// 获取民族列表
getNationalList().then((res: any) => {
nationalityList.value = res.data
})
} }
const changeFrom = () => { const changeFrom = () => {
@@ -1199,40 +1212,56 @@ const getGzAuditChange = () => {
// 计算成绩折算分 // 计算成绩折算分
const calculateCorrectedScore = () => { const calculateCorrectedScore = () => {
if (dataForm.score != undefined && dataForm.fullScore != undefined && dataForm.correctedScore != undefined && !isNaN(Number(dataForm.correctedScore))) { // 验证必要字段是否存在
dataForm.confirmedMajor = "" const hasFullScore = dataForm.fullScore != undefined && dataForm.fullScore != ""
let fjf = 20 const hasSchoolArea = dataForm.schoolArea != undefined && dataForm.schoolArea != ""
if (dataForm.schoolArea == "3") { // 验证外省或学校所在省市至少有一个存在
fjf = 30 const hasLocation = (dataForm.schoolArea === '2' && dataForm.jsOtherCity) ||
} (dataForm.schoolArea === '3' && dataForm.otherProvince)
const score = (parseFloat(String(dataForm.score)) * parseFloat("700"))
dataForm.correctedScore = String(Math.floor(score / parseFloat(String(dataForm.fullScore)) + fjf)) // 只有成绩、当地总分、学校归属地、外省/学校所在省市都存在时才能计算
// 根据折算分匹配录取专业 if (!hasFullScore || !hasSchoolArea || !hasLocation) {
planMajorList.value.forEach((e: any) => { return
if (dataForm.correctedScore >= e.scoreLine && e.majorCode == dataForm.wishMajorOne && (parseFloat(e.xyNum) > 0)) { }
dataForm.confirmedMajor = dataForm.wishMajorOne
} dataForm.confirmedMajor = ""
})
if (dataForm.confirmedMajor == "") { // 调用后端接口计算折算分
planMajorList.value.forEach((e: any) => { makeCorrectScore({
if (dataForm.correctedScore >= e.scoreLine && e.majorCode == dataForm.wishMajorTwo && (parseFloat(e.xyNum) > 0)) { groupId: dataForm.groupId,
dataForm.confirmedMajor = dataForm.wishMajorTwo schoolArea: dataForm.schoolArea,
} jsOtherCity: dataForm.jsOtherCity,
}) otherProvince: dataForm.otherProvince,
fullScore: dataForm.fullScore,
score: dataForm.score,
degreeOfEducation: dataForm.degreeOfEducation
}).then(res => {
if (res.code !== 0) {
return
} }
if (dataForm.confirmedMajor == "") { dataForm.correctedScore = res.data
planMajorList.value.forEach((e: any) => {
if (dataForm.correctedScore >= e.scoreLine && e.majorCode == dataForm.wishMajorThree && (parseFloat(e.xyNum) > 0)) { // 根据折算分匹配录取专业按志愿顺序专业1 -> 专业2 -> 专业3
dataForm.confirmedMajor = dataForm.wishMajorThree const matchMajorByScore = (majorCode: string) => {
} return planMajorList.value.find((major: any) =>
}) dataForm.correctedScore >= major.scoreLine &&
major.majorCode == majorCode &&
parseFloat(major.xyNum) > 0
)
} }
if (dataForm.confirmedMajor) {
// 按志愿顺序匹配专业
const matchedMajor = matchMajorByScore(dataForm.wishMajorOne) ||
matchMajorByScore(dataForm.wishMajorTwo) ||
matchMajorByScore(dataForm.wishMajorThree)
if (matchedMajor) {
dataForm.confirmedMajor = matchedMajor.majorCode
changeConfirmedMajor(dataForm.confirmedMajor) changeConfirmedMajor(dataForm.confirmedMajor)
} }
} })
} }
const changeR = (changeType: number) => { const changeR = (changeType: number) => {

View File

@@ -1017,7 +1017,7 @@ const handleFilter = () => {
// 获取数据列表 // 获取数据列表
const handleAddData=()=>{ const handleAddData=()=>{
addOrUpdateRef.value?.init(null, '1') addOrUpdateRef.value?.init(null, 1)
} }
// 新增 / 修改 // 新增 / 修改