This commit is contained in:
guochunsi
2026-01-22 18:11:22 +08:00
parent 97eda6a70d
commit dd9295b5fe
4 changed files with 441 additions and 256 deletions

View File

@@ -350,6 +350,12 @@
color: var(--el-text-color-regular); color: var(--el-text-color-regular);
} }
&.detail-dialog .el-dialog__body {
min-height: 80vh !important;
max-height: 80vh !important;
height: 80vh !important;
}
.el-dialog__footer { .el-dialog__footer {
padding: 12px 20px; padding: 12px 20px;

View File

@@ -7,15 +7,18 @@
width="90%" width="90%"
> >
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" <el-form :model="dataForm" :rules="dataRule" ref="dataFormRef"
label-width="130px"> label-width="120px">
<!-- 基本信息 --> <el-tabs v-model="activeTab">
<div class="form-section"> <el-tab-pane label="基本信息" name="basic">
<div class="section-title">基本信息</div> <!-- 基本信息 -->
<div class="form-section">
<div class="section-title">基本信息</div>
<el-row :gutter="20" class="form-row"> <el-row :gutter="20" class="form-row">
<el-col :span="24"> <el-col :span="6">
<el-form-item label="招生计划" prop="groupId"> <el-form-item label="招生计划" prop="groupId">
<el-select v-model="dataForm.groupId" filterable :disabled="dataForm.id" <el-select v-model="dataForm.groupId" filterable :disabled="dataForm.id !== ''"
placeholder="请选择招生计划" class="w-full"> placeholder="请选择招生计划">
<el-option <el-option
v-for="item in planList" v-for="item in planList"
:key="item.id" :key="item.id"
@@ -25,8 +28,6 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="20" class="form-row">
<el-col :span="6"> <el-col :span="6">
<el-form-item label="姓名" prop="name" > <el-form-item label="姓名" prop="name" >
<el-input type="text" v-model="dataForm.name" :disabled="!isEdit"></el-input> <el-input type="text" v-model="dataForm.name" :disabled="!isEdit"></el-input>
@@ -37,6 +38,18 @@
<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="nationality">
<el-select v-model="dataForm.nationality" filterable placeholder="请选择民族" :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-col :span="6">
<el-form-item label="证件类型" prop="idCardType"> <el-form-item label="证件类型" prop="idCardType">
<el-radio-group v-model="dataForm.idCardType" :disabled="!isEdit" @change="handleIdCardTypeChange"> <el-radio-group v-model="dataForm.idCardType" :disabled="!isEdit" @change="handleIdCardTypeChange">
@@ -57,31 +70,15 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="性别" prop="gender" :required="isGenderRequired"> <el-form-item label="性别" prop="gender" :required="isGenderRequired">
<el-select v-model="dataForm.gender" class="w-full" :disabled="!isEdit || dataForm.idCardType=='0'" > <el-radio-group v-model="dataForm.gender" :disabled="!isEdit || dataForm.idCardType=='0'">
<el-option <el-radio v-for="item in sexy" :key="item.value" :label="item.value">{{ item.label }}</el-radio>
v-for="item in sexy" </el-radio-group>
: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="nationality">
<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-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="是否团员" prop="isLeagueMember"> <el-form-item label="是否团员" prop="isLeagueMember">
<el-select v-model="dataForm.isLeagueMember" filterable clearable placeholder="请选择是否团员" class="w-full" :disabled="!isEdit"> <el-select v-model="dataForm.isLeagueMember" filterable clearable placeholder="请选择是否团员" :disabled="!isEdit">
<el-option <el-option
v-for="item in yes_no_type" v-for="item in yes_no_type"
:key="item.value" :key="item.value"
@@ -93,7 +90,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="是否住宿" prop="isAccommodation"> <el-form-item label="是否住宿" prop="isAccommodation">
<el-select v-model="dataForm.isAccommodation" filterable clearable placeholder="请选择是否住宿" class="w-full" :disabled="!isEdit"> <el-select v-model="dataForm.isAccommodation" filterable clearable placeholder="请选择是否住宿" :disabled="!isEdit">
<el-option <el-option
v-for="item in yes_no_type" v-for="item in yes_no_type"
:key="item.value" :key="item.value"
@@ -103,10 +100,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="18">
</el-row>
<el-row :gutter="20" class="form-row">
<el-col :span="12">
<el-form-item label="毕业学校" prop="schoolOfGraduation"> <el-form-item label="毕业学校" prop="schoolOfGraduation">
<el-input type="text" v-model="dataForm.schoolOfGraduation" :disabled="!isEdit"></el-input> <el-input type="text" v-model="dataForm.schoolOfGraduation" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
@@ -126,7 +120,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="文化程度" prop="degreeOfEducation"> <el-form-item label="文化程度" prop="degreeOfEducation">
<el-select v-model="dataForm.degreeOfEducation" filterable placeholder="请选择文化程度" class="w-full" :disabled="!isEdit" @change="changeEducation"> <el-select v-model="dataForm.degreeOfEducation" filterable placeholder="请选择文化程度" :disabled="!isEdit" @change="changeEducation">
<el-option <el-option
v-for="item in eduList" v-for="item in eduList"
:key="item.value" :key="item.value"
@@ -140,6 +134,7 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="成绩" prop="score"> <el-form-item label="成绩" prop="score">
<el-input-number <el-input-number
controls-position="right"
v-model="dataForm.score" v-model="dataForm.score"
placeholder="成绩" placeholder="成绩"
:min="0" :min="0"
@@ -151,7 +146,7 @@
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="户口性质" prop="residenceType"> <el-form-item label="户口性质" prop="residenceType">
<el-select v-model="dataForm.residenceType" filterable clearable placeholder="请选择户口性质" class="w-full" :disabled="!isEdit"> <el-select v-model="dataForm.residenceType" filterable clearable placeholder="请选择户口性质" :disabled="!isEdit">
<el-option <el-option
v-for="item in residenceTypeList" v-for="item in residenceTypeList"
:key="item.value" :key="item.value"
@@ -168,7 +163,7 @@
<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="schoolArea"> <el-form-item label="学校归属地" prop="schoolArea">
<el-select v-model="dataForm.schoolArea" filterable placeholder="请选择学校归属地" class="w-full" :disabled="!isEdit" @change="changeFrom"> <el-select v-model="dataForm.schoolArea" filterable placeholder="请选择学校归属地" :disabled="!isEdit" @change="changeFrom">
<el-option <el-option
v-for="item in schoolFromList" v-for="item in schoolFromList"
:key="item.value" :key="item.value"
@@ -180,7 +175,7 @@
</el-col> </el-col>
<el-col v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='2')" :span="6"> <el-col v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='2')" :span="6">
<el-form-item label="学校所在省市" prop="jsOtherCity"> <el-form-item label="学校所在省市" prop="jsOtherCity">
<el-select v-model="dataForm.jsOtherCity" filterable placeholder="请选择学校所在省市" class="w-full" <el-select v-model="dataForm.jsOtherCity" filterable placeholder="请选择学校所在省市"
:disabled="!isEdit" @change="changeSchoolCode"> :disabled="!isEdit" @change="changeSchoolCode">
<el-option <el-option
v-for="item in schoolCodeList" v-for="item in schoolCodeList"
@@ -193,7 +188,7 @@
</el-col> </el-col>
<el-col v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='3')" :span="6"> <el-col v-if="(dataForm.degreeOfEducation) && (dataForm.schoolArea=='3')" :span="6">
<el-form-item label="外省" prop="otherProvince"> <el-form-item label="外省" prop="otherProvince">
<el-select v-model="dataForm.otherProvince" filterable placeholder="请选择学校所在省市" class="w-full" <el-select v-model="dataForm.otherProvince" filterable placeholder="请选择学校所在省市"
:disabled="!isEdit" @change="changeSchoolCode"> :disabled="!isEdit" @change="changeSchoolCode">
<el-option <el-option
v-for="item in areaHomeProvinceList" v-for="item in areaHomeProvinceList"
@@ -207,6 +202,7 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="当地总分" prop="fullScore"> <el-form-item label="当地总分" prop="fullScore">
<el-input-number <el-input-number
controls-position="right"
v-model="dataForm.fullScore" v-model="dataForm.fullScore"
:min="0" :min="0"
:max="1000" :max="1000"
@@ -218,6 +214,7 @@
<el-col :span="6"> <el-col :span="6">
<el-form-item label="成绩折算分" prop="correctedScore"> <el-form-item label="成绩折算分" prop="correctedScore">
<el-input-number <el-input-number
controls-position="right"
v-model="dataForm.correctedScore" v-model="dataForm.correctedScore"
:min="0" :min="0"
:max="1000" :max="1000"
@@ -264,7 +261,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="详细地址" prop="residenceDetail"> <el-form-item label="户口详细地址" prop="residenceDetail">
<el-input type="text" v-model="dataForm.residenceDetail" placeholder="请输入详细地址" :disabled="!isEdit"></el-input> <el-input type="text" v-model="dataForm.residenceDetail" placeholder="请输入详细地址" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -304,7 +301,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="详细地址" prop="homeAddressDetail"> <el-form-item label="家庭详细地址" prop="homeAddressDetail">
<el-input type="text" v-model="dataForm.homeAddressDetail" placeholder="请输入详细地址" :disabled="!isEdit"></el-input> <el-input type="text" v-model="dataForm.homeAddressDetail" placeholder="请输入详细地址" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -359,7 +356,7 @@
<el-row v-if="dataForm.id" :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="请选择专业">
<el-option <el-option
v-for="item in planMajorList" v-for="item in planMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -371,7 +368,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="拟报专业2" prop="wishMajorTwo"> <el-form-item label="拟报专业2" prop="wishMajorTwo">
<el-select v-model="dataForm.wishMajorTwo" filterable clearable placeholder="请选择专业" class="w-full"> <el-select v-model="dataForm.wishMajorTwo" filterable clearable placeholder="请选择专业">
<el-option <el-option
v-for="item in planMajorList" v-for="item in planMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -383,7 +380,7 @@
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="拟报专业3" prop="wishMajorThree"> <el-form-item label="拟报专业3" prop="wishMajorThree">
<el-select v-model="dataForm.wishMajorThree" filterable clearable placeholder="请选择专业" class="w-full"> <el-select v-model="dataForm.wishMajorThree" filterable clearable placeholder="请选择专业">
<el-option <el-option
v-for="item in planMajorList" v-for="item in planMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -397,7 +394,7 @@
<el-row :gutter="20" class="form-row"> <el-row :gutter="20" class="form-row">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="录取专业" prop="confirmedMajor"> <el-form-item label="录取专业" prop="confirmedMajor">
<el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="" class="w-full" :disabled="!isEdit" @change="changeConfirmedMajor(dataForm.confirmedMajor)"> <el-select v-model="dataForm.confirmedMajor" filterable clearable placeholder="" :disabled="!isEdit" @change="changeConfirmedMajor(dataForm.confirmedMajor)">
<el-option <el-option
v-for="item in planMajorList" v-for="item in planMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -409,9 +406,9 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="isEdit" :gutter="20" class="form-row"> <el-row v-if="isEdit" :gutter="20" class="form-row">
<el-col :span="24"> <el-col :span="8" v-if="twoMajorList.length>0">
<el-form-item label="两年制专业" prop="twoMajor" v-if="twoMajorList.length>0"> <el-form-item label="两年制专业" prop="twoMajor" >
<el-select v-model="dataForm.twoMajor" filterable clearable placeholder="" class="w-full" @change="changeConfirmedMajor(dataForm.twoMajor)"> <el-select v-model="dataForm.twoMajor" filterable clearable placeholder="" @change="changeConfirmedMajor(dataForm.twoMajor)">
<el-option <el-option
v-for="item in twoMajorList" v-for="item in twoMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -420,8 +417,10 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="8" v-if="threeMajorList.length>0">
<el-form-item label="三年制专业" prop="threeMajor" v-if="threeMajorList.length>0"> <el-form-item label="三年制专业" prop="threeMajor" v-if="threeMajorList.length>0">
<el-select v-model="dataForm.threeMajor" filterable clearable placeholder="" class="w-full" @change="changeConfirmedMajor(dataForm.threeMajor)"> <el-select v-model="dataForm.threeMajor" filterable clearable placeholder="" @change="changeConfirmedMajor(dataForm.threeMajor)">
<el-option <el-option
v-for="item in threeMajorList" v-for="item in threeMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -429,9 +428,11 @@
:value="item.majorCode"> :value="item.majorCode">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="四年制专业" prop="fourMajor" v-if="fourMajorList.length>0"> </el-col>
<el-select v-model="dataForm.fourMajor" filterable clearable placeholder="" class="w-full" @change="changeConfirmedMajor(dataForm.fourMajor)"> <el-col :span="8" v-if="fourMajorList.length>0">
<el-form-item label="四年制专业" prop="fourMajor" >
<el-select v-model="dataForm.fourMajor" filterable clearable placeholder="" @change="changeConfirmedMajor(dataForm.fourMajor)">
<el-option <el-option
v-for="item in fourMajorList" v-for="item in fourMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -440,8 +441,10 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="五年制专业" prop="fiveMajor" v-if="fiveMajorList.length>0"> </el-col>
<el-select v-model="dataForm.fiveMajor" filterable clearable placeholder="" class="w-full" @change="changeConfirmedMajor(dataForm.fiveMajor)"> <el-col :span="8" v-if="fiveMajorList.length>0">
<el-form-item label="五年制专业" prop="fiveMajor" >
<el-select v-model="dataForm.fiveMajor" filterable clearable placeholder="" @change="changeConfirmedMajor(dataForm.fiveMajor)">
<el-option <el-option
v-for="item in fiveMajorList" v-for="item in fiveMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -450,8 +453,10 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="六年制专业" prop="sixMajor" v-if="sixMajorList.length>0"> </el-col>
<el-select v-model="dataForm.sixMajor" filterable clearable placeholder="" class="w-full" @change="changeConfirmedMajor(dataForm.sixMajor)"> <el-col :span="8" v-if="sixMajorList.length>0">
<el-form-item label="六年制专业" prop="sixMajor">
<el-select v-model="dataForm.sixMajor" filterable clearable placeholder="" @change="changeConfirmedMajor(dataForm.sixMajor)">
<el-option <el-option
v-for="item in sixMajorList" v-for="item in sixMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -459,9 +464,11 @@
:value="item.majorCode"> :value="item.majorCode">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="七年制专业" prop="sevenMajor" v-if="sevenMajorList.length>0"> </el-col>
<el-select v-model="dataForm.sevenMajor" filterable clearable placeholder="" class="w-full" @change="changeConfirmedMajor(dataForm.sevenMajor)"> <el-col :span="8" v-if="sevenMajorList.length>0">
<el-form-item label="七年制专业" prop="sevenMajor">
<el-select v-model="dataForm.sevenMajor" filterable clearable placeholder="" @change="changeConfirmedMajor(dataForm.sevenMajor)">
<el-option <el-option
v-for="item in sevenMajorList" v-for="item in sevenMajorList"
:key="item.majorCode" :key="item.majorCode"
@@ -474,134 +481,27 @@
</el-row> </el-row>
<!-- 费用信息 --> <!-- 费用信息 -->
<el-row :gutter="20" class="form-row"> <el-row :gutter="20" class="form-row">
<el-col :span="6"> <el-col :span="8">
<el-form-item label="学费" prop="feeTuition"> <el-form-item label="学费" prop="feeTuition">
<el-input-number v-model="dataForm.feeTuition" controls-position="right" :min="0" :max="999999" :step-strictly="true" disabled class="w-full"></el-input-number> <el-input-number v-model="dataForm.feeTuition" controls-position="right" :min="0" :max="999999" :step-strictly="true" disabled></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="8">
<el-form-item label="代办费" prop="feeAgency"> <el-form-item label="代办费" prop="feeAgency">
<el-input-number v-model="dataForm.feeAgency" controls-position="right" :min="0" :max="999999" :step-strictly="true" disabled class="w-full"></el-input-number> <el-input-number v-model="dataForm.feeAgency" controls-position="right" :min="0" :max="999999" :step-strictly="true" disabled></el-input-number>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="8">
<el-form-item label="总费用" prop="allMoney"> <el-form-item label="总费用" prop="allMoney">
<span class="total-fee">{{Number(dataForm.feeTuition)+Number(dataForm.feeAgency)}}</span> <span class="total-fee">{{Number(dataForm.feeTuition)+Number(dataForm.feeAgency)}}</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<!-- 附件材料 -->
<el-row :gutter="20" class="form-row">
<el-col :span="8">
<el-form-item label="成绩单" prop="scorePhoto">
<div class="image-preview-container">
<viewer :images="dataForm.scorePhotoList" v-if="dataForm.scorePhoto && dataForm.scorePhotoList && dataForm.scorePhotoList.length > 0">
<div class="image-list">
<div v-for="(src, index) in dataForm.scorePhotoList" :key="index" class="image-item">
<img :src="src" class="preview-image" :alt="`成绩单-${index + 1}`">
</div>
</div>
</viewer>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无图片</span>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="毕业证" prop="graPic">
<div class="image-preview-container">
<viewer :images="dataForm.graPicList" v-if="dataForm.graPic && dataForm.graPicList && dataForm.graPicList.length > 0">
<div class="image-list">
<div v-for="(src, index) in dataForm.graPicList" :key="index" class="image-item">
<img :src="src" class="preview-image" :alt="`毕业证-${index + 1}`">
</div>
</div>
</viewer>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无图片</span>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="在常营业执照" prop="yyPic">
<div class="image-preview-container">
<viewer :images="dataForm.yyPicList" v-if="dataForm.yyPic && dataForm.yyPicList && dataForm.yyPicList.length > 0">
<div class="image-list">
<div v-for="(src, index) in dataForm.yyPicList" :key="index" class="image-item">
<img :src="src" class="preview-image" :alt="`在常营业执照-${index + 1}`">
</div>
</div>
</viewer>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无图片</span>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="form-row">
<el-col :span="8">
<el-form-item label="在常租赁合同/房产证明" prop="housePic">
<div class="image-preview-container">
<viewer :images="dataForm.housePicList" v-if="dataForm.housePic && dataForm.housePicList && dataForm.housePicList.length > 0">
<div class="image-list">
<div v-for="(src, index) in dataForm.housePicList" :key="index" class="image-item">
<img :src="src" class="preview-image" :alt="`在常租赁合同/房产证明-${index + 1}`">
</div>
</div>
</viewer>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无图片</span>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="在常就业社保证明" prop="sbPic">
<div class="image-preview-container">
<viewer :images="dataForm.sbPicList" v-if="dataForm.sbPic && dataForm.sbPicList && dataForm.sbPicList.length > 0">
<div class="image-list">
<div v-for="(src, index) in dataForm.sbPicList" :key="index" class="image-item">
<img :src="src" class="preview-image" :alt="`在常就业社保证明-${index + 1}`">
</div>
</div>
</viewer>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无图片</span>
</div>
</div>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="户口本" prop="householdPic">
<div class="image-preview-container">
<viewer :images="dataForm.householdPicList" v-if="dataForm.householdPic && dataForm.householdPicList && dataForm.householdPicList.length > 0">
<div class="image-list">
<div v-for="(src, index) in dataForm.householdPicList" :key="index" class="image-item">
<img :src="src" class="preview-image" :alt="`户口本-${index + 1}`">
</div>
</div>
</viewer>
<div v-else class="image-placeholder">
<el-icon><Picture /></el-icon>
<span>暂无图片</span>
</div>
</div>
</el-form-item>
</el-col>
</el-row>
<!-- 其他信息 --> <!-- 其他信息 -->
<el-row :gutter="20" class="form-row"> <el-row :gutter="20" class="form-row">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="联系人" prop="contactName"> <el-form-item label="联系人" prop="contactName">
<el-select v-model="dataForm.contactName" filterable clearable placeholder="请选择联系人" class="w-full" :disabled="!isEdit"> <el-select v-model="dataForm.contactName" filterable clearable placeholder="请选择联系人" :disabled="!isEdit">
<el-option <el-option
v-for="item in contactNameList" v-for="item in contactNameList"
:key="item.teacherNo" :key="item.teacherNo"
@@ -613,7 +513,7 @@
</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="请选择辨色力" :disabled="!isEdit">
<el-option <el-option
v-for="item in color_discrimination" v-for="item in color_discrimination"
:key="item.value" :key="item.value"
@@ -625,20 +525,147 @@
</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="24"> <el-col :span="12">
<el-form-item label="既往病史" prop="pastMedicalHistory"> <el-form-item label="既往病史" prop="pastMedicalHistory">
<el-input type="textarea" v-model="dataForm.pastMedicalHistory" placeholder="请输入既往病史" :rows="2" :disabled="!isEdit"></el-input> <el-input type="textarea" v-model="dataForm.pastMedicalHistory" placeholder="请输入既往病史" :rows="2" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span="12">
<el-row :gutter="20" class="form-row">
<el-col :span="24">
<el-form-item label="备注" prop="remarks"> <el-form-item label="备注" prop="remarks">
<el-input type="textarea" v-model="dataForm.remarks" placeholder="备注" :rows="2" :disabled="!isEdit"></el-input> <el-input type="textarea" v-model="dataForm.remarks" placeholder="备注" :rows="2" :disabled="!isEdit"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
</el-tab-pane>
<el-tab-pane label="附件材料" name="attachment">
<!-- 附件材料 -->
<el-row :gutter="20" class="form-row">
<el-col :span="6">
<el-form-item label="成绩单" prop="scorePhoto">
<el-upload
:action="uploadUrl"
class="avatar-uploader"
name="file"
:headers="headers"
:data="uploadData"
:show-file-list="false"
:before-upload="beforeUpload"
:http-request="httpRequest"
:on-success="uploadSuccess">
<div v-if="dataForm.scorePhoto" class="avatar-wrapper">
<img :src="baseUrl + dataForm.scorePhoto" class="avatar"/>
</div>
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="毕业证" prop="graPic">
<el-upload
:action="uploadUrl"
class="avatar-uploader"
name="file"
:headers="headers"
:data="uploadData"
:show-file-list="false"
:before-upload="beforeUpload"
:http-request="httpRequest"
:on-success="upload2Success">
<div v-if="dataForm.graPic" class="avatar-wrapper">
<img :src="baseUrl + dataForm.graPic" class="avatar"/>
</div>
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="在常营业执照" prop="yyPic">
<el-upload
:action="uploadUrl"
class="avatar-uploader"
name="file"
:headers="headers"
:data="uploadData"
:show-file-list="false"
:before-upload="beforeUpload"
:http-request="httpRequest"
:on-success="upload3Success">
<div v-if="dataForm.yyPic" class="avatar-wrapper">
<img :src="baseUrl + dataForm.yyPic" class="avatar"/>
</div>
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="在常社保证明" prop="sbPic">
<el-upload
:action="uploadUrl"
class="avatar-uploader"
name="file"
:headers="headers"
:data="uploadData"
:show-file-list="false"
:before-upload="beforeUpload"
:http-request="httpRequest"
:on-success="upload5Success">
<div v-if="dataForm.sbPic" class="avatar-wrapper">
<img :src="baseUrl + dataForm.sbPic" class="avatar"/>
</div>
<el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon>
</el-upload>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20" class="form-row">
<el-col>
<el-form-item label="在常租赁合同/房产证明" prop="housePic">
<el-upload
:action="uploadUrl"
list-type="picture-card"
name="file"
:headers="headers"
:limit="5"
:data="uploadData"
:file-list="houseList"
:before-upload="beforeUpload"
:on-preview="handlePictureCardPreview"
:on-remove="remove4Handler"
:http-request="httpRequest"
:on-success="upload4Success">
<el-icon class="avatar-uploader-icon"><Plus /></el-icon>
<template #tip>
<div>最多上传5张</div>
</template>
</el-upload>
</el-form-item>
</el-col>
<el-col>
<el-form-item label="户口本" prop="householdPic">
<el-upload
:action="uploadUrl"
list-type="picture-card"
name="file"
:headers="headers"
:limit="5"
:data="uploadData"
:file-list="hkPicList"
:before-upload="beforeUpload"
:on-preview="handlePictureCardPreview"
:on-remove="remove6Handler"
:http-request="httpRequest"
:on-success="upload6Success">
<el-icon class="avatar-uploader-icon"><Plus /></el-icon>
<template #tip>
<div>最多上传5张</div>
</template>
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
</el-form> </el-form>
<template #footer v-if="isEdit"> <template #footer v-if="isEdit">
<div class="dialog-footer"> <div class="dialog-footer">
@@ -650,14 +677,19 @@
</div> </div>
</template> </template>
<el-dialog title="图片预览" v-model="dialogUploadVisible" append-to-body>
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
</el-dialog> </el-dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, nextTick, watch, computed } from 'vue' import { ref, reactive, nextTick, watch, computed, onMounted } from 'vue'
import { ElNotification } from 'element-plus' import { ElNotification } from 'element-plus'
import { Picture } from '@element-plus/icons-vue' import { Plus } from '@element-plus/icons-vue'
import { useMessage, useMessageBox } from '/@/hooks/message' import { useMessage, useMessageBox } from '/@/hooks/message'
import { Session } from '/@/utils/storage'
import axios from 'axios'
import { getObj, putObj, addObj ,makeCorrectScore} from '/@/api/recruit/recruitstudentsignup' import { getObj, putObj, addObj ,makeCorrectScore} from '/@/api/recruit/recruitstudentsignup'
import { getList } from "/@/api/recruit/recruitstudentplangroup" import { getList } from "/@/api/recruit/recruitstudentplangroup"
import { listByEdu } from "/@/api/recruit/recruitstudentplan" import { listByEdu } from "/@/api/recruit/recruitstudentplan"
@@ -680,10 +712,29 @@ const emit = defineEmits<{
// 表单引用 // 表单引用
const dataFormRef = ref() const dataFormRef = ref()
const baseUrl = import.meta.env.VITE_API_URL
const uploadUrl = baseUrl + '/recruit/file/uploadAttachment'
// 响应式数据 // 响应式数据
const visible = ref(false) const visible = ref(false)
const canSubmit = ref(false) const canSubmit = ref(false)
const title = ref("") const title = ref("")
const activeTab = ref('basic')
// 上传相关
const uploadData = reactive({})
const houseList = ref<any[]>([])
const hkPicList = ref<any[]>([])
const fileReader = ref<FileReader | null>(null)
const dialogImageUrl = ref("")
const dialogUploadVisible = ref(false)
// 请求头
const headers = computed(() => {
return {
"Authorization": 'Bearer ' + Session.getToken()
}
})
// 字典数据 是否 性别 辨色力 // 字典数据 是否 性别 辨色力
const { yes_no_type, sexy, color_discrimination } = useDict('yes_no_type', 'sexy', 'color_discrimination') const { yes_no_type, sexy, color_discrimination } = useDict('yes_no_type', 'sexy', 'color_discrimination')
@@ -909,9 +960,121 @@ const dataRule = reactive({
] ]
}) })
// 初始化 FileReader
onMounted(() => {
if (!window.FileReader) {
message.error('您的浏览器不支持 FileReader API!')
} else {
fileReader.value = new FileReader()
}
})
// 上传前验证
const beforeUpload = (file: File) => {
const isLt5M = file.size < 10 * 1024 * 1024
if (!isLt5M) {
message.error('文件大小不能超过10M')
return false
}
return true
}
// 图片预览
const handlePictureCardPreview = (file: any) => {
dialogImageUrl.value = file.url
dialogUploadVisible.value = true
}
// 通用移除文件处理(多文件)
const handleRemoveMultiple = (fileList: any[], dataFormField: string) => {
return (file: any) => {
const arr: any[] = []
const strArr: string[] = []
const dataFormObj = dataForm as any
fileList.forEach((e: any) => {
if (e.url != file.url) {
arr.push(e)
// 保存时使用原始路径
strArr.push(e.originalUrl || (e.url.startsWith(baseUrl) ? e.url.substring(baseUrl.length) : e.url))
}
})
fileList.splice(0, fileList.length, ...arr)
dataFormObj[dataFormField] = strArr.join(",")
}
}
// 移除文件处理(多图上传)
const remove4Handler = handleRemoveMultiple(houseList.value, 'housePic')
const remove6Handler = handleRemoveMultiple(hkPicList.value, 'householdPic')
// 自定义上传请求
const httpRequest = (options: any) => {
const file = options.file
if (file && fileReader.value) {
fileReader.value.readAsDataURL(file)
fileReader.value.onload = () => {
const base64Str = fileReader.value?.result as string
const config = {
url: uploadUrl,
method: 'post',
headers: headers.value,
data: {
base64Str: base64Str.split(',')[1]
},
timeout: 10000,
onUploadProgress: function (progressEvent: any) {
progressEvent.percent = progressEvent.loaded / progressEvent.total * 100
options.onProgress(progressEvent, file)
},
}
axios(config)
.then((res: any) => {
options.onSuccess(res, file)
})
.catch((err: any) => {
options.onError(err)
})
}
}
}
// 通用上传成功回调(单文件 - avatar模式
const handleUploadSuccess = (dataFormField: string) => {
return (res: any) => {
const fileUrl = res.data.fileUrl
const dataFormObj = dataForm as any
dataFormObj[dataFormField] = fileUrl
}
}
// 通用上传成功回调(多文件)
const handleUploadSuccessMultiple = (fileList: any[], dataFormField: string) => {
return (res: any) => {
const fileUrl = res.data.fileUrl // 后端返回的原始路径
const dataFormObj = dataForm as any
// 添加到文件列表,显示时添加 baseUrl 前缀,同时保存原始路径用于提交
fileList.push({ url: baseUrl + fileUrl, name: '', originalUrl: fileUrl })
// 保存时使用原始路径
const arr: string[] = []
fileList.forEach((e: any) => {
// 优先使用保存的原始路径,如果没有则从 url 中提取
arr.push(e.originalUrl || (e.url.startsWith(baseUrl) ? e.url.substring(baseUrl.length) : e.url))
})
dataFormObj[dataFormField] = arr.join(",")
}
}
// 上传成功回调
const uploadSuccess = handleUploadSuccess('scorePhoto')
const upload2Success = handleUploadSuccess('graPic')
const upload3Success = handleUploadSuccess('yyPic')
const upload4Success = handleUploadSuccessMultiple(houseList.value, 'housePic')
const upload5Success = handleUploadSuccess('sbPic')
const upload6Success = handleUploadSuccessMultiple(hkPicList.value, 'householdPic')
// 初始化 // 初始化
const init = (id: string | null, typeParam: number, groupId?: string) => { const init = (id: string | null, typeParam: number, groupId?: string) => {
dataForm.id = id || null dataForm.id = id || ""
type.value = typeParam type.value = typeParam
isEdit.value = typeParam == 1 ? true : false isEdit.value = typeParam == 1 ? true : false
visible.value = true visible.value = true
@@ -957,32 +1120,30 @@ const init = (id: string | null, typeParam: number, groupId?: string) => {
// 编辑模式:获取表单数据 // 编辑模式:获取表单数据
getObj(dataForm.id).then((response: any) => { getObj(dataForm.id).then((response: any) => {
Object.assign(dataForm, response.data) Object.assign(dataForm, response.data)
dataForm.scorePhotoList = [] // 清空多图上传的列表
dataForm.graPicList = [] houseList.value = []
dataForm.yyPicList = [] hkPicList.value = []
dataForm.housePicList = []
dataForm.sbPicList = [] // 初始化多图上传列表
dataForm.householdPicList = [] if (dataForm.housePic && dataForm.housePic != '') {
const arr = dataForm.housePic.split(",").filter((item: string) => item && item.trim())
arr.forEach((e: string) => {
// 保存原始路径,显示时添加 baseUrl 前缀
houseList.value.push({ url: baseUrl + e, name: '', originalUrl: e })
})
}
if (dataForm.scorePhoto) { // 户口本
dataForm.scorePhotoList = dataForm.scorePhoto.split(",") if (dataForm.householdPic && dataForm.householdPic != '') {
} const arr = dataForm.householdPic.split(",").filter((item: string) => item && item.trim())
if (dataForm.graPic) { arr.forEach((e: string) => {
dataForm.graPicList = dataForm.graPic.split(",") // 保存原始路径,显示时添加 baseUrl 前缀
} hkPicList.value.push({ url: baseUrl + e, name: '', originalUrl: e })
if (dataForm.yyPic) { })
dataForm.yyPicList = dataForm.yyPic.split(",")
}
if (dataForm.housePic) {
dataForm.housePicList = dataForm.housePic.split(",")
}
if (dataForm.householdPic) {
dataForm.householdPicList = dataForm.householdPic.split(",")
}
if (dataForm.sbPic) {
dataForm.sbPicList = dataForm.sbPic.split(",")
} }
title.value = dataForm.serialNumber title.value = dataForm.serialNumber
// 获取文化程度对应的专业 // 获取文化程度对应的专业
// 根据学历获取代办费(从字典获取) // 根据学历获取代办费(从字典获取)
@@ -1422,14 +1583,42 @@ defineExpose({
}) })
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.viewer-container{ .avatar-uploader {
z-index: 9999; :deep(.el-upload) {
} border: 1px dashed var(--el-border-color);
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
transition: var(--el-transition-duration-fast);
width: 148px;
height: 148px;
&:hover {
border-color: var(--el-color-primary);
}
}
}
// 统一宽度样式 .avatar-uploader-icon {
.w-full { font-size: 28px;
width: 100%; color: #8c939d;
} width: 148px;
height: 148px;
line-height: 148px;
text-align: center;
}
.avatar-wrapper {
width: 148px;
height: 148px;
.avatar {
width: 148px;
height: 148px;
display: block;
object-fit: cover;
cursor: pointer;
}
}
// 图片预览容器样式 // 图片预览容器样式
.image-preview-container { .image-preview-container {
@@ -1521,13 +1710,7 @@ defineExpose({
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
// 统一输入框宽度
.el-select,
.el-input,
.el-date-editor,
.el-input-number {
width: 100%;
}
} }
// 行布局优化 // 行布局优化
@@ -1583,12 +1766,7 @@ defineExpose({
} }
} }
// 弹窗内容区域优化
:deep(.el-dialog__body) {
max-height: 75vh;
overflow-y: auto;
padding: 24px;
}
</style> </style>

View File

@@ -671,17 +671,16 @@ import {
oneStuNo, oneStuNo,
tbStuWork, tbStuWork,
sendImg, sendImg,
pushCity as pushCityApi pushCity as pushCityApi,
resetSign as resetSignApi
} from '/@/api/recruit/recruitstudentsignup' } from '/@/api/recruit/recruitstudentsignup'
import { getLabelValue, getLabelValueByProps, getMajorLabelWithYears } from '/@/utils/dictLabel' import { getLabelValue, getLabelValueByProps, getMajorLabelWithYears } from '/@/utils/dictLabel'
import { getDeptList } from "/@/api/basic/basicclass"; import { getDeptList } from "/@/api/basic/basicclass";
import { listPlanByCondition as planMajor } from "/@/api/recruit/recruitstudentplan"; import { listPlanByCondition as planMajor } from "/@/api/recruit/recruitstudentplan";
import { getDictsByTypes } from "/@/api/admin/dict"; import { getDictsByTypes } from "/@/api/admin/dict";
import { getUserListByRole } from "/@/api/admin/user";
import { queryTeacherBaseByNo } from "/@/api/professional/professionaluser/teacherbase"; import { queryTeacherBaseByNo } from "/@/api/professional/professionaluser/teacherbase";
import { useDict } from '/@/hooks/dict' import { useDict } from '/@/hooks/dict'
import { import {
ROLE_CODE,
PUSHED_STATUS_LIST, PUSHED_STATUS_LIST,
NOTICE_SEND_STATUS_LIST, NOTICE_SEND_STATUS_LIST,
RECRUIT_MATERIAL_STATUS_LIST, RECRUIT_MATERIAL_STATUS_LIST,
@@ -775,7 +774,6 @@ const { getDataList, currentChangeHandle, sizeChangeHandle, tableStyle } = useTa
// 弹窗状态(已移除,组件内部通过 v-model="visible" 控制) // 弹窗状态(已移除,组件内部通过 v-model="visible" 控制)
// 列表数据 // 列表数据
const auditorList = ref<any[]>([])
const planList = ref<any[]>([]) const planList = ref<any[]>([])
const eduList = ref<any[]>([]) const eduList = ref<any[]>([])
const planMajorList = ref<any[]>([]) const planMajorList = ref<any[]>([])
@@ -912,7 +910,7 @@ const baiduMap = (row: any) => {
// 组件内部通过 v-model="visible" 控制显示 // 组件内部通过 v-model="visible" 控制显示
nextTick(() => { nextTick(() => {
baiduMapRef.value?.init(row) baiduMapRef.value?.init(row)
}) })
} }
// 设置宿舍 // 设置宿舍
@@ -920,7 +918,7 @@ const setDormFW = () => {
// 组件内部通过 v-model="visible" 控制显示 // 组件内部通过 v-model="visible" 控制显示
nextTick(() => { nextTick(() => {
dormFWRef.value?.init() dormFWRef.value?.init()
}) })
} }
// 一键判断是否超出住宿范围 // 一键判断是否超出住宿范围
@@ -1049,17 +1047,17 @@ const handleUpdate = (id: string, groupId: string, feeAgency: string) => {
}).then(() => { }).then(() => {
message.success('操作成功') message.success('操作成功')
getDataList() getDataList()
}) })
} }
// 删除 // 复学
const deleteHandle = (id: string) => { const reEntry = (id: string) => {
messageBox.confirm('是否确认删除本条数据?请谨慎操作').then(() => { messageBox.confirm('是否确认复学操作?请谨慎操作').then(() => {
return delObj(id) return resetSignApi({ id })
}).then(() => { }).then(() => {
message.success('删除成功') message.success('操作成功')
getDataList() getDataList()
}) })
} }
// 重置表单 // 重置表单
@@ -1149,6 +1147,13 @@ const getActionMenuItems = (row: any) => {
icon: Close, icon: Close,
visible: () => auth('recruit_recruitstudentsignup_leaveSchool') && row.canQuit visible: () => auth('recruit_recruitstudentsignup_leaveSchool') && row.canQuit
}, },
// 复学
{
command: 'reEntry',
label: '复学',
icon: Check,
visible: () => auth('recruit_resetsign') && row.canReset
},
{ {
command: 'majorChange', command: 'majorChange',
label: '调整专业', label: '调整专业',
@@ -1203,6 +1208,9 @@ const handleMoreCommand = (command: string, row: any) => {
case 'leaveSchool': case 'leaveSchool':
handleUpdate(row.id, row.groupId, row.feeAgency) handleUpdate(row.id, row.groupId, row.feeAgency)
break break
case 'reEntry':
reEntry(row.id)
break
case 'majorChange': case 'majorChange':
majorChange(row.id) majorChange(row.id)
break break
@@ -1251,19 +1259,7 @@ const init = async () => {
cityExamTypeList.value = res.data.recruit_city_exam_type || [] cityExamTypeList.value = res.data.recruit_city_exam_type || []
isOutList.value = res.data.recruit_data_source || [] isOutList.value = res.data.recruit_data_source || []
}) })
// 所有经办人
getUserListByRole(ROLE_CODE.ROLE_RECRUIT_SECOND).then((res: any) => {
auditorList.value = res.data || []
getUserListByRole(ROLE_CODE.ROLE_RECRUIT).then((re: any) => {
if (re.data) {
re.data.forEach((r: any) => {
auditorList.value.push(r)
})
}
auditorList.value = unique(auditorList.value)
})
})
} }
// 监听招生计划变化 // 监听招生计划变化

