Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
M
mh-h5
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
ling
mh-h5
Commits
030f7b3a
提交
030f7b3a
authored
1月 10, 2023
作者:
ling
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
h5 style
上级
16f9b4e1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
155 行增加
和
139 行删除
+155
-139
fetcher.js
assets/scripts/fetcher.js
+20
-19
socket.js
assets/scripts/socket.js
+50
-49
Match.vue
components/Match.vue
+80
-70
default.vue
layouts/default.vue
+5
-1
Schedule.vue
pages/Schedule.vue
+0
-0
没有找到文件。
assets/scripts/fetcher.js
浏览文件 @
030f7b3a
import
axios
from
'axios'
axios
.
defaults
.
baseURL
=
'http
://8.218.98.47/
'
axios
.
defaults
.
baseURL
=
'http
s://api.chzb9.com
'
axios
.
defaults
.
headers
.
common
[
'Content-Type'
]
=
'application/json'
export
const
fetcher
=
async
(
APIUrl
,
httpVerb
=
'POST'
,
payload
)
=>
{
const
axiosConfig
=
{
method
:
httpVerb
.
toLowerCase
(),
url
:
APIUrl
,
data
:
payload
}
return
await
axios
(
axiosConfig
)
.
then
(
function
(
response
)
{
if
(
response
.
data
.
code
===
200
)
{
return
response
.
data
}
else
{
return
Promise
.
reject
(
response
)
}
})
.
catch
(
function
(
error
)
{
return
error
})
}
export
const
fetcher
=
async
(
APIUrl
,
httpVerb
=
'POST'
,
payload
)
=>
{
const
axiosConfig
=
{
method
:
httpVerb
.
toLowerCase
(),
url
:
APIUrl
,
data
:
payload
}
return
await
axios
(
axiosConfig
)
.
then
(
function
(
response
)
{
if
(
response
.
data
.
code
===
200
)
{
return
response
.
data
}
else
{
return
Promise
.
reject
(
response
)
}
})
.
catch
(
function
(
error
)
{
return
error
})
}
\ No newline at end of file
assets/scripts/socket.js
浏览文件 @
030f7b3a
import
Vue
from
'vue'
const
wsUrl
=
'ws
://8.218.98.47:6658
'
const
wsUrl
=
'ws
s://api.chzb9.com/wss
'
let
socket
=
null
const
heartCheck
=
{
timeout
:
40000
,
timeoutObj
:
null
,
reset
()
{
clearTimeout
(
this
.
timeoutObj
)
this
.
start
()
},
start
()
{
this
.
timeoutObj
=
setTimeout
(
function
()
{
emitter
.
send
({
type
:
"heartbeat"
})
},
this
.
timeout
)
},
clear
()
{
clearTimeout
(
this
.
timeoutObj
)
},
}
const
emitter
=
new
Vue
({
methods
:
{
send
(
message
)
{
if
(
socket
.
readyState
===
1
)
{
socket
.
send
(
JSON
.
stringify
(
message
))
}
timeout
:
40000
,
timeoutObj
:
null
,
reset
()
{
clearTimeout
(
this
.
timeoutObj
)
this
.
start
()
},
start
()
{
this
.
timeoutObj
=
setTimeout
(
function
()
{
emitter
.
send
({
type
:
"heartbeat"
})
},
this
.
timeout
)
},
connect
()
{
socket
=
new
WebSocket
(
wsUrl
)
socket
.
onopen
=
function
()
{
console
.
log
(
'open'
)
heartCheck
.
start
()
}
socket
.
onmessage
=
function
(
msg
)
{
emitter
.
$emit
(
'message'
,
msg
.
data
)
if
(
msg
.
code
===
101
)
{
heartCheck
.
reset
()
}
if
(
msg
.
code
===
100
)
{
emitter
.
$emit
(
'message'
,
msg
.
data
)
}
}
socket
.
onerror
=
function
(
err
)
{
emitter
.
$emit
(
'error'
,
err
)
}
socket
.
onclose
=
function
()
{
console
.
log
(
'close'
)
emitter
.
connect
()
}
clear
()
{
clearTimeout
(
this
.
timeoutObj
)
},
close
()
{
heartCheck
.
clear
()
socket
.
close
()
}
const
emitter
=
new
Vue
({
methods
:
{
send
(
message
)
{
if
(
socket
.
readyState
===
1
)
{
socket
.
send
(
JSON
.
stringify
(
message
))
}
},
connect
()
{
socket
=
new
WebSocket
(
wsUrl
)
socket
.
onopen
=
function
()
{
console
.
log
(
'open'
)
heartCheck
.
start
()
}
socket
.
onmessage
=
function
(
msg
)
{
emitter
.
$emit
(
'message'
,
msg
.
data
)
if
(
msg
.
code
===
101
)
{
heartCheck
.
reset
()
}
if
(
msg
.
code
===
100
)
{
emitter
.
$emit
(
'message'
,
msg
.
data
)
}
}
socket
.
onerror
=
function
(
err
)
{
emitter
.
$emit
(
'error'
,
err
)
}
socket
.
onclose
=
function
()
{
console
.
log
(
'close'
)
emitter
.
connect
()
}
},
close
()
{
heartCheck
.
clear
()
socket
.
close
()
},
},
},
})
export
default
emitter
export
default
emitter
\ No newline at end of file
components/Match.vue
浏览文件 @
030f7b3a
<!-- Please remove this file from your project -->
<
template
>
<div>
<!--
<el-tabs
class=
"tab-nav"
v-model=
"activeName"
type=
"card"
@
tab-click=
"getFootballMatch"
>
<el-tab-pane
:label=
"beforeyesterday"
:name=
"beforeyesterday"
></el-tab-pane>
<el-tab-pane
:label=
"yesterday"
:name=
"yesterday"
></el-tab-pane>
<el-tab-pane
:label=
"`$
{today} (今天)`" :name="today">
</el-tab-pane>
<el-tab-pane
:label=
"tomorrow"
:name=
"tomorrow"
></el-tab-pane>
<el-tab-pane
:label=
"aftertomorrow"
:name=
"aftertomorrow"
></el-tab-pane>
<el-tab-pane
:label=
"aftertomorrow2"
:name=
"aftertomorrow2"
></el-tab-pane>
</el-tabs>
-->
<van-tabs
class=
"tab-nav"
v-model=
"activeName"
type=
"card"
@
click=
"getFootballMatch"
>
<van-tabs
class=
"tab-nav"
v-model=
"activeName"
type=
"card"
@
click=
"getFootballMatch"
>
<van-tab
:title=
"beforeyesterday"
:name=
"beforeyesterday"
></van-tab>
<van-tab
:title=
"yesterday"
:name=
"yesterday"
></van-tab>
<van-tab
:title=
"`$
{today} (今天)`" :name="today">
</van-tab>
...
...
@@ -19,61 +15,75 @@
<van-tab
:title=
"aftertomorrow2"
:name=
"aftertomorrow2"
></van-tab>
</van-tabs>
<el-table
:data=
"list"
style=
"width: 100%"
:show-header=
"false"
>
<el-table-column>
<template
slot-scope=
"scope"
>
<div>
{{
timeStamp1
(
scope
.
row
.
time
)
}}
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"competition_name_zh"
>
</el-table-column>
<el-table-column
prop=
"home_team_name_zh"
>
</el-table-column>
<el-table-column>
<
template
slot-scope=
"scope"
>
<el-image
style=
"width: 40px;"
:src=
"scope.row.home_team_log"
></el-image>
</
template
>
</el-table-column>
<el-table-column>
<
template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
home_score
}}
:
{{
scope
.
row
.
away_score
}}
</div>
</
template
>
</el-table-column>
<el-table-column>
<
template
slot-scope=
"scope"
>
<el-image
style=
"width: 40px;"
:src=
"scope.row.away_team_log"
></el-image>
</
template
>
</el-table-column>
<el-table-column
prop=
"away_team_name_zh"
>
</el-table-column>
<el-table-column
prop=
"status_str"
>
</el-table-column>
</el-table>
<van-cell-group
v-for=
"item in list"
:key=
"item.id"
>
<van-cell>
<span>
{{
timeStamp1
(
item
.
time
)
}}
</span>
<span>
{{
item
.
competition_name_zh
}}
</span>
<span>
{{
item
.
home_team_name_zh
}}
</span>
<!--
<van-image
width=
"15"
:src=
"item.home_team_log"
/>
-->
<span>
{{
item
.
home_score
}}
:
{{
item
.
away_score
}}
</span>
<!--
<van-image
width=
"15"
:src=
"item.away_team_log"
/>
-->
<span>
{{
item
.
away_team_name_zh
}}
</span>
<span>
{{
item
.
status_str
}}
</span>
</van-cell>
</van-cell-group>
</div>
</
template
>
<
script
>
import
{
mapState
}
from
'vuex'
import
{
getFootballMatch
,
scheduleList
}
from
'~/api/football.js'
import
{
mapState
}
from
"vuex"
;
import
{
getFootballMatch
,
scheduleList
}
from
"~/api/football.js"
;
export
default
{
name
:
'NuxtTutorial'
,
name
:
"NuxtTutorial"
,
data
()
{
return
{
activeName
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
new
Date
().
getDate
(),
today
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
new
Date
().
getDate
(),
yesterday
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
-
1
),
beforeyesterday
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
-
2
),
tomorrow
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
+
1
),
aftertomorrow
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
+
2
),
aftertomorrow2
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
+
3
),
activeName
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
new
Date
().
getDate
(),
today
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
new
Date
().
getDate
(),
yesterday
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
-
1
),
beforeyesterday
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
-
2
),
tomorrow
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
+
1
),
aftertomorrow
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
+
2
),
aftertomorrow2
:
new
Date
().
getFullYear
()
+
"-"
+
(
new
Date
().
getMonth
()
+
1
)
+
"-"
+
(
new
Date
().
getDate
()
+
3
),
list
:
[],
}
}
;
},
created
()
{
this
.
getFootballMatch
()
this
.
getFootballMatch
()
;
},
computed
:
{
...
mapState
({
...
...
@@ -84,11 +94,11 @@ export default {
webSocketData
(
data
)
{
if
(
data
.
type
===
"football_match"
)
{
this
.
list
.
forEach
((
x
,
index
)
=>
{
if
(
x
.
id
===
data
.
id
)
{
x
.
home_score
=
data
.
home_score
x
.
away_score
=
data
.
away_score
}
})
if
(
x
.
id
===
data
.
id
)
{
x
.
home_score
=
data
.
home_score
;
x
.
away_score
=
data
.
away_score
;
}
});
}
},
},
...
...
@@ -107,27 +117,27 @@ export default {
// 返回
return
result
;
},
async
getFootballMatch
(
tab
,
event
)
{
const
day
=
tab
?
tab
.
name
:
this
.
today
async
getFootballMatch
(
name
,
title
)
{
const
day
=
name
?
name
:
this
.
today
;
try
{
const
res
=
await
getFootballMatch
(
day
)
const
res
=
await
getFootballMatch
(
day
)
;
if
(
res
.
data
.
code
===
0
)
{
this
.
list
=
res
.
data
.
data
.
data
this
.
list
=
res
.
data
.
data
.
data
;
}
}
catch
(
err
)
{
console
.
error
(
err
)
console
.
error
(
err
)
;
}
},
async
scheduleList
()
{
try
{
const
res
=
await
scheduleList
()
this
.
list
=
res
.
data
.
data
.
data
const
res
=
await
scheduleList
()
;
this
.
list
=
res
.
data
.
data
.
data
;
}
catch
(
err
)
{
console
.
error
(
err
)
console
.
error
(
err
)
;
}
},
}
}
}
,
}
;
</
script
>
<
style
scoped
>
.tab-nav
{
...
...
layouts/default.vue
浏览文件 @
030f7b3a
...
...
@@ -14,7 +14,7 @@
<el-menu-item
index=
"/schedule"
>
赛程
</el-menu-item>
</el-menu>
-->
</div>
<van-tabs
v-model=
"activeIndex"
>
<van-tabs
class=
"tab"
v-model=
"activeIndex"
>
<van-tab
title=
"即时比分"
to=
"/"
></van-tab>
<van-tab
title=
"赛程"
to=
"/schedule"
></van-tab>
</van-tabs>
...
...
@@ -46,10 +46,14 @@ export default {
};
</
script
>
<
style
scoped
>
.tab
{
margin
:
10px
0
;
}
.nav
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
margin-top
:
10px
;
}
.nav
img
{
...
...
pages/Schedule.vue
浏览文件 @
030f7b3a
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论