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
4d8b424f
authored
2024-03-12 16:46:31 +0800
by
杨炀
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
no message
1 parent
abf5e3a4
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
403 additions
and
73 deletions
src/App.vue
src/assets/styles/ruoyi.scss
src/components/FileUpload/index.vue
src/viewsPc/center/myMatch.vue
src/viewsPc/center/myMember.vue
src/viewsPc/center/teamInfo.vue
src/viewsPc/match/chooseSportsman.vue
src/viewsPc/match/components/addCoach.vue
src/viewsPc/match/components/allSportsmanList.vue
src/viewsPc/match/components/import.vue
src/viewsPc/match/components/matchScheduleList.vue
src/viewsPc/match/components/zu-table.vue
src/viewsPc/match/detail.vue
src/viewsPc/match/detail_en.vue
src/viewsPc/match/import.html
src/viewsPc/match/pay.vue
src/viewsPc/match/signPreview.vue
src/viewsPc/match/teamSign.vue
src/viewsPc/register/personal.vue
src/viewsPc/register/team/step2.vue
src/App.vue
View file @
4d8b424
...
...
@@ -55,13 +55,26 @@ watch(language,(val)=>{
}
.box
{
width
:
90%
;
max-width
:
1600px
;
width
:
1600px
;
margin
:
auto
;
}
@media
screen
and
(
max-width
:
1650px
)
{
.box
{
width
:
1200px
;
}
}
@media
screen
and
(
max-width
:
1200px
)
{
.box
{
width
:
860px
;
}
}
@media
screen
and
(
max-width
:
900px
)
{
.box
{
width
:
750px
;
}
}
.app-main
{
.app-main
{
min-height
:
75vh
;
background
:
#F4F4F4
;
}
...
...
src/assets/styles/ruoyi.scss
View file @
4d8b424
...
...
@@ -1406,3 +1406,22 @@ img{display: block;}
:deep
(
.el-checkbox__input
)
{
position
:
absolute
;
right
:
0
;
top
:
0
;}
.name
{
text-align
:
center
;}
}
//动画
@keyframes
bounce-down
{
25
%
{
-webkit-transform
:
translateY
(
-5px
);
transform
:
translateY
(
-5px
)
}
50
%
,
to
{
-webkit-transform
:
translateY
(
0
);
transform
:
translateY
(
0
)
}
75
%
{
-webkit-transform
:
translateY
(
5px
);
transform
:
translateY
(
5px
)
}
}
...
...
src/components/FileUpload/index.vue
View file @
4d8b424
...
...
@@ -248,7 +248,7 @@ function listToString(list, separator) {
}
.upload-file-list
.el-upload-list__item
{
border
:
1px
solid
#e4e7ed
;
line-height
:
2
;
line-height
:
2
;
padding
:
0
10px
;
margin-bottom
:
10px
;
position
:
relative
;
}
...
...
src/viewsPc/center/myMatch.vue
View file @
4d8b424
...
...
@@ -78,7 +78,6 @@ import {ElMessage, ElMessageBox} from 'element-plus'
import
_
from
'lodash'
import
useUserStore
from
"@/store/modules/user"
;
import
cache
from
"@/plugins/cache"
;
import
{
recoverMySignFromCancel
}
from
"@/apiPc/match"
;
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
const
router
=
useRouter
()
const
{
proxy
}
=
getCurrentInstance
()
...
...
src/viewsPc/center/myMember.vue
View file @
4d8b424
...
...
@@ -52,7 +52,7 @@
<!-- 添加人员-->
<addCoach
ref=
"dialogAddCoach"
@
submitForm=
"getList"
/>
<Import
ref=
"dialogImportProps"
@
uploadSuccess
=
"getList"
/>
<Import
ref=
"dialogImportProps"
@
submitForm
=
"getList"
/>
</
template
>
<
script
setup
>
...
...
src/viewsPc/center/teamInfo.vue
View file @
4d8b424
...
...
@@ -23,6 +23,12 @@
<el-form-item
:label=
"language==0?'机构名称':'Team Name'"
required
prop=
"name"
>
<el-input
type=
"text"
v-model=
"form.name"
:placeholder=
"language==0?'请输入内容':''"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'专业/业余':'Professional/Amateur'"
required
prop=
"majorFlag"
>
<el-select
v-model=
"form.majorFlag"
>
<el-option
:label=
"language==0?'专业':'Professional'"
value=
"1"
/>
<el-option
:label=
"language==0?'业余':'Amateur'"
value=
"0"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'团体类型':'Group type'"
prop=
"type"
required
>
<el-select
v-model=
"form.type"
:placeholder=
"language==0?'请选择团体类型':''"
style=
"width: 100%;"
>
<el-option
:label=
"language==0?'普通院校':'School'"
value=
"0"
/>
...
...
src/viewsPc/match/chooseSportsman.vue
View file @
4d8b424
...
...
@@ -15,6 +15,11 @@
<a
class=
"fr"
@
click=
"emptyChoosed"
>
{{
language
==
0
?
'清空'
:
'Empty'
}}
</a>
</div>
<div
class=
"panel-body"
style=
"padding: 10px"
>
<div
style=
"margin: 0 4px 10px"
>
<el-input
size=
"small"
v-model=
"athletesQuery.name"
:prefix-icon=
"Search"
@
change=
"queryAthletes"
clearable
/>
</div>
<div
class=
"noPicChooseForm"
>
<el-checkbox-group
v-model=
"choosedchoosed"
@
change=
"changechoosed"
>
<el-button
plain
@
click=
"chooseSportman"
>
+
{{
language
==
0
?
'选择'
:
'add'
}}
</el-button>
...
...
@@ -37,16 +42,17 @@
<h3
class=
"panel-title"
v-else
>
Select a Participating team
</h3>
<a
class=
"fr"
@
click=
"emptyChangechoosed"
>
{{
language
==
0
?
'清空'
:
'Empty'
}}
</a>
</div>
<div
class=
"panel-body"
>
<div
class=
"panel-body"
style=
"padding: 10px"
>
<div
class=
"mb20"
><el-input
size=
"small"
v-model=
"zuQuery.name"
:prefix-icon=
"Search"
@
change=
"queryTeam"
clearable
/></div>
<div
class=
"chooseForm"
>
<el-checkbox-group
v-model=
"choosedchoosed"
@
change=
"changechoosed"
>
<!-- v-show="choosedchoosed.indexOf(c.id) !== -1"-->
<el-checkbox
v-for=
"c in choosed2List"
:label=
"c.id"
checked
>
<el-avatar
fit=
"cover"
v-if=
"c.picUrl"
:size=
"60"
:src=
"fillImgUrl(c.picUrl)"
/>
<el-avatar
fit=
"cover"
v-else-if=
"c.sex == 0"
:size=
"60"
src=
"
@/assets
/img/head1.png"
/>
<el-avatar
fit=
"cover"
v-else-if=
"c.sex == 1"
:size=
"60"
src=
"
@/assets
/img/head0.png"
/>
<el-avatar
fit=
"cover"
v-else-if=
"c.sex == 0"
:size=
"60"
src=
"/img/head1.png"
/>
<el-avatar
fit=
"cover"
v-else-if=
"c.sex == 1"
:size=
"60"
src=
"/img/head0.png"
/>
<p
class=
"name"
>
{{
c
.
realName
}}
<!-- (
{{
c
.
sexStr
}}
)-->
<img
v-if=
"c.sex=='0'"
src=
"@/assets/img/female.png"
/>
<img
v-if=
"c.sex=='1'"
src=
"@/assets/img/male.png"
/>
<!--
<el-icon
@
click
.
stop=
"editPerson(c.id)"
>
-->
...
...
@@ -185,6 +191,12 @@ const data = reactive({
signInfoList
:
[],
zuTableList
:
[],
choosedList
:
[],
athletesQuery
:
{
name
:
''
},
zuQuery
:
{
name
:
''
},
extraPersonInfoMapList
:
[],
teamList
:
[],
extraform
:
[],
...
...
@@ -206,7 +218,8 @@ const data = reactive({
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
coachForm
,
projectIds
,
choosedchoosed
,
activeStep
,
projectList
,
choosed2List
,
loadingProject
,
projectQuery
,
tableType
,
athletesQuery
,
zuQuery
}
=
toRefs
(
data
)
const
matchId
=
ref
(
route
.
query
.
matchId
)
let
signInfoType
=
null
...
...
@@ -407,7 +420,22 @@ function getProjectList() {
ElMessage
.
error
(
err
.
msg
)
})
}
function
queryAthletes
()
{
if
(
athletesQuery
.
value
.
name
)
for
(
var
t
of
choosedList
.
value
){
if
(
t
.
realName
.
indexOf
(
athletesQuery
.
value
.
name
)
>-
1
){
// 筛选
}
}
}
function
queryTeam
()
{
if
(
zuQuery
.
value
.
name
)
for
(
var
t
of
choosedList
.
value
){
if
(
t
.
realName
.
indexOf
(
zuQuery
.
value
.
name
)
>-
1
){
// 筛选
}
}
}
function
getChoosed
(
list
)
{
console
.
log
(
list
)
choosedList
.
value
=
list
...
...
@@ -454,6 +482,7 @@ function emptyChangechoosed() {
choosedchoosed
.
value
=
[]
choosed2List
.
value
=
[]
projectList
.
value
=
[]
projectIds
.
value
=
[]
}
function
delchoosedchoosed
()
{
...
...
@@ -466,18 +495,13 @@ function delchoosedchoosed() {
choosedchoosed
.
value
=
[]
}
function
editMates
(
row
)
{
const
params
=
{
title
:
'更换队友'
}
proxy
.
$refs
[
'dialogMatesRef'
].
open
(
params
)
}
function
signUp
()
{
if
(
projectIds
.
value
.
length
==
0
)
{
return
}
if
(
choosedchoosed
.
value
.
length
==
0
)
{
return
}
const
obj
=
{
athleteIds
:
choosedchoosed
.
value
.
toString
(),
projectIds
:
projectIds
.
value
.
toString
(),
...
...
@@ -487,6 +511,7 @@ function signUp() {
choosedchoosed
.
value
=
[]
choosed2List
.
value
=
[]
projectList
.
value
=
[]
projectIds
.
value
=
[]
getSignInfoList
()
})
}
...
...
@@ -728,7 +753,7 @@ function switchTabletype() {
}
}
}
.noPicChooseForm
{
.noPicChooseForm
{
overflow
:
auto
;
height
:
70vh
;
.el-checkbox-group{
display
:
flex
;
flex-wrap
:
wrap
;
text-align
:
justify
;
.el-button{
width
:
31%
;
margin
:
1%
;}
.el-checkbox
{
margin
:
1%
;
width
:
31%
;
overflow
:
hidden
;}
...
...
src/viewsPc/match/components/addCoach.vue
View file @
4d8b424
...
...
@@ -128,6 +128,7 @@ const emit = defineEmits(['submitForm'])
const
data
=
reactive
({
form
:
{
// countryId: 240
sex
:
'0'
},
rules
:
{
xing
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
...
...
src/viewsPc/match/components/allSportsmanList.vue
View file @
4d8b424
...
...
@@ -64,13 +64,13 @@
</
template
>
</el-table-column>
</el-table>
<paginationPc
v-show=
"total>0"
v-model:page=
"query.pageNum"
v-model:limit=
"query.pageSize"
:total=
"total"
@
pagination=
"getList"
/
>
<!-- <paginationPc-->
<!-- v-show="total>0"-->
<!-- v-model:page="query.pageNum"-->
<!-- v-model:limit="query.pageSize"-->
<!-- :total="total"-->
<!-- @pagination="getList"-->
<!-- />--
>
<
template
#
footer
>
<div
class=
"dialog-footer text-center"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
{{
language
==
0
?
'确定'
:
'Confirm'
}}
</el-button>
...
...
@@ -80,7 +80,7 @@
</el-dialog>
<addCoach
ref=
"dialogAddCoach"
@
submitForm=
"getList"
/>
<Import
ref=
"dialogImportProps"
@
uploadSuccess
=
"getList"
/>
<Import
ref=
"dialogImportProps"
@
submitForm
=
"getList"
/>
</template>
<
script
setup
>
...
...
@@ -95,12 +95,10 @@ import cache from "@/plugins/cache";
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
const
{
proxy
}
=
getCurrentInstance
()
const
emit
=
defineEmits
([
'submitForm'
,
'transfer'
])
const
emit
=
defineEmits
([
'transfer'
])
const
data
=
reactive
({
query
:
{
label
:
'0'
,
pageNum
:
1
,
pageSize
:
10
label
:
'0'
},
tableData
:
[],
show
:
false
,
...
...
src/viewsPc/match/components/import.vue
View file @
4d8b424
...
...
@@ -8,7 +8,8 @@
</el-form-item>
<el-form-item
:label=
"language==0?'上传模板':'Upload template'"
prop=
"discount"
>
<fileImport
:text=
"language==0?'选取文件':'Select File'"
ref=
"upload"
name=
"excel"
:action=
"action"
@
uploadSuccess=
"uploadSuccess"
/>
<fileImport
:text=
"language==0?'选取文件':'Select File'"
ref=
"upload"
name=
"excel"
:action=
"action"
@
uploadSuccess=
"submit"
/>
</el-form-item>
</el-form>
...
...
@@ -25,7 +26,7 @@ import { ElMessage, ElMessageBox } from 'element-plus'
const
{
proxy
}
=
getCurrentInstance
()
import
useUserStore
from
'@/store/modules/user'
const
emit
=
defineEmits
([
'
uploadSuccess
'
])
const
emit
=
defineEmits
([
'
submitForm
'
])
import
cache
from
"@/plugins/cache"
const
language
=
ref
(
cache
.
local
.
get
(
'language'
)
||
0
)
const
action
=
ref
(
''
)
...
...
@@ -37,7 +38,7 @@ let groupId = 0
if
(
useUserStore
().
group
){
groupId
=
useUserStore
().
group
.
id
}
function
uploadSuccess
(
res
)
{
function
submit
(
res
)
{
console
.
log
(
res
)
cancel
()
if
(
res
.
code
==
500
)
{
...
...
@@ -48,9 +49,6 @@ function uploadSuccess(res) {
if
(
res
.
data
.
repeatInSystemColumn
.
length
>
0
){
proxy
.
$modal
.
msgError
(
`
${
res
.
data
.
repeatInSystemColumn
}${
language
.
value
==
0
?
'系统中已存在'
:
'is in system'
}
`
)
}
if
(
res
.
data
.
errCountryColumn
.
length
>
0
){
proxy
.
$modal
.
msgError
(
`
${
res
.
data
.
errCountryColumn
}${
language
.
value
==
0
?
'所属国家有误'
:
'error Country'
}
`
)
}
if
(
res
.
data
.
errIdcTypeColumn
.
length
>
0
){
proxy
.
$modal
.
msgError
(
`
${
res
.
data
.
errIdcTypeColumn
}${
language
.
value
==
0
?
'证件号错误'
:
'error ID type'
}
`
)
}
...
...
@@ -65,9 +63,8 @@ function uploadSuccess(res) {
}
}
emit
(
'uploadSuccess'
)
proxy
.
$refs
[
'upload'
].
handleClear
()
emit
(
'submitForm'
)
}
const
open
=
(
params
)
=>
{
...
...
src/viewsPc/match/components/matchScheduleList.vue
View file @
4d8b424
...
...
@@ -46,6 +46,7 @@ const props = defineProps({
color
:
var
(
--el-color-primary
);
}
}
p
img
{
max-width
:
100%
;}
.table
{
width
:
100%
;
border-left
:
1px
solid
#e1e1e1
;
border-top
:
1px
solid
#e1e1e1
;
th{
background
:
#eee
;
padding
:
6px
10px
;
border-right
:
1px
solid
#e1e1e1
;
...
...
src/viewsPc/match/components/zu-table.vue
View file @
4d8b424
...
...
@@ -5,7 +5,11 @@
<el-table-column
:label=
"language==0?'组别代码':'Group code'"
width=
"120px"
prop=
"zuName"
/>
<el-table-column
:label=
"language==0?'组别':'Group'"
prop=
"project.name"
/>
<el-table-column
:label=
"language==0?'舞种':'Dance Style'"
width=
"120px"
prop=
"project.danceType"
/>
<el-table-column
:label=
"language==0?'参赛说明':'Participation Instructions'"
prop=
"project.remarks"
/>
<el-table-column
:label=
"language==0?'参赛说明':'Participation Instructions'"
>
<template
#
default=
"scope"
>
<div
v-html=
"scope.row.project.remarks"
></div>
</
template
>
</el-table-column>
<el-table-column
:label=
"language==0?'参赛运动员':'Participating athletes'"
width=
"120px"
>
<
template
#
default=
"scope"
>
<div>
...
...
src/viewsPc/match/detail.vue
View file @
4d8b424
...
...
@@ -353,6 +353,21 @@ function checkIsSign() {
return
Promise
.
reject
(
'rejected message'
)
}
if
(
res
.
data
.
type
==
'2'
)
{
ElMessageBox
.
confirm
(
'报名审批拒绝,是否重新报名'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
}
).
then
(()
=>
{
match
.
recoverMySignFromCancel
(
n
.
id
).
then
((
res
)
=>
{
})
})
}
})
}
</
script
>
...
...
src/viewsPc/match/detail_en.vue
View file @
4d8b424
...
...
@@ -395,6 +395,21 @@ function checkIsSign() {
})
return
Promise
.
reject
(
'rejected message'
)
}
if
(
res
.
data
.
type
==
'2'
)
{
ElMessageBox
.
confirm
(
'Registration approval rejected. Do you want to reapply'
,
'Warning'
,
{
confirmButtonText
:
'OK'
,
cancelButtonText
:
'Cancel'
,
type
:
'warning'
,
}
).
then
(()
=>
{
match
.
recoverMySignFromCancel
(
n
.
id
).
then
((
res
)
=>
{
})
})
}
})
}
</
script
>
...
...
src/viewsPc/match/import.html
0 → 100644
View file @
4d8b424
<!DOCTYPE html>
<html
lang=
"en"
>
<head>
<meta
charset=
"UTF-8"
>
<title></title>
</head>
<style
lang=
"scss"
>
.row
{
display
:
flex
;
}
.border-info
{
.item
{
margin
:
5px
0
;
color
:
#4C5359
;
font-size
:
14px
;
label
{
font-size
:
14px
;
margin-right
:
14px
}
}
}
.rowSummary
{
text-align
:
right
;
padding
:
0
20px
;
height
:
40px
;
line-height
:
40px
;
background
:
#FAFBFD
;
font-size
:
16px
;
color
:
#95A1A6
;
border
:
1px
solid
#EEEFF0
;
span{
font-size
:
18px
;
font-family
:
DIN
Alternate
;
color
:
#000
;}
}
</style>
<body>
<!--赛事信息/league/competition/PCDetail-->
<div
class=
"border-info"
style=
"margin: 20px"
>
<div
class=
"row"
v-if=
"language==0"
>
<div>
<div
class=
"item"
><label>
赛事名称
</label>
{{ matchInfo.name }}
</div>
</div>
<div>
<div
class=
"item"
><label>
赛事类型
</label>
{{ matchInfo.level }}
</div>
</div>
<div>
<div
class=
"item"
><label>
赛事时间
</label>
{{ matchInfo.beginTime?.slice(0, 10) }} 至
{{ matchInfo.endTime?.slice(0, 10) }}
</div>
</div>
<div>
<div
class=
"item"
><label>
报名时间
</label>
{{ matchInfo.signBeginTime?.slice(0, 10) }}
至{{ matchInfo.signEndTime?.slice(0, 10) }}
</div>
</div>
<div>
<div
class=
"item"
><label>
比赛地址
</label>
{{ matchInfo.address }}
</div>
</div>
</div>
<div
v-else
>
<div>
<div
class=
"item"
><label>
Event Name
</label>
{{ matchInfo.name }}
</div>
</div>
<div>
<div
class=
"item"
><label>
Event Type
</label>
{{ matchInfo.level }}
</div>
</div>
<div>
<div
class=
"item"
><label>
Event Date
</label>
{{ matchInfo.beginTime?.slice(0, 10) }} ~
{{ matchInfo.endTime?.slice(0, 10) }}
</div>
</div>
<div>
<div
class=
"item"
><label>
Registration Period
</label>
{{ matchInfo.signBeginTime?.slice(0, 10) }}
~{{ matchInfo.signEndTime?.slice(0, 10) }}
</div>
</div>
<div>
<div
class=
"item"
><label>
Event Address
</label>
{{ matchInfo.address }}
</div>
</div>
</div>
</div>
<!--团队信息/league/group/getMyGroupForCpt/${groupId}/${cptId}-->
<div
class=
"border-info gray"
style=
"margin: 20px"
>
<div
class=
"row"
>
<div>
<div>
<div>
<img
class=
"w100"
:src=
"fillImgUrl(groupInfo.imgUrl)"
/>
</div>
<div>
<div
class=
"item"
><label>
{{ language == 0 ? '团体名称' : 'Team Name' }}
</label>
{{ groupInfo.name }}
</div>
<div
class=
"item"
><label>
{{ language == 0 ? '团体类型' : 'Group type' }}
</label>
{{
groupInfo.typeStr
}}
</div>
</div>
</div>
</div>
<div>
<div
class=
"item"
><label>
{{
language == 0 ? '负责人姓名' : 'Contact Person'
}}
</label>
{{ groupInfo.contactPerson }}
</div>
<div
class=
"item"
><label>
{{
language == 0 ? '参赛队名称' : 'Name of participating team'
}}
</label>
{{ groupInfo.abreviations }}
</div>
</div>
<div>
<div
class=
"item"
><label>
{{ language == 0 ? '邮箱' : 'Email' }}
</label>
{{ groupInfo.contactEmail }}
</div>
<div
class=
"item"
><label>
{{ language == 0 ? '详细地址' : 'Detailed Address' }}
</label>
{{
groupInfo.address
}}
</div>
</div>
</div>
</div>
<!--组别报项信息/league/sign/getMySignInfoList zuData-->
<div>
<table>
<tr>
<th>
{{ language == 0 ? '序号' : 'Index' }}
</th>
<th>
{{ language == 0 ? '组别代码' : 'Group code' }}
</th>
<th>
{{ language == 0 ? '组别' : 'Group' }}
</th>
<th>
{{ language == 0 ? '舞种' : 'Dance Style' }}
</th>
<th>
{{ language == 0 ? '参赛说明' : 'Participation Instructions' }}
</th>
<th>
{{ language == 0 ? '参赛运动员' : 'Participating athletes' }}
</th>
<th>
{{ language == 0 ? '报名费' : 'Registration Fee' }}
</th>
</tr>
<tr
v-for=
"(row,index) in list"
>
<td>
{{ index + 1 }}
</td>
<td>
{{ row.zuName }}
</td>
<td>
{{ row.project.name }}
</td>
<td>
{{ row.project.danceType }}
</td>
<td>
{{ row.project.remarks }}
</td>
<td>
<span
v-for=
"s in row.athletes"
>
{{ s.name }},
</span>
</td>
<td>
{{ language == 0 ? '¥' : '€' }}{{ row.project.serviceFee }}
</td>
</tr>
</table>
</div>
<!--人员报名信息/league/sign/getMySignInfoList singleData-->
<!--/league/competition/getCptExtraInfo/${cptId} 补充信息表头-->
<div>
<table>
<tr>
<th>
{{ language == 0 ? '序号' : 'Index' }}
</th>
<th>
{{ language == 0 ? '姓氏' : 'Surname' }}
</th>
<th>
{{ language == 0 ? '名' : 'Name' }}
</th>
<th>
{{ language == 0 ? '所属国家' : 'Nationality' }}
</th>
<th>
{{ language == 0 ? '性别' : 'Gender' }}
</th>
<th>
{{ language == 0 ? '证件类型' : 'ID Type' }}
</th>
<th>
{{ language == 0 ? '证件号码' : 'ID NO.' }}
</th>
<th>
{{ language == 0 ? '出生日期' : 'Birth' }}
</th>
<th>
{{ language == 0 ? '会员角色' : 'Role' }}
</th>
<th>
{{ language==0?'报项':'Entries' }}
</th>
<th
v-for=
"(e,index) in extraTableHead"
>
{{e}}
</th>
</tr>
<tr
v-for=
"(row,index) in personList"
>
<td>
{{ index + 1 }}
</td>
<td>
{{row.personInfo.xing}}
</td>
<td>
{{row.personInfo.ming}}
</td>
<td>
<span
v-if=
"row.personInfo.countryName"
>
{{row.personInfo.countryName}}
</span>
<span
v-if=
"row.personInfo.representing"
>
{{row.personInfo.representing}}
</span>
</td>
<td>
{{row.personInfo.sexStr}}
</td>
<td>
{{row.personInfo.idcTypeStr}}
</td>
<td>
{{row.personInfo.idcCode}}
</td>
<td>
{{row.personInfo.birth}}
</td>
<td>
<span
v-for=
"item in row.personInfo.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>
<span
v-if=
"item==='2'"
class=
"ml5"
>
{{ language == 0 ? '领队' : 'team leader' }}
</span>
<span
v-if=
"item==='3'"
class=
"ml5"
>
{{ language == 0 ? '队医' : 'team doctor' }}
</span>
<span
v-if=
"item==='4'"
class=
"ml5"
>
{{ language == 0 ? '翻译' : 'translator' }}
</span>
<span
v-if=
"item==='5'"
class=
"ml5"
>
{{ language == 0 ? '官员' : 'official' }}
</span>
<span
v-if=
"item==='6'"
class=
"ml5"
>
{{ language == 0 ? '其他' : 'other' }}
</span>
</span>
</td>
<td>
<ol>
<li
v-for=
"s in row.signInfo"
>
{{ s.cptProjectName }}
{{ s.cptGroupName }}{{ s.cptLevelName }}
<span
v-show=
"s.cptSonLevelName"
>
[{{ s.cptSonLevelName }}]
</span>
<span
v-show=
"s.zu"
>
-{{ s.zu }}
</span>
</li>
</ol>
</td>
<td
v-for=
"(e,index) in extraTableHead"
:key=
"index"
>
<a
v-if=
"row.signInfo[0].extraPersonInfoMapList[index]?.type=='2'"
:herf=
"row.signInfo[0].extraPersonInfoMapList[index].value.url"
>
{{ row.signInfo[0].extraPersonInfoMapList[index].value.name }}
</a>
<img
v-else-if=
"row.signInfo[0].extraPersonInfoMapList[index]?.type=='3'"
style=
"width: 50px;"
:src=
"row.signInfo[0].extraPersonInfoMapList[index].value.url||row.signInfo[0].extraPersonInfoMapList[index].value"
>
<span
v-else
>
{{ row.signInfo[0].extraPersonInfoMapList[index]?.value }}
</span>
</td>
</tr>
</table>
<div
class=
"rowSummary"
>
<div>
{{ language==0?'总人数':'Count' }}:
<span
class=
"mr20"
>
{{ list.length }}
</span>
{{ language==0?'金额小计':'Amount' }}:
<span>
{{ language==0?'¥':'€' }}{{ total }}
</span>
</div>
</div>
</div>
</body>
</html>
src/viewsPc/match/pay.vue
View file @
4d8b424
...
...
@@ -85,20 +85,20 @@
</div>
</div>
</el-col>
<el-col
:lg=
"12"
>
<el-col
:lg=
"12"
v-if=
"Number(form.totalFee)>0"
>
<div
class=
"priceb"
v-if=
"form.payStatus=='0'"
>
{{ language==0?'待支付金额':'Amount Due' }}:
<span
class=
"price"
>
{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}
</span></div>
<div
class=
"priceb"
v-if=
"form.payStatus=='1'"
>
{{ language==0?'已支付金额':'Amount Due' }}:
<span
class=
"price"
>
{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}
</span></div>
</el-col>
</el-row>
</el-card>
<el-card
class=
"mb60"
v-if=
"form.auditStatus=='2'&&form.payStatus=='0'"
>
<el-card
class=
"mb60"
v-if=
"form.auditStatus=='2'&&form.payStatus=='0'
&&Number(form.totalFee)>0
"
>
<div
class=
"leftboderTT"
>
{{ language==0?'选择支付方式':'Choose payment method' }}
</div>
<div
class=
"mt20"
>
<el-radio-group
v-model=
"payType"
@
change=
"changePaytype"
>
<!-- <el-radio label="1" border>-->
<!-- <svg t="1709003181386" class="icon" viewBox="0 0 3283 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31015" width="100" height="40"><path d="M1163.122759 94.631724H593.92A133.826207 133.826207 0 0 0 459.034483 228.457931v567.084138a133.473103 133.473103 0 0 0 133.826207 133.826207h570.262069a133.826207 133.826207 0 0 0 134.17931-133.826207v-5.296552s-217.864828-90.394483-328.033103-143.36c-73.445517 90.747586-168.783448 145.478621-267.652414 145.478621-167.017931 0-223.514483-145.831724-144.419311-241.875862a169.136552 169.136552 0 0 1 92.16-51.906207c70.62069-17.302069 184.32 10.946207 290.604138 45.903448A587.211034 587.211034 0 0 0 988.689655 429.373793h-328.73931v-32.838621h168.783448V337.213793h-204.446896v-33.191724h204.446896V219.630345a14.124138 14.124138 0 0 1 14.477241-14.477242h82.273104v98.868966h202.328276v33.191724h-202.328276v59.321379h165.252414a677.605517 677.605517 0 0 1-70.62069 176.551725c50.14069 18.008276 94.984828 35.310345 128.529655 46.256551a930.427586 930.427586 0 0 0 147.950345 42.725518V228.457931a133.826207 133.826207 0 0 0-133.473103-133.826207z" fill="#089fe8" p-id="31016"></path><path d="M663.481379 548.016552a162.78069 162.78069 0 0 0-81.566896 30.366896c-64.617931 55.790345-26.129655 158.190345 104.165517 158.190345 75.917241 0 151.481379-48.375172 211.862069-125.704827-85.804138-40.96-156.424828-70.267586-234.46069-62.852414zM2488.673103 225.28h239.757242v47.668966h85.804138V216.805517a22.951724 22.951724 0 0 0-21.892414-23.304827h-139.122759V149.009655h-89.335172v44.137931h-160.662069v79.80138h85.451034zM1882.394483 360.518621h67.442758v247.172413h73.798621V280.011034h-26.835862l55.437241-126.764137H1970.317241l-87.922758 207.271724zM2824.827586 596.391724l-26.835862-90.747586a13.771034 13.771034 0 0 0-13.064827-10.24h-70.62069l20.48 70.62069H2648.275862v-135.944828h164.546207v-32.132414H2648.275862v-63.55862h164.546207v-32.132414h-409.6v32.132414h164.546207v63.55862h-164.546207v32.132414h164.546207V564.965517h-164.546207v32.132414H2824.827586zM2158.521379 323.442759a16.595862 16.595862 0 0 0-15.183448-9.886897h-63.558621l49.434483 156.424828h75.564138z" fill="#089fe8" p-id="31017"></path><path d="M2319.889655 156.777931h-76.623448v80.154483h-188.557241v32.132414h188.557241v287.426206a13.064828 13.064828 0 0 1-12.358621 12.005518h-38.841379v31.77931h99.222069a30.013793 30.013793 0 0 0 28.601379-29.66069V269.064828h31.073104v-32.132414h-31.073104zM1871.448276 577.677241a913.831724 913.831724 0 0 1-168.783448-80.507586 357.34069 357.34069 0 0 0 141.241379-194.56H1694.896552V249.997241h170.195862v-32.83862H1694.896552V150.422069h-75.211035a15.536552 15.536552 0 0 0-15.183448 15.536552v51.2h-169.136552v32.83862h169.136552v52.612414h-141.241379v32.838621h284.248276a278.951724 278.951724 0 0 1-93.572414 127.470345 360.871724 360.871724 0 0 1-93.572414-94.984828H1483.034483a423.724138 423.724138 0 0 0 122.173793 130.295173 662.775172 662.775172 0 0 1-172.667586 77.329655v39.194482A773.296552 773.296552 0 0 0 1653.230345 529.655172 781.771034 781.771034 0 0 0 1871.448276 614.753103zM1553.655172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.188966-79.095172 26.482758 79.095172zM1796.237241 674.78069h-34.251034v190.675862h115.464827v-26.129655h-81.213793v-164.546207zM2003.155862 674.78069h34.251035v190.322758h-34.251035zM2250.328276 674.78069h-74.151724v190.675862h35.310345v-73.445518h39.900689a58.615172 58.615172 0 1 0 0-117.230344z m-2.118621 91.100689H2210.427586v-64.971034h37.782069a31.073103 31.073103 0 0 1 30.366897 32.485517 30.72 30.72 0 0 1-30.366897 32.485517zM2465.015172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.542069-79.095172 27.188966 79.095172zM2716.071724 755.994483l-38.135172-81.213793H2641.213793l57.555862 112.286896v78.388966h33.897931v-78.388966l0.353104-0.353103 57.555862-111.933793h-37.075862l-37.428966 81.213793z" fill="#089fe8" p-id="31018"></path></svg>-->
<!-- </el-radio>-->
<el-radio
label=
"2"
border
>
<el-radio
label=
"2"
v-if=
"form.payTypeArr.indexOf('1')>-1"
border
>
<svg
t=
"1709002960407"
class=
"icon"
viewBox=
"0 0 3152 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"24747"
width=
"94"
height=
"40"
>
<path
...
...
@@ -109,7 +109,7 @@
fill=
"#595757"
p-id=
"24749"
></path>
</svg>
</el-radio>
<el-radio
label=
"3"
border
>
<el-radio
label=
"3"
v-if=
"form.payTypeArr.indexOf('2')>-1"
border
>
<svg
t=
"1709003441012"
class=
"icon"
viewBox=
"0 0 3527 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"32905"
width=
"90"
height=
"40"
>
<path
...
...
@@ -138,7 +138,7 @@
fill=
"#4D4D4D"
p-id=
"32913"
></path>
</svg>
</el-radio>
<el-radio
label=
"4"
border
>
<el-radio
label=
"4"
v-if=
"form.payTypeArr.indexOf('3')>-1"
border
>
<svg
t=
"1709002828937"
class=
"icon"
viewBox=
"0 0 4220 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"22654"
width=
"94"
height=
"40"
>
<path
...
...
@@ -335,6 +335,7 @@ function getData() {
return
match
.
getMyOrderDetail
({
orderId
:
orderId
.
value
}).
then
(
res
=>
{
totalFee
.
value
=
res
.
data
.
totalFee
form
.
value
=
res
.
data
form
.
value
.
payTypeArr
=
res
.
data
.
payType
.
split
(
','
)
matchId
.
value
=
form
.
value
.
cptId
groupId
.
value
=
form
.
value
.
groupId
||
0
if
(
isLogin
.
value
){
...
...
src/viewsPc/match/signPreview.vue
View file @
4d8b424
...
...
@@ -43,7 +43,7 @@
<div
class=
"mt20"
>
<div
class=
"leftboderTT"
>
{{ language==0?'参赛人员清单':'Participant List' }}
<div
class=
"fr"
>
<el-input
size=
"small"
v-model=
"zuQuery.
n
ame"
:prefix-icon=
"Search"
<el-input
size=
"small"
v-model=
"zuQuery.
athN
ame"
:prefix-icon=
"Search"
@
change=
"getSignList"
clearable
/>
</div>
</div>
...
...
@@ -52,7 +52,7 @@
<div
class=
"mt20"
>
<div
class=
"leftboderTT"
>
{{ language==0?'设项报名清单':'Event Registration List' }}
<div
class=
"fr"
>
<el-input
size=
"small"
v-model=
"zuQuery.gro
up
Name"
:prefix-icon=
"Search"
<el-input
size=
"small"
v-model=
"zuQuery.groName"
:prefix-icon=
"Search"
@
change=
"getSignList"
clearable
/>
</div>
</div>
...
...
@@ -64,23 +64,23 @@
</el-card>
<el-card
class=
"mt20"
:body-style=
"{padding: '0px'}"
>
<el-row
class=
"priceBar"
>
<el-col
:lg=
"1
6
"
:xs=
"24"
class=
"pd20"
>
<el-col
:lg=
"1
2
"
:xs=
"24"
class=
"pd20"
>
<div
class=
"flex"
>
<div
class=
"item"
><label>
{{ language==0?'报名费':'Registration Fee' }}:
</label><span>
{{ language==0?'¥':'€' }}{{form.cptRegistrationFee?.totalFee}}
</span></div>
<div
class=
"item"
><label>
{{ language==0?'保险费':'Insurance Fee' }}:
</label><span>
{{ language==0?'¥':'€' }}{{form.cptInsuranceFee?.totalFee}}
</span></div>
<div
class=
"item"
><label>
{{ language==0?'费用总计':'Total Cost' }}:
</label><span>
{{ language==0?'¥':'€' }}{{form.totalFee}}
</span></div>
</div>
</el-col>
<el-col
:lg=
"
8
"
:xs=
"24"
class=
"text-right pd20"
>
<el-col
:lg=
"
12
"
:xs=
"24"
class=
"text-right pd20"
>
<el-link
type=
"primary"
@
click=
"exportSignList(1)"
><el-icon><Upload
/></el-icon>
{{ language==0?'导出参赛人员清单':'Export Participant List' }}
</el-link>
<el-link
type=
"primary"
@
click=
"exportSignList(2)"
><el-icon><Upload
/></el-icon>
{{ language==0?'导出设项报名清单':'Registration Fee for Event Entry' }}
</el-link>
<!-- <el-link type="primary" @click="exportPdf"><el-icon><Upload /></el-icon>--
>
<!-- {{ language==0?'导出pdf':'Export PDF' }}-->
<!-- </el-link>--
>
<el-link
type=
"primary"
@
click=
"exportPdf"
><el-icon><Upload
/></el-icon
>
{{ language==0?'导出pdf':'Export PDF' }}
</el-link
>
</el-col>
</el-row>
<div
class=
"text-center pd20"
>
...
...
@@ -261,14 +261,10 @@ function exportPdf() {
var
fileName
if
(
language
.
value
==
0
){
fileName
=
'设项报名清单'
proxy
.
download
(
'/
league/sign/exportCn
'
,
{
proxy
.
download
(
'/
pdf/exportMySignInfoList
'
,
{
...
obj
},
`
${
fileName
}
_
${
new
Date
().
getTime
()}
.pdf`
)
}
else
{
fileName
=
'Participant List'
proxy
.
download
(
'/league/sign/exportEn'
,
{
...
obj
},
`
${
fileName
}
_
${
new
Date
().
getTime
()}
.pdf`
)
}
}
...
...
src/viewsPc/match/teamSign.vue
View file @
4d8b424
...
...
@@ -35,21 +35,21 @@
<el-form-item
:label=
"language==0?'邮箱':'Email'"
required
prop=
"contactEmail"
>
<el-input
v-model=
"form.contactEmail"
type=
"email"
:placeholder=
"language==0?'请输入内容':''"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'专业/业余':'Professional/Amateur'"
required
prop=
"majorFlag"
>
<el-select
v-model=
"form.majorFlag"
>
<el-option
:label=
"language==0?'专业':'Professional'"
value=
"1"
/>
<el-option
:label=
"language==0?'业余':'Amateur'"
value=
"0"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'团体类型':'Group type'"
prop=
"type"
>
<el-select
v-model=
"form.type"
:placeholder=
"language==0?'请选择团体类型':''"
style=
"width: 100%;"
>
<el-option
:label=
"language==0?'普通院校':'School'"
value=
"0"
/>
<el-option
:label=
"language==0?'专业舞蹈学校':'Professional dance school'"
value=
"1"
/>
<el-option
:label=
"language==0?'培训机构/俱乐部':'Company/Club'"
value=
"2"
/>
<el-option
:label=
"language==0?'地方协会':'Local Association'"
value=
"3"
/>
<el-option
:label=
"language==0?'国家协会':'National Association'"
value=
"4"
/>
<el-select
v-model=
"form.type"
:placeholder=
"typeOptions[language].selectPlaceholder"
style=
"width: 100%;"
>
<el-option
v-for=
"(o,index) in typeOptions[language].options"
:label=
"o.text"
:key=
"index"
:value=
"o.value"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'详细地址':'Detailed Address'"
required
prop=
"address"
>
<el-input
type=
"textarea"
v-model=
"form.address"
class=
"mt10"
:placeholder=
"language==0?'请输入详细地址':''"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
v-if=
"participantsInfoArr&&participantsInfoArr.length>0"
>
...
...
@@ -110,6 +110,28 @@ const data = reactive({
enBo
:{}
},
form
:
{},
typeOptions
:
{
0
:
{
selectPlaceholder
:
'请选择团体类型'
,
options
:
[
{
value
:
'0'
,
text
:
'普通院校'
},
{
value
:
'1'
,
text
:
'专业舞蹈学校'
},
{
value
:
'2'
,
text
:
'培训机构/俱乐部'
},
{
value
:
'3'
,
text
:
'地方协会'
},
{
value
:
'4'
,
text
:
'国家协会'
},
]
},
1
:
{
selectPlaceholder
:
'Please select group type'
,
options
:
[
{
value
:
'0'
,
text
:
'School'
},
{
value
:
'1'
,
text
:
'Professional dance school'
},
{
value
:
'2'
,
text
:
'Company/Club'
},
{
value
:
'3'
,
text
:
'Local Association'
},
{
value
:
'4'
,
text
:
'National Association'
},
]
}
},
groupId
:
route
.
query
.
groupId
||
0
,
cptId
:
route
.
params
.
id
||
0
,
signType
:
false
,
...
...
@@ -139,7 +161,7 @@ const {
cptId
,
rules
,
regionsList
,
matchInfo
,
coachOrLeaderFlag
,
accept
coachOrLeaderFlag
,
accept
,
typeOptions
}
=
toRefs
(
data
)
const
uploadUrl
=
ref
(
'/upload/upLoadToFileServer'
)
...
...
src/viewsPc/register/personal.vue
View file @
4d8b424
...
...
@@ -77,7 +77,7 @@
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=
"wdsfData.email"
@
change=
"resetCode(1)"
<el-input
type=
"text"
v-model=
"wdsfData.email"
@
change=
"resetCode(1)"
autocomplete=
"false"
@
blur=
"verifyCode"
:disabled=
"wdsfData.personFlag=='1'"
/>
<div
class=
"tip"
v-if=
"wdsfData.personFlag=='0'"
>
<div
v-if=
"language==0"
>
...
...
@@ -107,12 +107,12 @@
</el-form-item>
<el-form-item
:label=
"language==0?'密码':'Password'"
required
>
<el-input
type=
"password"
show-password
v-model=
"form.password"
<el-input
type=
"password"
show-password
v-model=
"form.password"
autocomplete=
"false"
:placeholder=
"language==0?'6-16位密码。区分大小写':'Password'"
/>
</el-form-item>
<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"
<el-input
type=
"password"
show-password
v-model=
"form.confirmPassword"
autocomplete=
"false"
@
change=
"vconfirmPassword"
:placeholder=
"language==0?'再次输入密码':'Confirm Password'"
/>
<div
class=
"text-danger"
v-if=
"showError"
>
{{
language == 0 ? '密码不一致' : 'Password inconsistency'
...
...
src/viewsPc/register/team/step2.vue
View file @
4d8b424
...
...
@@ -42,6 +42,12 @@
<el-form-item
:label=
"language==0?'机构名称':'Institution name'"
required
prop=
"teamName"
>
<el-input
type=
"text"
v-model=
"form.teamName"
:placeholder=
"language==0?'请输入内容':''"
/>
</el-form-item>
<el-form-item
:label=
"language==0?'专业/业余':'Professional/Amateur'"
required
prop=
"majorFlag"
>
<el-select
v-model=
"form.majorFlag"
>
<el-option
:label=
"language==0?'专业':'Professional'"
value=
"1"
/>
<el-option
:label=
"language==0?'业余':'Amateur'"
value=
"0"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"language==0?'团体类型':'Group type'"
prop=
"type"
required
>
<el-select
v-model=
"form.type"
:placeholder=
"language==0?'请选择团体类型':''"
style=
"width: 100%;"
>
<el-option
:label=
"language==0?'普通院校':'School'"
value=
"0"
/>
...
...
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