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
0a1abe64
authored
2025-05-30 22:53:39 +0800
by
zhangmeng
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
空格
1 parent
11925936
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
498 additions
and
282 deletions
src/layoutPc/components/AppBottom.vue
src/views/system/user/profile/index.vue
src/viewsPc/auth/components/query/person.vue
src/viewsPc/match/components/substation-list.vue
src/viewsPc/match/detail_en.vue
src/viewsPc/match/index.vue
src/layoutPc/components/AppBottom.vue
View file @
0a1abe6
...
...
@@ -24,7 +24,7 @@
</el-col>
<el-col
:span=
"24"
style=
"border-top: 1px solid #d0d0d0"
>
<div
class=
"text-center copyright pd10"
>
版权所有@无锡和畅赛事运营有限公司
&
ensp;
&
en
sp
&
nbsp;
&
nb
sp
<a
href=
"https://beian.miit.gov.cn/"
target=
"_blank"
>
ICP备案号:苏ICP备2023054420号-2
</a></div>
</el-col>
</el-row>
...
...
@@ -88,20 +88,20 @@
</div>
</div>
<a
v-show=
"false"
ref=
"aRef"
:href=
"fillImgUrl(file[0]?.url)"
target=
"_blank"
/>
<a
v-show=
"false"
ref=
"aRef"
:href=
"fillImgUrl(file[0]?.url)"
target=
"_blank"
/>
</div>
</
template
>
<
script
setup
>
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
useRouter
}
from
'vue-router'
import
{
ElMessage
}
from
'element-plus'
import
{
getCurrentInstance
,
ref
}
from
'@vue/runtime-core'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
useRouter
}
from
'vue-router'
import
{
ElMessage
}
from
'element-plus'
import
{
getCurrentInstance
,
ref
}
from
'@vue/runtime-core'
import
{
getMatchById
,
getppInfo
,
getZNList
}
from
'@/apiPc/match'
import
{
fillImgUrl
}
from
'/@/utils/ruoyi'
import
{
getMatchById
,
getppInfo
,
getZNList
}
from
'@/apiPc/match'
import
{
fillImgUrl
}
from
'/@/utils/ruoyi'
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
const
router
=
useRouter
()
const
language
=
useStorage
(
'language'
,
0
)
const
goHelp
=
()
=>
{
...
...
@@ -115,7 +115,7 @@ const goHelp = () => {
const
file
=
ref
({})
const
goHelpZH
=
async
()
=>
{
const
goHelpZH
=
async
()
=>
{
// ElMessage.success('已下载文件')
// router.push({
// name: 'guide',
...
...
@@ -123,7 +123,7 @@ const goHelpZH = async() => {
// index: 8
// }
// })
const
res
=
await
getZNList
({
sortId
:
30000009
,
language
:
1
})
const
res
=
await
getZNList
({
sortId
:
30000009
,
language
:
1
})
if
(
res
.
rows
.
length
>
0
)
{
file
.
value
=
JSON
.
parse
(
res
.
rows
[
0
].
picUrl
)
proxy
.
$refs
[
'aRef'
].
click
()
...
...
src/views/system/user/profile/index.vue
View file @
0a1abe6
...
...
@@ -4,40 +4,40 @@
<el-col
:span=
"6"
:xs=
"24"
class=
"colHight"
>
<div>
<div
class=
"avatarBox"
>
<userAvatar
:user=
"state.user"
/>
<userAvatar
:user=
"state.user"
/>
<h3
class=
""
>
{{
state
.
user
.
userName
}}
</h3>
</div>
<div>
<ul
class=
"list-group list-group-striped"
>
<li
class=
"list-group-item"
:class=
"
{ btn: index == 1 }"
class="list-group-item"
@click="index = 1"
>
<i
class=
"user01"
/>
团体信息
   &en
sp;
<i
class=
"user01"
/>
团体信息
&nb
sp;
</li>
<li
class=
"list-group-item"
:class=
"
{ btn: index == 2 }"
class="list-group-item"
@click="index = 2"
>
<i
class=
"user02"
/>
会员认证
   &en
sp;
<i
class=
"user02"
/>
会员认证
&nb
sp;
</li>
<li
v-if=
"deptType==2||deptType==3"
class=
"list-group-item"
:class=
"
{ btn: index == 3 }"
class="list-group-item"
@click="index = 3"
>
<i
class=
"user03"
/>
账户信息
   &en
sp;
<i
class=
"user03"
/>
账户信息
&nb
sp;
</li>
<li
class=
"list-group-item"
:class=
"
{ btn: index == 4 }"
class="list-group-item"
@click="index = 4"
>
<i
class=
"user04"
/>
账号与安全
 &en
sp;
<i
class=
"user04"
/>
账号与安全
&nb
sp;
</li>
<!--
<li
class=
"list-group-item"
>
<svg-icon
icon-class=
"peoples"
/>
...
...
@@ -60,21 +60,21 @@
</div>
</
template
>
-->
<div
v-if=
"index == 1"
>
<Group
/>
<Group/>
</div>
<div
v-if=
"index == 2"
>
<Member
:id=
"id"
/>
<Member
:id=
"id"
/>
</div>
<div
v-if=
"index == 3"
>
<Rates
/>
<Rates/>
</div>
<div
v-if=
"index == 4"
>
<el-tabs
v-model=
"activeTab"
>
<el-tab-pane
label=
"基本资料"
name=
"userinfo"
>
<userInfo
style=
"min-height: 454px"
:user=
"state.user"
/>
<userInfo
:user=
"state.user"
style=
"min-height: 454px"
/>
</el-tab-pane>
<el-tab-pane
label=
"修改密码"
name=
"resetPwd"
>
<resetPwd
style=
"min-height: 454px"
/>
<resetPwd
style=
"min-height: 454px"
/>
</el-tab-pane>
</el-tabs>
</div>
...
...
@@ -83,8 +83,8 @@
</div>
</template>
<
script
setup
name=
"Profile"
>
import
{
ref
,
reactive
,
computed
,
onMounted
}
from
'vue'
<
script
name=
"Profile"
setup
>
import
{
ref
,
reactive
,
computed
,
onMounted
}
from
'vue'
import
UserAvatar
from
'./userAvatar'
import
UserInfo
from
'./userInfo'
import
ResetPwd
from
'./resetPwd'
...
...
@@ -92,8 +92,9 @@ import Group from './group.vue'
import
Member
from
'./member.vue'
import
Rates
from
'./rates.vue'
import
useUserStore
from
'@/store/modules/user'
import
{
useRoute
}
from
'vue-router'
import
{
getUserProfile
}
from
'@/api/system/user'
import
{
useRoute
}
from
'vue-router'
import
{
getUserProfile
}
from
'@/api/system/user'
const
route
=
useRoute
()
const
deptType
=
computed
(()
=>
useUserStore
().
deptType
)
const
index
=
ref
(
1
)
...
...
@@ -119,29 +120,83 @@ function getUser() {
</
script
>
<
style
lang=
"scss"
scoped
>
.user01
{
background
:
url("@/assets/admin/user01@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user02
{
background
:
url("@/assets/admin/user02@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user03
{
background
:
url("@/assets/admin/user03@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user04
{
background
:
url("@/assets/admin/user04@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user01
{
background
:
url("@/assets/admin/user01@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.user02
{
background
:
url("@/assets/admin/user02@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.user03
{
background
:
url("@/assets/admin/user03@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.user04
{
background
:
url("@/assets/admin/user04@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.list-group-item
{
text-align
:
center
;
height
:
60px
;
line-height
:
60px
;
background
:
#FFFFFF
;
cursor
:
pointer
;
font-size
:
18px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
color
:
#000000
;
padding
:
0
;
border
:
none
;
border-radius
:
5px
;
margin-bottom
:
17px
;
i{
display
:
inline-block
;
width
:
34px
;
height
:
34px
;
margin-right
:
20px
;}
text-align
:
center
;
height
:
60px
;
line-height
:
60px
;
background
:
#FFFFFF
;
cursor
:
pointer
;
font-size
:
18px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
color
:
#000000
;
padding
:
0
;
border
:
none
;
border-radius
:
5px
;
margin-bottom
:
17px
;
i
{
display
:
inline-block
;
width
:
34px
;
height
:
34px
;
margin-right
:
20px
;
}
&
.btn
{
color
:
#fff
;
background
:
#1561CB
;
.user01{
background
:
url("@/assets/admin/user01_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user02
{
background
:
url("@/assets/admin/user02_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user03
{
background
:
url("@/assets/admin/user03_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;}
.user04
{
background
:
url("@/assets/admin/user04_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;}
color
:
#fff
;
background
:
#1561CB
;
.user01
{
background
:
url("@/assets/admin/user01_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.user02
{
background
:
url("@/assets/admin/user02_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.user03
{
background
:
url("@/assets/admin/user03_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
.user04
{
background
:
url("@/assets/admin/user04_dwn@2x.png")
no-repeat
center
;
background-size
:
contain
;
}
}
}
.colHight
{
height
:
800px
;
}
.avatarBox
{
background
:
url("@/assets/admin/user_bg@2x.png")
no-repeat
center
;
background-size
:
cover
;
text-align
:
center
;
padding
:
30px
0
10px
;
.avatarBox
{
background
:
url("@/assets/admin/user_bg@2x.png")
no-repeat
center
;
background-size
:
cover
;
text-align
:
center
;
padding
:
30px
0
10px
;
}
</
style
>
...
...
src/viewsPc/auth/components/query/person.vue
View file @
0a1abe6
...
...
@@ -4,21 +4,30 @@
<el-row>
<el-col
v-for=
"(d,i) in listData"
:key=
"i"
:lg=
"24"
:sm=
"24"
>
<div
class=
"person-item"
>
<img
v-if=
"d.photo"
class=
"photo"
:src=
"fillImgUrl(d.photo)
"
>
<img
v-else
class=
"photo"
s
tyle=
"object-fit: contain;background: #fff;"
src=
"@/assets/v1/default.png
"
>
<img
v-if=
"d.photo"
:src=
"fillImgUrl(d.photo)"
class=
"photo
"
>
<img
v-else
class=
"photo"
s
rc=
"@/assets/v1/default.png"
style=
"object-fit: contain;background: #fff;
"
>
<div
class=
"info"
>
<div
class=
"name"
>
{{
d
.
name
}}
<el-image
v-if=
"d.sex=='0'||d.sex=='1'"
style=
"width: 20px;height: 20px;margin-left: 10px"
:src=
"d.sex=='0'?male:female"
/>
<el-image
v-if=
"d.sex=='0'||d.sex=='1'"
:src=
"d.sex=='0'?male:female"
style=
"width: 20px;height: 20px;margin-left: 10px"
/>
</div>
<div
class=
"flex"
>
<div>
<el-form-item
label=
"会员编号:"
>
{{
d
.
perCode
}}
</el-form-item>
<el-form-item
label=
"出生日期:"
>
{{
parseTime
(
d
.
birth
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<el-form-item
label=
"出生日期:"
>
{{
parseTime
(
d
.
birth
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
/div
>
<
div
>
<
el
-
form
-
item
label
=
"  注册时间:"
>
{{
parseTime
(
d
.
createTime
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"有效期截止:"
>
{{
parseTime
(
d
.
validityDate
,
'
{
y
}
-
{
m
}
-
{
d
}
')||'
--
'
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
" 注册时间:"
>
{{
parseTime
(
d
.
createTime
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"有效期截止:"
>
{{
parseTime
(
d
.
validityDate
,
'
{
y
}
-
{
m
}
-
{
d
}
') || '
--
'
}}
<
/el-form-item
>
<
/div
>
<
div
style
=
"width: 170px"
>
<!--
<
div
v
-
if
=
"d.canDownCert=='1'"
class
=
"vipDownLoad"
@
click
=
"vipDownLoad(d.perId)"
>-->
...
...
@@ -26,7 +35,7 @@
<!--
<
/div>--
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/el-col
>
...
...
@@ -36,27 +45,31 @@
<
el
-
row
>
<
el
-
col
v
-
for
=
"(d,i) in listData"
:
key
=
"i"
:
lg
=
"24"
:
sm
=
"24"
>
<
div
class
=
"person-item"
>
<
img
v
-
if
=
"d.photo"
class
=
"photo"
:
src
=
"fillImgUrl(d.photo)
"
>
<
img
v
-
if
=
"d.photo"
:
src
=
"fillImgUrl(d.photo)"
class
=
"photo
"
>
<
img
v
-
else
src
=
"@/assets/v1/default.png"
>
<
div
class
=
"info"
>
<
div
class
=
"name"
>
{{
d
.
name
}}
<
el
-
image
v
-
if
=
"d.sex=='0'||d.sex=='1'"
style
=
"width: 20px;height: 20px;margin-left: 10px"
:
src
=
"d.sex=='0'?male:female"
/>
<
el
-
image
v
-
if
=
"d.sex=='0'||d.sex=='1'"
:
src
=
"d.sex=='0'?male:female"
style
=
"width: 20px;height: 20px;margin-left: 10px"
/>
<
/div
>
<
div
>
<
el
-
form
-
item
label
=
"编号:"
>
{{
d
.
perCode
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"出生日期:"
>
{{
parseTime
(
d
.
birth
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"注册时间:"
>
{{
parseTime
(
d
.
createTime
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"有效期截止:"
>
{{
parseTime
(
d
.
validityDate
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"出生日期:"
>
{{
parseTime
(
d
.
birth
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"注册时间:"
>
{{
parseTime
(
d
.
createTime
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
el
-
form
-
item
label
=
"有效期截止:"
>
{{
parseTime
(
d
.
validityDate
,
'
{
y
}
-
{
m
}
-
{
d
}'
)
}}
<
/el-form-item
>
<
/div
>
<
div
v
-
if
=
"d.canDownCert=='1'"
class
=
"vipDownLoad"
@
click
=
"vipDownLoad(d.perId)"
>
<
i
/>
会员证
<
/div
>
<
/div
>
<
/div
>
<
/el-col
>
<
/el-row></
div
>
<
/el-row
>
<
/div
>
<
div
v
-
if
=
"!loading"
class
=
"text-center pd20"
>
<
el
-
divider
>
<
span
v
-
if
=
"showMore"
@
click
=
"handleQuery"
>
加载更多
<
/span
>
...
...
@@ -80,22 +93,24 @@ const props = defineProps({
query
:
{
required
:
true
,
type
:
Object
,
default
:
()
=>
{
}
default
:
()
=>
{
}
}
}
)
const
listData
=
ref
([])
const
showMore
=
ref
(
false
)
const
loading
=
ref
(
false
)
function
handleQuery
()
{
loading
.
value
=
true
queryParams
.
pageNum
++
authentic
.
query
(
queryParams
).
then
((
res
)
=>
{
_
.
each
(
res
.
data
.
personalList
.
rows
,
(
r
)
=>
{
listData
.
value
.
push
(
r
)
}
)
showMore
.
value
=
listData
.
value
.
length
<
res
.
data
.
personalList
.
total
loading
.
value
=
false
}
)
...
...
@@ -106,6 +121,7 @@ function vipDownLoad(perId) {
}
let
queryParams
=
{
}
function
init
()
{
queryParams
=
{
pageNum
:
0
,
...
...
@@ -114,39 +130,79 @@ function init() {
name
:
props
.
query
.
name
}
listData
.
value
=
[]
handleQuery
()
}
defineExpose
({
init
}
)
<
/script
>
<
style
scoped
lang
=
"scss"
>
.
flex
{
display
:
flex
;
justify
-
content
:
space
-
between
;
}
.
person
-
item
{
position
:
relative
;
display
:
flex
;
margin
:
30
px
0
;
background
:
#
F5F7F9
;
border
-
radius
:
2
px
;
padding
:
10
px
20
px
;
.
photo
{
width
:
100
px
;
height
:
130
px
}
.
info
{
margin
-
left
:
20
px
;
width
:
90
%
;
.
name
{
font
-
size
:
24
px
;
display
:
flex
;
align
-
items
:
center
;
margin
:
10
px
0
;
}
.
el
-
form
-
item
--
default
{
margin
-
bottom
:
0
;
}
<
style
lang
=
"scss"
scoped
>
.
flex
{
display
:
flex
;
justify
-
content
:
space
-
between
;
}
.
person
-
item
{
position
:
relative
;
display
:
flex
;
margin
:
30
px
0
;
background
:
#
F5F7F9
;
border
-
radius
:
2
px
;
padding
:
10
px
20
px
;
.
photo
{
width
:
100
px
;
height
:
130
px
}
.
info
{
margin
-
left
:
20
px
;
width
:
90
%
;
.
name
{
font
-
size
:
24
px
;
display
:
flex
;
align
-
items
:
center
;
margin
:
10
px
0
;
}
.
el
-
form
-
item
--
default
{
margin
-
bottom
:
0
;
}
.
el
-
form
-
item__content
{
font
-
size
:
18
px
;
color
:
#
95
A1A6
;
}
}
@
media
(
max
-
width
:
500
px
)
{
.
forWei
{
background
:
#
F7F8FA
;
}
.
person
-
item
{
margin
:
15
px
0
;
background
:
#
fff
;
.
photo
{
width
:
120
px
;
height
:
140
px
;
}
.
info
{
margin
-
left
:
15
px
;
.
name
{
font
-
size
:
18
px
}
}
.
el
-
form
-
item__content
{
font
-
size
:
18
px
;
color
:
#
95
A1A6
;
}
}
@
media
(
max
-
width
:
500
px
)
{
.
forWei
{
background
:
#
F7F8FA
;
}
.
person
-
item
{
margin
:
15
px
0
;
background
:
#
fff
;
.
photo
{
width
:
120
px
;
height
:
140
px
;
}
:
deep
(.
el
-
form
-
item
--
default
.
el
-
form
-
item__label
){
padding
:
0
;
.
info
{
margin
-
left
:
15
px
;
.
name
{
font
-
size
:
18
px
}
}
}
:
deep
(.
el
-
form
-
item
--
default
.
el
-
form
-
item__label
)
{
padding
:
0
;
}
}
<
/style
>
...
...
src/viewsPc/match/components/substation-list.vue
View file @
0a1abe6
<
template
>
<div
class=
"pv20"
>
<div
class=
"matchItem"
v-for=
"n in list"
:key=
"n.id
"
@
click=
"goDetail(n.id)"
>
<div
v-for=
"n in list"
:key=
"n.id"
class=
"matchItem
"
@
click=
"goDetail(n.id)"
>
<el-row
:gutter=
"15"
>
<el-col
:lg=
"7"
:md=
"24"
:xl=
"6"
>
<div
class=
"popo"
>
<el-tag
v-if=
"n.signType==0"
>
{{
language
==
0
?
'个人'
:
'Individual'
}}
</el-tag>
<el-tag
v-if=
"n.signType==1"
>
{{
language
==
0
?
'团体'
:
'Team'
}}
</el-tag>
<el-tag
v-if=
"n.signType==2"
>
{{
language
==
0
?
'个人/团体'
:
'Individual/Team'
}}
</el-tag>
<el-tag
v-if=
"n.signType==0"
>
{{
language
==
0
?
'个人'
:
'Individual'
}}
</el-tag>
<el-tag
v-if=
"n.signType==1"
>
{{
language
==
0
?
'团体'
:
'Team'
}}
</el-tag>
<el-tag
v-if=
"n.signType==2"
>
{{
language
==
0
?
'个人/团体'
:
'Individual/Team'
}}
</el-tag>
</div>
<img
class=
"mauto mw100 coverLimitHeight"
:src=
"fillImgUrl(n.coverUrl)
"
>
<img
:src=
"fillImgUrl(n.coverUrl)"
class=
"mauto mw100 coverLimitHeight
"
>
</el-col>
<el-col
:lg=
"9"
:md=
"12"
:xl=
"12"
>
<div
class=
"info"
>
<h3
class=
"esp"
>
{{
n
.
name
}}
</h3>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'赛事级别'
:
'EVENT LEVEL'
}}
:
</label>
{{
n
.
level
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'赛事时间'
:
'COMPETITION DATE'
}}
:
</label>
{{
n
.
beginTime
?.
slice
(
0
,
10
)
}}
~
{{
n
.
endTime
?.
slice
(
0
,
10
)
}}
</p>
<p
class=
"ppl esp"
><label>
{{
language
==
0
?
'地    点'
:
'LOCATION'
}}
:
</label>
{{
n
.
address
}}
</p>
<!--
<p
class=
"ppl"
><label>
{{
language
==
0
?
'报名截止'
:
'Registration Deadline'
}}
:
</label>
{{
n
.
signEndTime
?.
slice
(
0
,
10
)
}}
</p>
-->
<p
class=
"ppl"
v-if=
"n.contactPerson"
><label>
{{
language
==
0
?
'联 系 人'
:
'CONTACT PERSON'
}}
:
</label>
{{
n
.
contactPerson
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'联系电话'
:
'TEL'
}}
:
</label>
086-
{{
n
.
contactTelno
}}
</p>
<p
class=
"ppl"
v-if=
"n.contactEmail"
><label>
{{
language
==
0
?
'邮    箱'
:
'EMAIL'
}}
:
</label>
{{
n
.
contactEmail
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'赛事级别'
:
'EVENT LEVEL'
}}
:
</label>
{{
n
.
level
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'赛事时间'
:
'COMPETITION DATE'
}}
:
</label>
{{
n
.
beginTime
?.
slice
(
0
,
10
)
}}
~
{{
n
.
endTime
?.
slice
(
0
,
10
)
}}
</p>
<p
class=
"ppl esp"
><label>
{{
language
==
0
?
'地 点'
:
'LOCATION'
}}
:
</label>
{{
n
.
address
}}
</p>
<!--
<p
class=
"ppl"
><label>
{{
language
==
0
?
'报名截止'
:
'Registration Deadline'
}}
:
</label>
{{
n
.
signEndTime
?.
slice
(
0
,
10
)
}}
</p>
-->
<p
v-if=
"n.contactPerson"
class=
"ppl"
><label>
{{
language
==
0
?
'联 系 人'
:
'CONTACT PERSON'
}}
:
</label>
{{
n
.
contactPerson
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'联系电话'
:
'TEL'
}}
:
</label>
086-
{{
n
.
contactTelno
}}
</p>
<p
v-if=
"n.contactEmail"
class=
"ppl"
><label>
{{
language
==
0
?
'邮 箱'
:
'EMAIL'
}}
:
</label>
{{
n
.
contactEmail
}}
</p>
</div>
</el-col>
<el-col
:lg=
"8"
:md=
"12"
:xl=
"6"
>
...
...
@@ -31,41 +39,44 @@
<van-count-down
:time=
"n.time"
format=
"DD 天 HH 时 mm 分 ss 秒"
>
<template
#
default=
"timeData"
>
<span
class=
"block"
>
{{
timeData
.
days
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'天'
:
'Days'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'天'
:
'Days'
}}
</span>
<span
class=
"block"
>
{{
timeData
.
hours
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'时'
:
'Hrs'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'时'
:
'Hrs'
}}
</span>
<span
class=
"block"
>
{{
timeData
.
minutes
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'分'
:
'Min'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'分'
:
'Min'
}}
</span>
<span
class=
"block"
>
{{
timeData
.
seconds
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'秒'
:
'Sec'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'秒'
:
'Sec'
}}
</span>
</
template
>
</van-count-down>
<div
class=
"text-center mt30"
>
<a
class=
"btn-lineG mb20 mauto"
style=
"display: block;"
v-if=
"n.time>0
"
>
<span
v-if=
"n.time>0 && n.startSign<=0"
>
{{ language
==0?'我要报名':
'REGISTER' }}
</span>
<span
v-if=
"n.startSign>0"
>
{{ language
==0?'报名未开始':
'Not started yet' }}
</span>
<a
v-if=
"n.time>0"
class=
"btn-lineG mb20 mauto"
style=
"display: block;
"
>
<span
v-if=
"n.time>0 && n.startSign<=0"
>
{{ language
== 0 ? '我要报名' :
'REGISTER' }}
</span>
<span
v-if=
"n.startSign>0"
>
{{ language
== 0 ? '报名未开始' :
'Not started yet' }}
</span>
</a>
<div
v-else
style=
"opacity: 0.5;"
class=
"btn-lineG mb20 mauto text-center
"
>
<div
v-else
class=
"btn-lineG mb20 mauto text-center"
style=
"opacity: 0.5;
"
>
{{ language == 0 ? '报名已结束' : 'Registration has ended' }}
</div>
<p
class=
"text-gray uppercase"
>
{{ language==0?'报名截止':'Registration Deadline' }}:{{ n.signEndTime?.slice(0,10) }}
</p>
<p
class=
"text-gray uppercase"
>
{{
language == 0 ? '报名截止' : 'Registration Deadline'
}}:{{ n.signEndTime?.slice(0, 10) }}
</p>
</div>
</el-col>
</el-row>
</div>
</div>
<el-empty
:image=
"`/img/order_no.png`"
:image-size=
"228"
v-if=
"list?.length == 0"
description=
" "
/>
<el-empty
v-if=
"list?.length == 0"
:image=
"`/img/order_no.png`"
:image-size=
"228"
description=
" "
/>
</template>
<
script
setup
>
import
{
ref
}
from
"vue"
;
import
{
onMounted
}
from
"@vue/runtime-core"
;
import
{
dayjs
}
from
"element-plus"
import
{
useStorage
}
from
"@vueuse/core/index"
;
const
language
=
useStorage
(
'language'
,
0
)
import
{
ref
}
from
'vue'
import
{
onMounted
}
from
'@vue/runtime-core'
import
{
dayjs
}
from
'element-plus'
import
{
useStorage
}
from
'@vueuse/core/index'
const
language
=
useStorage
(
'language'
,
0
)
const
router
=
useRouter
()
const
time
=
ref
(
0
)
...
...
@@ -75,13 +86,14 @@ const props = defineProps({
required
:
true
}
})
onMounted
(()
=>
{
for
(
let
n
of
props
.
list
)
{
onMounted
(()
=>
{
for
(
const
n
of
props
.
list
)
{
var
today
=
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
n
.
time
=
dayjs
(
n
.
signEndTime
).
diff
(
today
,
'millisecond'
)
n
.
startSign
=
dayjs
(
n
.
signBeginTime
).
diff
(
today
,
'millisecond'
)
}
})
function
goDetail
(
id
)
{
const
routeData
=
router
.
resolve
({
path
:
`/match/list/
${
id
}
`
...
...
@@ -90,50 +102,69 @@ function goDetail(id) {
}
</
script
>
<
style
scoped
lang=
"scss"
>
.pv20
{
padding
:
0
20px
;}
.mt60
{
margin-top
:
60px
}
<
style
lang=
"scss"
scoped
>
.pv20
{
padding
:
0
20px
;
}
.mt60
{
margin-top
:
60px
}
.matchItem
{
cursor
:
pointer
;
padding
:
0
0
20px
;
background
:
#FFFFFF
;
border-bottom
:
1px
solid
#e5e5e5
;
cursor
:
pointer
;
padding
:
0
0
20px
;
background
:
#FFFFFF
;
border-bottom
:
1px
solid
#e5e5e5
;
position
:
relative
;
.el-col{
padding-top
:
20px
}
.countDownTitle
{
margin
:
0
}
.el-col
{
padding-top
:
20px
}
.countDownTitle
{
margin
:
0
}
&
:last-child
{
border-bottom
:
none
;
}
.el-avatar
{
position
:
absolute
;
left
:
20px
;
top
:
30px
;
img
{
background
:
#fff
;
}
}
.info
{
p
{
font-size
:
14px
;
}
}
.typeTag
{
position
:
absolute
;
right
:
0
;
top
:
0
;
}
h3
{
font-weight
:
500
;
margin
:
0
0
10px
;
font-weight
:
500
;
margin
:
0
0
10px
;
font-size
:
18px
;
color
:
#000000
;
text-overflow
:
ellipsis
;
}
&
:hover
h3
{
color
:
var
(
--el-color-primary
);
}
}
.countDownTitle
{
text-align
:
center
;
color
:
#525F6B
;
...
...
@@ -161,10 +192,19 @@ function goDetail(id) {
width
:
100%
;
left
:
0
;
}
.info
.ppl
{
margin
:
5px
0
;}
.ppl
{
color
:
#29343C
;
label{
color
:
#929AA0
;}
.info
.ppl
{
margin
:
5px
0
;
}
.ppl
{
color
:
#29343C
;
label
{
color
:
#929AA0
;
}
}
.van-count-down
{
text-align
:
center
;
margin
:
20px
0
;
...
...
@@ -178,7 +218,8 @@ function goDetail(id) {
}
.block
{
display
:
inline-block
;
opacity
:
0.7
;
display
:
inline-block
;
opacity
:
0.7
;
width
:
52px
;
color
:
#fff
;
font-size
:
26px
;
...
...
@@ -189,7 +230,11 @@ function goDetail(id) {
line-height
:
50px
;
text-align
:
center
;
}
@media
(
max-width
:
1450px
)
{
.block
{
width
:
44px
;
font-size
:
20px
;}
.block
{
width
:
44px
;
font-size
:
20px
;
}
}
</
style
>
...
...
src/viewsPc/match/detail_en.vue
View file @
0a1abe6
<
template
>
<div
v-loading=
"loading"
class=
"app-container"
>
<div
class=
"mt30"
/>
<div
class=
"mt30"
/>
<div
v-if=
"error"
>
<el-result
:title=
"language==0?'未找到赛事':'No Data'"
icon=
"error"
>
<template
#
extra
/>
<template
#
extra
/>
</el-result>
</div>
<div
v-else
class=
"box mb20"
>
...
...
@@ -33,7 +33,7 @@
{{
matchData
.
endTime
?.
slice
(
0
,
10
)
}}
</p>
<p
v-if=
"matchData.address"
class=
"ppl"
>
<label
class=
"bm3"
>
{{
language
==
0
?
'地&
ensp;  &en
sp;点'
:
'LOCATION'
}}
:
{{
language
==
0
?
'地&
nbsp; &nb
sp;点'
:
'LOCATION'
}}
:
</label>
{{
matchData
.
address
}}
</p>
<!--
<p
class=
"ppl"
v-if=
"matchData.signEndTime"
><label
class=
"bm4"
>
Registration Deadline:
</label>
{{
matchData
.
signEndTime
?.
slice
(
0
,
10
)
}}
</p>
-->
...
...
@@ -49,7 +49,7 @@
fill=
"#d3d8d9"
p-id=
"37236"
/>
</svg>
{{
language
==
0
?
'联&
ensp;系&en
sp;人'
:
'CONTACT PERSON'
}}
:
</label>
{{
matchData
.
contactPerson
}}
{{
language
==
0
?
'联&
nbsp;系&nb
sp;人'
:
'CONTACT PERSON'
}}
:
</label>
{{
matchData
.
contactPerson
}}
</p>
<p
class=
"ppl"
>
...
...
@@ -78,7 +78,7 @@
fill=
"#d3d8d9"
p-id=
"40178"
/>
</svg>
{{
language
==
0
?
'邮&
ensp;  &en
sp;箱'
:
'EMAIL'
}}
:
{{
language
==
0
?
'邮&
nbsp; &nb
sp;箱'
:
'EMAIL'
}}
:
</label>
{{
matchData
.
contactEmail
}}
</p>
...
...
@@ -94,7 +94,7 @@
fill=
"#d3d8d9"
p-id=
"6579"
/>
</svg>
{{
language
==
0
?
'分&
ensp;站&en
sp;赛'
:
'NO. OF TOURNAMENTS'
}}
:
</label>
{{
language
==
0
?
'分&
nbsp;站&nb
sp;赛'
:
'NO. OF TOURNAMENTS'
}}
:
</label>
{{
matchData
.
cpts
.
length
}}
</p>
</div>
...
...
@@ -105,7 +105,7 @@
{{
matchData
.
beginTime
?.
slice
(
0
,
10
)
}}
~
{{
matchData
.
endTime
?.
slice
(
0
,
10
)
}}
</p>
<p
class=
"ppl esp"
>
<label>
{{
language
==
0
?
'地&
ensp;  &en
sp;点'
:
'LOCATION'
}}
:
</label>
<label>
{{
language
==
0
?
'地&
nbsp; &nb
sp;点'
:
'LOCATION'
}}
:
</label>
{{
matchData
.
address
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'赛事级别'
:
'EVENT LEVEL'
}}
:
</label>
{{
matchData
.
level
}}
</p>
...
...
@@ -114,17 +114,17 @@
<!--
{{
matchData
.
signEndTime
?.
slice
(
0
,
10
)
}}
-->
<!--
</p>
-->
<p
v-if=
"matchData.contactPerson"
class=
"ppl"
>
<label>
{{
language
==
0
?
'联&
ensp;系&en
sp;人'
:
'CONTACT PERSON'
}}
:
</label>
<label>
{{
language
==
0
?
'联&
nbsp;系&nb
sp;人'
:
'CONTACT PERSON'
}}
:
</label>
{{
matchData
.
contactPerson
}}
</p>
<p
class=
"ppl"
><label>
{{
language
==
0
?
'联系电话'
:
'TEL'
}}
:
</label>
086-
{{
matchData
.
contactTelno
}}
</p>
<p
v-if=
"matchData.contactEmail"
class=
"ppl"
>
<label>
{{
language
==
0
?
'邮&
ensp;  &en
sp;箱'
:
'EMAIL'
}}
:
</label>
<label>
{{
language
==
0
?
'邮&
nbsp; &nb
sp;箱'
:
'EMAIL'
}}
:
</label>
{{
matchData
.
contactEmail
}}
</p>
</div>
<div
style=
"height: 30px"
/>
<div
style=
"height: 30px"
/>
<div
class=
"ppl_pb"
>
<el-link
v-if=
"matchData.signKnowUrl&&JSON.parse(matchData.signKnowUrl)?.length>0"
...
...
@@ -133,7 +133,7 @@
target=
"_blank"
type=
"primary"
>
<el-icon
:size=
"20"
>
<Download
/>
<Download/>
</el-icon>
{{
language
==
0
?
'报名须知'
:
'Notes'
}}
</el-link>
...
...
@@ -145,7 +145,7 @@
target=
"_blank"
type=
"primary"
>
<el-icon
:size=
"20"
>
<Download
/>
<Download/>
</el-icon>
{{
language
==
0
?
'免责声明'
:
'Disclaimers'
}}
</el-link>
...
...
@@ -156,7 +156,7 @@
type=
"primary"
>
<el-icon
:size=
"20"
>
<Download
/>
<Download/>
</el-icon>
{{
language
==
0
?
'赛事规程'
:
'Competition Regulations'
}}
</el-link>
...
...
@@ -201,8 +201,8 @@
</div>
</div>
<p
class=
"text-gray text-center uppercase"
>
{{
language == 0 ? '报名截止' : 'Registration Deadline'
}}:{{ matchData.signEndTime?.slice(0, 10) }}
</p>
language == 0 ? '报名截止' : 'Registration Deadline'
}}:{{ matchData.signEndTime?.slice(0, 10) }}
</p>
</el-col>
</el-row>
...
...
@@ -210,7 +210,7 @@
</el-card>
<!-- 只联赛有-->
<quick-row
v-if=
"matchData.leagueId==0"
:match-id=
"matchId"
/>
<quick-row
v-if=
"matchData.leagueId==0"
:match-id=
"matchId"
/>
<el-row
v-if=
"matchData.type=='0'"
:gutter=
"20"
>
<el-col
:lg=
"18"
>
...
...
@@ -222,11 +222,11 @@
</li>
</ul>
</div>
<matchInfo
v-if=
"menu[0].active==1"
:form=
"matchData"
/>
<matchInfo
v-if=
"menu[0].active==1"
:form=
"matchData"
/>
<div
v-if=
"menu[1].active==1"
>
<match-info-project-list
:is-national=
"isNational"
:match-id=
"matchData.id"
/>
<match-info-project-list
:is-national=
"isNational"
:match-id=
"matchData.id"
/>
</div>
<match-schedule-list
v-if=
"menu[2].active==1"
:match-data=
"matchData"
/>
<match-schedule-list
v-if=
"menu[2].active==1"
:match-data=
"matchData"
/>
<div
v-if=
"menu[3].active==1"
>
<div
v-if=
"matchData.showPersonFlag=='1'"
>
<!-- <el-row :gutter="20" v-if="matchData.signType == '0'">-->
...
...
@@ -299,24 +299,24 @@
</el-row>
</div>
<div
v-else
>
<el-empty
:image=
"`/img/order_no.png`"
:image-size=
"228"
description=
""
/>
<el-empty
:image=
"`/img/order_no.png`"
:image-size=
"228"
description=
""
/>
</div>
</div>
<div
v-if=
"menu[4].active==1"
>
<!--成绩-->
<el-empty
:image=
"`/img/order_no.png`"
:image-size=
"228"
description=
""
/>
<el-empty
:image=
"`/img/order_no.png`"
:image-size=
"228"
description=
""
/>
</div>
<div
v-if=
"menu[5].active==1"
class=
"pd20"
>
<div
class=
"xzbox"
>
<div
v-html=
"matchData.signKnow"
/>
<div
v-html=
"matchData.signKnow"
/>
<div
v-if=
"matchData.signKnowUrl"
>
<el-link
v-for=
"(item,index) in JSON.parse(matchData.signKnowUrl)"
:href=
"fillImgUrl(item.url)"
target=
"_blank"
type=
"primary"
>
<el-icon
:size=
"20"
>
<Download
/>
<Download/>
</el-icon>
{{ item.name }}
</el-link>
...
...
@@ -324,11 +324,11 @@
</div>
</div>
</el-card>
<div
style=
"height: 20px"
/>
<div
style=
"height: 20px"
/>
</el-col>
<el-col
:lg=
"6"
>
<match-news
:match-id=
"matchId"
/>
<match-news
:match-id=
"matchId"
/>
</el-col>
</el-row>
...
...
@@ -343,9 +343,9 @@
</ul>
</div>
<!-- 分站赛-->
<substation-list
v-if=
"menu1[0].active==1"
:list=
"matchData.cpts"
/>
<matchInfo
v-if=
"menu1[1].active==1"
:form=
"matchData"
/>
<match-schedule-list
v-if=
"menu1[2].active==1"
:match-data=
"matchData"
/>
<substation-list
v-if=
"menu1[0].active==1"
:list=
"matchData.cpts"
/>
<matchInfo
v-if=
"menu1[1].active==1"
:form=
"matchData"
/>
<match-schedule-list
v-if=
"menu1[2].active==1"
:match-data=
"matchData"
/>
</el-card>
</el-col>
</el-row>
...
...
@@ -356,8 +356,8 @@
<img
v-else
src=
"@/assets/logo/Invitation_e.png"
>
</div>
<affix-invitation
ref=
"dialogInvitationRef"
/>
<div
style=
"height: 50px"
/>
<affix-invitation
ref=
"dialogInvitationRef"
/>
<div
style=
"height: 50px"
/>
<el-dialog
v-model=
"signTypePop"
center
class=
"pcloginpop"
...
...
@@ -391,9 +391,9 @@
v-if=
"matchData.isAirView"
class=
"ding"
@
click=
"openPickup"
>
{{ language == 0 ? '接 / 送机服务' : 'Pick-up/drop-off service' }}
</a>
<pickup
ref=
"pickupRef"
/>
<pickup
ref=
"pickupRef"
/>
<checkAllSportsman
ref=
"checkAllSportsmanRef"
/>
<checkAllSportsman
ref=
"checkAllSportsmanRef"
/>
</div>
</template>
...
...
@@ -405,9 +405,9 @@ import SubstationList from '@/viewsPc/match/components/substation-list'
import
MatchInfoProjectList
from
'@/viewsPc/match/components/matchInfo-projectList'
import
QuickRow
from
'@/viewsPc/match/components/quick-row'
import
Pickup
from
'@/viewsPc/components/pickup'
import
{
getCurrentInstance
,
ref
}
from
'vue'
import
{
reactive
,
onMounted
}
from
'@vue/runtime-core'
import
{
useRoute
,
useRouter
}
from
'vue-router'
import
{
getCurrentInstance
,
ref
}
from
'vue'
import
{
reactive
,
onMounted
}
from
'@vue/runtime-core'
import
{
useRoute
,
useRouter
}
from
'vue-router'
import
AffixInvitation
from
'@/viewsPc/match/components/affix-invitation'
import
checkAllSportsman
from
'@/viewsPc/match/components/checkAllSportsman'
...
...
@@ -415,14 +415,14 @@ import checkAllSportsman from '@/viewsPc/match/components/checkAllSportsman'
const
language
=
useStorage
(
'language'
,
0
)
const
route
=
useRoute
()
const
router
=
useRouter
()
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
import
*
as
match
from
'@/apiPc/match'
import
{
toRefs
}
from
'@vueuse/shared'
import
{
dayjs
,
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
toRefs
}
from
'@vueuse/shared'
import
{
dayjs
,
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
useUserStore
from
'@/store/modules/user'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
Search
}
from
'@element-plus/icons-vue'
import
{
preCheckForGroup
}
from
'@/apiPc/match'
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
Search
}
from
'@element-plus/icons-vue'
import
{
preCheckForGroup
}
from
'@/apiPc/match'
const
user
=
useUserStore
().
user
const
group
=
useUserStore
().
group
...
...
@@ -434,16 +434,16 @@ const data = reactive({
groupId
:
''
,
activeName2
:
'first'
,
menu
:
[
{
name
:
'Event details'
,
cn
:
'赛事详情'
,
active
:
1
},
{
name
:
'Event settings'
,
cn
:
'赛事设项'
,
active
:
0
},
{
name
:
'Schedule'
,
cn
:
'日程'
,
active
:
0
},
{
name
:
'Participating teams'
,
cn
:
'参赛人员'
,
active
:
0
},
{
name
:
'Achievement'
,
cn
:
'成绩'
,
active
:
0
},
{
name
:
'Notes'
,
cn
:
'报名须知'
,
active
:
0
}],
{
name
:
'Event details'
,
cn
:
'赛事详情'
,
active
:
1
},
{
name
:
'Event settings'
,
cn
:
'赛事设项'
,
active
:
0
},
{
name
:
'Schedule'
,
cn
:
'日程'
,
active
:
0
},
{
name
:
'Participating teams'
,
cn
:
'参赛人员'
,
active
:
0
},
{
name
:
'Achievement'
,
cn
:
'成绩'
,
active
:
0
},
{
name
:
'Notes'
,
cn
:
'报名须知'
,
active
:
0
}],
menu1
:
[
{
name
:
'Tournaments'
,
cn
:
'分站赛'
,
active
:
1
},
{
name
:
'Event details'
,
cn
:
'赛事详情'
,
active
:
0
},
{
name
:
'Schedule'
,
cn
:
'日程'
,
active
:
0
}],
{
name
:
'Tournaments'
,
cn
:
'分站赛'
,
active
:
1
},
{
name
:
'Event details'
,
cn
:
'赛事详情'
,
active
:
0
},
{
name
:
'Schedule'
,
cn
:
'日程'
,
active
:
0
}],
signDoneGroupList
:
[],
signDoneGroupListToTal
:
0
,
queryGroupList
:
{
...
...
@@ -484,7 +484,7 @@ onMounted(() => {
})
function
getMatchId
()
{
match
.
getMaList
({
topFlag
:
1
,
status
:
1
}).
then
((
res
)
=>
{
match
.
getMaList
({
topFlag
:
1
,
status
:
1
}).
then
((
res
)
=>
{
matchId
.
value
=
res
.
rows
[
0
].
id
getMatch
(
matchId
.
value
)
getGroupListByCptId
()
...
...
@@ -493,7 +493,7 @@ function getMatchId() {
function
getMatch
(
id
)
{
loading
.
value
=
true
match
.
getMatchById
({
id
:
id
}).
then
(
res
=>
{
match
.
getMatchById
({
id
:
id
}).
then
(
res
=>
{
matchData
.
value
=
res
.
data
loading
.
value
=
false
var
today
=
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
...
...
@@ -505,7 +505,7 @@ function getMatch(id) {
isNational
.
value
=
true
}
}).
catch
(
res
=>
{
router
.
push
({
path
:
'/match/list'
})
router
.
push
({
path
:
'/match/list'
})
loading
.
value
=
false
// setTimeout("window.location.reload()", 1000)
})
...
...
@@ -656,7 +656,7 @@ function goGeren() {
// 注册
router
.
push
({
name
:
'personalRegister'
,
query
:
{
matchId
:
matchId
.
value
}
query
:
{
matchId
:
matchId
.
value
}
})
}
...
...
@@ -829,7 +829,7 @@ function switchSignType() {
// 个人报名校验
async
function
handelGeRenNext
()
{
const
res
=
await
match
.
preCheckForPerson
({
type
:
'1'
})
const
res
=
await
match
.
preCheckForPerson
({
type
:
'1'
})
// 不给报名
if
(
res
.
data
==
0
)
{
await
proxy
.
$modal
.
confirm
(
...
...
@@ -841,7 +841,7 @@ async function handelGeRenNext() {
}
// 正常报名
if
(
res
.
data
==
1
)
{
const
flag
=
await
getCheckOcr
({
type
:
'1'
})
const
flag
=
await
getCheckOcr
({
type
:
'1'
})
if
(
flag
)
await
goPersonalSign
()
}
// 提示
...
...
@@ -851,8 +851,8 @@ async function handelGeRenNext() {
?
'运动员的WDSF会员号已变更,是否更新?'
:
'The athlete`s WDSF membership number has been changed. Should it be updated?'
)
await
match
.
preCheckForPerson
({
type
:
'2'
})
const
flag
=
await
getCheckOcr
({
type
:
'1'
})
await
match
.
preCheckForPerson
({
type
:
'2'
})
const
flag
=
await
getCheckOcr
({
type
:
'1'
})
if
(
flag
)
await
goPersonalSign
()
}
}
...
...
@@ -877,7 +877,7 @@ const openPickup = () => {
async
function
handelPreCheckForGroup
(
fn
)
{
const
res
=
await
match
.
preCheckForGroup
(
groupId
.
value
,
'1'
)
if
(
res
.
data
==
1
||
res
.
data
==
0
)
{
const
flag
=
await
getCheckOcr
({
type
:
'2'
,
groupId
:
groupId
.
value
})
const
flag
=
await
getCheckOcr
({
type
:
'2'
,
groupId
:
groupId
.
value
})
if
(
flag
)
await
fn
()
}
if
(
res
.
data
==
2
)
{
...
...
@@ -886,13 +886,13 @@ async function handelPreCheckForGroup(fn) {
?
'运动员的WDSF会员号已变更,是否更新?'
:
'The athlete`s WDSF membership number has been changed. Should it be updated?'
)
await
match
.
preCheckForGroup
(
groupId
.
value
,
'2'
)
const
flag
=
await
getCheckOcr
({
type
:
'2'
,
groupId
:
groupId
.
value
})
const
flag
=
await
getCheckOcr
({
type
:
'2'
,
groupId
:
groupId
.
value
})
if
(
flag
)
await
fn
()
}
}
async
function
getCheckOcr
(
obj
)
{
const
{
data
}
=
await
match
.
checkOcr
(
obj
)
const
{
data
}
=
await
match
.
checkOcr
(
obj
)
if
(
!
data
)
{
// 人员ocr未通过
await
proxy
.
$modal
.
confirm
(
language
.
value
==
0
?
'请完善人员信息'
:
'Please complete the personnel information'
)
...
...
src/viewsPc/match/index.vue
View file @
0a1abe6
...
...
@@ -2,46 +2,46 @@
<div
class=
"app-container"
>
<!-- 我是 赛事 -->
<div
class=
"kind mt20"
>
<div
class=
"box"
>
<el-card>
<ul>
<li>
<label>
{{
language
==
0
?
'类型'
:
'Type'
}}
:
</label>
<el-radio-group
v-model=
"query.type"
@
change=
"getList"
>
<el-radio-button
value=
"-1"
>
{{
language
==
0
?
'全部'
:
'All'
}}
</el-radio-button>
<el-radio-button
value=
"0"
>
{{
language
==
0
?
'独立赛'
:
'Tournaments'
}}
</el-radio-button>
<el-radio-button
value=
"1"
>
{{
language
==
0
?
'联赛'
:
'League'
}}
</el-radio-button>
<label>
{{
language
==
0
?
'类型'
:
'Type'
}}
:
</label>
<el-radio-group
v-model=
"query.type"
@
change=
"getList"
>
<el-radio-button
value=
"-1"
>
{{
language
==
0
?
'全部'
:
'All'
}}
</el-radio-button>
<el-radio-button
value=
"0"
>
{{
language
==
0
?
'独立赛'
:
'Tournaments'
}}
</el-radio-button>
<el-radio-button
value=
"1"
>
{{
language
==
0
?
'联赛'
:
'League'
}}
</el-radio-button>
</el-radio-group>
</li>
<li>
<label>
{{
language
==
0
?
'状态'
:
'Status'
}}
:
</label>
<label>
{{
language
==
0
?
'状态'
:
'Status'
}}
:
</label>
<el-radio-group
v-model=
"query.progressStatusCode"
@
change=
"getList"
>
<el-radio-button
value=
"-1"
>
{{
language
==
0
?
'全部'
:
'All'
}}
</el-radio-button>
<el-radio-button
value=
"2"
>
{{
language
==
0
?
'报名中'
:
'Registering now'
}}
</el-radio-button>
<el-radio-button
value=
"3"
>
{{
language
==
0
?
'赛事即将开始'
:
'Begin in a minute'
}}
</el-radio-button>
<el-radio-button
value=
"4"
>
{{
language
==
0
?
'赛事进行中'
:
'In progress'
}}
</el-radio-button>
<el-radio-button
value=
"5"
>
{{
language
==
0
?
'已结束'
:
'Ended'
}}
</el-radio-button>
<el-radio-button
value=
"-1"
>
{{
language
==
0
?
'全部'
:
'All'
}}
</el-radio-button>
<el-radio-button
value=
"2"
>
{{
language
==
0
?
'报名中'
:
'Registering now'
}}
</el-radio-button>
<el-radio-button
value=
"3"
>
{{
language
==
0
?
'赛事即将开始'
:
'Begin in a minute'
}}
</el-radio-button>
<el-radio-button
value=
"4"
>
{{
language
==
0
?
'赛事进行中'
:
'In progress'
}}
</el-radio-button>
<el-radio-button
value=
"5"
>
{{
language
==
0
?
'已结束'
:
'Ended'
}}
</el-radio-button>
</el-radio-group>
</li>
<li>
<label>
{{
language
==
0
?
'时间'
:
'Date'
}}
:
</label>
<label>
{{
language
==
0
?
'时间'
:
'Date'
}}
:
</label>
<el-radio-group
v-model=
"query.month"
@
change=
"getList"
>
<el-radio-button
value=
""
>
{{
language
==
0
?
'全部'
:
'All'
}}
</el-radio-button>
<el-radio-button
v-for=
"m in monthList"
:key=
"m"
:value=
"m"
>
{{
m
}}
</el-radio-button>
<el-radio-button
value=
""
>
{{
language
==
0
?
'全部'
:
'All'
}}
</el-radio-button>
<el-radio-button
v-for=
"m in monthList"
:key=
"m"
:value=
"m"
>
{{
m
}}
</el-radio-button>
</el-radio-group>
</li>
</ul>
</el-card>
</div>
</div>
<div
class=
"box"
>
<div
class=
"listTitle"
>
<h3>
{{
language
==
0
?
'赛事列表'
:
'List'
}}
</h3>
<h3>
{{
language
==
0
?
'赛事列表'
:
'List'
}}
</h3>
<div
class=
"search"
>
<el-input
v-model=
"query.name"
...
...
@@ -49,36 +49,42 @@
class=
"input-with-select"
@
change=
"getList"
>
<template
#
append
>
<el-button
type=
"success"
round
@
click=
"getList"
>
{{
language
==
0
?
'查询'
:
'Search'
}}
</el-button>
<el-button
round
type=
"success"
@
click=
"getList"
>
{{
language
==
0
?
'查询'
:
'Search'
}}
</el-button>
</
template
>
</el-input>
</div>
</div>
<div
v-loading=
"loading"
>
<div
class=
"matchItem"
v-for=
"n in list"
:key=
"n.id
"
@
click=
"goDetail(n.id)"
>
<div
v-for=
"n in list"
:key=
"n.id"
class=
"matchItem
"
@
click=
"goDetail(n.id)"
>
<el-row
:gutter=
"15"
align=
"middle"
>
<el-col
:lg=
"7"
:md=
"24"
:xl=
"6"
>
<div
class=
"popo"
>
<el-tag
v-if=
"n.signType==0"
>
{{ language
==0?'个人':
'Individual' }}
</el-tag>
<el-tag
v-if=
"n.signType==1"
>
{{ language
==0?'团体':
'Team' }}
</el-tag>
<el-tag
v-if=
"n.signType==2"
>
{{ language
==0?'个人/团体':
'Individual/Team' }}
</el-tag>
<el-tag
v-if=
"n.signType==0"
>
{{ language
== 0 ? '个人' :
'Individual' }}
</el-tag>
<el-tag
v-if=
"n.signType==1"
>
{{ language
== 0 ? '团体' :
'Team' }}
</el-tag>
<el-tag
v-if=
"n.signType==2"
>
{{ language
== 0 ? '个人/团体' :
'Individual/Team' }}
</el-tag>
</div>
<img
class=
"mauto mw100 coverLimitHeight"
:src=
"fillImgUrl(n.coverUrl)
"
>
<img
:src=
"fillImgUrl(n.coverUrl)"
class=
"mauto mw100 coverLimitHeight
"
>
</el-col>
<el-col
:lg=
"9"
:md=
"12"
:xl=
"12"
>
<div
class=
"info"
>
<h3
class=
"esp"
>
{{ n.name }}
</h3>
<p
class=
"ppl"
><label>
{{language==0?'赛事级别':'EVENT LEVEL'}}:
</label>
{{n.level}}
</p>
<p
class=
"ppl esp"
><label>
{{ language==0?'赛事时间':'COMPETITION DATE' }}:
</label>
{{n.beginTime?.slice(0,10)}} ~ {{ n.endTime?.slice(0,10) }}
</p>
<!-- <p class="ppl" v-if="n.address"><label>{{ language==0?'地    点':'Location' }}:</label>{{ n.address }}</p>-->
<!-- <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}:</label>{{ n.signEndTime?.slice(0,10) }}</p>-->
<p
class=
"ppl"
><label>
{{ language==0?'联
 
系
 
人':'CONTACT PERSON' }}:
</label>
{{ n.contactPerson }}
</p>
<p
class=
"ppl"
><label>
{{ language==0?'联系电话':'TEL' }}:
</label>
086-{{ n.contactTelno }}
</p>
<p
class=
"ppl esp"
><label>
{{ language==0?'邮
    
箱':'EMAIL' }}:
</label>
{{ n.contactEmail }}
</p>
<p
class=
"ppl"
v-if=
"n.type=='1'"
>
<label>
{{ language==0?'分
 
站
 
赛':'NO. OF TOURNAMENTS' }}:
</label>
{{n.cptsSize}}
<p
class=
"ppl"
><label>
{{ language == 0 ? '赛事级别' : 'EVENT LEVEL' }}:
</label>
{{ n.level }}
</p>
<p
class=
"ppl esp"
><label>
{{
language == 0 ? '赛事时间' : 'COMPETITION DATE'
}}:
</label>
{{ n.beginTime?.slice(0, 10) }} ~ {{ n.endTime?.slice(0, 10) }}
</p>
<!-- <p class="ppl" v-if="n.address"><label>{{ language==0?'地 点':'Location' }}:</label>{{ n.address }}</p>-->
<!-- <p class="ppl"><label>{{ language==0?'报名截止':'Registration Deadline' }}:</label>{{ n.signEndTime?.slice(0,10) }}</p>-->
<p
class=
"ppl"
><label>
{{
language == 0 ? '联
系
人' : 'CONTACT PERSON'
}}:
</label>
{{ n.contactPerson }}
</p>
<p
class=
"ppl"
><label>
{{ language == 0 ? '联系电话' : 'TEL' }}:
</label>
086-{{ n.contactTelno }}
</p>
<p
class=
"ppl esp"
><label>
{{
language == 0 ? '邮
箱' : 'EMAIL'
}}:
</label>
{{ n.contactEmail }}
</p>
<p
v-if=
"n.type=='1'"
class=
"ppl"
>
<label>
{{ language == 0 ? '分
站
赛' : 'NO. OF TOURNAMENTS' }}:
</label>
{{ n.cptsSize }}
</p>
</div>
</el-col>
...
...
@@ -90,32 +96,36 @@
<van-count-down
:time=
"n.time"
format=
"DD 天 HH 时 mm 分 ss 秒"
>
<
template
#
default=
"timeData"
>
<span
class=
"block"
>
{{
timeData
.
days
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'天'
:
'Days'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'天'
:
'Days'
}}
</span>
<span
class=
"block"
>
{{
timeData
.
hours
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'时'
:
'Hrs'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'时'
:
'Hrs'
}}
</span>
<span
class=
"block"
>
{{
timeData
.
minutes
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'分'
:
'Min'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'分'
:
'Min'
}}
</span>
<span
class=
"block"
>
{{
timeData
.
seconds
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'秒'
:
'Sec'
}}
</span>
<span
class=
"colon"
>
{{
language
==
0
?
'秒'
:
'Sec'
}}
</span>
</
template
>
</van-count-down>
<div
class=
"text-center mt30"
>
<a
class=
"btn-lineG mb20 mauto"
v-if=
"n.time>0"
style=
"display: block;"
>
{{ language==0?'我要报名':'REGISTER' }}
</a>
<div
v-else
style=
"opacity: 0.5;"
class=
"btn-lineG mb20 mauto"
>
{{ language==0?'报名已结束':'Registration has ended' }}
</div>
<p
class=
"text-gray uppercase"
>
{{ language==0?'报名截止':'Registration Deadline' }}:{{ n.signEndTime?.slice(0,10) }}
</p>
<a
v-if=
"n.time>0"
class=
"btn-lineG mb20 mauto"
style=
"display: block;"
>
{{ language == 0 ? '我要报名' : 'REGISTER' }}
</a>
<div
v-else
class=
"btn-lineG mb20 mauto"
style=
"opacity: 0.5;"
>
{{ language == 0 ? '报名已结束' : 'Registration has ended' }}
</div>
<p
class=
"text-gray uppercase"
>
{{
language == 0 ? '报名截止' : 'Registration Deadline'
}}:{{ n.signEndTime?.slice(0, 10) }}
</p>
</div>
</el-col>
</el-row>
</div>
<el-empty
:image=
"`/img/order_no.png`"
:image-size=
"228"
v-if=
"list?.length == 0
"
description=
" "
/>
<el-empty
v-if=
"list?.length == 0"
:image=
"`/img/order_no.png`"
:image-size=
"228
"
description=
" "
/>
</div>
<div
v-if=
"total>10"
class=
"pc-page-box mb20"
>
<PaginationPc
v-model:
page=
"query.pageNum"
v-model:limit=
"query.pageSize"
:total=
"total"
@
pagination=
"getList"
/>
<PaginationPc
v-model:
limit=
"query.pageSize"
v-model:page=
"query.pageNum"
:total=
"total"
@
pagination=
"getList"
/>
</div>
<div
class=
"mb20"
></div>
</div>
...
...
@@ -123,17 +133,18 @@
</template>
<
script
setup
>
import
{
getCurrentInstance
,
ref
}
from
'vue'
import
{
reactive
,
onMounted
}
from
'@vue/runtime-core'
import
{
useRouter
}
from
'vue-router'
import
{
dayjs
}
from
'element-plus'
import
{
getCurrentInstance
,
ref
}
from
'vue'
import
{
reactive
,
onMounted
}
from
'@vue/runtime-core'
import
{
useRouter
}
from
'vue-router'
import
{
dayjs
}
from
'element-plus'
const
router
=
useRouter
()
const
{
proxy
}
=
getCurrentInstance
()
const
{
proxy
}
=
getCurrentInstance
()
import
*
as
match
from
'@/apiPc/match'
import
{
useStorage
}
from
"@vueuse/core/index"
;
const
language
=
useStorage
(
'language'
,
0
)
const
typeList
=
ref
([{
label
:
'全部'
,
id
:
'0'
}])
const
language
=
useStorage
(
'language'
,
0
)
const
typeList
=
ref
([{
label
:
'全部'
,
id
:
'0'
}])
const
list
=
ref
([])
const
projectList
=
ref
([])
const
monthList
=
ref
([])
...
...
@@ -141,7 +152,7 @@ const loading = ref(false)
const
activeName
=
ref
(
''
)
const
total
=
ref
(
0
)
const
query
=
ref
({
type
:
'-1'
,
type
:
'-1'
,
projectId
:
''
,
progressStatusCode
:
'-1'
,
month
:
''
,
...
...
@@ -184,7 +195,7 @@ function getList() {
loading
.
value
=
true
match
.
getMaList
(
query
.
value
).
then
((
res
)
=>
{
list
.
value
=
res
.
rows
for
(
let
n
of
list
.
value
)
{
for
(
let
n
of
list
.
value
)
{
var
today
=
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
n
.
time
=
dayjs
(
n
.
signEndTime
).
diff
(
today
,
'millisecond'
)
}
...
...
@@ -204,53 +215,67 @@ function goDetail(id) {
}
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.app-container
{
background
:
#f5f7f9
;
padding
:
0
;
}
.matchItem
{
cursor
:
pointer
;
padding
:
10px
20px
20px
;
box-shadow
:
0
0
6px
#eee
;
background
:
#FFFFFF
;
margin
:
0
0
20px
;
cursor
:
pointer
;
padding
:
10px
20px
20px
;
box-shadow
:
0
0
6px
#eee
;
background
:
#FFFFFF
;
margin
:
0
0
20px
;
position
:
relative
;
.el-col{
padding-top
:
20px
}
.countDownTitle
{
margin
:
0
}
.el-col
{
padding-top
:
20px
}
.countDownTitle
{
margin
:
0
}
&
:last-child
{
border-bottom
:
none
;
}
.el-avatar
{
position
:
absolute
;
left
:
20px
;
top
:
30px
;
img
{
background
:
#fff
;
}
}
.info
{
p
{
font-size
:
14px
;
}
}
.typeTag
{
position
:
absolute
;
right
:
0
;
top
:
0
;
}
h3
{
font-weight
:
500
;
margin
:
0
0
10px
;
font-weight
:
500
;
margin
:
0
0
10px
;
font-size
:
18px
;
color
:
#000000
;
text-overflow
:
ellipsis
;
}
&
:hover
h3
{
color
:
var
(
--el-color-primary
);
}
}
.countDownTitle
{
text-align
:
center
;
color
:
#525F6B
;
...
...
@@ -278,11 +303,23 @@ function goDetail(id) {
width
:
100%
;
left
:
0
;
}
.info
h3
{
margin
:
0
0
15px
}
.info
.ppl
{
margin
:
6px
0
;}
.ppl
{
color
:
#29343C
;
label{
color
:
#929AA0
;}
.info
h3
{
margin
:
0
0
15px
}
.info
.ppl
{
margin
:
6px
0
;
}
.ppl
{
color
:
#29343C
;
label
{
color
:
#929AA0
;
}
}
.van-count-down
{
text-align
:
center
;
margin
:
20px
0
;
...
...
@@ -296,7 +333,8 @@ function goDetail(id) {
}
.block
{
display
:
inline-block
;
opacity
:
0.7
;
display
:
inline-block
;
opacity
:
0.7
;
width
:
52px
;
color
:
#fff
;
font-size
:
26px
;
...
...
@@ -307,30 +345,50 @@ function goDetail(id) {
line-height
:
50px
;
text-align
:
center
;
}
@media
(
max-width
:
1450px
)
{
.block
{
width
:
44px
;
font-size
:
20px
;}
.block
{
width
:
44px
;
font-size
:
20px
;
}
}
.el-pagination
{
--el-pagination-button-disabled-bg-color
:
transparent
;
justify-content
:
center
;
--el-pagination-bg-color
:
transparent
;
}
.kind
{
.el-radio-group{
width
:
90%
;}
.el-radio-group
{
width
:
90%
;
}
ul
{
list-style
:
none
;
li
{
margin
:
0
0
10px
;
display
:
flex
;
align-items
:
flex-start
;
&
>
label
{
padding
:
8px
0
;
width
:
5em
;
text-align
:
right
;
font-weight
:
normal
;
&
>
label
{
padding
:
8px
0
;
width
:
5em
;
text-align
:
right
;
font-weight
:
normal
;
}
.el-radio-button
{
min-width
:
90px
;
text-align
:
center
;
}
&
:last-child
{
border-bottom
:
none
;
margin
:
0
}
.el-radio-button
{
min-width
:
90px
;
text-align
:
center
;}
&
:last-child
{
border-bottom
:
none
;
margin
:
0
}
}
}
}
...
...
@@ -351,5 +409,7 @@ function goDetail(id) {
background
:
var
(
--el-color-primary
)
}
.mw100
{
max-width
:
100%
;}
.mw100
{
max-width
:
100%
;
}
</
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