View File

@@ -8,7 +8,7 @@
<el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="() => dataFormSubmit('1')" <el-form :model="dataForm" :rules="dataRule" ref="dataFormRef" @keyup.enter="() => dataFormSubmit('1')"
label-width="100px"> label-width="100px">
<el-row> <el-row>
<el-col :span="24"> <el-col :span="8">
<el-form-item label="招生计划" prop="groupId"> <el-form-item label="招生计划" prop="groupId">
<el-select v-model="dataForm.groupId" filterable :disabled="!!dataForm.id" <el-select v-model="dataForm.groupId" filterable :disabled="!!dataForm.id"
placeholder="请选择招生计划"> placeholder="请选择招生计划">
@@ -21,14 +21,12 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span="8">
<el-row>
<el-col :span="12">
<el-form-item label="姓名" prop="name"> <el-form-item label="姓名" prop="name">
<el-input type="text" v-model="dataForm.name" :disabled="type != 1"></el-input> <el-input type="text" v-model="dataForm.name" :disabled="type != 1"></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="8">
<el-form-item label="联系人" prop="contactName"> <el-form-item label="联系人" prop="contactName">
<el-select v-model="dataForm.contactName" filterable clearable placeholder="" :disabled="!(permissions.recruit_recruitprestudent_dj_sure || dataForm.auditStatus != '20')"> <el-select v-model="dataForm.contactName" filterable clearable placeholder="" :disabled="!(permissions.recruit_recruitprestudent_dj_sure || dataForm.auditStatus != '20')">
<el-option <el-option
@@ -41,6 +39,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
@@ -138,6 +137,9 @@
:http-request="httpRequest" :http-request="httpRequest"
:on-success="upload4Success"> :on-success="upload4Success">
<el-icon class="avatar-uploader-icon"><Plus /></el-icon> <el-icon class="avatar-uploader-icon"><Plus /></el-icon>
<template #tip>
<div>最多上传5张</div>
</template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>
@@ -158,6 +160,9 @@
:http-request="httpRequest" :http-request="httpRequest"
:on-success="upload6Success"> :on-success="upload6Success">
<el-icon class="avatar-uploader-icon"><Plus /></el-icon> <el-icon class="avatar-uploader-icon"><Plus /></el-icon>
<template #tip>
<div>最多上传5张</div>
</template>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
</el-col> </el-col>