3877470c by 杨炀

1. 签证服务 登录后使用

2. 签证服务-关于护照上传的修改
1 parent dcc48c2b
......@@ -88,7 +88,7 @@ export function countryList() {
}
export function associationList() {
return request({
url: `/system/association/getList`,
url: `/system/mna/getList`,
method: 'get'
})
}
......
......@@ -29,14 +29,14 @@
ref="imageUpload"
:multiple="limit > 1"
:action="actionUrl || uploadImgUrl"
list-type="picture-card"
:list-type="listType"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:limit="limit"
:on-error="handleUploadError"
:on-exceed="handleExceed"
:before-remove="handleDelete"
:show-file-list="true"
:show-file-list="showFileList"
:headers="headers"
:on-preview="handlePictureCardPreview"
:file-list="fileListInUpload"
......@@ -45,7 +45,13 @@
:disabled="disabled"
:accept="accept"
>
<el-icon class="avatar-uploader-icon"><plus /></el-icon>
<el-icon v-if="listType=='picture-card'" class="avatar-uploader-icon"><plus /></el-icon>
<el-link v-else class="mr10" type="primary">
<el-icon>
<Upload/>
</el-icon>
{{ buttonText }}
</el-link>
</el-upload>
</el-row>
......@@ -98,6 +104,10 @@ const props = defineProps({
type: String,
default: 'image'
},
listType: {
type: String,
default: 'picture-card'
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: {
type: Array,
......@@ -112,9 +122,17 @@ const props = defineProps({
type: Boolean,
default: false
},
showFileList: {
type: Boolean,
default: true
},
action: {
type: String,
default: ''
},
buttonText:{
type: String,
default: '上传文件'
}
})
const actionUrl = computed(() => {
......
......@@ -168,6 +168,14 @@ function popRemark(type) {
ElMessage.warning('请切换英文页面办理')
return
} else {
if (!user) {
ElMessage({
type: 'warning',
message: language.value == 0 ? '请先登录' : 'Please log in first',
})
return
}
applyInvitation()
return
}
......
......@@ -8,7 +8,7 @@
<div class="text-center pd20" v-if="showR">
<img class="mauto" src="@/assets/dance/ok.png"/>
<!-- 提交成功等待审核-->
<!-- 提交成功等待审核-->
<h3 v-if="form.status">
<span v-if="form.status==0">In Approval</span>
<span v-if="form.status==1">Approved</span>
......@@ -40,19 +40,21 @@
</el-form-item>
<el-form-item :label="language==0?'是否需要中文邀请函':'Chinese Invitation'" required prop="chinese">
<el-radio-group v-model="form.chinese">
<el-radio :value="1">{{ language==0?'是':'Yes' }}</el-radio>
<el-radio :value="0">{{ language==0?'否':'No' }}</el-radio>
<el-radio :value="1">{{ language == 0 ? '是' : 'Yes' }}</el-radio>
<el-radio :value="0">{{ language == 0 ? '否' : 'No' }}</el-radio>
</el-radio-group>
</el-form-item>
<!-- 一般信息-->
<el-form-item :label="language==0?'国家/地区协会名':'MNA/Team Name'" :required="form.applicatType!=2" prop="associationCode">
<!-- 一般信息-->
<el-form-item :label="language==0?'国家/地区协会名':'MNA/Team Name'" :required="form.applicatType!=2"
prop="associationCode">
<el-select v-model="form.associationCode" filterable>
<el-option v-for="item in mnaList" :key="item.code" :label="language==0?item.nameCn:item.nameEn"
:value="item.code"/>
</el-select>
</el-form-item>
<el-form-item :label="language==0?'国家/地区协会地址':'MNA/Team Address'" :required="form.applicatType!=2" prop="associationAddress">
<el-form-item :label="language==0?'国家/地区协会地址':'MNA/Team Address'" :required="form.applicatType!=2"
prop="associationAddress">
<el-input v-model="form.associationAddress"/>
</el-form-item>
<el-form-item :label="language==0?'邮箱':'Email'" required prop="email">
......@@ -80,18 +82,24 @@
<el-input v-model="form.embassyEmail"/>
</el-form-item>
<!--上传护照,多张-->
<!--上传护照,多张-->
<div class="cptVisaInfoBosTable">
<el-form-item :label="language==0?'有效证件':'Passport Copy'" required>
<ImageUpload v-model="form.passportCopy" :is-show-tip="false"
:action="'/league/visa/getPersonInfoFromCert/3'"
paramName="pic"
paramName="pic" list-type="text" :show-file-list="false"
:button-text="language==0?'上传':'Upload'" @response="getPassportInfo"
/>
</el-form-item>
<!--识别信息-->
<!--识别信息-->
<div v-if="form.cptVisaInfoBos?.length>0" class="border">
<el-table :data="form.cptVisaInfoBos" border size="small">
<el-table-column prop="passportCopy" :label="language==0?'护照':'Passport Copy'" min-width="100">
<template #default="scope">
<el-image style="width: 60px"
:src="fillImgUrl(scope.row.passportCopy)"/>
</template>
</el-table-column>
<el-table-column prop="position" :label="'position'" min-width="100">
<template #default="scope">
<el-input v-model="scope.row.position" size="small"/>
......@@ -163,18 +171,16 @@
</template>
</el-table-column>
</el-table>
</div>
</div>
<!-- 补充材料-->
<!-- 补充材料-->
<el-form-item :label="language==0?'补充材料':'Additional Documents'" prop="files">
<file-upload v-model="form.files" :limit="1" :is-show-tip="false"
:button-text="language==0?'上传':'Upload'"/>
</el-form-item>
<div class="text-center">
<el-button type="primary" size="large" @click="submit" round class="btn-lineG">
{{ language == 0 ? '提交' : 'SUBMIT' }}
......@@ -194,12 +200,15 @@ import {ElMessage, ElMessageBox} from "element-plus";
import {addInvitation, associationList, countryList, getVisaInfo} from "@/apiPc/match";
import ImageUpload from '@/components/ImageUpload/index.vue'
import useUserStore from "@/store/modules/user";
import _ from 'lodash'
import FileUpload from "@/components/FileUpload";
const user = useUserStore().user
const {proxy} = getCurrentInstance()
const language = useStorage('language', 0)
const form = ref({
gender:'0',
cptVisaInfoBos:[]
gender: '0',
cptVisaInfoBos: []
})
const show = ref(false)
const showR = ref(false)
......@@ -219,7 +228,6 @@ const rules = ref(
departure: [{required: true, trigger: 'change', message: language.value == 0 ? '请选择' : 'Please choose'},],
})
const open = (params) => {
console.log(params)
show.value = true
title.value = params.title
cptId.value = params.cptId
......@@ -235,9 +243,8 @@ function getVisa() {
getVisaInfo({
userId: user.userId,
cptId: cptId.value
}).then(res=>{
console.log(res)
if(res.data && res.data.status!=2){
}).then(res => {
if (res.data && res.data.status != 2) {
showR.value = true
form.value = res.data
} else {
......@@ -245,19 +252,22 @@ function getVisa() {
}
})
}
function getCountryList() {
countryList().then(res => {
countrys.value = res.data
})
}
function getMNAList() {
associationList().then(res=>{
associationList().then(res => {
mnaList.value = res.data
})
}
const submit = () => {
console.log(form.value)
if (form.value.email.indexOf('@') == -1) {
if (form.value.email?.indexOf('@') == -1) {
if (language.value == 0) {
ElMessage.warning('请填写正确的邮箱')
} else {
......@@ -265,9 +275,6 @@ const submit = () => {
}
return
}
// if (Array.isArray(form.value.passportCopy)) {
// form.value.passportCopy = form.value.passportCopy[0].url
// }
if (form.value.files && Array.isArray(form.value.files)) {
form.value.files = form.value.files[0]?.url
}
......@@ -282,7 +289,7 @@ const submit = () => {
}).then(() => {
form.value.cptId = cptId.value
addInvitation(form.value).then((res) => {
ElMessage.success(language.value == 0 ?'提交成功':'Successfully!')
ElMessage.success(language.value == 0 ? '提交成功' : 'Successfully!')
showR.value = true
})
})
......@@ -291,39 +298,58 @@ const submit = () => {
}
const getPassportInfo = (res) => {
console.log(res.data)
if(res.data){
if (res.data) {
var obj = {
position:'',
lastName:'',
fristName:res.data.name,
sex:res.data.sex,
birthday:res.data.birth?.slice(0,10),
nationality:'',
passportNo:res.data.code,
issueDate:'',
expiryDate:'',
position: '',
lastName: '',
fristName: res.data.name,
sex: res.data.sex,
birthday: res.data.birth?.slice(0, 10),
nationality: '',
passportNo: res.data.code,
issueDate: '',
expiryDate: '',
passportCopy: res.data.pic
}
form.value.cptVisaInfoBos.push(obj)
} else {
ElMessage.error(res.msg)
}
}
function delPassportInfo(row) {
function delPassportInfo(row) {
console.log(row,form.value.cptVisaInfoBos)
form.value.cptVisaInfoBos = _.remove(form.value.cptVisaInfoBos, row)
}
</script>
<style scoped lang="scss">
.tip{font-size: 12px;}
:deep(.el-upload--picture-card) {
--el-upload-picture-card-size: 60px;
}
.tip {
font-size: 12px;
}
.boxInvitation {
width: 96%;
margin:20px auto 0;
margin: 20px auto 0;
}
h4{font-size: 15px;line-height: 1.6;}
.cptVisaInfoBosTable{padding: 15px;margin-bottom: 20px;
h4 {
font-size: 15px;
line-height: 1.6;
}
.cptVisaInfoBosTable {
padding: 15px;
margin-bottom: 20px;
border: 1px dashed #ebeef5;
:deep(.el-table .el-table__header-wrapper th){font-size: 12px;}
:deep(.el-table .el-table__header-wrapper th) {
font-size: 12px;
}
}
</style>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!