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
8f61ec56
authored
2024-03-07 18:03:30 +0800
by
杨炀
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
no message
1 parent
6be47212
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1085 additions
and
172 deletions
src/apiPc/match.js
src/layoutPc/components/AppBottom.vue
src/layoutPc/components/AppHeader.vue
src/layoutPc/components/AppTop.vue
src/viewsPc/center/myInfo.vue
src/viewsPc/match/chooseProject.vue
src/viewsPc/match/components/addAccompany.vue
src/viewsPc/match/components/addCoach.vue
src/viewsPc/match/components/addWdsf.vue
src/viewsPc/match/components/extraForm.vue
src/viewsPc/match/components/signInfo-table.vue
src/viewsPc/match/detail_en.vue
src/viewsPc/register/personal.vue
src/viewsPc/register/team/step1.vue
src/apiPc/match.js
View file @
8f61ec5
...
...
@@ -105,6 +105,13 @@ export function registerSingle(data) {
data
:
data
})
}
export
function
loginSingle
(
data
)
{
return
request
({
url
:
`/userLoginAboard`
,
method
:
'post'
,
data
:
data
})
}
// 根据Id获取我的团队
export
function
getGroupInfo
()
{
...
...
src/layoutPc/components/AppBottom.vue
View file @
8f61ec5
...
...
@@ -8,7 +8,7 @@
<router-link
to=
"/about"
>
亚洲体育舞蹈节版权所有
</router-link>
</li>
<li>
<a
target=
"_blank"
href=
"https://beian.miit.gov.cn/"
>
ICP备案号:苏ICP备
17015770号-3
</a>
<a
target=
"_blank"
href=
"https://beian.miit.gov.cn/"
>
ICP备案号:苏ICP备
2023054420号-2
</a>
<!--
<a
class=
"ffoot"
target=
"_blank"
href=
"http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010102004192"
>
-->
<!--
<img
src=
"@/assets/v1/beian.png"
>
-->
<!-- 京公网安备 11010102004192号
</a>
-->
...
...
src/layoutPc/components/AppHeader.vue
View file @
8f61ec5
...
...
@@ -176,7 +176,7 @@ function handleSelect(key, keyPath) {
}
const
logout
=
()
=>
{
proxy
.
$modal
.
confirm
(
'确定退出?
'
).
then
(
function
()
{
proxy
.
$modal
.
confirm
(
language
.
value
==
0
?
'确定退出?'
:
'Are you sure to exit?
'
).
then
(
function
()
{
return
useUserStore
().
logOut
()
}).
then
(()
=>
{
isLogin
.
value
=
true
...
...
src/layoutPc/components/AppTop.vue
View file @
8f61ec5
...
...
@@ -147,7 +147,7 @@ function handleSelect(key, keyPath) {
}
const
logout
=
()
=>
{
proxy
.
$modal
.
confirm
(
'确定退出?
'
).
then
(
function
()
{
proxy
.
$modal
.
confirm
(
language
.
value
==
0
?
'确定退出?'
:
'Are you sure to exit?
'
).
then
(
function
()
{
return
useUserStore
().
logOut
()
}).
then
(()
=>
{
isLogin
.
value
=
true
...
...
src/viewsPc/center/myInfo.vue
View file @
8f61ec5
...
...
@@ -20,26 +20,51 @@
<el-form-item
:label=
"language==0?'姓名':'Real Name'"
required
prop=
"realName"
>
<el-input
v-model=
"myform.realName"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'性别':'Sex'"
required
prop=
"sex"
>
<el-form-item
:label=
"language==0?'性别':'Sex'"
required
>
<el-radio-group
v-model=
"myform.sex"
>
<el-radio
label=
"0"
>
{{
language
==
0
?
'女'
:
'female'
}}
</el-radio>
<el-radio
label=
"1"
>
{{
language
==
0
?
'男'
:
'male'
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"language==0?'证件类型':'ID type'"
required
prop=
"idcType"
>
<el-select
v-model=
"myform.idcType"
style=
"width: 100%"
>
<el-option
v-for=
"item in certificates"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
<el-form-item
:label=
"language==0?'出生日期':'Birthday'"
required
>
<el-date-picker
v-model=
"myform.birth"
style=
"width: 100%;"
type=
"date"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'证件号码':'ID NO'"
prop=
"idcCode"
>
<el-input
v-model=
"myform.idcCode"
@
blur=
"checkCode"
/>
<el-form-item
label=
"Representing"
>
<el-input
v-model=
"myform.representing"
disabled
/>
</el-form-item>
<el-form-item
label=
"Age group"
>
<el-input
v-model=
"myform.ageGroup"
disabled
/>
</el-form-item>
<el-form-item
label=
"Division"
>
<el-input
v-model=
"myform.division"
disabled
/>
</el-form-item>
<el-form-item
label=
"Status"
>
<el-input
v-model=
"myform.status"
disabled
/>
</el-form-item>
<el-form-item
:label=
"language==0?'类型':'Type'"
prop=
"type"
>
<el-form-item
label=
"Passport"
required
>
<el-input
v-model=
"myform.passportNumber"
/>
</el-form-item>
<el-form-item
label=
"Passport File"
>
<file-upload
v-model=
"myform.passportUrl"
:limit=
"1"
:is-show-tip=
"false"
:button-text=
"'Upload'"
/>
</el-form-item>
<!--
<el-form-item
:label=
"language==0?'证件类型':'ID type'"
required
prop=
"idcType"
>
-->
<!--
<el-select
v-model=
"myform.idcType"
style=
"width: 100%"
>
-->
<!--
<el-option-->
<!-- v-for="item in certificates"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<!--
<el-form-item
:label=
"language==0?'证件号码':'ID NO'"
prop=
"idcCode"
>
-->
<!--
<el-input
v-model=
"myform.idcCode"
@
blur=
"checkCode"
/>
-->
<!--
</el-form-item>
-->
<el-form-item
:label=
"language==0?'类型':'Type'"
required
>
<el-select
v-model=
"myform.type"
style=
"width: 100%;"
>
<el-option
:label=
"language==0?'业余':'amateur'"
value=
"0"
/>
<el-option
:label=
"language==0?'专业':'Professional'"
value=
"1"
/>
...
...
@@ -47,9 +72,9 @@
<el-option
:label=
"language==0?'其他':'Other'"
value=
"3"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'邮箱':'Email'"
required
prop=
"email"
>
<el-input
v-model=
"myform.email"
type=
"email"
:placeholder=
"language==0?'请输入内容':''"
/
>
</el-form-item
>
<!--
<el-form-item
:label=
"language==0?'邮箱':'Email'"
required
prop=
"email"
>
--
>
<!--
<el-input
v-model=
"myform.email"
type=
"email"
:placeholder=
"language==0?'请输入内容':''"
/>
--
>
<!--
</el-form-item>
--
>
</el-form>
<div
class=
"text-center"
>
<el-button
type=
"primary"
class=
"btn-lineG"
round
@
click=
"save"
>
...
...
src/viewsPc/match/chooseProject.vue
View file @
8f61ec5
...
...
@@ -10,7 +10,7 @@
<match-info-row
:match-id=
"matchId"
/>
<div
class=
"pd20"
>
<el-row
:gutter=
"20"
>
<el-col
:lg=
"
4
"
>
<el-col
:lg=
"
6
"
>
<div
class=
"panel border"
>
<div
class=
"panel-header "
>
<h3
class=
"panel-title"
v-if=
"language==0"
>
完善我的信息
</h3>
...
...
@@ -18,40 +18,55 @@
</div>
<div
class=
"panel-body"
>
<div
class=
"chooseForm"
style=
"display: flex"
>
<div
@
click=
"editPerson"
style=
"width:
60px"
class=
"mr20
"
>
<div
@
click=
"editPerson"
style=
"width:
50%;text-align: center;
"
>
<el-avatar
fit=
"cover"
v-if=
"form.picUrl"
:size=
"60"
:src=
"fillImgUrl(form.picUrl)"
/>
<div
class=
"addBttn"
v-else
>
+
</div>
<div
v-else
>
<el-avatar
fit=
"cover"
v-if=
"form.sex == 0"
:size=
"60"
src=
"@/assets/img/head1.png"
/>
<el-avatar
fit=
"cover"
v-if=
"form.sex == 1"
:size=
"60"
src=
"@/assets/img/head0.png"
/>
</div>
<div
class=
"text-center mt10"
>
<span>
{{
form
.
n
ame
}}
</span>
<span>
{{
form
.
realN
ame
}}
</span>
<el-icon>
<Edit/>
</el-icon>
</div>
</div>
<!-- 舞伴-->
<el-checkbox-group
style=
"width: 60px"
>
<el-checkbox>
<!--舞伴-->
<div
style=
"width:50%;text-align: center;"
v-if=
"form.danceMate"
>
<el-checkbox-group
v-model=
"mateChosed"
@
change=
"changeMate"
>
<el-checkbox
:label=
"form.danceMate.id"
>
<div>
<el-avatar
fit=
"cover"
v-if=
"form.picUrl"
:size=
"60"
:src=
"fillImgUrl(form.picUrl)"
/>
<div
class=
"addBttn"
v-else
>
+
</div>
<div
class=
"text-center mt10"
>
<span>
{{
form
.
name
}}
</span>
<el-icon>
<el-avatar
fit=
"cover"
v-if=
"form.danceMate.sex == 0"
:size=
"60"
src=
"@/assets/img/head1.png"
/>
<el-avatar
fit=
"cover"
v-if=
"form.danceMate.sex == 1"
:size=
"60"
src=
"@/assets/img/head0.png"
/>
<div
class=
"text-center mt10"
@
click=
"editMate(form.danceMate)"
>
<span>
{{
form
.
danceMate
.
realName
}}
</span>
<el-icon
@
click
.
stop=
"editMate(form.danceMate)"
>
<Edit/>
</el-icon>
<el-icon
@
click
.
stop=
"delMate(form.danceMate)"
>
<Delete/>
</el-icon>
</div>
</div>
</el-checkbox>
</el-checkbox-group>
</div>
<div
v-else
@
click=
"editMate()"
>
<div
class=
"addBttn"
>
+
</div>
<div
class=
"text-center mt10"
>
<el-icon>
<Edit/>
</el-icon>
</div>
</div>
</div>
</div>
</div>
</el-col>
<el-col
:lg=
"
20
"
>
<el-col
:lg=
"
18
"
>
<div
class=
"panel border"
>
<div
class=
"panel-header "
>
<h3
class=
"panel-title"
v-if=
"language==0"
>
可参与报名的项目
</h3>
...
...
@@ -106,22 +121,24 @@
@
editExtra=
"goPersonInfo"
/>
<zu-table
v-else
:list=
"zuTableList"
:language=
"language"
@
delete=
"removeThis"
/>
<div
v-if=
"showPersonList"
>
<div
v-if=
"showPersonList
||myMemberTable.length>0
"
>
<el-row
class=
"mt20"
>
<el-col
:span=
"24"
>
<el-button
type=
"primary"
plain
>
{{
language
==
0
?
'添加随行人员'
:
'Add accompanying personnel'
}}
<el-button
@
click=
"addAccompany"
type=
"primary"
plain
>
{{
language
==
0
?
'添加随行人员'
:
'Add accompanying personnel'
}}
</el-button>
</el-col>
</el-row>
<el-table
class=
"mt20"
>
<el-table-column
type=
"index"
label=
"Index"
width=
"60"
/>
<el-table-column
label=
"Name"
/>
<el-table-column
label=
"Passport number"
/>
<el-table-column
label=
"Birthday"
/>
<el-table-column
label=
"Sex"
/>
<el-table-column
label=
"Role"
>
<el-table
class=
"mt20"
:data=
"myMemberTable"
border
>
<el-table-column
type=
"index"
label=
"Index"
width=
"70"
align=
"center"
/>
<el-table-column
:label=
"language==0?'姓氏':'surname'"
prop=
"xing"
min-width=
"100"
/>
<el-table-column
:label=
"language==0?'名':'name'"
prop=
"ming"
min-width=
"100"
/>
<el-table-column
label=
"Passport number"
prop=
"idcCode"
min-width=
"120"
/>
<el-table-column
label=
"Birthday"
prop=
"birth"
/>
<el-table-column
label=
"Sex"
prop=
"sexStr"
/>
<el-table-column
label=
"Role"
min-width=
"160"
>
<template
#
default=
"scope"
>
<div
class=
"
esp
"
>
<div
class=
"
roletd
"
>
<span
v-for=
"item in scope.row.label?.split(',')"
:key=
"item.id"
class=
"text-primary"
>
<span
v-if=
"item==='0'"
class=
"ml5"
>
{{
language
==
0
?
'运动员'
:
'athletes'
}}
</span>
<span
v-if=
"item==='1'"
class=
"ml5"
>
{{
language
==
0
?
'教练'
:
'coach'
}}
</span>
...
...
@@ -156,7 +173,8 @@
</el-card>
</div>
<dialogAddCoach
ref=
"dialogAddCoachRef"
@
submitForm=
"changeMeDone"
/>
<dialogEditWdsf
ref=
"dialogEditWdsfRef"
@
submitForm=
"changeMeDone"
/>
<dialogEditAccompany
ref=
"dialogEditAccompanyRef"
@
submitForm=
"getMyMemberTable"
/>
<!-- <dialogChangeCoach ref="popChangeCoach" @submitForm="getMySignInfo"/>-->
<dialogExtraForm
ref=
"popExtraForm"
@
submitForm=
"getSignInfoList"
/>
</div>
...
...
@@ -166,7 +184,8 @@
import
{
ref
,
reactive
,
toRefs
}
from
'vue'
import
*
as
match
from
'@/apiPc/match'
import
{
getCurrentInstance
,
onMounted
}
from
'@vue/runtime-core'
import
dialogAddCoach
from
'./components/addCoach'
import
dialogEditWdsf
from
'./components/addWdsf'
import
dialogEditAccompany
from
'./components/addAccompany'
import
dialogSportsmanList
from
'./components/sportsmanList'
import
dialogAllSportsmanList
from
'./components/allSportsmanList'
import
dialogChangeCoach
from
'./components/changeCoach'
...
...
@@ -187,6 +206,7 @@ import ZuTable from '@/viewsPc/match/components/zu-table'
import
SingleSignStep
from
"@/viewsPc/match/components/singleSignStep"
;
import
MatchInfoRow
from
"@/viewsPc/match/components/matchInfo-row"
;
import
useUserStore
from
"@/store/modules/user"
;
import
{
getPerPersonList
}
from
"@/apiPc/match"
;
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
...
...
@@ -196,6 +216,7 @@ const data = reactive({
signInfoList
:
[],
zuTableList
:
[],
choosedList
:
[],
myMemberTable
:
[],
extraPersonInfoMapList
:
[],
teamList
:
[],
extraform
:
[],
...
...
@@ -210,14 +231,39 @@ const data = reactive({
activeTeam
:
''
,
names
:
{},
choosedchoosed
:
[],
mateChosed
:
[],
projectIds
:
[],
projectList
:
[],
choosed2List
:
[],
projectQuery
:
{},
tableType
:
1
,
})
const
{
activeTeam
,
names
,
tableData
,
signInfoList
,
zuTableList
,
choosedList
,
showExtraForm
,
extraPersonInfoMapList
,
teamList
,
extraform
,
groupId
,
signType
,
coachOrLeaderFlag
,
showResult
,
noPhotoCanSign
,
extraTableHead
,
coachForm
,
projectIds
,
choosedchoosed
,
activeStep
,
projectList
,
choosed2List
,
loadingProject
,
projectQuery
,
tableType
activeTeam
,
names
,
tableData
,
myMemberTable
,
signInfoList
,
zuTableList
,
choosedList
,
showExtraForm
,
extraPersonInfoMapList
,
teamList
,
extraform
,
groupId
,
signType
,
coachOrLeaderFlag
,
showResult
,
noPhotoCanSign
,
extraTableHead
,
coachForm
,
projectIds
,
choosedchoosed
,
mateChosed
,
activeStep
,
projectList
,
choosed2List
,
loadingProject
,
projectQuery
,
tableType
}
=
toRefs
(
data
)
const
matchId
=
ref
(
route
.
query
.
matchId
)
let
signInfoType
=
null
...
...
@@ -234,7 +280,7 @@ onMounted(() => {
getSignInfoList
()
getMatch
(
matchId
.
value
)
getMyInfo
()
getMyMemberTable
()
getMySignInfo
()
})
...
...
@@ -246,7 +292,23 @@ function getMyInfo() {
})
}
function
changeMeDone
()
{
function
getMyMemberTable
()
{
//
match
.
getPerPersonList
({
cptId
:
matchId
.
value
,
searchLabels
:
'1,2,3,4,5,6'
},
userId
.
value
).
then
(
res
=>
{
myMemberTable
.
value
=
res
.
rows
})
}
function
addAccompany
()
{
proxy
.
$refs
[
'dialogEditAccompanyRef'
].
open
({
title
:
'Add accompanying personnel'
,
cptId
:
matchId
.
value
,
id
:
0
})
}
function
changeMeDone
(
mateId
)
{
console
.
log
(
mateId
)
getMyInfo
()
getProjectList
()
}
...
...
@@ -326,13 +388,26 @@ function submitForm(n) {
}
}
if
(
showPersonList
.
value
){
if
(
showPersonList
.
value
)
{
if
(
myMemberTable
.
value
.
length
==
0
)
{
ElMessageBox
.
confirm
(
language
.
value
==
0
?
'是否继续添加随性人员?'
:
'Do you want to add casual personnel?'
,
language
.
value
==
0
?
'提示'
:
'Tip'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'Yes'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
type
:
'warning'
}).
then
(()
=>
{
}).
catch
(()
=>
{
commit
()
})
}
else
{
commit
()
}
}
else
{
ElMessageBox
.
confirm
(
language
.
value
==
0
?
'是否添加随性人员?'
:
'Do you want to add casual personnel?'
,
language
.
value
==
0
?
'提示'
:
'Tip'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'Yes'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
ElMessageBox
.
confirm
(
language
.
value
==
0
?
'是否添加随性人员?'
:
'Do you want to add casual personnel?'
,
language
.
value
==
0
?
'提示'
:
'Tip'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'Yes'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
type
:
'warning'
}).
then
(()
=>
{
showPersonList
.
value
=
true
...
...
@@ -346,6 +421,12 @@ function submitForm(n) {
}
function
commit
()
{
ElMessageBox
.
confirm
(
language
.
value
==
0
?
'确定提交吗?'
:
'Are you sure to submit?'
,
language
.
value
==
0
?
'提示'
:
'Tip'
,
{
confirmButtonText
:
language
.
value
==
0
?
'确定'
:
'Yes'
,
cancelButtonText
:
language
.
value
==
0
?
'取消'
:
'Cancel'
,
}).
then
(()
=>
{
match
.
commitSign
({
groupId
:
0
,
cptId
:
matchId
.
value
...
...
@@ -356,18 +437,29 @@ function commit() {
orderId
:
res
.
data
}
})
})
})}
)
}
function
getProjectList
()
{
projectIds
.
value
=
[]
loadingProject
.
value
=
true
//根据已选人员id 获取项目列表
var
obj
=
{
var
obj
=
{}
if
(
mateChosed
.
value
.
length
>
0
&&
form
.
value
.
danceMate
)
{
obj
=
{
cptId
:
matchId
.
value
,
perIds
:
`
${
myId
.
value
}
,
${
form
.
value
.
danceMate
?.
id
}
`,
name: projectQuery.value.name
}
} else {
obj = {
cptId: matchId.value,
perIds: myId.value,
name: projectQuery.value.name
}
}
match.getProjectPageByPerIds(obj).then(res => {
projectList.value = res.rows
loadingProject.value = false
...
...
@@ -402,18 +494,50 @@ function addCoach() {
id: 0,
groupId: groupId.value
}
proxy
.
$refs
[
'dialog
AddCoach
Ref'
].
open
(
params
)
proxy.$refs['dialog
EditWdsf
Ref'].open(params)
}
function delperson(p) {
//删除团队下的人
let text = ''
let t = '提示'
let s = '确定'
let c = '取消'
let msg = '操作成功'
if (language.value == 0) {
text = `
确定删除
$
{
p
.
realName
}
吗?
`
} else {
text = `
Delete
$
{
p
.
realName
}?
`
t = 'Tips'
s = 'Confirm'
c = 'Cancel'
msg = ' Successful!'
}
ElMessageBox.confirm(text, t, {
confirmButtonText: s,
cancelButtonText: c,
type: 'warning'
}).then(() => {
match.delPerson(p.id).then(res => {
ElMessage.success(msg)
getMyMemberTable()
getMyInfo()
})
})
}
function signUp() {
if (projectIds.value.length == 0) {
return
}
const
obj
=
{
athleteIds
:
myId
.
value
,
let obj = {
projectIds: projectIds.value.toString(),
groupId
:
groupId
.
value
groupId: 0
}
if (mateChosed.value.length > 0 && form.value.danceMate) {
obj.athleteIds= `
$
{
myId
.
value
},
$
{
form
.
value
.
danceMate
?.
id
}
`
} else {
obj.athleteIds= myId.value
}
match.sportsmanDone(obj).then(res => {
getSignInfoList()
...
...
@@ -456,7 +580,9 @@ function goMySign() {
const goPersonInfo = (row) => {
if (signInfoType == '1') {
ElMessageBox
.
alert
(
'已报项,前往我的报项'
,
'提示'
,
{
ElMessageBox.alert(
language.value == 0 ? '已报项,前往我的报项' : 'Reported items, go to my submission',
language.value == 0 ? '提示' : 'Tips', {
confirmButtonText: 'OK',
callback: (Action) => {
router.push({name: 'myMatch'})
...
...
@@ -484,12 +610,39 @@ function downloadVoucher() {
}
function
editPerson
()
{
proxy
.
$refs
[
'dialog
AddCoach
Ref'
].
open
({
proxy
.
$refs
[
'dialog
EditWdsf
Ref'
].
open
({
title
:
language
.
value
==
0
?
'编辑个人信息'
:
'Edit My Information'
,
isMe
:
true
})
}
function
editMate
(
obj
)
{
proxy
.
$refs
[
'dialogEditWdsfRef'
].
open
({
title
:
language
.
value
==
0
?
'编辑舞伴'
:
'Edit My Mate'
,
isMe
:
false
,
form
:
obj
||
{},
cptId
:
matchId
.
value
,
id
:
obj
?.
id
||
0
})
}
function
delMate
(
mate
)
{
delperson
(
mate
)
// ElMessageBox.confirm(language.value == 0 ? '确定删除队友吗?' : 'Are you sure to delete the teammate?',
// language.value == 0 ? '提示' : 'Tip',
// {
// confirmButtonText: language.value == 0 ? '确定' : 'Yes',
// cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
// }).then(()=>{
//
// })
}
function
changeMate
(
e
)
{
console
.
log
(
e
,
mateChosed
.
value
)
getProjectList
()
}
function
switchTabletype
()
{
if
(
tableType
.
value
==
0
)
{
tableType
.
value
=
1
...
...
@@ -652,4 +805,10 @@ function switchTabletype() {
}
}
}
.roletd
{
.ml5
{
display
:
inline-block
}
}
</
style
>
...
...
src/viewsPc/match/components/addAccompany.vue
0 → 100644
View file @
8f61ec5
<
template
>
<el-dialog
v-model=
"show"
:title=
"title"
width=
"800px"
append-to-body
close-icon=
"CircleClose"
center
:close-on-click-modal=
"false"
class=
"pcloginpop"
destroy-on-close
>
<el-form
ref=
"dialogRef"
:model=
"form"
:rules=
"language==0?rules:rules_cn"
label-width=
"160px"
inline
>
<el-row
:gutter=
"30"
>
<el-col
:lg=
"24"
>
<el-form-item
:label=
"language==0?'姓氏':'surname'"
prop=
"xing"
required
>
<el-input
v-model=
"form.xing"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'名':'name'"
prop=
"ming"
required
>
<el-input
v-model=
"form.ming"
/>
</el-form-item>
<!--
<el-form-item
:label=
"language==0?'证件类型':'ID type'"
prop=
"idcType"
required
>
-->
<!--
<el-select
v-model=
"form.idcType"
style=
"width: 100%;"
>
-->
<!--
<el-option-->
<!-- v-for="item in certificates"-->
<!-- :key="item.value"-->
<!-- :label="item.label"-->
<!-- :value="item.value"-->
<!-- />-->
<!--
</el-select>
-->
<!--
</el-form-item>
-->
<el-form-item
:label=
"language==0?'护照号':'PassPort Number'"
prop=
"idcCode"
required
>
<el-input
v-model=
"form.idcCode"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'出生日期':'birth'"
prop=
"birth"
required
>
<el-date-picker
v-model=
"form.birth"
style=
"width: 100%;"
type=
"date"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'性别':'sex'"
prop=
"sex"
>
<el-radio-group
v-model=
"form.sex"
>
<el-radio
label=
"0"
>
{{
language
==
0
?
'女'
:
'female'
}}
</el-radio>
<el-radio
label=
"1"
>
{{
language
==
0
?
'男'
:
'male'
}}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"language==0?'主要会员角色':'roles'"
prop=
"labelArr"
>
<el-select
v-model=
"form.labelArr"
multiple
>
<el-option
v-for=
"l in labels"
:key=
"l.value"
:value=
"l.value"
:label=
"language==0?l.label:l.enlabel"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template
#
footer
>
<div
class=
"dialog-footer text-center"
>
<el-button
type=
"primary"
class=
"btn-lineG w200px"
round
@
click=
"submitForm"
>
{{
language
==
0
?
'确定'
:
'Save'
}}
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
script
setup
>
import
{
reactive
,
ref
,
toRefs
,
watch
}
from
'vue'
import
{
getCurrentInstance
,
nextTick
,
onMounted
}
from
'@vue/runtime-core'
import
*
as
match
from
'@/apiPc/match'
import
{
ElMessage
}
from
'element-plus'
import
{
nationList
}
from
'@/assets/js/data'
import
_
from
'lodash'
import
cache
from
"@/plugins/cache"
;
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
const
certificates
=
ref
([
{
value
:
'0'
,
label
:
language
.
value
==
0
?
'居民身份证'
:
'Resident ID card'
},
{
value
:
'1'
,
label
:
language
.
value
==
0
?
'护照'
:
'Passport'
},
{
value
:
'2'
,
label
:
language
.
value
==
0
?
'其他'
:
'Other'
}
])
const
{
proxy
}
=
getCurrentInstance
()
const
emit
=
defineEmits
([
'submitForm'
])
const
data
=
reactive
({
form
:
{
idcType
:
'1'
,
sex
:
'0'
},
rules
:
{
xing
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
ming
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
idcCode
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
birth
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'change'
}],
sex
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'change'
}],
labelArr
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
},
rules_cn
:
{
xing
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}],
ming
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}],
idcCode
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}],
birth
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'change'
}],
address
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}],
sex
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'change'
}],
labelArr
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}]
},
show
:
false
,
labels
:
[
// {value: '0', label: '运动员', enlabel: 'Sportsman'},
{
value
:
'1'
,
label
:
'教练'
,
enlabel
:
'Coach'
},
{
value
:
'2'
,
label
:
'领队'
,
enlabel
:
'Leader'
},
{
value
:
'4'
,
label
:
'队医'
,
enlabel
:
'Nurse'
},
{
value
:
'5'
,
label
:
'翻译'
,
enlabel
:
'Translator'
},
{
value
:
'6'
,
label
:
'官员'
,
enlabel
:
'Official'
},
{
value
:
'3'
,
label
:
'其他'
,
enlabel
:
'Other'
}
],
title
:
'Add accompanying personnel'
,
cptId
:
''
})
const
{
form
,
rules
,
rules_cn
,
show
,
title
,
cptId
,
labels
,
uType
}
=
toRefs
(
data
)
let
editgay
=
false
const
open
=
(
params
)
=>
{
console
.
log
(
params
)
show
.
value
=
true
cptId
.
value
=
params
.
cptId
title
.
value
=
params
.
title
if
(
params
.
id
!=
0
)
{
// 编辑
editgay
=
true
match
.
getPersonInfoById
(
params
.
id
).
then
(
res
=>
{
form
.
value
=
res
.
data
form
.
value
.
id
=
params
.
id
if
(
form
.
value
.
label
)
{
// {0:0,1:1,2:3}
form
.
value
.
labelArr
=
form
.
value
.
label
.
split
(
','
)
}
})
}
}
defineExpose
({
open
})
watch
(
show
,
(
value
)
=>
{
if
(
!
value
)
{
form
.
value
=
{}
}
nextTick
(()
=>
{
proxy
.
$refs
[
'dialogRef'
].
clearValidate
()
})
})
function
submitForm
()
{
proxy
.
$refs
[
'dialogRef'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
form
.
value
.
label
=
form
.
value
.
labelArr
.
toString
()
if
(
editgay
)
{
// id不是0
match
.
editPersonInfo
(
form
.
value
).
then
(
res
=>
{
ElMessage
.
success
(
'保存成功'
)
show
.
value
=
false
emit
(
'submitForm'
)
})
}
else
{
form
.
value
.
cptId
=
cptId
.
value
match
.
savePersonForMyPerson
(
form
.
value
).
then
(
res
=>
{
ElMessage
.
success
(
'保存成功'
)
show
.
value
=
false
emit
(
'submitForm'
)
})
}
}
})
}
function
cancel
()
{
show
.
value
=
false
}
</
script
>
<
style
lang=
"scss"
>
.threeFour
{
width
:
100%
;
.el-upload--picture-card
{
width
:
120px
;
height
:
160px
;
}
.el-upload-list--picture-card
.el-upload-list__item
{
width
:
120px
;
height
:
160px
;
}
}
.tip
{
font-size
:
13px
;
color
:
#999
;
margin
:
10px
0
;
i
{
color
:
red
;
margin
:
0
4px
0
0
;
}
}
.shenfen
{
.el-upload--picture-card
{
width
:
320px
;
height
:
200px
;
}
.el-upload-list--picture-card
.el-upload-list__item
{
width
:
320px
;
height
:
200px
;
}
}
.touxiang
{
:deep(.el-upload--picture-card
)
{
width
:
140px
;
height
:
200px
;
}
}
.touxiang
{
:deep(.el-upload-list__item
)
{
width
:
140px
;
height
:
200px
;
}
}
.el-form--inline
.el-form-item
{
width
:
100%
}
.boxDialog
{
.el-dialog__header
{
background
:
linear-gradient
(
#ed2c22
,
#fe6d45
);
margin-right
:
0
;
height
:
52px
;
span
{
color
:
#fff
;
}
}
}
</
style
>
src/viewsPc/match/components/addCoach.vue
View file @
8f61ec5
...
...
@@ -42,7 +42,7 @@
/>
</el-form-item>
<el-form-item
:label=
"language==0?'主要会员角色':'roles'"
prop=
"labelArr"
>
<el-select
v-model=
"form.labelArr"
multiple
@
change=
"labelvalue"
>
<el-select
v-model=
"form.labelArr"
multiple
>
<el-option
v-for=
"l in labels"
:key=
"l.value"
:value=
"l.value"
:label=
"language==0?l.label:l.enlabel"
/>
</el-select>
</el-form-item>
...
...
@@ -63,6 +63,7 @@
<el-option
v-for=
"item in countryList"
:key=
"item.id"
:label=
"language==0?item.name:item.enName"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'详细地址':'Address'"
prop=
"address"
required
>
<el-cascader
v-if=
"form.countryId == 240"
v-model=
"form.regionId"
...
...
@@ -201,7 +202,8 @@ const open = (params) => {
if
(
form
.
value
.
label
)
{
// {0:0,1:1,2:3}
form
.
value
.
labelArr
=
form
.
value
.
label
.
split
(
','
)
labelvalue
(
form
.
value
.
labelArr
)
}
else
{
form
.
value
.
labelArr
=
[
'0'
]
}
})
}
else
{
...
...
@@ -213,7 +215,6 @@ const open = (params) => {
if
(
form
.
value
.
label
)
{
// {0:0,1:1,2:3}
form
.
value
.
labelArr
=
form
.
value
.
label
.
split
(
','
)
labelvalue
(
form
.
value
.
labelArr
)
}
})
}
...
...
@@ -259,7 +260,6 @@ function checkCode() {
form
.
value
=
res
.
data
if
(
form
.
value
.
label
!=
null
)
{
form
.
value
.
labelArr
=
form
.
value
.
label
.
split
(
','
)
labelvalue
(
form
.
value
.
labelArr
)
}
form
.
value
.
groupId
=
groupId
.
value
}
...
...
@@ -297,16 +297,6 @@ function giveBirthDay() {
}
}
function
labelvalue
(
e
)
{
if
(
e
.
indexOf
(
'1'
)
>
-
1
||
e
.
indexOf
(
'2'
)
>
-
1
)
{
// 联系方式必填
showRequire
.
value
=
true
}
else
{
showRequire
.
value
=
false
}
console
.
log
(
showRequire
.
value
)
}
function
submitForm
()
{
proxy
.
$refs
[
'dialogRef'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
...
...
src/viewsPc/match/components/addWdsf.vue
0 → 100644
View file @
8f61ec5
<
template
>
<el-dialog
v-model=
"show"
:title=
"title"
width=
"800px"
append-to-body
close-icon=
"CircleClose"
center
:close-on-click-modal=
"false"
class=
"pcloginpop"
@
close=
"cancel"
destroy-on-close
>
<el-form
ref=
"dialogRef"
:model=
"form"
:label-width=
"language==0?120:180"
inline
>
<el-form-item
:label=
"language==0?'WDSF卡号':'WDSF ID'"
v-if=
"form.id"
>
{{
form
.
wdsfMin
}}
</el-form-item>
<el-form-item
:label=
"language==0?'WDSF卡号':'WDSF ID'"
required
v-else
>
<el-input
type=
"text"
v-model=
"card"
@
change=
"resetCode"
>
<template
#
append
>
<el-button
type=
"primary"
plain
style=
"width: 110px"
@
click=
"checkCard"
>
<el-icon
v-if=
"isCodeTrue"
size=
"16"
color=
"#67C23A"
>
<CircleCheckFilled/>
</el-icon>
<span
v-else
>
{{
language
==
0
?
'校验卡号'
:
'Check Code'
}}
</span>
</el-button>
</
template
>
</el-input>
<Vcode
:show=
"showVcode"
:z-index=
"2999"
@
success=
"codeSuccess()"
></Vcode>
</el-form-item>
<div
class=
"h30"
></div>
<div
class=
"leftboderTT"
>
{{ language == 0 ? '个人信息' : 'Personal information' }}
<span
v-if=
"language==0"
>
(登录时需要验证,保护账户信息)
</span>
<span
v-else
>
(Obtain automatically according to the WDSF number)
</span>
</div>
<div
class=
"h20"
></div>
<el-form-item
:label=
"language==0?'名':'name'"
>
<el-input
v-model=
"form.ming"
disabled
/>
</el-form-item>
<el-form-item
:label=
"language==0?'姓氏':'surname'"
>
<el-input
v-model=
"form.xing"
disabled
/>
</el-form-item>
<el-form-item
label=
"Representing"
>
<el-input
v-model=
"form.representing"
disabled
/>
</el-form-item>
<el-form-item
label=
"Age group"
>
<el-input
v-model=
"form.ageGroup"
disabled
/>
</el-form-item>
<el-form-item
label=
"Division"
>
<el-input
v-model=
"form.division"
disabled
/>
</el-form-item>
<el-form-item
label=
"Status"
>
<el-input
v-model=
"form.wdsfStatus"
disabled
/>
</el-form-item>
<div
class=
"h30"
></div>
<div
class=
"leftboderTT"
>
{{ language == 0 ? '补充信息' : 'Supplementary Information' }}
</div>
<div
class=
"h20"
></div>
<el-form-item
:label=
"language==0?'性别':'Sex'"
required
>
<el-radio-group
v-model=
"form.sex"
>
<el-radio
label=
"0"
>
{{ language == 0 ? '女' : 'female' }}
</el-radio>
<el-radio
label=
"1"
>
{{ language == 0 ? '男' : 'male' }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"language==0?'出生日期':'Birthday'"
required
>
<el-date-picker
v-model=
"form.birth"
style=
"width: 100%;"
type=
"date"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
/>
</el-form-item>
<el-form-item
label=
"Passport number"
required
>
<el-input
v-model=
"form.passportNumber"
/>
</el-form-item>
<el-form-item
label=
"Passport File"
>
<file-upload
v-model=
"form.passportUrl"
:limit=
"1"
:is-show-tip=
"false"
:button-text=
"'Upload'"
/>
</el-form-item>
</el-form>
<
template
#
footer
>
<div
class=
"dialog-footer text-center"
>
<el-button
type=
"primary"
class=
"btn-lineG w200px"
round
@
click=
"submitForm"
>
{{
language
==
0
?
'确定'
:
'Save'
}}
</el-button>
</div>
</
template
>
</el-dialog>
</template>
<
script
setup
>
import
{
reactive
,
ref
,
toRefs
,
watch
}
from
'vue'
import
{
getCurrentInstance
,
nextTick
,
onMounted
}
from
'@vue/runtime-core'
import
*
as
match
from
'@/apiPc/match'
import
{
ElMessage
}
from
'element-plus'
import
_
from
'lodash'
import
cache
from
"@/plugins/cache"
;
import
Vcode
from
"vue3-puzzle-vcode"
import
{
checkWdsf
}
from
"@/apiPc/match"
;
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
const
certificates
=
ref
([
{
value
:
'0'
,
label
:
language
.
value
==
0
?
'居民身份证'
:
'Resident ID card'
},
{
value
:
'1'
,
label
:
language
.
value
==
0
?
'护照'
:
'Passport'
},
{
value
:
'2'
,
label
:
language
.
value
==
0
?
'其他'
:
'Other'
}
])
const
{
proxy
}
=
getCurrentInstance
()
const
emit
=
defineEmits
([
'submitForm'
])
const
data
=
reactive
({
form
:
{
// countryId: 240
sex
:
'0'
},
card
:
''
,
show
:
false
,
showVcode
:
false
,
labels
:
[
{
value
:
'0'
,
label
:
'运动员'
,
enlabel
:
'Sportsman'
},
{
value
:
'1'
,
label
:
'教练'
,
enlabel
:
'Coach'
},
{
value
:
'2'
,
label
:
'领队'
,
enlabel
:
'Leader'
},
{
value
:
'4'
,
label
:
'队医'
,
enlabel
:
'Nurse'
},
{
value
:
'5'
,
label
:
'翻译'
,
enlabel
:
'Translator'
},
{
value
:
'6'
,
label
:
'官员'
,
enlabel
:
'Official'
},
{
value
:
'3'
,
label
:
'其他'
,
enlabel
:
'Other'
}
],
title
:
'添加选手信息'
,
isMe
:
false
,
isCodeTrue
:
false
,
cptId
:
''
})
const
{
form
,
show
,
showVcode
,
title
,
labels
,
uType
,
isMe
,
isCodeTrue
,
card
,
cptId
}
=
toRefs
(
data
)
let
editgay
=
false
const
open
=
(
params
)
=>
{
console
.
log
(
params
)
show
.
value
=
true
title
.
value
=
params
.
title
isMe
.
value
=
params
.
isMe
cptId
.
value
=
params
.
cptId
if
(
language
.
value
==
0
)
{
form
.
value
.
countryId
=
240
}
if
(
isMe
.
value
)
{
//个人
match
.
getMyPersonInfo
().
then
(
res
=>
{
form
.
value
=
res
.
data
form
.
value
.
id
=
res
.
data
.
id
if
(
form
.
value
.
label
)
{
// {0:0,1:1,2:3}
form
.
value
.
labelArr
=
form
.
value
.
label
.
split
(
','
)
}
else
{
form
.
value
.
labelArr
=
[
'0'
]
}
})
}
else
{
if
(
params
.
id
!=
0
)
{
// 编辑舞伴
editgay
=
true
form
.
value
=
params
.
form
}
}
}
defineExpose
({
open
})
watch
(
show
,
(
value
)
=>
{
if
(
!
value
)
{
form
.
value
=
{
sex
:
'0'
}
}
nextTick
(()
=>
{
proxy
.
$refs
[
'dialogRef'
].
clearValidate
()
})
})
function
submitForm
()
{
if
(
editgay
)
{
// id不是0
form
.
value
.
cptId
=
cptId
.
value
match
.
editPersonInfo
(
form
.
value
).
then
(
res
=>
{
ElMessage
.
success
(
'保存成功'
)
show
.
value
=
false
emit
(
'submitForm'
)
})
}
else
{
if
(
!
form
.
value
.
passportNumber
)
{
ElMessage
.
error
(
'Please fill in your passport number'
)
return
}
if
(
!
form
.
value
.
birth
)
{
ElMessage
.
error
(
'Please fill in your birthday'
)
return
}
if
(
Array
.
isArray
(
form
.
value
.
passportUrl
)){
form
.
value
.
passportUrl
=
form
.
value
.
passportUrl
[
0
].
url
}
if
(
isMe
.
value
)
{
match
.
saveMyBaseInfo
(
form
.
value
).
then
(
res
=>
{
ElMessage
.
success
(
'保存成功'
)
show
.
value
=
false
emit
(
'submitForm'
)
})
}
else
{
delete
form
.
value
.
status
delete
form
.
value
.
id
form
.
value
.
label
=
'0'
form
.
value
.
cptId
=
cptId
.
value
form
.
value
.
wdsfMin
=
form
.
value
.
min
form
.
value
.
idcCode
=
form
.
value
.
passportNumber
form
.
value
.
idcType
=
'1'
match
.
savePersonForMyPerson
(
form
.
value
).
then
(
res
=>
{
ElMessage
.
success
(
'保存成功'
)
show
.
value
=
false
emit
(
'submitForm'
,
res
.
data
)
})
}
}
}
function
cancel
()
{
show
.
value
=
false
showVcode
.
value
=
false
}
function
resetCode
()
{
isCodeTrue
.
value
=
false
}
function
checkCard
()
{
if
(
isCodeTrue
.
value
){
return
}
if
(
!
card
.
value
)
{
if
(
language
.
value
==
0
)
{
ElMessage
.
error
(
'请填写WDSF卡号'
)
}
else
{
ElMessage
.
error
(
'Please fill in your WDSF code'
)
}
return
}
showVcode
.
value
=
true
}
function
codeSuccess
(
msg
)
{
console
.
log
(
'验证通过'
+
msg
);
showVcode
.
value
=
false
isCodeTrue
.
value
=
true
checkWdsf
({
card
:
card
.
value
}).
then
(
res
=>
{
form
.
value
=
res
.
data
form
.
value
.
xing
=
form
.
value
.
surname
form
.
value
.
ming
=
form
.
value
.
name
form
.
value
.
wdsfStatus
=
form
.
value
.
status
if
(
!
form
.
value
.
sex
)
{
form
.
value
.
sex
=
'0'
}
if
(
form
.
value
.
wdsfFlag
==
'0'
)
{
isCodeTrue
.
value
=
false
if
(
language
.
value
==
0
)
{
ElMessage
.
error
(
'WDSF卡号错误'
)
}
else
{
ElMessage
.
error
(
'WDSF ID is Error'
)
}
}
})
}
</
script
>
<
style
lang=
"scss"
>
.el-input-group__append
button
.el-button
,
.el-input-group__append
button
.el-button
:hover
{
color
:
var
(
--el-color-primary
);
background
:
#efefff
;
border
:
var
(
--el-color-primary
)
solid
1px
;
border-radius
:
0
;
}
.leftboderTT
{
color
:
var
(
--el-color-primary
);
font-size
:
16px
;
font-weight
:
600
;
span
{
color
:
#929AA0
;
font-size
:
14px
;
}
}
.threeFour
{
width
:
100%
;
.el-upload--picture-card
{
width
:
120px
;
height
:
160px
;
}
.el-upload-list--picture-card
.el-upload-list__item
{
width
:
120px
;
height
:
160px
;
}
}
.tip
{
font-size
:
13px
;
color
:
#999
;
margin
:
10px
0
;
i
{
color
:
red
;
margin
:
0
4px
0
0
;
}
}
.shenfen
{
.el-upload--picture-card
{
width
:
320px
;
height
:
200px
;
}
.el-upload-list--picture-card
.el-upload-list__item
{
width
:
320px
;
height
:
200px
;
}
}
.touxiang
{
:deep(.el-upload--picture-card
)
{
width
:
140px
;
height
:
200px
;
}
}
.touxiang
{
:deep(.el-upload-list__item
)
{
width
:
140px
;
height
:
200px
;
}
}
.el-form--inline
.el-form-item
{
width
:
100%
}
.boxDialog
{
.el-dialog__header
{
background
:
linear-gradient
(
#ed2c22
,
#fe6d45
);
margin-right
:
0
;
height
:
52px
;
span
{
color
:
#fff
;
}
}
}
</
style
>
src/viewsPc/match/components/extraForm.vue
View file @
8f61ec5
...
...
@@ -7,10 +7,10 @@
<el-descriptions-item
v-if=
"form.picUrl"
:label=
"language==0?'个人照片':'photo'"
>
<img
style=
"width: 60px"
:src=
"fillImgUrl(form.picUrl)"
>
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'姓氏':'surname'"
>
{{
form
.
xing
}}
</el-descriptions-item>
<el-descriptions-item
v-if=
"form.xing"
:label=
"language==0?'姓氏':'surname'"
>
{{
form
.
xing
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'名':'name'"
>
{{
form
.
ming
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'性别':'sex'"
>
{{
form
.
sexStr
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'所属国家':'Nationality'"
>
{{
form
.
countryName
}}
</el-descriptions-item>
<el-descriptions-item
v-if=
"form.countryName"
:label=
"language==0?'所属国家':'Nationality'"
>
{{
form
.
countryName
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'证件类型':'ID type'"
>
{{
form
.
idcTypeStr
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'证件号码':'ID NO'"
>
{{
form
.
idcCode
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"language==0?'出生日期':'birth'"
>
{{
form
.
birth
}}
</el-descriptions-item>
...
...
src/viewsPc/match/components/signInfo-table.vue
View file @
8f61ec5
...
...
@@ -2,9 +2,14 @@
<div
class=
"mt20"
></div>
<el-table
:data=
"list"
:sum-text=
"sumText"
border
style=
"width: 100%"
v-loading=
"loading"
>
<el-table-column
:label=
"language==0?'序号':'Index'"
type=
"index"
width=
"70"
align=
"center"
/>
<el-table-column
:label=
"language==0?'姓氏':'Last Name'"
prop=
"personInfo.xing"
min-width=
"100"
/>
<el-table-column
:label=
"language==0?'名':'First Name'"
prop=
"personInfo.ming"
min-width=
"100"
/>
<el-table-column
:label=
"language==0?'所属国家':'Nationality'"
prop=
"personInfo.countryName"
:min-width=
"language==0?'100':'120'"
/>
<el-table-column
:label=
"language==0?'姓氏':'Surname'"
prop=
"personInfo.xing"
min-width=
"100"
/>
<el-table-column
:label=
"language==0?'名':'Name'"
prop=
"personInfo.ming"
min-width=
"100"
/>
<el-table-column
:label=
"language==0?'所属国家':'Nationality'"
prop=
""
:min-width=
"language==0?'100':'120'"
>
<template
#
default=
"scope"
>
<span
v-if=
"scope.row.personInfo.countryName"
>
{{
scope
.
row
.
personInfo
.
countryName
}}
</span>
<span
v-if=
"scope.row.personInfo.Representing"
>
{{
scope
.
row
.
personInfo
.
Representing
}}
</span>
</
template
>
</el-table-column>
<!-- <el-table-column :label="language==0?'短名':'Nick Name'" prop="personInfo.shortName" min-width="110"/>-->
<el-table-column
:label=
"language==0?'性别':'Gender'"
prop=
"personInfo.sexStr"
/>
<!-- <el-table-column :label="language==0?'年龄':'Age'" prop="personInfo.age"/>-->
...
...
src/viewsPc/match/detail_en.vue
View file @
8f61ec5
...
...
@@ -355,10 +355,9 @@ function goTeamSign() {
function
goPersonalSign
()
{
// 选项目
router
.
push
({
name
:
`chooseCoach`
,
name
:
'chooseProject'
,
query
:
{
matchId
:
matchId
.
value
,
signType
:
matchData
.
value
.
signType
matchId
:
matchId
.
value
}
})
}
...
...
src/viewsPc/register/personal.vue
View file @
8f61ec5
...
...
@@ -7,14 +7,16 @@
<div>
<el-card
style=
"min-height: 50vh"
>
<div
class=
"pt30"
>
<el-form
class=
"d-form"
size=
"large"
:label-width=
"language==0?120:180"
style=
"max-width: 560px;margin: auto"
>
<el-form
ref=
"wdsfDataRef"
class=
"d-form"
size=
"large"
:label-width=
"language==0?120:180"
style=
"max-width: 560px;margin: auto"
:rules=
"wdsfDataRule"
>
<el-form-item
:label=
"language==0?'WDSF卡号':'WDSF ID'"
required
>
<el-input
type=
"text"
v-model=
"form.card"
@
change=
"resetCode(0)"
@
blur=
"verifyCode"
>
<template
#
append
>
<el-button
type=
"primary"
plain
style=
"width: 110px"
@
click=
"checkCard"
>
<el-icon
v-if=
"checkStatus"
size=
"16"
color=
"#67C23A"
><CircleCheckFilled
/></el-icon>
<span
v-else
>
{{
language
==
0
?
'校验卡号'
:
'Check Code'
}}
</span>
<el-icon
v-if=
"wdsfData.wdsfFlag=='1'"
size=
"16"
color=
"#67C23A"
>
<CircleCheckFilled/>
</el-icon>
<span
v-else
>
{{
language
==
0
?
'校验卡号'
:
'Check Code'
}}
</span>
</el-button>
</
template
>
</el-input>
...
...
@@ -25,48 +27,48 @@
<span
v-else
>
(Obtain automatically according to the WDSF number)
</span>
</div>
<div
class=
"h20"
></div>
<el-form-item
:label=
"language==0?'姓氏':'surname'"
prop=
"xing"
required
>
<el-input
v-model=
"
form.xing
"
disabled
/>
<el-form-item
:label=
"language==0?'姓氏':'surname'"
>
<el-input
v-model=
"
wdsfData.surname
"
disabled
/>
</el-form-item>
<el-form-item
:label=
"language==0?'名':'name'"
prop=
"ming"
required
>
<el-input
v-model=
"
form.ming
"
disabled
/>
<el-form-item
:label=
"language==0?'名':'name'"
>
<el-input
v-model=
"
wdsfData.name
"
disabled
/>
</el-form-item>
<el-form-item
label=
"Representing"
required
>
<el-input
v-model=
"
form.R
epresenting"
disabled
/>
<el-form-item
label=
"Representing"
>
<el-input
v-model=
"
wdsfData.r
epresenting"
disabled
/>
</el-form-item>
<el-form-item
label=
"Age group"
required
>
<el-input
v-model=
"
form
.ageGroup"
disabled
/>
<el-form-item
label=
"Age group"
>
<el-input
v-model=
"
wdsfData
.ageGroup"
disabled
/>
</el-form-item>
<el-form-item
label=
"Division"
required
>
<el-input
v-model=
"
form
.division"
disabled
/>
<el-form-item
label=
"Division"
>
<el-input
v-model=
"
wdsfData
.division"
disabled
/>
</el-form-item>
<el-form-item
label=
"Status"
required
>
<el-input
v-model=
"
form
.status"
disabled
/>
<el-form-item
label=
"Status"
>
<el-input
v-model=
"
wdsfData
.status"
disabled
/>
</el-form-item>
<div
class=
"h30"
></div>
<div
class=
"leftboderTT"
>
{{ language == 0 ? '补充信息' : 'Supplementary Information' }}
</div>
<div
class=
"h20"
></div>
<el-form-item
:label=
"language==0?'性别':'Sex'"
prop=
"sex"
required
>
<el-radio-group
v-model=
"
form
.sex"
>
<el-radio
label=
"0"
>
{{ language
==0?'女':
'female' }}
</el-radio>
<el-radio
label=
"1"
>
{{ language
==0?'男':
'male' }}
</el-radio>
<el-form-item
:label=
"language==0?'性别':'Sex'"
required
>
<el-radio-group
v-model=
"
wdsfData
.sex"
>
<el-radio
label=
"0"
>
{{ language
== 0 ? '女' :
'female' }}
</el-radio>
<el-radio
label=
"1"
>
{{ language
== 0 ? '男' :
'male' }}
</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"language==0?'出生日期':'Birthday'"
prop=
"birth"
required
>
<el-form-item
:label=
"language==0?'出生日期':'Birthday'"
required
>
<el-date-picker
v-model=
"
form.birth
"
v-model=
"
wdsfData.birthday
"
style=
"width: 100%;"
type=
"date"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
/>
</el-form-item>
<el-form-item
label=
"Passport number"
required
prop=
"idcCode"
>
<el-input
v-model=
"form.idcCode
"
/>
<el-form-item
label=
"Passport number"
required
>
<el-input
v-model=
"wdsfData.passportNumber
"
/>
</el-form-item>
<el-form-item
label=
"Passport File"
>
<file-upload
:is-show-tip=
"false"
:button-text=
"'Upload'"
/>
<file-upload
v-model=
"wdsfData.passportUrl"
:limit=
"1"
:is-show-tip=
"false"
:button-text=
"'Upload'"
/>
</el-form-item>
...
...
@@ -75,25 +77,30 @@
v-if=
"language==0"
>
(登录时需要验证,保护账户信息)
</span></div>
<div
class=
"h20"
></div>
<el-form-item
:label=
"language==0?'邮箱':'E-mail'"
required
>
<el-input
type=
"text"
v-model=
"form.account"
@
change=
"resetCode(1)"
@
blur=
"verifyCode"
/>
<div
class=
"tip"
v-if=
"language==0"
>
<el-input
type=
"text"
v-model=
"wdsfData.email"
@
change=
"resetCode(1)"
@
blur=
"verifyCode"
:disabled=
"wdsfData.personFlag=='1'"
/>
<div
class=
"tip"
v-if=
"wdsfData.personFlag=='0'"
>
<div
v-if=
"language==0"
>
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
该邮箱后续会接收您报名审核、支付账单、比赛邀请函等。)
</div>
<div
class=
"tip"
v-else
>
<div
v-else
>
Please fill in a correct mailbox information, which cannot be modified after registration.
The mailbox will receive your registration review, payment of bills, competition invitation and so on.
The mailbox will receive your registration review, payment of bills, competition invitation and so
on.
</div>
</div>
</el-form-item>
<el-form-item
:label=
"language==0?'验证码':'Code'"
required
>
<el-form-item
:label=
"language==0?'验证码':'Code'"
required
v-if=
"wdsfData.personFlag=='0'"
>
<el-input
v-model=
"form.code"
>
<
template
#
append
>
<el-button
type=
"primary"
plain
style=
"width: 110px"
@
click=
"sendsmsMsg"
>
<count-down
v-if=
"counting"
v-slot=
"
{ totalSeconds }" :time="60000" @end="counting=false">
{{
totalSeconds
}}
{{
language
==
0
?
'秒'
:
's'
}}
{{
totalSeconds
}}
{{
language
==
0
?
'秒'
:
's'
}}
</count-down>
<span
v-else
>
{{
language
==
0
?
'发送验证码'
:
'Send code'
}}
</span>
<span
v-else
>
{{
language
==
0
?
'发送验证码'
:
'Send code'
}}
</span>
</el-button>
</
template
>
</el-input>
...
...
@@ -103,74 +110,88 @@
<el-input
type=
"password"
show-password
v-model=
"form.password"
:placeholder=
"language==0?'6-16位密码。区分大小写':'Password'"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'确认密码':'Confirm Password'"
required
>
<el-form-item
:label=
"language==0?'确认密码':'Confirm Password'"
required
v-if=
"wdsfData.personFlag=='0'"
>
<el-input
type=
"password"
show-password
v-model=
"form.confirmPassword"
@
change=
"vconfirmPassword"
:placeholder=
"language==0?'再次输入密码':'Confirm Password'"
/>
<div
class=
"text-danger"
v-if=
"showError"
>
{{ language==0?'密码不一致':'Password inconsistency' }}
</div>
<div
class=
"text-danger"
v-if=
"showError"
>
{{
language == 0 ? '密码不一致' : 'Password inconsistency'
}}
</div>
</el-form-item>
</el-form>
</div>
<div
class=
"text-center"
>
<el-button
class=
"primary-kx"
round
@
click=
"goBack"
>
{{ language==0?'取消':'Cancel'}}
</el-button>
<el-button
type=
"primary"
class=
"btn-lineG w200px"
round
@
click=
"next"
v-if=
"matchId=='0'"
>
{{ language==0?'立即注册':'Register Now' }}
</el-button>
<el-button
type=
"primary"
class=
"btn-lineG w200px"
round
@
click=
"next"
v-else
>
{{ language==0?'下一步':'Next' }}
<el-button
class=
"primary-kx"
round
@
click=
"goBack"
>
{{ language == 0 ? '取消' : 'Cancel' }}
</el-button>
<el-button
type=
"primary"
class=
"btn-lineG w200px"
round
@
click=
"next"
v-if=
"wdsfData.wdsfFlag=='1'"
>
<span
v-if=
"matchId=='0'"
>
{{ language == 0 ? '立即注册' : 'Register Now' }}
</span>
<span>
{{ language == 0 ? '下一步' : 'Next' }}
</span>
</el-button>
</div>
</el-card>
</div>
<Vcode
:show=
"isShow"
@
success=
"codeSuccess()"
></Vcode>
<Vcode
:show=
"isShow"
:z-index=
"3000"
@
success=
"codeSuccess()"
></Vcode>
</div>
</div>
</div>
</template>
<
script
setup
>
import
{
ref
,
toRefs
,
reactive
}
from
"vue"
import
{
onMounted
}
from
"@vue/runtime-core"
;
import
{
ref
,
toRefs
,
reactive
}
from
"vue"
import
{
getCurrentInstance
,
onMounted
}
from
"@vue/runtime-core"
;
import
Step3
from
"./team/step3"
import
Vcode
from
"vue3-puzzle-vcode"
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
CountDown
from
'@chenfengyuan/vue-countdown'
import
cache
from
'@/plugins/cache'
import
{
checkWdsf
,
getCaptchaSms
,
registerSingle
}
from
"@/apiPc/match"
;
import
{
checkWdsf
,
getCaptchaSms
,
loginSingle
,
registerSingle
}
from
"@/apiPc/match"
;
import
{
setToken
}
from
"@/utils/auth"
;
import
PersonalStep
from
"@/viewsPc/register/components/personal-step"
;
import
FileUpload
from
"@/components/FileUpload"
;
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
const
router
=
useRouter
()
const
route
=
useRoute
()
const
{
proxy
}
=
getCurrentInstance
()
const
data
=
reactive
({
isShow
:
false
,
isCodeTrue
:
0
,
counting
:
false
,
checkStatus
:
false
,
form
:{
sex
:
'0'
},
isShow
:
false
,
isCodeTrue
:
0
,
counting
:
false
,
checkStatus
:
false
,
form
:
{},
activeStep
:
0
,
failVcode
:
'验证失败,请重试'
,
successVcode
:
'验证通过!'
,
failVcode
:
'验证失败,请重试'
,
successVcode
:
'验证通过!'
,
sliderText
:
'拖动滑块完成拼图'
,
showError
:
false
showError
:
false
,
wdsfData
:
{
sex
:
'0'
},
wdsfDataRule
:
{
birthday
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}],
passportNumber
:
[{
required
:
true
,
message
:
'required'
,
trigger
:
'blur'
}],
}
})
const
{
isShow
,
isCodeTrue
,
counting
,
form
,
activeStep
,
failVcode
,
successVcode
,
sliderText
,
checkStatus
,
showError
}
=
toRefs
(
data
)
const
{
isShow
,
isCodeTrue
,
counting
,
form
,
activeStep
,
failVcode
,
successVcode
,
sliderText
,
checkStatus
,
showError
,
wdsfData
,
wdsfDataRule
}
=
toRefs
(
data
)
const
matchId
=
ref
(
'0'
)
onMounted
(()
=>
{
if
(
language
.
value
==
1
)
{
onMounted
(()
=>
{
if
(
language
.
value
==
1
)
{
failVcode
.
value
=
'Error!'
successVcode
.
value
=
'Success!'
sliderText
.
value
=
'Drag the slider to complete the puzzle'
}
matchId
.
value
=
route
.
query
.
matchId
matchId
.
value
=
route
.
query
.
matchId
||
'0'
})
function
sendsmsMsg
()
{
if
(
!
form
.
value
.
account
)
{
if
(
language
.
value
==
0
)
{
if
(
!
form
.
value
.
account
)
{
if
(
language
.
value
==
0
)
{
ElMessage
.
error
(
'请填写手机/邮箱'
)
}
else
{
ElMessage
.
error
(
'Please fill in your phone/email address'
)
...
...
@@ -178,15 +199,16 @@ function sendsmsMsg() {
return
}
if
(
counting
.
value
)
{
if
(
counting
.
value
)
{
return
}
else
{
isShow
.
value
=
true
}
}
function
checkCard
()
{
if
(
!
form
.
value
.
card
)
{
if
(
language
.
value
==
0
)
{
if
(
!
form
.
value
.
card
)
{
if
(
language
.
value
==
0
)
{
ElMessage
.
error
(
'请填写WDSF卡号'
)
}
else
{
ElMessage
.
error
(
'Please fill in your WDSF code'
)
...
...
@@ -195,51 +217,123 @@ function checkCard() {
}
isShow
.
value
=
true
}
function
verifyCode
()
{
if
(
!
form
.
value
.
account
)
{
if
(
!
form
.
value
.
account
)
{
return
}
if
(
form
.
value
.
account
.
indexOf
(
'@'
)
>-
1
)
{
if
(
form
.
value
.
account
.
indexOf
(
'@'
)
>
-
1
)
{
//邮箱
}
}
function
codeSuccess
(
msg
)
{
console
.
log
(
'验证通过'
+
msg
);
isShow
.
value
=
false
isCodeTrue
.
value
+=
1
if
(
isCodeTrue
.
value
==
1
){
checkWdsf
({
card
:
form
.
value
.
card
}).
then
(
res
=>
{
checkStatus
.
value
=
res
.
data
if
(
isCodeTrue
.
value
==
1
)
{
checkWdsf
({
card
:
form
.
value
.
card
}).
then
(
res
=>
{
wdsfData
.
value
=
res
.
data
if
(
!
wdsfData
.
value
.
sex
)
{
wdsfData
.
value
.
sex
=
'0'
}
if
(
wdsfData
.
value
.
wdsfFlag
==
'0'
)
{
isCodeTrue
.
value
=
0
if
(
language
.
value
==
0
)
{
ElMessage
.
error
(
'WDSF卡号错误'
)
}
else
{
ElMessage
.
error
(
'WDSF ID is Error'
)
}
}
}).
catch
(
err
=>
{
isCodeTrue
.
value
=
0
})
}
if
(
isCodeTrue
.
value
==
2
)
{
if
(
isCodeTrue
.
value
==
2
)
{
counting
.
value
=
true
getCaptchaSms
({
account
:
form
.
value
.
account
}).
then
(
res
=>
{
getCaptchaSms
({
account
:
form
.
value
.
account
}).
then
(
res
=>
{
})
}
}
function
resetCode
(
n
)
{
isCodeTrue
.
value
=
n
}
function
vconfirmPassword
()
{
if
(
form
.
value
.
password
!=
form
.
value
.
confirmPassword
)
{
if
(
form
.
value
.
password
!=
form
.
value
.
confirmPassword
)
{
showError
.
value
=
true
}
else
{
showError
.
value
=
false
}
}
function
goBack
()
{
router
.
go
(
-
1
)
}
function
next
()
{
// registerSingle(form.value).then(res=>{
// setToken(res.data.token)
if
(
matchId
.
value
!=
'0'
){
// proxy.$refs['wdsfDataRef'].validate((valid) => {
// if (valid)
if
(
!
wdsfData
.
value
.
passportNumber
)
{
ElMessage
.
error
(
'Please fill in your passport number'
)
return
}
if
(
!
wdsfData
.
value
.
birthday
)
{
ElMessage
.
error
(
'Please fill in your birthday'
)
return
}
if
(
wdsfData
.
value
.
personFlag
==
'0'
)
{
let
obj
=
{
card
:
form
.
value
.
card
,
account
:
wdsfData
.
value
.
email
,
code
:
form
.
value
.
code
,
password
:
form
.
value
.
password
,
sex
:
wdsfData
.
value
.
sex
,
birth
:
wdsfData
.
value
.
birthday
,
passportUrl
:
wdsfData
.
value
.
passportUrl
[
0
].
url
,
passportNumber
:
wdsfData
.
value
.
passportNumber
,
}
registerSingle
(
obj
).
then
(
res
=>
{
setToken
(
res
.
data
.
token
)
console
.
log
(
matchId
.
value
)
afterR
()
})
}
if
(
wdsfData
.
value
.
personFlag
==
'1'
)
{
if
(
!
form
.
value
.
password
){
ElMessage
.
error
(
'Please fill in your password'
)
return
}
let
obj
=
{
sex
:
wdsfData
.
value
.
sex
,
passportNumber
:
wdsfData
.
value
.
passportNumber
,
birth
:
wdsfData
.
value
.
birthday
,
personId
:
wdsfData
.
value
.
personId
,
username
:
wdsfData
.
value
.
email
,
password
:
form
.
value
.
password
,
}
if
(
Array
.
isArray
(
wdsfData
.
value
.
passportUrl
)){
obj
.
passportUrl
=
form
.
value
.
passportUrl
[
0
].
url
}
else
{
obj
.
passportUrl
=
wdsfData
.
value
.
passportUrl
}
loginSingle
(
obj
).
then
(
res
=>
{
setToken
(
res
.
data
.
token
)
console
.
log
(
matchId
.
value
)
afterR
()
})
}
// })
}
function
afterR
()
{
if
(
matchId
.
value
!=
'0'
)
{
router
.
push
({
name
:
'chooseProject'
,
params
:
{
params
:
{
id
:
matchId
.
value
},
query
:
{
...
...
@@ -249,32 +343,46 @@ function next() {
}
else
{
router
.
push
({
name
:
'matchDetail'
,
params
:
{
params
:
{
id
:
0
}
})
}
// })
}
</
script
>
<
style
scoped
lang=
"scss"
>
.tip
{
line-height
:
1.6
;
font-size
:
12px
;
margin-top
:
6px
;
color
:
#666
;}
.tip
{
line-height
:
1.6
;
font-size
:
12px
;
margin-top
:
6px
;
color
:
#666
;
}
.leftboderTT
{
color
:
var
(
--el-color-primary
);
font-size
:
16px
;
font-weight
:
600
;
span
{
span
{
color
:
#929AA0
;
font-size
:
14px
;
}
}
.h20
{
height
:
20px
}
.h30
{
height
:
30px
}
.el-input-group__append
{
flex
:
1
1
auto
;
}
.h20
{
height
:
20px
}
.h30
{
height
:
30px
}
.el-input-group__append
{
flex
:
1
1
auto
;}
.el-input-group__append
button
.el-button
,
.el-input-group__append
button
.el-button
:hover
{
.el-input-group__append
button
.el-button
,
.el-input-group__append
button
.el-button
:hover
{
color
:
var
(
--el-color-primary
);
background
:
#efefff
;
border
:
var
(
--el-color-primary
)
solid
1px
;
...
...
src/viewsPc/register/team/step1.vue
View file @
8f61ec5
...
...
@@ -5,6 +5,10 @@
<el-form-item
:label=
"language==0?'邮箱':'E-mail'"
required
>
<el-input
type=
"text"
v-model=
"form.account"
@
change=
"resetCode"
@
blur=
"verifyCode"
/>
<div
class=
"tip"
>
(请填写正确的邮箱信息,邮箱信息在注册完成后无法修改。
该邮箱后续会会作为您登录的账户,并接收您报名审核、支付账单、比赛邀请函等。)
</div>
</el-form-item>
<el-form-item
:label=
"language==0?'验证码':'Code'"
required
>
<el-input
v-model=
"form.code"
>
...
...
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