世锦赛
Showing
3 changed files
with
209 additions
and
30 deletions
| ... | @@ -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"> 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"> 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"> 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"> 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"> 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, | ... | ... |
-
Please register or sign in to post a comment