Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
杨炀
/
dance-pc
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
3877470c
authored
2025-04-09 15:24:58 +0800
by
杨炀
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
1. 签证服务 登录后使用
2. 签证服务-关于护照上传的修改
1 parent
dcc48c2b
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
97 additions
and
45 deletions
src/apiPc/match.js
src/components/ImageUpload/index.vue
src/viewsPc/components/homeQuick.vue
src/viewsPc/match/components/affix-invitation.vue
src/apiPc/match.js
View file @
3877470
...
...
@@ -88,7 +88,7 @@ export function countryList() {
}
export
function
associationList
()
{
return
request
({
url
:
`/system/
association
/getList`
,
url
:
`/system/
mna
/getList`
,
method
:
'get'
})
}
...
...
src/components/ImageUpload/index.vue
View file @
3877470
...
...
@@ -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
(()
=>
{
...
...
src/viewsPc/components/homeQuick.vue
View file @
3877470
...
...
@@ -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
}
...
...
src/viewsPc/match/components/affix-invitation.vue
View file @
3877470
...
...
@@ -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
>
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment