Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
saas-lab
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
saas-lab
Commits
3a5a1e57
提交
3a5a1e57
authored
12月 05, 2023
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
chore: update
上级
ef4b6f3f
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
80 行增加
和
5 行删除
+80
-5
ScoreViewPicturesDialog.vue
...dmin/contest/check/components/ScoreViewPicturesDialog.vue
+56
-0
types.ts
src/modules/admin/contest/check/types.ts
+2
-0
Index.vue
src/modules/admin/contest/check/views/Index.vue
+22
-5
没有找到文件。
src/modules/admin/contest/check/components/ScoreViewPicturesDialog.vue
0 → 100644
浏览文件 @
3a5a1e57
<
script
setup
lang=
"ts"
>
import
type
{
RecordItem
,
FileItem
}
from
'../types'
interface
Props
{
data
:
RecordItem
}
const
props
=
defineProps
<
Props
>
()
// 实验过程截图
const
pictures
=
$computed
<
FileItem
[]
>
(()
=>
{
try
{
const
list
:
FileItem
[]
=
props
.
data
.
competition_competitor_pictures
.
pictures
?
JSON
.
parse
(
props
.
data
.
competition_competitor_pictures
.
pictures
)
:
[]
return
list
.
filter
(
item
=>
item
.
size
)
}
catch
(
error
)
{
console
.
log
(
error
)
}
return
[]
})
const
srcList
=
computed
(()
=>
{
return
pictures
.
map
(
item
=>
item
.
url
)
})
</
script
>
<
template
>
<el-dialog
title=
"查看实验截图"
width=
"800px"
append-to-body
>
<ul
class=
"picture-list"
>
<li
v-for=
"(item, index) in pictures"
:key=
"item.url"
>
<p
class=
"t1"
>
<el-image
style=
"width: 100%"
:src=
"item.url"
:preview-src-list=
"srcList"
:initial-index=
"index"
/>
</p>
<p
class=
"t2"
>
截图时间:
{{
item
.
upload_time
}}
</p>
</li>
</ul>
<template
#
footer
>
<el-row
justify=
"center"
>
<el-button
round
auto-insert-space
@
click=
"$emit('update:modelValue', false)"
>
关闭
</el-button>
</el-row>
</
template
>
</el-dialog>
</template>
<
style
lang=
"scss"
scoped
>
.picture-list
{
width
:
100%
;
li
{
line-height
:
30px
;
}
a
{
color
:
var
(
--
main-color
);
}
.t2
{
text-align
:
center
;
}
}
</
style
>
src/modules/admin/contest/check/types.ts
浏览文件 @
3a5a1e57
...
...
@@ -18,12 +18,14 @@ export interface RecordItem {
status_name
:
string
student_id
:
string
student_name
:
string
competition_competitor_pictures
:
any
}
export
interface
FileItem
{
name
:
string
url
:
string
upload_time
:
string
size
:
number
}
export
interface
ReportItem
{
...
...
src/modules/admin/contest/check/views/Index.vue
浏览文件 @
3a5a1e57
...
...
@@ -7,6 +7,7 @@ import { useFilterList } from '../composables/useFilterList'
const
SyncExamDialog
=
defineAsyncComponent
(()
=>
import
(
'../components/SyncExamDialog.vue'
))
const
ImportExamDialog
=
defineAsyncComponent
(()
=>
import
(
'../components/ImportExamDialog.vue'
))
const
ImportScoreDialog
=
defineAsyncComponent
(()
=>
import
(
'../components/ImportScoreDialog.vue'
))
const
ScoreViewPicturesDialog
=
defineAsyncComponent
(()
=>
import
(
'../components/ScoreViewPicturesDialog.vue'
))
const
route
=
useRoute
()
...
...
@@ -128,6 +129,13 @@ function onUpdateSuccess() {
appList
?.
refetch
()
}
const
viewPictureVisible
=
ref
(
false
)
const
rowData
=
ref
()
function
handleViewPicture
(
row
:
any
)
{
rowData
.
value
=
row
viewPictureVisible
.
value
=
true
}
// function getModuleStatus(row: any, index: number) {
// const [first] = row.student_module_status_list
// try {
...
...
@@ -147,18 +155,25 @@ function onUpdateSuccess() {
<AppCard
title=
"大赛评分"
>
<AppList
v-bind=
"listOptions"
ref=
"appList"
>
<template
#
header-buttons
>
<el-button
type=
"primary"
round
:icon=
"Refresh"
@
click=
"syncDialogVisible = true"
v-permission=
"'v1-expert-check-sync-exam'"
>
系统同步考试成绩
</el-button>
<el-button
type=
"primary"
round
:icon=
"Upload"
@
click=
"importExamVisible = true"
v-permission=
"'v1-expert-check-import-exam'"
>
批量导入考试成绩
</el-button>
<el-button
type=
"primary"
round
:icon=
"Upload"
@
click=
"importScoreVisible = true"
v-permission=
"'v1-expert-check-import-score'"
>
批量导入完整评分
</el-button>
<el-button
type=
"primary"
round
:icon=
"Refresh"
@
click=
"syncDialogVisible = true"
v-permission=
"'v1-expert-check-sync-exam'"
>
系统同步考试成绩
</el-button
>
<el-button
type=
"primary"
round
:icon=
"Upload"
@
click=
"importExamVisible = true"
v-permission=
"'v1-expert-check-import-exam'"
>
批量导入考试成绩
</el-button
>
<el-button
type=
"primary"
round
:icon=
"Upload"
@
click=
"importScoreVisible = true"
v-permission=
"'v1-expert-check-import-score'"
>
批量导入完整评分
</el-button
>
</
template
>
<
template
#
table-count=
"{ row }"
>
{{
row
.
checked_count
}}
/
{{
row
.
need_check_count
}}
</
template
>
<
template
#
table-score=
"{ row }"
>
<span
:class=
"
{ 'is-info': row.score_name !== '--' }">
{{
row
.
score_name
}}
</span>
</
template
>
<
template
#
table-x=
"{ row }"
>
<el-button
text
type=
"primary"
v-if=
"row.publish_status === '0'"
v-permission=
"'v1-expert-check-set-score'"
>
<
!--
<
el-button
text
type=
"primary"
v-if=
"row.publish_status === '0'"
v-permission=
"'v1-expert-check-set-score'"
>
<router-link
:to=
"`/admin/contest/check/$
{row.id}`" target="_blank">评分
</router-link>
</el-button>
</el-button>
-->
<el-button
text
type=
"primary"
@
click=
"handleViewPicture(row)"
>
查看截图
</el-button>
</
template
>
</AppList>
</AppCard>
...
...
@@ -168,6 +183,8 @@ function onUpdateSuccess() {
<ImportExamDialog
v-model=
"importExamVisible"
@
update=
"onUpdateSuccess"
v-if=
"importExamVisible"
></ImportExamDialog>
<!-- 批量导入完整评分 -->
<ImportScoreDialog
v-model=
"importScoreVisible"
@
update=
"onUpdateSuccess"
v-if=
"importScoreVisible"
></ImportScoreDialog>
<!-- 查看截图 -->
<ScoreViewPicturesDialog
v-model=
"viewPictureVisible"
:data=
"rowData"
v-if=
"rowData"
></ScoreViewPicturesDialog>
</template>
<
style
lang=
"scss"
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论