eb62b289 by zhangmeng

倒计时修改

1 parent 544fb414
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 v-model="show" :title="title" append-to-body close-icon="CircleClose" center 3 v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
4 :close-on-click-modal="false" class="pcloginpop" 4 class="pcloginpop" close-icon="CircleClose"
5 destroy-on-close 5 destroy-on-close
6 > 6 >
7 <div class="boxInvitation"> 7 <div class="boxInvitation">
8 8
9 <div class="text-center pd20" v-if="showR"> 9 <div v-if="showR" class="text-center pd20">
10 <img class="mauto" src="@/assets/dance/ok.png"/> 10 <img class="mauto" src="@/assets/dance/ok.png"/>
11 <!-- 提交成功等待审核--> 11 <!-- 提交成功等待审核-->
12 <h3 v-if="form.status"> 12 <h3 v-if="form.status">
...@@ -19,15 +19,15 @@ ...@@ -19,15 +19,15 @@
19 <br/> 19 <br/>
20 Thank you so much for your kind patience. 20 Thank you so much for your kind patience.
21 </h4> 21 </h4>
22 22
23 <div class="red">To check your application status, please go to Account > Personal > Visa Review Record, or 23 <div class="red">To check your application status, please go to Account > Personal > Visa Review Record, or
24 refer to your email for any updates. 24 refer to your email for any updates.
25 </div> 25 </div>
26 26
27 </div> 27 </div>
28 28
29 <el-form :model="form" :rules="rules" ref="iformRef" label-position="top" v-else> 29 <el-form v-else ref="iformRef" :model="form" :rules="rules" label-position="top">
30 <el-form-item :label="language==0?'申请人类别':'Applicant Type'" required prop="applicatType"> 30 <el-form-item :label="language==0?'申请人类别':'Applicant Type'" prop="applicatType" required>
31 <el-select v-model="form.applicatType" @change="changeApplicatType"> 31 <el-select v-model="form.applicatType" @change="changeApplicatType">
32 <el-option label="MNA/Team" value="1"/> 32 <el-option label="MNA/Team" value="1"/>
33 <el-option label="Technical Official" value="2"/> 33 <el-option label="Technical Official" value="2"/>
...@@ -35,35 +35,35 @@ ...@@ -35,35 +35,35 @@
35 <!-- <el-option label="Supplier" value="4"/>--> 35 <!-- <el-option label="Supplier" value="4"/>-->
36 <el-option label="Other(not listed above)" value="5"/> 36 <el-option label="Other(not listed above)" value="5"/>
37 </el-select> 37 </el-select>
38 <el-input class="mt10" v-if="form.applicatType==5" placeholder="Please specify" v-model="form.remarks"/> 38 <el-input v-if="form.applicatType==5" v-model="form.remarks" class="mt10" placeholder="Please specify"/>
39 </el-form-item> 39 </el-form-item>
40 <el-form-item :label="language==0?'邀请函类别':'Invitation Type'" required prop="invitationType"> 40 <el-form-item :label="language==0?'邀请函类别':'Invitation Type'" prop="invitationType" required>
41 <el-select v-model="form.invitationType"> 41 <el-select v-model="form.invitationType">
42 <el-option :label="language==0?'一般邀请函':'General Invitation'" value="1"/> 42 <el-option :label="language==0?'一般邀请函':'General Invitation'" value="1"/>
43 <el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU Invitation'" value="2"/> 43 <el-option :label="language==0?'TE/PU(外办)邀请函':'TE/PU Invitation'" value="2"/>
44 </el-select> 44 </el-select>
45 </el-form-item> 45 </el-form-item>
46 <el-form-item v-if="form.invitationType=='2'" label="Proof of Employment" required prop="invitationFileArr"> 46 <el-form-item v-if="form.invitationType=='2'" label="Proof of Employment" prop="invitationFileArr" required>
47 <div class="red">Proof of employment is required for TE/PU invitation letters.</div> 47 <div class="red">Proof of employment is required for TE/PU invitation letters.</div>
48 <div class="red"> 48 <div class="red">
49 This document must be issued by the invitee's association and must bear an official stamp or signature. 49 This document must be issued by the invitee's association and must bear an official stamp or signature.
50 </div> 50 </div>
51 <br/> 51 <br/>
52 <file-upload v-model="form.invitationFileArr" :is-show-tip="false" :limit="1" 52 <file-upload v-model="form.invitationFileArr" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"
53 :button-text="language==0?'上传':'Upload'"></file-upload> 53 :limit="1"></file-upload>
54 </el-form-item> 54 </el-form-item>
55 <el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" required 55 <el-form-item :label="language==0?'是否需要中文邀请函':'Do you need a Chinese invitation?'" prop="chinese"
56 prop="chinese"> 56 required>
57 <el-radio-group v-model="form.chinese"> 57 <el-radio-group v-model="form.chinese">
58 <el-radio :value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio> 58 <el-radio :value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio>
59 <el-radio :value="0">{{ language == 0 ? '否' : 'No' }}</el-radio> 59 <el-radio :value="0">{{ language == 0 ? '否' : 'No' }}</el-radio>
60 </el-radio-group> 60 </el-radio-group>
61 </el-form-item> 61 </el-form-item>
62 62
63 <!-- 一般信息--> 63 <!-- 一般信息-->
64 <el-form-item :label="language==0?'国家/地区协会名':'MNA/Team Name'" :required="form.applicatType==1" 64 <el-form-item :label="language==0?'国家/地区协会名':'MNA/Team Name'" :required="form.applicatType==1"
65 prop="associationCode"> 65 prop="associationCode">
66 <el-select v-model="form.associationCode" filterable clearable> 66 <el-select v-model="form.associationCode" clearable filterable>
67 <el-option v-for="item in mnaList" :key="item.code" :label="language==0?item.nameCn:item.nameEn" 67 <el-option v-for="item in mnaList" :key="item.code" :label="language==0?item.nameCn:item.nameEn"
68 :value="item.code"/> 68 :value="item.code"/>
69 </el-select> 69 </el-select>
...@@ -72,12 +72,12 @@ ...@@ -72,12 +72,12 @@
72 prop="associationAddress"> 72 prop="associationAddress">
73 <el-input v-model="form.associationAddress"/> 73 <el-input v-model="form.associationAddress"/>
74 </el-form-item> 74 </el-form-item>
75 <el-form-item :label="language==0?'邮箱':'Contact Email'" required prop="email"> 75 <el-form-item :label="language==0?'邮箱':'Contact Email'" prop="email" required>
76 <div class="red">Note: Notifications from the organizing committee will be sent to this email address. 76 <div class="red">Note: Notifications from the organizing committee will be sent to this email address.
77 </div> 77 </div>
78 <el-input v-model="form.email" type="email"> 78 <el-input v-model="form.email" type="email">
79 <template #append> 79 <template #append>
80 <el-button @click="sendEmail" v-loading="codeloading"> 80 <el-button v-loading="codeloading" class="codeBtn" @click="sendEmail">
81 {{ language == 0 ? '发送验证码' : 'Send Code' }} 81 {{ language == 0 ? '发送验证码' : 'Send Code' }}
82 </el-button> 82 </el-button>
83 </template> 83 </template>
...@@ -85,32 +85,32 @@ ...@@ -85,32 +85,32 @@
85 <!-- <div class="tip"></div>--> 85 <!-- <div class="tip"></div>-->
86 </el-form-item> 86 </el-form-item>
87 <el-form-item prop="code" required> 87 <el-form-item prop="code" required>
88 <el-input placeholder="Email verification code" v-model="form.code"/> 88 <el-input v-model="form.code" placeholder="Email verification code"/>
89 </el-form-item> 89 </el-form-item>
90 <el-form-item :label="language==0?'姓名':'Full Name'" required prop="fullName"> 90 <el-form-item :label="language==0?'姓名':'Full Name'" prop="fullName" required>
91 <el-input v-model="form.fullName"/> 91 <el-input v-model="form.fullName"/>
92 </el-form-item> 92 </el-form-item>
93 <el-form-item :label="language==0?'联系人职位':'Position'" required prop="position"> 93 <el-form-item :label="language==0?'联系人职位':'Position'" prop="position" required>
94 <el-select v-model="form.position"> 94 <el-select v-model="form.position">
95 <el-option label="Manager" value="0"/> 95 <el-option label="Manager" value="0"/>
96 <el-option label="Team leader" value="1"/> 96 <el-option label="Team leader" value="1"/>
97 <el-option label="Coach" value="2"/> 97 <el-option label="Coach" value="2"/>
98 <el-option label="Other" value="3"/> 98 <el-option label="Other" value="3"/>
99 </el-select> 99 </el-select>
100 <el-input v-if="form.position==3" class="mt10" placeholder="Please specify" v-model="form.remarks1"/> 100 <el-input v-if="form.position==3" v-model="form.remarks1" class="mt10" placeholder="Please specify"/>
101 </el-form-item> 101 </el-form-item>
102 <el-form-item :label="language==0?'联系电话':'Phone'" required prop="phone"> 102 <el-form-item :label="language==0?'联系电话':'Phone'" prop="phone" required>
103 <el-input v-model="form.phone"/> 103 <el-input v-model="form.phone"/>
104 </el-form-item> 104 </el-form-item>
105 <el-form-item :label="language==0?'签证办理中国大使馆':'Chinese Embassy Visas Office'" required prop="embassy"> 105 <el-form-item :label="language==0?'签证办理中国大使馆':'Chinese Embassy Visas Office'" prop="embassy" required>
106 <div class="red">Ex:EMBASSY OF THE PEOPLE'S REPUBLIC OFCHINA IN THE ISLAMIC REPUBLIC OF PAKISTAN 106 <div class="red">Ex:EMBASSY OF THE PEOPLE'S REPUBLIC OFCHINA IN THE ISLAMIC REPUBLIC OF PAKISTAN
107 </div> 107 </div>
108 <el-input v-model="form.embassy"/> 108 <el-input v-model="form.embassy"/>
109 </el-form-item> 109 </el-form-item>
110 <el-form-item :label="language==0?'中国大使馆邮箱':'Chinese Embassy Email'" required prop="embassyEmail"> 110 <el-form-item :label="language==0?'中国大使馆邮箱':'Chinese Embassy Email'" prop="embassyEmail" required>
111 <el-input v-model="form.embassyEmail"/> 111 <el-input v-model="form.embassyEmail"/>
112 </el-form-item> 112 </el-form-item>
113 113
114 <!--上传护照,多张--> 114 <!--上传护照,多张-->
115 <div class="cptVisaInfoBosTable"> 115 <div class="cptVisaInfoBosTable">
116 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required> 116 <el-form-item :label="language==0?'有效证件':'Passport Copy'" required>
...@@ -123,28 +123,30 @@ ...@@ -123,28 +123,30 @@
123 </div> 123 </div>
124 <div class="red">You may upload multiple passports at once to appy for multiple applicants. 124 <div class="red">You may upload multiple passports at once to appy for multiple applicants.
125 </div> 125 </div>
126 <ImageUpload v-model="form.passportCopy" :is-show-tip="false" :limit="20" 126 <ImageUpload v-model="form.passportCopy" :action="'/league/visa/getPersonInfoFromCert/3' "
127 :action="'/league/visa/getPersonInfoFromCert/3' " 127 :button-text="language==0?'上传':'Upload'"
128 paramName="pic" list-type="text" :show-file-list="false" 128 :is-show-tip="false"
129 :button-text="language==0?'上传':'Upload'" @response="getPassportInfo" 129 :limit="20" :show-file-list="false" list-type="text"
130 paramName="pic" @response="getPassportInfo"
130 /> 131 />
131 </div> 132 </div>
132 </el-form-item> 133 </el-form-item>
133 <!--识别信息--> 134 <!--识别信息-->
134 <div v-if="form.cptVisaInfoBos?.length>0" class="border"> 135 <div v-if="form.cptVisaInfoBos?.length>0" class="border">
135 <el-table :data="form.cptVisaInfoBos" border size="small"> 136 <el-table :data="form.cptVisaInfoBos" border size="small">
136 <el-table-column prop="passportCopy" :label="language==0?'护照':'Passport Copy'" min-width="100"> 137 <el-table-column :label="language==0?'护照':'Passport Copy'" min-width="100" prop="passportCopy">
137 <template #header> 138 <template #header>
138 <div class="esp"> 139 <div class="esp">
139 <span class="red">*</span>Passport Copy 140 <span class="red">*</span>Passport Copy
140 </div> 141 </div>
141 </template> 142 </template>
142 <template #default="scope"> 143 <template #default="scope">
143 <el-image style="width: 60px;z-index: 999;" :src="fillImgUrl(scope.row.passportCopy)" 144 <el-image :preview-src-list="[fillImgUrl(scope.row.passportCopy)]"
144 :preview-src-list="[fillImgUrl(scope.row.passportCopy)]" preview-teleported/> 145 :src="fillImgUrl(scope.row.passportCopy)"
146 preview-teleported style="width: 60px;z-index: 999;"/>
145 </template> 147 </template>
146 </el-table-column> 148 </el-table-column>
147 <el-table-column prop="position" :label="'position'" min-width="100"> 149 <el-table-column :label="'position'" min-width="100" prop="position">
148 <template #header> 150 <template #header>
149 <div class="esp"> 151 <div class="esp">
150 <span class="red">*</span>Position 152 <span class="red">*</span>Position
...@@ -180,11 +182,11 @@ ...@@ -180,11 +182,11 @@
180 </template> 182 </template>
181 <el-option label="Other (please specify)" value="other"/> 183 <el-option label="Other (please specify)" value="other"/>
182 </el-select> 184 </el-select>
183 <el-input v-if="scope.row.position=='other'" placeholder="Please specify" v-model="scope.row.remarks" 185 <el-input v-if="scope.row.position=='other'" v-model="scope.row.remarks" placeholder="Please specify"
184 size="small"></el-input> 186 size="small"></el-input>
185 </template> 187 </template>
186 </el-table-column> 188 </el-table-column>
187 <el-table-column prop="lastName" :label="'lastName'" min-width="100"> 189 <el-table-column :label="'lastName'" min-width="100" prop="lastName">
188 <template #header> 190 <template #header>
189 <div class="esp"> 191 <div class="esp">
190 <span class="red">*</span>LastName 192 <span class="red">*</span>LastName
...@@ -194,7 +196,7 @@ ...@@ -194,7 +196,7 @@
194 <el-input v-model="scope.row.lastName" size="small"/> 196 <el-input v-model="scope.row.lastName" size="small"/>
195 </template> 197 </template>
196 </el-table-column> 198 </el-table-column>
197 <el-table-column prop="fristName" :label="'firstName'" min-width="100"> 199 <el-table-column :label="'firstName'" min-width="100" prop="fristName">
198 <template #header> 200 <template #header>
199 <div class="esp"> 201 <div class="esp">
200 <span class="red">*</span>firstName 202 <span class="red">*</span>firstName
...@@ -204,7 +206,7 @@ ...@@ -204,7 +206,7 @@
204 <el-input v-model="scope.row.fristName" size="small"/> 206 <el-input v-model="scope.row.fristName" size="small"/>
205 </template> 207 </template>
206 </el-table-column> 208 </el-table-column>
207 <el-table-column prop="sex" :label="language==0?'性别':'Gender'" width="70"> 209 <el-table-column :label="language==0?'性别':'Gender'" prop="sex" width="70">
208 <template #header> 210 <template #header>
209 <div class="esp"> 211 <div class="esp">
210 <span class="red">*</span>Gender 212 <span class="red">*</span>Gender
...@@ -217,34 +219,34 @@ ...@@ -217,34 +219,34 @@
217 </el-select> 219 </el-select>
218 </template> 220 </template>
219 </el-table-column> 221 </el-table-column>
220 <el-table-column prop="nationality" :label="language==0?'国籍':'Nationality'" width="110px"> 222 <el-table-column :label="language==0?'国籍':'Nationality'" prop="nationality" width="110px">
221 <template #header> 223 <template #header>
222 <div class="esp"> 224 <div class="esp">
223 <span class="red">*</span>Nationality 225 <span class="red">*</span>Nationality
224 </div> 226 </div>
225 </template> 227 </template>
226 <template #default="scope"> 228 <template #default="scope">
227 <el-select v-model="scope.row.nationality" size="small" filterable> 229 <el-select v-model="scope.row.nationality" filterable size="small">
228 <el-option v-for="item in countrys" :key="item.id" :label="item.noc" 230 <el-option v-for="item in countrys" :key="item.id" :label="item.noc"
229 :value="item.id"/> 231 :value="item.id"/>
230 </el-select> 232 </el-select>
231 </template> 233 </template>
232 </el-table-column> 234 </el-table-column>
233 <el-table-column prop="birth" :label="language==0?'出生日期':'Birth'" width="130px"> 235 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="130px">
234 <template #header> 236 <template #header>
235 <div class="esp"> 237 <div class="esp">
236 <span class="red">*</span>Birth 238 <span class="red">*</span>Birth
237 </div> 239 </div>
238 </template> 240 </template>
239 <template #default="scope"> 241 <template #default="scope">
240 <el-date-picker size="small" 242 <el-date-picker v-model="scope.row.birthday"
241 v-model="scope.row.birthday" 243 format="YYYY-MM-DD"
242 style="width: 100%;" placeholder="YYYY-MM-DD" 244 placeholder="YYYY-MM-DD" size="small"
243 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 245 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
244 /> 246 />
245 </template> 247 </template>
246 </el-table-column> 248 </el-table-column>
247 <el-table-column prop="passportNo" :label="language==0?'护照号':'Passport No.'" width="110px"> 249 <el-table-column :label="language==0?'护照号':'Passport No.'" prop="passportNo" width="110px">
248 <template #header> 250 <template #header>
249 <div class="esp"> 251 <div class="esp">
250 <span class="red">*</span>Passport No. 252 <span class="red">*</span>Passport No.
...@@ -254,7 +256,7 @@ ...@@ -254,7 +256,7 @@
254 <el-input v-model="scope.row.passportNo" size="small"/> 256 <el-input v-model="scope.row.passportNo" size="small"/>
255 </template> 257 </template>
256 </el-table-column> 258 </el-table-column>
257 <el-table-column prop="expiryDate" :label="language==0?'护照签发日':'DATE OF ISSUE'" width="130px"> 259 <el-table-column :label="language==0?'护照签发日':'DATE OF ISSUE'" prop="expiryDate" width="130px">
258 <template #header> 260 <template #header>
259 <div class="esp"> 261 <div class="esp">
260 <span class="red">*</span>DATE OF ISSUE 262 <span class="red">*</span>DATE OF ISSUE
...@@ -262,13 +264,13 @@ ...@@ -262,13 +264,13 @@
262 </template> 264 </template>
263 <template #default="scope"> 265 <template #default="scope">
264 <el-date-picker 266 <el-date-picker
265 v-model="scope.row.issueDate" size="small" 267 v-model="scope.row.issueDate" format="YYYY-MM-DD"
266 style="width: 100%;" placeholder="YYYY-MM-DD" 268 placeholder="YYYY-MM-DD" size="small"
267 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 269 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
268 /> 270 />
269 </template> 271 </template>
270 </el-table-column> 272 </el-table-column>
271 <el-table-column prop="arrival" :label="language==0?'护照过期日':'DATE OF EXPIRY'" width="130px"> 273 <el-table-column :label="language==0?'护照过期日':'DATE OF EXPIRY'" prop="arrival" width="130px">
272 <template #header> 274 <template #header>
273 <div class="esp"> 275 <div class="esp">
274 <span class="red">*</span>DATE OF EXPIRY 276 <span class="red">*</span>DATE OF EXPIRY
...@@ -276,15 +278,15 @@ ...@@ -276,15 +278,15 @@
276 </template> 278 </template>
277 <template #default="scope"> 279 <template #default="scope">
278 <el-date-picker 280 <el-date-picker
279 v-model="scope.row.expiryDate" size="small" 281 v-model="scope.row.expiryDate" format="YYYY-MM-DD"
280 style="width: 100%;" placeholder="YYYY-MM-DD" 282 placeholder="YYYY-MM-DD" size="small"
281 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 283 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
282 /> 284 />
283 </template> 285 </template>
284 </el-table-column> 286 </el-table-column>
285 <el-table-column label="Actions" fixed="right"> 287 <el-table-column fixed="right" label="Actions">
286 <template #default="scope"> 288 <template #default="scope">
287 <el-button type="danger" size="small" @click="delPassportInfo(scope.$index)" icon="delete"/> 289 <el-button icon="delete" size="small" type="danger" @click="delPassportInfo(scope.$index)"/>
288 </template> 290 </template>
289 </el-table-column> 291 </el-table-column>
290 </el-table> 292 </el-table>
...@@ -292,13 +294,13 @@ ...@@ -292,13 +294,13 @@
292 </div> 294 </div>
293 <!-- 补充材料--> 295 <!-- 补充材料-->
294 <el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files"> 296 <el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files">
295 <file-upload v-model="form.files" :limit="1" :is-show-tip="false" 297 <file-upload v-model="form.files" :button-text="language==0?'上传':'Upload'" :is-show-tip="false"
296 :button-text="language==0?'上传':'Upload'"/> 298 :limit="1"/>
297 </el-form-item> 299 </el-form-item>
298 300
299 301
300 <div class="text-center"> 302 <div class="text-center">
301 <el-button type="primary" size="large" :disabled="!cptId" @click="submit" round class="btn-lineG"> 303 <el-button :disabled="!cptId" class="btn-lineG" round size="large" type="primary" @click="submit">
302 {{ language == 0 ? '提交' : 'SUBMIT' }} 304 {{ language == 0 ? '提交' : 'SUBMIT' }}
303 </el-button> 305 </el-button>
304 </div> 306 </div>
...@@ -334,16 +336,16 @@ const countrys = ref([]) ...@@ -334,16 +336,16 @@ const countrys = ref([])
334 const mnaList = ref([]) 336 const mnaList = ref([])
335 const cptId = ref('') 337 const cptId = ref('')
336 const rules = ref( 338 const rules = ref(
337 { 339 {
338 nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 340 nationality: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
339 name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 341 name: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
340 email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 342 email: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
341 birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 343 birth: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
342 passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},], 344 passportNo: [{required: true, trigger: 'blur', message: language.value == 0 ? '请输入' : 'Please enter'},],
343 passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},], 345 passportCopy: [{required: true, trigger: 'blur', message: language.value == 0 ? '请上传' : 'Please Upload'},],
344 arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 346 arrival: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
345 departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},], 347 departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
346 }) 348 })
347 const open = (params) => { 349 const open = (params) => {
348 show.value = true 350 show.value = true
349 title.value = params.title 351 title.value = params.title
...@@ -351,7 +353,7 @@ const open = (params) => { ...@@ -351,7 +353,7 @@ const open = (params) => {
351 if (!cptId.value) { 353 if (!cptId.value) {
352 proxy.$modal.msgError('参数有误'); 354 proxy.$modal.msgError('参数有误');
353 } 355 }
354 356
355 form.value.userId = user.userId 357 form.value.userId = user.userId
356 form.value.cptId = params.cptId 358 form.value.cptId = params.cptId
357 getCountryList() 359 getCountryList()
...@@ -410,23 +412,23 @@ const submit = () => { ...@@ -410,23 +412,23 @@ const submit = () => {
410 return; 412 return;
411 } 413 }
412 } 414 }
413 415
414 if (form.value.files && Array.isArray(form.value.files)) { 416 if (form.value.files && Array.isArray(form.value.files)) {
415 form.value.files = form.value.files[0]?.url 417 form.value.files = form.value.files[0]?.url
416 } 418 }
417 if (form.value.invitationFileArr) { 419 if (form.value.invitationFileArr) {
418 form.value.invitationFile = JSON.stringify(form.value.invitationFileArr) 420 form.value.invitationFile = JSON.stringify(form.value.invitationFileArr)
419 } 421 }
420 422
421 proxy.$refs.iformRef.validate(valid => { 423 proxy.$refs.iformRef.validate(valid => {
422 if (valid) { 424 if (valid) {
423 ElMessageBox.confirm( 425 ElMessageBox.confirm(
424 language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it', 426 language.value == 0 ? '请确认信息正确并提交吗?' : 'Please confirm that the information is correct and submit it',
425 language.value == 0 ? '提示' : 'Tips', { 427 language.value == 0 ? '提示' : 'Tips', {
426 confirmButtonText: language.value == 0 ? '确定' : 'Confirm', 428 confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
427 cancelButtonText: language.value == 0 ? '取消' : 'Cancel', 429 cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
428 type: 'warning' 430 type: 'warning'
429 }).then(() => { 431 }).then(() => {
430 form.value.cptId = cptId.value 432 form.value.cptId = cptId.value
431 addInvitation(form.value).then((res) => { 433 addInvitation(form.value).then((res) => {
432 if (res.data == -200) { 434 if (res.data == -200) {
...@@ -457,9 +459,9 @@ const getPassportInfo = (res) => { ...@@ -457,9 +459,9 @@ const getPassportInfo = (res) => {
457 } 459 }
458 form.value.cptVisaInfoBos.push(obj) 460 form.value.cptVisaInfoBos.push(obj)
459 } else { 461 } else {
460 if(res.data) { 462 if (res.data) {
461 ElMessage.error(res.data.code) 463 ElMessage.error(res.data.code)
462 464
463 let obj = { 465 let obj = {
464 position: '', 466 position: '',
465 lastName: '', 467 lastName: '',
...@@ -473,7 +475,7 @@ const getPassportInfo = (res) => { ...@@ -473,7 +475,7 @@ const getPassportInfo = (res) => {
473 passportCopy: res.data.pic 475 passportCopy: res.data.pic
474 } 476 }
475 form.value.cptVisaInfoBos.push(obj) 477 form.value.cptVisaInfoBos.push(obj)
476 }else{ 478 } else {
477 ElMessage.error(res.msg) 479 ElMessage.error(res.msg)
478 } 480 }
479 } 481 }
...@@ -511,7 +513,7 @@ function changeApplicatType() { ...@@ -511,7 +513,7 @@ function changeApplicatType() {
511 513
512 </script> 514 </script>
513 515
514 <style scoped lang="scss"> 516 <style lang="scss" scoped>
515 .red { 517 .red {
516 color: red !important; 518 color: red !important;
517 } 519 }
...@@ -538,7 +540,7 @@ h4 { ...@@ -538,7 +540,7 @@ h4 {
538 padding: 10px; 540 padding: 10px;
539 margin-bottom: 20px; 541 margin-bottom: 20px;
540 border: 1px dashed #ebeef5; 542 border: 1px dashed #ebeef5;
541 543
542 :deep(.el-table .el-table__header-wrapper th) { 544 :deep(.el-table .el-table__header-wrapper th) {
543 font-size: 12px; 545 font-size: 12px;
544 } 546 }
...@@ -548,4 +550,10 @@ h4 { ...@@ -548,4 +550,10 @@ h4 {
548 flex-wrap: wrap; 550 flex-wrap: wrap;
549 display: block; 551 display: block;
550 } 552 }
553
554 .codeBtn {
555 background-color: #0540EC !important;
556 color: #fff !important;
557
558 }
551 </style> 559 </style>
......
1 <template> 1 <template>
2 <el-dialog v-model="show" :title="language==0?'注册':'Login'" close-icon="CircleClose" 2 <el-dialog v-model="show" :append-to-body="true" :title="language==0?'注册':'Login'"
3 width="480" :append-to-body="true" destroy-on-close @close="close" center> 3 center close-icon="CircleClose" destroy-on-close width="480" @close="close">
4 <div> 4 <div>
5 <el-form class="d-form" size="large" :label-width="language==0?80:150" :label-position="language==0?'right':'top'" style="max-width: 500px;margin: auto"> 5 <el-form :label-position="language==0?'right':'top'" :label-width="language==0?80:150" class="d-form" size="large"
6 <!-- <div style="display: flex;gap: 20px;">--> 6 style="max-width: 500px;margin: auto">
7 <el-form-item :label="language==0?'姓':'Last Name'" required style="width: 100%;"> 7 <!-- <div style="display: flex;gap: 20px;">-->
8 <el-input type="text" v-model="form.lastName" :placeholder="language==0?'请输入您的姓':'Please enter your last name'"/> 8 <el-form-item :label="language==0?'姓':'Last Name'" required style="width: 100%;">
9 </el-form-item> 9 <el-input v-model="form.lastName" :placeholder="language==0?'请输入您的姓':'Please enter your last name'"
10 <el-form-item :label="language==0?'名':'First Name'" required style="width: 100%;"> 10 type="text"/>
11 <el-input type="text" v-model="form.firstName" :placeholder="language==0?'请输入您的名':'Please enter your first name'"/> 11 </el-form-item>
12 </el-form-item> 12 <el-form-item :label="language==0?'名':'First Name'" required style="width: 100%;">
13 <!-- </div>--> 13 <el-input v-model="form.firstName" :placeholder="language==0?'请输入您的名':'Please enter your first name'"
14 type="text"/>
15 </el-form-item>
16 <!-- </div>-->
14 <el-form-item :label="language==0?'邮箱':'E-mail'" required> 17 <el-form-item :label="language==0?'邮箱':'E-mail'" required>
15 <el-input type="text" v-model="form.account" @change="resetCode" @blur="verifyCode" 18 <el-input v-model="form.account" type="text" @blur="verifyCode" @change="resetCode"
16 /> 19 />
17 <div class="tip" v-if="language==0"> 20 <div v-if="language==0" class="tip">
18 (请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。 21 (请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
19 该邮箱后续会作为您登录的账户, 22 该邮箱后续会作为您登录的账户,
20 并接收报名审核结果、支付账单、签证邀请函等相关信息。) 23 并接收报名审核结果、支付账单、签证邀请函等相关信息。)
21 </div> 24 </div>
22 <div v-else class="tip"> 25 <div v-else class="tip">
23 Please fill in the correct email, which cannot be changed after the registration is completed. The email will be used as your login account and to receive relevant information including results of registration review, payment bills, visa invitation letters, etc. 26 Please fill in the correct email, which cannot be changed after the registration is completed. The email
27 will be used as your login account and to receive relevant information including results of registration
28 review, payment bills, visa invitation letters, etc.
24 </div> 29 </div>
25 </el-form-item> 30 </el-form-item>
26 <el-form-item :label="language==0?'验证码':'Code'" required> 31 <el-form-item :label="language==0?'验证码':'Code'" required>
27 <el-input v-model="form.code"> 32 <el-input v-model="form.code">
28 <template #append> 33 <template #append>
29 <el-button type="primary" plain style="width: 110px" @click="sendsmsMsg"> 34 <el-button class="codeBtn" plain style="width: 110px" type="primary" @click="sendsmsMsg">
30 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false"> 35 <count-down v-if="counting" v-slot="{ totalSeconds }" :time="60000" @end="counting=false">
31 {{ totalSeconds }} {{ language == 0 ? '秒' : 's' }} 36 {{ totalSeconds }} {{ language == 0 ? '秒' : 's' }}
32 </count-down> 37 </count-down>
...@@ -36,8 +41,8 @@ ...@@ -36,8 +41,8 @@
36 </el-button> 41 </el-button>
37 </template> 42 </template>
38 </el-input> 43 </el-input>
39 <div class="vcodeBox" :style="isShow?'height:240px':'height:0'"> 44 <div :style="isShow?'height:240px':'height:0'" class="vcodeBox">
40 <Vcode :show="isShow" :successText="successVcode" :failText="failVcode" :slider-text="sliderText" 45 <Vcode :failText="failVcode" :show="isShow" :slider-text="sliderText" :successText="successVcode"
41 type="inside" @success="codeSuccess"></Vcode> 46 type="inside" @success="codeSuccess"></Vcode>
42 </div> 47 </div>
43 </el-form-item> 48 </el-form-item>
...@@ -48,22 +53,24 @@ ...@@ -48,22 +53,24 @@
48 </el-option> 53 </el-option>
49 </el-select> 54 </el-select>
50 </el-form-item> 55 </el-form-item>
51 56
52 <el-form-item :label="language==0?'密码':'Password'" required> 57 <el-form-item :label="language==0?'密码':'Password'" required>
53 <el-input type="password" show-password v-model="form.password" 58 <el-input v-model="form.password" :placeholder="language==0?'6-16位密码。区分大小写':''" show-password
54 :placeholder="language==0?'6-16位密码。区分大小写':''"/> 59 type="password"/>
55 </el-form-item> 60 </el-form-item>
56 <el-form-item :label="language==0?'确认密码':'Confirm Password'" required> 61 <el-form-item :label="language==0?'确认密码':'Confirm Password'" required>
57 <el-input type="password" show-password v-model="form.password2" @blur="vconfirmPassword" 62 <el-input v-model="form.password2" :placeholder="language==0?'再次输入密码':''" show-password type="password"
58 :placeholder="language==0?'再次输入密码':''"/> 63 @blur="vconfirmPassword"/>
59 </el-form-item> 64 </el-form-item>
60 </el-form> 65 </el-form>
61 66
62 </div> 67 </div>
63 <template #footer> 68 <template #footer>
64 <div class="dialog-footer text-center"> 69 <div class="dialog-footer text-center">
65 <a class="btn-black w200px" @click="register">{{language==0?'登录':'Confirm'}}</a> 70 <a class="btn-black w200px" @click="register">{{ language == 0 ? '登录' : 'Confirm' }}</a>
66 <div class="text-primary underline mt20 pointer" @click="goLogin">{{language==0?'已有账号去登录':'Already have an account? Login'}}</div> 71 <div class="text-primary underline mt20 pointer" @click="goLogin">
72 {{ language == 0 ? '已有账号去登录' : 'Already have an account? Login' }}
73 </div>
67 </div> 74 </div>
68 </template> 75 </template>
69 </el-dialog> 76 </el-dialog>
...@@ -92,10 +99,21 @@ const data = reactive({ ...@@ -92,10 +99,21 @@ const data = reactive({
92 failVcode: '验证失败,请重试', 99 failVcode: '验证失败,请重试',
93 successVcode: '验证通过!', 100 successVcode: '验证通过!',
94 sliderText: '拖动滑块完成拼图', 101 sliderText: '拖动滑块完成拼图',
95 show:false, 102 show: false,
96 associationList:[] 103 associationList: []
97 }) 104 })
98 const {isShow, isCodeTrue, counting, form, activeStep, failVcode, successVcode, sliderText,show,associationList} = toRefs(data) 105 const {
106 isShow,
107 isCodeTrue,
108 counting,
109 form,
110 activeStep,
111 failVcode,
112 successVcode,
113 sliderText,
114 show,
115 associationList
116 } = toRefs(data)
99 const emit = defineEmits(['submit']) 117 const emit = defineEmits(['submit'])
100 onMounted(() => { 118 onMounted(() => {
101 if (language.value == 1) { 119 if (language.value == 1) {
...@@ -106,7 +124,7 @@ onMounted(() => { ...@@ -106,7 +124,7 @@ onMounted(() => {
106 getAssociationList() 124 getAssociationList()
107 }) 125 })
108 const getAssociationList = () => { 126 const getAssociationList = () => {
109 getAssociation().then(res=>{ 127 getAssociation().then(res => {
110 associationList.value = res.data 128 associationList.value = res.data
111 }) 129 })
112 } 130 }
...@@ -136,7 +154,7 @@ function sendsmsMsg() { ...@@ -136,7 +154,7 @@ function sendsmsMsg() {
136 return 154 return
137 } 155 }
138 if (counting.value) { 156 if (counting.value) {
139 return 157
140 } else { 158 } else {
141 isShow.value = true 159 isShow.value = true
142 } 160 }
...@@ -157,17 +175,19 @@ function codeSuccess(msg) { ...@@ -157,17 +175,19 @@ function codeSuccess(msg) {
157 getCaptchaSms({account: form.value.account}).then(res => { 175 getCaptchaSms({account: form.value.account}).then(res => {
158 counting.value = true 176 counting.value = true
159 isCodeTrue.value = true 177 isCodeTrue.value = true
160 ElMessage.success(language.value == 0 ? '发送成功,请关注邮箱邮件' :'Send success, please check your email') 178 ElMessage.success(language.value == 0 ? '发送成功,请关注邮箱邮件' : 'Send success, please check your email')
161 }) 179 })
162 } 180 }
163 181
164 function resetCode() { 182 function resetCode() {
165 isCodeTrue.value = false 183 isCodeTrue.value = false
166 } 184 }
185
167 function goLogin() { 186 function goLogin() {
168 show.value = false 187 show.value = false
169 useUserStore().setReLogin() 188 useUserStore().setReLogin()
170 } 189 }
190
171 function register() { 191 function register() {
172 //游客注册 192 //游客注册
173 if (!form.value.account) { 193 if (!form.value.account) {
...@@ -187,29 +207,39 @@ function register() { ...@@ -187,29 +207,39 @@ function register() {
187 return 207 return
188 } 208 }
189 if (!form.value.password) { 209 if (!form.value.password) {
190 ElMessage.warning(language.value == 0?'请输入密码':'Please enter password') 210 ElMessage.warning(language.value == 0 ? '请输入密码' : 'Please enter password')
191 return 211 return
192 } 212 }
193 if (!form.value.password2) { 213 if (!form.value.password2) {
194 ElMessage.warning(language.value == 0?'请再次输入密码':'Please enter password') 214 ElMessage.warning(language.value == 0 ? '请再次输入密码' : 'Please enter password')
195 return 215 return
196 } 216 }
197 delete form.value.password2 217 delete form.value.password2
198 vistorRegister(form.value).then(res=>{ 218 vistorRegister(form.value).then(res => {
199 setToken(res.data.token) 219 setToken(res.data.token)
200 emit('submitForm') 220 emit('submitForm')
201 }) 221 })
202 } 222 }
223
203 const vconfirmPassword = () => { 224 const vconfirmPassword = () => {
204 if (form.value.password !== form.value.password2) { 225 if (form.value.password !== form.value.password2) {
205 ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' :'The two passwords entered are inconsistent') 226 ElMessage.warning(language.value == 0 ? '两次输入的密码不一致' : 'The two passwords entered are inconsistent')
206 } 227 }
207 } 228 }
229
208 function close() { 230 function close() {
209 show.value = false 231 show.value = false
210 } 232 }
211 </script> 233 </script>
212 234
213 <style scoped lang="scss"> 235 <style lang="scss" scoped>
214 .tip{line-height: 1.6} 236 .tip {
237 line-height: 1.6
238 }
239
240 .codeBtn {
241 background-color: #0540EC !important;
242 color: #fff !important;
243
244 }
215 </style> 245 </style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!