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
ef140dfd
authored
2025-06-24 18:31:20 +0800
by
zhangmeng
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
二维码
1 parent
206ec58e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
239 additions
and
64 deletions
src/apiPc/match.js
src/viewsPc/home.vue
src/viewsPc/index.vue
src/viewsPc/index_en.vue
src/viewsPc/match/detail_en.vue
vite.config.js
src/apiPc/match.js
View file @
ef140df
...
...
@@ -827,6 +827,14 @@ export function checkOcr(data) {
})
}
// 赛事二维码
export
const
getMiniappQrCode
=
(
cptId
,
query
)
=>
{
return
request
({
url
:
`/getMiniappQrCode/
${
cptId
}
`
,
method
:
'get'
})
}
// 修改人员
export
function
editOcr
(
data
)
{
return
request
({
...
...
src/viewsPc/home.vue
View file @
ef140df
<
template
>
<div>
<index-Ch
v-if=
"language ==0"
@
pop=
"openMaster"
@
pickup=
"openPickup"
@
backNumber=
"openBackNumber"
@
schSearch=
"openSchSearch"
/>
<index-En
v-else
@
pop=
"openMaster"
@
pickup=
"openPickup"
@
backNumber=
"openBackNumber"
@
schSearch=
"openSchSearch"
/>
<index-Ch
v-if=
"language ==0"
@
backNumber=
"openBackNumber"
@
pickup=
"openPickup"
@
pop=
"openMaster"
@
schSearch=
"openSchSearch"
/>
<index-En
v-else
@
backNumber=
"openBackNumber"
@
pickup=
"openPickup"
@
pop=
"openMaster"
@
schSearch=
"openSchSearch"
/>
<div
v-if=
"showgg"
class=
"fixed_gg"
>
<!--天气-->
<el-icon
class=
"cclose"
@
click
.
stop=
"showgg=false"
><circle-close
/></el-icon>
<el-icon
class=
"cclose"
@
click
.
stop=
"showgg=false"
>
<circle-close
/>
</el-icon>
<div
class=
"bg-lineg pd20"
>
<div
class=
"smallToday"
@
click=
"popWeather"
>
<div>
<div
class=
"type"
>
<weather-icon
:type=
"weatherObj.forecast[0]?.type"
:width=
"50"
/>
<weather-icon
:type=
"weatherObj.forecast[0]?.type"
:width=
"50"
/>
</div>
</div>
<div>
<h3
v-if=
"language == 0"
>
无锡
</h3>
<h3
v-else
>
WUXI
</h3>
<div
class=
"wd_p"
>
{{
weatherObj
.
forecast
[
0
]?.
low
.
slice
(
2
)
}}
~
{{
weatherObj
.
forecast
[
0
]?.
high
.
slice
(
2
)
}}
</div>
<div
class=
"wd_p"
>
{{
weatherObj
.
forecast
[
0
]?.
low
.
slice
(
2
)
}}
~
{{
weatherObj
.
forecast
[
0
]?.
high
.
slice
(
2
)
}}
</div>
</div>
</div>
</div>
<el-dialog
v-model=
"weatherdialog"
width=
"540"
:close-on-click-modal=
"true"
style=
"--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
--el-dialog-bg-color:transparent;overflow: hidden;"
>
<el-dialog
v-model=
"weatherdialog"
:close-on-click-modal=
"true"
style=
"--el-dialog-padding-primary:0;--el-dialog-border-radius:15px;
--el-dialog-bg-color:transparent;overflow: hidden;"
width=
"540"
>
<div
class=
"bg-lineg pd20"
>
<div
class=
"weatherbox"
>
<div
class=
"today"
>
...
...
@@ -30,44 +38,48 @@
<h1
v-else
>
WUXI
</h1>
</div>
<div>
<div
class=
"wd"
>
{{
weatherObj
.
wendu
}}
°c
</div>
<div
class=
"wd_p"
>
{{
weatherObj
.
forecast
[
0
]?.
low
.
slice
(
2
)
}}
~
{{
weatherObj
.
forecast
[
0
]?.
high
.
slice
(
2
)
}}
</div>
<div
class=
"week"
>
{{
weatherObj
.
forecast
[
0
]?.
week
}}
</div>
<div
class=
"wd"
>
{{
weatherObj
.
wendu
}}
°c
</div>
<div
class=
"wd_p"
>
{{
weatherObj
.
forecast
[
0
]?.
low
.
slice
(
2
)
}}
~
{{
weatherObj
.
forecast
[
0
]?.
high
.
slice
(
2
)
}}
</div>
<div
class=
"week"
>
{{
weatherObj
.
forecast
[
0
]?.
week
}}
</div>
</div>
<div>
<div
class=
"type"
>
<weather-icon
:type=
"weatherObj.forecast[0].type"
:width=
"64"
/>
<weather-icon
:type=
"weatherObj.forecast[0].type"
:width=
"64"
/>
</div>
</div>
</div>
<ul
class=
"wlist"
>
<li
v-for=
"n in weatherObj.forecast.slice(1,6)"
>
<div
class=
"type"
>
<weather-icon
:type=
"n.type||n.wea"
:width=
"32"
/>
<weather-icon
:type=
"n.type||n.wea"
:width=
"32"
/>
</div>
<div
class=
"wd"
v-if=
"n.low"
>
{{
n
.
low
.
slice
(
2
,
-
1
)
}}
/
{{
n
.
high
.
slice
(
2
)
}}
</div>
<div
class=
"wd"
v-if=
"n.tem_night"
>
{{
n
.
tem_night
}}
/
{{
n
.
tem_day
}}
</div>
<div
class=
"week"
v-if=
"language==1"
>
{{
n
.
week
==
'星期一'
?
'Mon'
:
n
.
week
==
'星期二'
?
'Tue'
:
n
.
week
==
'星期三'
?
'Wed'
:
n
.
week
==
'星期四'
?
'Thu'
:
n
.
week
==
'星期五'
?
'Fri'
:
n
.
week
==
'星期六'
?
'Sat'
:
n
.
week
==
'星期日'
?
'Sun'
:
''
}}
<div
v-if=
"n.low"
class=
"wd"
>
{{
n
.
low
.
slice
(
2
,
-
1
)
}}
/
{{
n
.
high
.
slice
(
2
)
}}
</div>
<div
v-if=
"n.tem_night"
class=
"wd"
>
{{
n
.
tem_night
}}
/
{{
n
.
tem_day
}}
</div>
<div
v-if=
"language==1"
class=
"week"
>
{{
n
.
week
==
'星期一'
?
'Mon'
:
n
.
week
==
'星期二'
?
'Tue'
:
n
.
week
==
'星期三'
?
'Wed'
:
n
.
week
==
'星期四'
?
'Thu'
:
n
.
week
==
'星期五'
?
'Fri'
:
n
.
week
==
'星期六'
?
'Sat'
:
n
.
week
==
'星期日'
?
'Sun'
:
''
}}
</div>
<div
class=
"week"
v-else
>
{{
n
.
week
}}
<div
v-else
class=
"week"
>
{{
n
.
week
}}
</div>
<div
class=
"date mt10"
v-if=
"n.ymd"
>
{{
n
.
ymd
.
slice
(
5
,
10
)
}}
</div>
<div
class=
"date mt10"
v-else
>
{{
n
.
date
.
slice
(
5
,
10
)
}}
</div>
<div
v-if=
"n.ymd"
class=
"date mt10"
>
{{
n
.
ymd
.
slice
(
5
,
10
)
}}
</div>
<div
v-else
class=
"date mt10"
>
{{
n
.
date
.
slice
(
5
,
10
)
}}
</div>
</li>
</ul>
</div>
</div>
</el-dialog>
</div>
<
div
class=
"poCode"
>
<el-image
:preview-src-list=
"['/img/code.jpg']"
hide-on-click-modal=
"true"
style=
"width: 120px;height: 120px;"
src=
"/img/code.jpg"
/
>
<
/div
>
<dialog-master-class
ref=
"masterClassRef"
/>
<pick-up
ref=
"pickupRef"
></pick-up
>
<back-number
ref=
"backNumberRef"
></back-number
>
<sch-search
ref=
"schSearchRef"
></sch-search
>
<
!--
<div
class=
"poCode"
>
--
>
<!--
<el-image
:preview-src-list=
"['/img/code.jpg']"
hide-on-click-modal=
"true"
style=
"width: 120px;height: 120px;"
src=
"/img/code.jpg"
/>
--
>
<
!--
</div>
--
>
<dialog-master-class
ref=
"masterClassRef"
/>
<pick-up
ref=
"pickupRef"
/
>
<back-number
ref=
"backNumberRef"
/
>
<sch-search
ref=
"schSearchRef"
/
>
</div>
</
template
>
...
...
@@ -80,74 +92,95 @@ import DialogMasterClass from '@/viewsPc/components/masterClass'
import
PickUp
from
'@/viewsPc/components/pickup'
import
BackNumber
from
'@/viewsPc/components/querybackNumber'
import
SchSearch
from
'@/viewsPc/components/schSearch'
import
{
useStorage
}
from
"@vueuse/core/index"
;
import
{
ref
}
from
"vue"
;
import
{
getWeather
}
from
"@/apiPc/webSite"
;
import
{
getCurrentInstance
}
from
"@vue/runtime-core"
;
const
{
proxy
}
=
getCurrentInstance
()
import
{
useStorage
}
from
'@vueuse/core/index'
import
{
ref
}
from
'vue'
import
{
getWeather
}
from
'@/apiPc/webSite'
import
{
getCurrentInstance
}
from
'@vue/runtime-core'
const
{
proxy
}
=
getCurrentInstance
()
const
showgg
=
ref
(
false
)
const
language
=
useStorage
(
'language'
,
0
)
const
weatherObj
=
ref
({
forecast
:[]
forecast
:
[]
})
const
weatherdialog
=
ref
(
false
)
// init()
function
init
(){
getWeather
().
then
(
res
=>
{
function
init
()
{
getWeather
().
then
(
res
=>
{
weatherObj
.
value
=
JSON
.
parse
(
res
.
data
).
data
showgg
.
value
=
true
}).
catch
(
err
=>
{
}).
catch
(
err
=>
{
showgg
.
value
=
false
})
}
const
popWeather
=
()
=>
{
weatherdialog
.
value
=
true
}
const
openMaster
=
(
params
)
=>
{
console
.
log
(
params
)
var
obj
=
{
title
:
'大师课申请'
,
cptId
:
params
.
cptId
title
:
'大师课申请'
,
cptId
:
params
.
cptId
}
proxy
.
$refs
[
'masterClassRef'
].
open
(
obj
)
}
const
openPickup
=
(
params
)
=>
{
const
openPickup
=
(
params
)
=>
{
console
.
log
(
params
)
const
obj
=
{
title
:
'接送机服务'
,
cptId
:
params
.
cptId
title
:
'接送机服务'
,
cptId
:
params
.
cptId
}
proxy
.
$refs
[
'pickupRef'
].
open
(
obj
)
}
const
openBackNumber
=
(
params
)
=>
{
console
.
log
(
params
)
const
obj
=
{
title
:
'背号查询'
,
cptId
:
params
.
cptId
title
:
'背号查询'
,
cptId
:
params
.
cptId
}
proxy
.
$refs
[
'backNumberRef'
].
open
(
obj
)
}
const
openSchSearch
=
(
params
)
=>
{
console
.
log
(
params
)
const
obj
=
{
title
:
'日程查询'
,
cptId
:
params
.
cptId
title
:
'日程查询'
,
cptId
:
params
.
cptId
}
proxy
.
$refs
[
'schSearchRef'
].
open
(
obj
)
}
</
script
>
<
style
scoped
lang=
"scss"
>
.poCode
{
position
:
fixed
;
right
:
0
;
top
:
40%
;
background
:
#fff
;
padding
:
10px
0
0
;
border-radius
:
10px
;
overflow
:
hidden
;
box-shadow
:
0
2px
8px
#aaa
;
z-index
:
99
;}
<
style
lang=
"scss"
scoped
>
.poCode
{
position
:
fixed
;
right
:
0
;
top
:
40%
;
background
:
#fff
;
padding
:
10px
0
0
;
border-radius
:
10px
;
overflow
:
hidden
;
box-shadow
:
0
2px
8px
#aaa
;
z-index
:
99
;
}
@media
screen
and
(
max-width
:
768px
)
{
:deep
(
.zn-Box
.zn-btn
)
{
margin-top
:
10px
;
font-size
:
14px
}
:deep
(
.bgbg
)
{
padding
:
3%
5%
0
!important
;
h1
{
font-size
:
22px
;
margin
:
20px
0
0
;}
:deep
(
.zn-Box
.zn-btn
)
{
margin-top
:
10px
;
font-size
:
14px
}
:deep
(
.bgbg
)
{
padding
:
3%
5%
0
!important
;
h1
{
font-size
:
22px
;
margin
:
20px
0
0
;
}
}
.fixed_gg
{
.fixed_gg
{
transform
:
scale
(
0.7
);
transform-origin
:
right
;
}
...
...
src/viewsPc/index.vue
View file @
ef140df
...
...
@@ -424,13 +424,22 @@
:src=
"clubImage"
fit=
"cover"
preview-teleported
style=
"width: 12
4
px"
style=
"width: 12
0
px"
/>
</div>
</div>
<div
class=
"fixed_gg_l club"
/>
<!-- 群聊-->
<div
class=
"fixed_gg_l club"
>
<el-image
:preview-src-list=
"[ fillImgUrl(matchData.chatQrcode) ]"
:src=
"fillImgUrl(matchData.chatQrcode)"
fit=
"cover"
preview-teleported
style=
"width: 120px"
/>
</div>
<affix-invitation
ref=
"dialogInvitationRef"
/>
</div>
...
...
@@ -456,6 +465,7 @@ import { getAboutUs, getppInfo, getZNList } from '@/apiPc/match'
import
AffixInvitation
from
'/@/viewsPc/match/components/affix-invitation.vue'
import
{
useStorage
}
from
'@vueuse/core/index'
import
useUserStore
from
'@/store/modules/user'
import
{
fillImgUrl
}
from
'/@/utils/ruoyi'
const
language
=
useStorage
(
'language'
,
0
)
...
...
@@ -546,7 +556,7 @@ const init = () => {
match
.
getMaList
({
topFlag
:
1
}).
then
((
res
)
=>
{
maList
.
value
=
res
.
rows
for
(
const
n
of
maList
.
value
)
{
var
today
=
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
const
today
=
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
if
(
n
.
signBeginTime
)
{
n
.
time
=
dayjs
(
n
.
signBeginTime
).
diff
(
today
,
'millisecond'
)
}
else
{
...
...
@@ -559,6 +569,7 @@ const init = () => {
}
}
matchData
.
value
=
maList
.
value
[
0
]
console
.
log
(
matchData
.
value
)
})
getpartners
()
}
...
...
@@ -1256,8 +1267,8 @@ function applyInvitation() {
}
.club
{
width
:
1
6
0px
;
left
:
5px
;
top
:
5
0%
;
width
:
1
3
0px
;
right
:
0
;
top
:
4
0%
;
}
</
style
>
...
...
src/viewsPc/index_en.vue
View file @
ef140df
...
...
@@ -410,7 +410,16 @@
/>
</div>
</div>
<!-- 群聊-->
<div
class=
"fixed_gg_l club"
>
<el-image
:preview-src-list=
"[ fillImgUrl(matchData.chatQrcode) ]"
:src=
"fillImgUrl(matchData.chatQrcode)"
fit=
"cover"
preview-teleported
style=
"width: 120px"
/>
</div>
<affix-invitation
ref=
"dialogInvitationRef"
/>
</div>
</template>
...
...
@@ -432,6 +441,7 @@ import AffixInvitation from '/@/viewsPc/match/components/affix-invitation.vue'
import
{
useStorage
}
from
'@vueuse/core/index'
import
useUserStore
from
'/@/store/modules/user'
import
clubImage
from
'@/assets/logo/club.png'
import
{
fillImgUrl
}
from
'/@/utils/ruoyi'
const
language
=
useStorage
(
'language'
,
0
)
...
...
@@ -1376,4 +1386,10 @@ function applyInvitation() {
top
:
40%
;
}
.club
{
width
:
130px
;
right
:
0
;
top
:
40%
;
}
</
style
>
...
...
src/viewsPc/match/detail_en.vue
View file @
ef140df
...
...
@@ -21,7 +21,7 @@
<img
:src=
"fillImgUrl(matchData.coverUrl)"
class=
"mauto w100 as16_9"
>
</el-col>
<el-col
:lg=
"matchData.type=='0'?9:16"
:md=
"12"
:xl=
"10"
style=
"position: relative"
>
<el-col
:lg=
"matchData.type=='0'?9:16"
:md=
"12"
:xl=
"10"
class=
"father"
style=
"position: relative"
>
<h3
style=
"margin: 0 0 10px"
>
{{
matchData
.
name
}}
</h3>
<div
v-if=
"matchData.type=='1'"
>
<p
class=
"ppl"
>
...
...
@@ -124,6 +124,7 @@
<label>
{{
language
==
0
?
'邮 箱'
:
'EMAIL'
}}
:
</label>
{{
matchData
.
contactEmail
}}
</p>
</div>
<div
style=
"height: 30px"
/>
<div
class=
"ppl_pb"
>
<el-link
...
...
@@ -161,7 +162,75 @@
{{
language
==
0
?
'赛事规程'
:
'Competition Regulations'
}}
</el-link>
</div>
<div
v-if=
"matchData.type!=1"
class=
"son"
>
<div
v-if=
"matchData.chatQrcode"
>
<!--
<div
style=
"font-size: 14px"
>
群聊二维码
</div>
-->
<el-image
:preview-src-list=
"[fillImgUrl(matchData.chatQrcode)]"
:src=
"fillImgUrl(matchData.chatQrcode)"
fit=
"cover"
preview-teleported
style=
"width: 50px;height: 50px;margin-left: 10px"
/>
</div>
<div
v-if=
"matchData.liveQrcode"
>
<!--
<div
style=
"font-size: 14px"
>
直播二维码
</div>
-->
<el-image
:preview-src-list=
"[fillImgUrl(matchData.liveQrcode) ]"
:src=
"fillImgUrl(matchData.liveQrcode)"
fit=
"cover"
preview-teleported
style=
"width: 50px;height: 50px;margin-left: 10px"
/>
</div>
<div
v-if=
"matchData.qrcode"
>
<!--
<div
style=
"font-size: 14px"
>
赛事二维码
</div>
-->
<el-image
v-if=
"matchData.qrcode"
:preview-src-list=
"[fillImgUrl(matchData.qrcode)]"
:src=
"fillImgUrl(matchData.qrcode)"
fit=
"cover"
preview-teleported
style=
"width: 50px;height: 50px;margin-left: 10px"
/>
</div>
</div>
<div
v-else
class=
"son2"
>
<div
v-if=
"matchData.chatQrcode"
>
<!--
<div
style=
"font-size: 14px"
>
群聊二维码
</div>
-->
<el-image
:preview-src-list=
"[fillImgUrl(matchData.chatQrcode)]"
:src=
"fillImgUrl(matchData.chatQrcode)"
fit=
"cover"
preview-teleported
style=
"width: 80px;height: 80px;margin-left: 10px"
/>
</div>
<div
v-if=
"matchData.liveQrcode"
>
<!--
<div
style=
"font-size: 14px"
>
直播二维码
</div>
-->
<el-image
:preview-src-list=
"[fillImgUrl(matchData.liveQrcode) ]"
:src=
"fillImgUrl(matchData.liveQrcode)"
fit=
"cover"
preview-teleported
style=
"width: 80px;height: 80px;margin-left: 10px"
/>
</div>
{{
matchData
.
cptQrcode
}}
<div>
<!--
<div
style=
"font-size: 14px"
></div>
-->
<el-image
v-if=
"matchData.qrcode"
:preview-src-list=
"[fillImgUrl(matchData.qrcode)]"
:src=
"fillImgUrl(matchData.qrcode)"
fit=
"cover"
preview-teleported
style=
"width: 80px;height: 80px;margin-left: 10px"
/>
</div>
</div>
</el-col>
<el-col
v-if=
"matchData.type=='0'"
:lg=
"8"
:md=
"12"
:xl=
"8"
>
<p
v-if=
"language==0"
class=
"countDownTitle"
>
...
...
@@ -424,7 +493,9 @@ 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
{
fillImgUrl
}
from
'/@/utils/ruoyi'
const
qrUrl
=
ref
()
const
user
=
useUserStore
().
user
const
group
=
useUserStore
().
group
const
data
=
reactive
({
...
...
@@ -499,6 +570,7 @@ function getMatch(id) {
loading
.
value
=
true
match
.
getMatchById
({
id
:
id
}).
then
(
res
=>
{
matchData
.
value
=
res
.
data
console
.
log
(
matchData
.
value
)
loading
.
value
=
false
const
today
=
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
)
time
.
value
=
dayjs
(
res
.
data
.
signEndTime
).
diff
(
today
,
'millisecond'
)
...
...
@@ -971,6 +1043,22 @@ const reFlash = () => {
// 刷新
location
.
reload
()
}
async
function
handelQR
(
id
,
type
)
{
let
patch
if
(
type
==
1
)
{
patch
=
'/pages_match/match/singleLs'
}
else
{
patch
=
'/pages_match/match/single'
}
const
res
=
await
match
.
getMiniappQrCode
(
id
,
patch
)
if
(
res
.
data
)
{
qrUrl
.
value
=
'data:image/gif;base64,'
+
res
.
data
}
else
{
qrUrl
.
value
=
undefined
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -1628,4 +1716,22 @@ const reFlash = () => {
}
}
}
.father
{
position
:
relative
;
.son
{
position
:
absolute
;
bottom
:
0
;
right
:
-10%
;
display
:
flex
;
}
.son2
{
position
:
absolute
;
bottom
:
0
;
right
:
10%
;
display
:
flex
;
}
}
</
style
>
...
...
vite.config.js
View file @
ef140df
...
...
@@ -84,9 +84,10 @@ export default defineConfig(({ mode, command }) => {
},
'/dev-api'
:
{
// target: 'http://192.168.1.118:8081/',
// target: 'http://192.168.1.1
18
:8081',
target
:
'https://jijin.wtwuxicenter.com/stage-api'
,
// target: 'http://192.168.1.1
29
:8081',
//
target: 'https://jijin.wtwuxicenter.com/stage-api',
// target: 'https://wdsfwuxicenter.com/stage-api/',
target
:
'http://7s18uou5jv74.ngrok.xiaomiqiu123.top/'
,
changeOrigin
:
true
,
rewrite
:
(
p
)
=>
p
.
replace
(
/^
\/
dev-api/
,
''
)
},
...
...
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