Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-lab
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-lab
Commits
3e1852da
提交
3e1852da
authored
11月 28, 2024
作者:
lhh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
7b210237
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
146 行增加
和
1 行删除
+146
-1
api.ts
src/modules/admin/contest/log/api.ts
+12
-0
index.ts
src/modules/admin/contest/log/index.ts
+10
-0
Index.vue
src/modules/admin/contest/log/views/Index.vue
+122
-0
menu.ts
src/stores/menu.ts
+2
-1
没有找到文件。
src/modules/admin/contest/log/api.ts
0 → 100644
浏览文件 @
3e1852da
import
httpRequest
from
'@/utils/axios'
// 获取日志列表
export
function
getLogs
(
params
?:
{
competition_id
?:
string
;
client_id
?:
string
;
competitor_id
?:
string
;
competitor_name
?:
string
;
competitor_mobile
?:
string
;
page
?:
number
;
'per-page'
?:
number
})
{
return
httpRequest
.
get
(
'/api/resource/v1/backend/competition/client-operate-logs'
,
{
params
})
}
// 获取赛项列表
export
function
getContestList
(
params
?:
{
page
?:
number
;
'per-page'
?:
number
})
{
return
httpRequest
.
get
(
'/api/resource/v1/backend/competition/list'
,
{
params
})
}
\ No newline at end of file
src/modules/admin/contest/log/index.ts
0 → 100644
浏览文件 @
3e1852da
import
type
{
RouteRecordRaw
}
from
'vue-router'
import
AppLayout
from
'@/components/layout/Index.vue'
export
const
routes
:
Array
<
RouteRecordRaw
>
=
[
{
path
:
'/admin/contest/log'
,
component
:
AppLayout
,
children
:
[{
path
:
''
,
component
:
()
=>
import
(
'./views/Index.vue'
)
}]
}
]
src/modules/admin/contest/log/views/Index.vue
0 → 100644
浏览文件 @
3e1852da
<
script
setup
lang=
"ts"
>
import
{
getContestList
,
getLogs
}
from
'../api'
import
AppList
from
'@/components/base/AppList.vue'
const
appList
=
$ref
<
InstanceType
<
typeof
AppList
>
|
null
>
(
null
)
let
form
=
reactive
({
competition_id
:
''
,
competitor_name
:
''
,
competitor_mobile
:
''
,
page
:
1
,
'per-page'
:
10
})
// 搜索
const
onSubmit
=
()
=>
{
requestLogs
()
}
let
total
:
number
=
$ref
(
0
)
let
logsList
:
any
=
$ref
()
const
requestLogs
=
()
=>
{
const
params
=
{
...
form
}
getLogs
(
params
).
then
((
res
:
any
)
=>
{
logsList
=
res
.
data
.
list
.
map
((
item
:
any
)
=>
{
item
.
client_detail
=
JSON
.
parse
(
item
.
client_detail
)
return
item
})
total
=
parseInt
(
res
.
data
.
total
)
})
}
let
contestList
:
any
=
$ref
()
getContestList
({
page
:
1
,
'per-page'
:
1000
}).
then
((
res
:
any
)
=>
{
contestList
=
res
.
data
?.
list
})
const
listOptions
=
$computed
(()
=>
{
return
{
columns
:
[
{
label
:
'序号'
,
type
:
'index'
,
width
:
60
},
{
label
:
'客户端'
,
prop
:
'name'
},
{
label
:
'客户端版本'
,
prop
:
'client_version'
},
{
label
:
'赛项'
,
prop
:
'competition.name'
},
{
label
:
'选手姓名'
,
prop
:
'name'
},
{
label
:
'手机号'
,
prop
:
'mobile'
},
{
label
:
'时间'
,
prop
:
'created_time'
},
{
label
:
'IP'
,
prop
:
'client_detail.ip'
},
{
label
:
'操作系统'
,
prop
:
'client_detail.os'
},
{
label
:
'浏览器'
,
prop
:
'client_detail.browser'
},
{
label
:
'操作'
,
prop
:
'operation_desc'
}
],
data
:
logsList
}
})
onMounted
(()
=>
{
requestLogs
()
})
// 页数改变
const
pageSizeChange
=
(
value
:
number
)
=>
{
form
.
page
=
1
form
[
'per-page'
]
=
value
requestLogs
()
}
const
fetchList
=
(
n
:
any
)
=>
{
form
.
page
=
n
requestLogs
()
}
const
reset
=
()
=>
{
form
=
{
competition_id
:
''
,
competitor_name
:
''
,
competitor_mobile
:
''
,
page
:
1
,
'per-page'
:
10
}
requestLogs
()
}
</
script
>
<
template
>
<AppCard
title=
"客户端日志"
>
<el-form
:inline=
"true"
:model=
"form"
>
<el-form-item
label=
"赛项"
>
<el-select
filterable
v-model=
"form.competition_id"
placeholder=
"请选择赛项"
>
<el-option
v-for=
"item in contestList"
:label=
"item?.name"
:value=
"item.id"
:key=
"item?.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"选手姓名"
>
<el-input
v-model=
"form.competitor_name"
placeholder=
"请输入选手姓名"
/>
</el-form-item>
<el-form-item
label=
"选手手机号"
>
<el-input
v-model=
"form.competitor_mobile"
placeholder=
"请输入选手手机号"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
搜索
</el-button>
<el-button
@
click=
"reset"
>
重置
</el-button>
</el-form-item>
</el-form>
<AppList
v-bind=
"listOptions"
ref=
"appList"
style=
"margin: 10px 0"
>
</AppList>
<div
style=
"display: flex; justify-content: right"
>
<el-pagination
class=
"table-list-pagination"
background
layout=
"total, sizes, prev, pager, next, jumper"
:page-sizes=
"[10, 20, 30, 50]"
:page-size=
"form['per-page']"
:total=
"total"
v-model:current-page=
"form.page"
@
size-change=
"pageSizeChange"
@
current-change=
"fetchList"
>
</el-pagination>
</div>
</AppCard>
</
template
>
<
style
lang=
"scss"
></
style
>
src/stores/menu.ts
浏览文件 @
3e1852da
...
...
@@ -43,7 +43,8 @@ const adminMenus: IMenuItem[] = [
{
name
:
'大赛训练答疑'
,
path
:
'/admin/contest/discuss'
,
tag
:
'v1-teacher-train-discussion'
},
{
name
:
'大赛监控'
,
path
:
'/admin/contest/dashboard'
,
tag
:
'v1-expert-statistic'
},
{
name
:
'大赛评分'
,
path
:
'/admin/contest/check'
,
tag
:
'v1-expert-check'
},
{
name
:
'大赛发布成绩'
,
path
:
'/admin/contest/score'
,
tag
:
'v1-expert-score'
}
{
name
:
'大赛发布成绩'
,
path
:
'/admin/contest/score'
,
tag
:
'v1-expert-score'
},
{
name
:
'客户端日志'
,
path
:
'/admin/contest/log'
,
tag
:
''
}
]
},
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论