d7fa7cbe by zhangmeng

世锦赛

1 parent 1418e350
...@@ -156,7 +156,8 @@ ...@@ -156,7 +156,8 @@
156 <el-table-column :label="language==0?'入境日期':'Date ofEntrye'" prop="" width="130px"> 156 <el-table-column :label="language==0?'入境日期':'Date ofEntrye'" prop="" width="130px">
157 <template #header> 157 <template #header>
158 <div class="esp"> 158 <div class="esp">
159 <span class="red">*</span>Date ofEntrye 159 <span class="red">*</span>Date ofEntrye <br>
160 <span class="red">&nbsp; YYYY-MM-DD</span>
160 </div> 161 </div>
161 </template> 162 </template>
162 <template #default="scope"> 163 <template #default="scope">
...@@ -173,7 +174,8 @@ ...@@ -173,7 +174,8 @@
173 <el-table-column :label="language==0?'离境日期':'Date ofDeparture'" prop="" width="130px"> 174 <el-table-column :label="language==0?'离境日期':'Date ofDeparture'" prop="" width="130px">
174 <template #header> 175 <template #header>
175 <div class="esp"> 176 <div class="esp">
176 <span class="red">*</span>Date ofDeparture 177 <span class="red">*</span>Date ofDeparture <br>
178 <span class="red">&nbsp; YYYY-MM-DD</span>
177 </div> 179 </div>
178 </template> 180 </template>
179 <template #default="scope"> 181 <template #default="scope">
...@@ -268,15 +270,15 @@ ...@@ -268,15 +270,15 @@
268 </template> 270 </template>
269 <template #default="scope"> 271 <template #default="scope">
270 <el-select v-model="scope.row.nationality" filterable size="small"> 272 <el-select v-model="scope.row.nationality" filterable size="small">
271 <el-option v-for="item in countrys" :key="item.id" :label="item.noc" 273 <el-option v-for="item in countrys" :key="item.id" :label="item.noc" :value="item.noc"/>
272 :value="item.id"/>
273 </el-select> 274 </el-select>
274 </template> 275 </template>
275 </el-table-column> 276 </el-table-column>
276 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="130px"> 277 <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="130px">
277 <template #header> 278 <template #header>
278 <div class="esp"> 279 <div class="esp">
279 <span class="red">*</span>Birth 280 <span class="red">*</span>Birth <br>
281 <span class="red">&nbsp; YYYY-MM-DD</span>
280 </div> 282 </div>
281 </template> 283 </template>
282 <template #default="scope"> 284 <template #default="scope">
...@@ -301,7 +303,8 @@ ...@@ -301,7 +303,8 @@
301 <el-table-column :label="language==0?'护照签发日':'DATE OF ISSUE'" prop="expiryDate" width="130px"> 303 <el-table-column :label="language==0?'护照签发日':'DATE OF ISSUE'" prop="expiryDate" width="130px">
302 <template #header> 304 <template #header>
303 <div class="esp"> 305 <div class="esp">
304 <span class="red">*</span>DATE OF ISSUE 306 <span class="red">*</span>DATE OF ISSUE <br>
307 <span class="red">&nbsp; YYYY-MM-DD</span>
305 </div> 308 </div>
306 </template> 309 </template>
307 <template #default="scope"> 310 <template #default="scope">
...@@ -315,7 +318,8 @@ ...@@ -315,7 +318,8 @@
315 <el-table-column :label="language==0?'护照过期日':'DATE OF EXPIRY'" prop="arrival" width="130px"> 318 <el-table-column :label="language==0?'护照过期日':'DATE OF EXPIRY'" prop="arrival" width="130px">
316 <template #header> 319 <template #header>
317 <div class="esp"> 320 <div class="esp">
318 <span class="red">*</span>DATE OF EXPIRY 321 <span class="red">*</span>DATE OF EXPIRY <br>
322 <span class="red">&nbsp; YYYY-MM-DD</span>
319 </div> 323 </div>
320 </template> 324 </template>
321 <template #default="scope"> 325 <template #default="scope">
...@@ -347,12 +351,13 @@ ...@@ -347,12 +351,13 @@
347 </el-form-item> 351 </el-form-item>
348 <el-form-item> 352 <el-form-item>
349 <el-checkbox v-model="form.check" style="pointer-events: none"/> 353 <el-checkbox v-model="form.check" style="pointer-events: none"/>
350 <el-link style="margin-left: 5px" type="primary" @click="showCheck=!showCheck">{{ 354 <el-link style="margin-left: 5px" type="primary" @click="handelAffixInvitationDialog">{{
351 language == 0 ? '我确认所提供的资料是正确的' : 'I confirm that the information provided is correct' 355 language == 0 ? '我确认所提供的资料是正确的' : 'I confirm that the information provided is correct'
352 }} 356 }}
353 </el-link> 357 </el-link>
354 </el-form-item> 358 </el-form-item>
355 359
360
356 <div class="text-center"> 361 <div class="text-center">
357 <el-button :disabled="!cptId" class="btn-lineG" round size="large" type="primary" @click="submit"> 362 <el-button :disabled="!cptId" class="btn-lineG" round size="large" type="primary" @click="submit">
358 {{ language == 0 ? '提交' : 'SUBMIT' }} 363 {{ language == 0 ? '提交' : 'SUBMIT' }}
...@@ -361,24 +366,7 @@ ...@@ -361,24 +366,7 @@
361 </el-form> 366 </el-form>
362 </div> 367 </div>
363 368
364 <el-dialog 369 <affixInvitationDialog ref="affixInvitationDialogRef" @success="handelSuccess"/>
365 v-model="showCheck"
366 append-to-body center
367 class="pcloginpop"
368 destroy-on-close
369 style="min-width: 300px;max-width: 600px"
370 >
371 <p style="font-size: 16px">
372 Passport information has been auto-recognized.Please double-check carefully, as errors may occur.Edit if
373 necessary
374 before submission.
375 </p>
376 <br>
377 <p style="text-align: center">
378 <el-button type="primary" @click="handelSubmit">Confrm</el-button>
379 </p>
380 <br>
381 </el-dialog>
382 </el-dialog> 370 </el-dialog>
383 371
384 </template> 372 </template>
...@@ -400,6 +388,8 @@ import ImageUpload from '@/components/ImageUpload/index.vue' ...@@ -400,6 +388,8 @@ import ImageUpload from '@/components/ImageUpload/index.vue'
400 import useUserStore from "@/store/modules/user"; 388 import useUserStore from "@/store/modules/user";
401 import _ from 'lodash' 389 import _ from 'lodash'
402 import FileUpload from "@/components/FileUpload"; 390 import FileUpload from "@/components/FileUpload";
391 import affixInvitationDialog from './affixInvitationDialog.vue'
392 import {fillImgUrl} from "/@/utils/ruoyi";
403 393
404 const emit = defineEmits(['refresh']) 394 const emit = defineEmits(['refresh'])
405 const user = useUserStore().user 395 const user = useUserStore().user
...@@ -505,11 +495,15 @@ function getMNAList() { ...@@ -505,11 +495,15 @@ function getMNAList() {
505 }) 495 })
506 } 496 }
507 497
508 function handelSubmit() { 498 function handelSuccess() {
509 showCheck.value = false 499 showCheck.value = false
510 form.value.check = true 500 form.value.check = true
511 } 501 }
512 502
503 function handelAffixInvitationDialog() {
504 proxy.$refs['affixInvitationDialogRef'].open(form.value)
505 }
506
513 const submit = async () => { 507 const submit = async () => {
514 console.log(form.value.check) 508 console.log(form.value.check)
515 if (form.value.email?.indexOf('@') == -1) { 509 if (form.value.email?.indexOf('@') == -1) {
...@@ -551,7 +545,7 @@ const submit = async () => { ...@@ -551,7 +545,7 @@ const submit = async () => {
551 } 545 }
552 await proxy.$refs.iformRef.validate() 546 await proxy.$refs.iformRef.validate()
553 if (!form.value.check) { 547 if (!form.value.check) {
554 showCheck.value = true 548 handelAffixInvitationDialog()
555 return 549 return
556 } 550 }
557 await ElMessageBox.confirm( 551 await ElMessageBox.confirm(
...@@ -656,6 +650,11 @@ function changeApplicatType() { ...@@ -656,6 +650,11 @@ function changeApplicatType() {
656 }) 650 })
657 } 651 }
658 652
653 function associationCodeFind(id) {
654 const obj = mnaList.value.find(v => v.code == id)
655 if (obj) return obj.nameEn
656 }
657
659 </script> 658 </script>
660 659
661 <style lang="scss" scoped> 660 <style lang="scss" scoped>
......
1 <template>
2 <el-dialog
3 v-model="show"
4 append-to-body center
5 class="pcloginpop"
6 destroy-on-close
7 style="min-width: 350px;"
8 >
9 <div>
10 <el-descriptions border>
11 <el-descriptions-item label="No.">{{ form.id }}</el-descriptions-item>
12 <el-descriptions-item label="Applicant Type">{{
13 form.remarks || form.applicatTypeName
14 }}
15 </el-descriptions-item>
16 <el-descriptions-item label="Invitation Type">{{ form.invitationTypeName }}</el-descriptions-item>
17 <el-descriptions-item label="MNA/Team Name">
18 {{ associationCodeFind(form.associationCode) }}
19 </el-descriptions-item>
20 <el-descriptions-item label="MNA/Team Address">{{ form.associationAddress }}</el-descriptions-item>
21 <el-descriptions-item label="Contact Email">{{ form.email }}</el-descriptions-item>
22 <el-descriptions-item label="Full Name">{{ form.fullName }}</el-descriptions-item>
23 <el-descriptions-item label="Position">{{ form.remarks1 || form.positionName }}</el-descriptions-item>
24 <el-descriptions-item label="Phone">{{ form.phone }}</el-descriptions-item>
25 <el-descriptions-item label="Chinese Embassy Visa Office">{{ form.embassy }}</el-descriptions-item>
26 <el-descriptions-item label="Chinese Embassy Email">{{ form.embassyEmail }}</el-descriptions-item>
27 <el-descriptions-item label="Additional Documents">
28 <el-link v-if="form.files" :href="fillImgUrl(form.files)" target="_blank" type="primary">
29 additional documents
30 </el-link>
31 </el-descriptions-item>
32 <el-descriptions-item label="Proof of Employment">
33 <el-link v-if="form.invitationFile" :href="fillImgUrl(form.invitationFile)" target="_blank"
34 type="primary">
35 proof of employment
36 </el-link>
37 </el-descriptions-item>
38 <el-descriptions-item label="Remarks">{{ form.remarks3 }}</el-descriptions-item>
39 </el-descriptions>
40 <!-- <el-divider></el-divider>-->
41 <br/>
42 <div v-if="form.cptVisaInfoBos?.length>0">
43 <el-table :data="form.cptVisaInfoBos" border stripe>
44 <el-table-column label="Passport Copy" prop="passportCopy">
45 <template #default="{row}">
46 <el-image
47 :preview-src-list="[fillImgUrl(row.passportCopy)]"
48 :preview-teleported="true"
49 :src="fillImgUrl(row.passportCopy)"
50 style="width: 50px;height: 70px"
51 />
52 </template>
53 </el-table-column>
54 <el-table-column align="center" label="Date ofEntrye" prop="entryDate"/>
55 <el-table-column align="center" label="Date ofDeparture" prop="departureDate"/>
56 <el-table-column align="center" label="position" prop="position"/>
57 <el-table-column align="center" label="lastName" prop="lastName"/>
58 <el-table-column align="center" label="firstName" prop="fristName"/>
59 <el-table-column align="center" label="Gender" prop="sex">
60 <template #default="{row}">
61 {{ row.sex == '0' ? 'M' : 'F' }}
62 </template>
63 </el-table-column>
64 <el-table-column align="center" label="nationality" prop="nationality"/>
65 <el-table-column align="center" label="birthday" prop="birthday"/>
66 <el-table-column align="center" label="Passport No." prop="passportNo"/>
67 <el-table-column align="center" label="DATE OF ISSUE" prop="issueDate"/>
68 <el-table-column align="center" label="DATE OF EXPIRY" prop="expiryDate"/>
69 </el-table>
70 </div>
71 </div>
72
73 <p class="red" style="font-size: 16px">
74 Passport information has been auto-recognized.Please double-check carefully, as errors may occur.Edit if
75 necessary
76 before submission.
77 </p>
78 <br>
79 <p style="text-align: center">
80 <el-button type="primary" @click="handelSubmit">Confrm</el-button>
81 </p>
82 <br>
83 </el-dialog>
84
85 </template>
86
87 <script setup>
88 import {useStorage} from "@vueuse/core/index";
89 import {getCurrentInstance, ref} from "vue";
90 import {
91 associationList,
92 } from "@/apiPc/match";
93 import useUserStore from "@/store/modules/user";
94 import _ from 'lodash'
95 import {fillImgUrl} from "/@/utils/ruoyi";
96
97 const emit = defineEmits(['refresh'])
98 const user = useUserStore().user
99 const {proxy} = getCurrentInstance()
100 const language = useStorage('language', 0)
101 const form = ref({
102 gender: '0',
103 chinese: '0',
104 cptVisaInfoBos: [],
105 email: user?.email,
106 })
107 const show = ref(false)
108 const mnaList = ref([])
109 const open = (params) => {
110 show.value = true
111 form.value = params
112 getMNAList()
113 }
114 defineExpose({
115 open,
116 })
117
118
119 function getMNAList() {
120 associationList().then(res => {
121 mnaList.value = res.data
122 })
123 }
124
125 function handelSubmit() {
126 show.value = false
127 form.value.check = true
128 }
129
130 function associationCodeFind(id) {
131 const obj = mnaList.value.find(v => v.code == id)
132 if (obj) return obj.nameEn
133 }
134
135 </script>
136
137 <style lang="scss" scoped>
138 .red {
139 color: red !important;
140 }
141
142 :deep(.el-upload--picture-card) {
143 --el-upload-picture-card-size: 60px;
144 }
145
146 .tip {
147 font-size: 12px;
148 }
149
150 .boxInvitation {
151 width: 96%;
152 margin: 20px auto 0;
153 }
154
155 h4 {
156 font-size: 15px;
157 line-height: 1.6;
158 }
159
160 .cptVisaInfoBosTable {
161 padding: 10px;
162 margin-bottom: 20px;
163 border: 1px dashed #ebeef5;
164
165 :deep(.el-table .el-table__header-wrapper th) {
166 font-size: 12px;
167 }
168 }
169
170 .wrap-item {
171 flex-wrap: wrap;
172 display: block;
173 }
174
175 .codeBtn {
176 background-color: #0540EC !important;
177 color: #fff !important;
178
179 }
180 </style>
...@@ -83,9 +83,9 @@ export default defineConfig(({mode, command}) => { ...@@ -83,9 +83,9 @@ export default defineConfig(({mode, command}) => {
83 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') 83 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
84 }, 84 },
85 '/dev-api': { 85 '/dev-api': {
86 target: 'http://192.168.1.118:8082/', 86 // target: 'http://192.168.1.118:8082/',
87 // target: 'http://192.168.1.131:8081/', 87 // target: 'http://192.168.1.131:8081/',
88 // target: 'https://tk005.wxjylt.com/stage-api', 88 target: 'https://tk005.wxjylt.com/stage-api',
89 // target: 'http://124.70.181.90:1880/stage-api', 89 // target: 'http://124.70.181.90:1880/stage-api',
90 // target: 'https://sys.2025wtcwuxi.com/stage-api/', 90 // target: 'https://sys.2025wtcwuxi.com/stage-api/',
91 changeOrigin: true, 91 changeOrigin: true,
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!