提交 e1517380 authored 作者: 王鹏飞's avatar 王鹏飞

chore: 新增查看报告

上级 4b807f09
<script setup lang="ts">
import type { RecordItem, ReportItem } from '../types'
import { getReportList } from '../api'
interface Props {
data: RecordItem
}
const props = defineProps<Props>()
const reportList = ref<ReportItem[]>([])
async function fetchReport() {
const res = await getReportList({ competition_id: props.data.competition_id, student_id: props.data.student_id })
reportList.value = res.data.items
}
onMounted(() => {
fetchReport()
})
</script>
<template>
<el-dialog title="查看报告" width="500px">
<ul>
<li v-for="item in reportList" :key="item.id" style="line-height: 24px">
<a :href="`https://view.officeapps.live.com/op/view.aspx?src=${item.url}`" target="_blank">
{{ item.name }}
<el-button size="small" type="primary" style="margin-left: 10px">查看</el-button>
</a>
</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>
...@@ -8,6 +8,7 @@ const SyncExamDialog = defineAsyncComponent(() => import('../components/SyncExam ...@@ -8,6 +8,7 @@ const SyncExamDialog = defineAsyncComponent(() => import('../components/SyncExam
const ImportExamDialog = defineAsyncComponent(() => import('../components/ImportExamDialog.vue')) const ImportExamDialog = defineAsyncComponent(() => import('../components/ImportExamDialog.vue'))
const ImportScoreDialog = defineAsyncComponent(() => import('../components/ImportScoreDialog.vue')) const ImportScoreDialog = defineAsyncComponent(() => import('../components/ImportScoreDialog.vue'))
const ScoreViewPicturesDialog = defineAsyncComponent(() => import('../components/ScoreViewPicturesDialog.vue')) const ScoreViewPicturesDialog = defineAsyncComponent(() => import('../components/ScoreViewPicturesDialog.vue'))
const ReportDialog = defineAsyncComponent(() => import('../components/ReportDialog.vue'))
const route = useRoute() const route = useRoute()
...@@ -129,6 +130,7 @@ function onUpdateSuccess() { ...@@ -129,6 +130,7 @@ function onUpdateSuccess() {
appList?.refetch() appList?.refetch()
} }
// 查看截图
const viewPictureVisible = ref(false) const viewPictureVisible = ref(false)
const rowData = ref() const rowData = ref()
function handleViewPicture(row: any) { function handleViewPicture(row: any) {
...@@ -136,6 +138,13 @@ function handleViewPicture(row: any) { ...@@ -136,6 +138,13 @@ function handleViewPicture(row: any) {
viewPictureVisible.value = true viewPictureVisible.value = true
} }
// 查看报告
const viewReportVisible = ref(false)
function handleViewReport(row: any) {
rowData.value = row
viewReportVisible.value = true
}
// function getModuleStatus(row: any, index: number) { // function getModuleStatus(row: any, index: number) {
// const [first] = row.student_module_status_list // const [first] = row.student_module_status_list
// try { // try {
...@@ -155,13 +164,28 @@ function handleViewPicture(row: any) { ...@@ -155,13 +164,28 @@ function handleViewPicture(row: any) {
<AppCard title="大赛评分"> <AppCard title="大赛评分">
<AppList v-bind="listOptions" ref="appList"> <AppList v-bind="listOptions" ref="appList">
<template #header-buttons> <template #header-buttons>
<el-button type="primary" round :icon="Refresh" @click="syncDialogVisible = true" v-permission="'v1-expert-check-sync-exam'" <el-button
type="primary"
round
:icon="Refresh"
@click="syncDialogVisible = true"
v-permission="'v1-expert-check-sync-exam'"
>系统同步考试成绩</el-button >系统同步考试成绩</el-button
> >
<el-button type="primary" round :icon="Upload" @click="importExamVisible = true" v-permission="'v1-expert-check-import-exam'" <el-button
type="primary"
round
:icon="Upload"
@click="importExamVisible = true"
v-permission="'v1-expert-check-import-exam'"
>批量导入考试成绩</el-button >批量导入考试成绩</el-button
> >
<el-button type="primary" round :icon="Upload" @click="importScoreVisible = true" v-permission="'v1-expert-check-import-score'" <el-button
type="primary"
round
:icon="Upload"
@click="importScoreVisible = true"
v-permission="'v1-expert-check-import-score'"
>批量导入完整评分</el-button >批量导入完整评分</el-button
> >
</template> </template>
...@@ -170,9 +194,11 @@ function handleViewPicture(row: any) { ...@@ -170,9 +194,11 @@ function handleViewPicture(row: any) {
<span :class="{ 'is-info': row.score_name !== '--' }">{{ row.score_name }}</span> <span :class="{ 'is-info': row.score_name !== '--' }">{{ row.score_name }}</span>
</template> </template>
<template #table-x="{ row }"> <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> <router-link :to="`/admin/contest/check/${row.id}`" target="_blank">评分</router-link>
</el-button> --> </el-button>
<br />
<el-button text type="primary" @click="handleViewReport(row)">查看报告</el-button><br />
<el-button text type="primary" @click="handleViewPicture(row)">查看截图</el-button> <el-button text type="primary" @click="handleViewPicture(row)">查看截图</el-button>
</template> </template>
</AppList> </AppList>
...@@ -182,9 +208,14 @@ function handleViewPicture(row: any) { ...@@ -182,9 +208,14 @@ function handleViewPicture(row: any) {
<!-- 批量导入考试成绩 --> <!-- 批量导入考试成绩 -->
<ImportExamDialog v-model="importExamVisible" @update="onUpdateSuccess" v-if="importExamVisible"></ImportExamDialog> <ImportExamDialog v-model="importExamVisible" @update="onUpdateSuccess" v-if="importExamVisible"></ImportExamDialog>
<!-- 批量导入完整评分 --> <!-- 批量导入完整评分 -->
<ImportScoreDialog v-model="importScoreVisible" @update="onUpdateSuccess" v-if="importScoreVisible"></ImportScoreDialog> <ImportScoreDialog
v-model="importScoreVisible"
@update="onUpdateSuccess"
v-if="importScoreVisible"></ImportScoreDialog>
<!-- 查看截图 --> <!-- 查看截图 -->
<ScoreViewPicturesDialog v-model="viewPictureVisible" :data="rowData" v-if="rowData"></ScoreViewPicturesDialog> <ScoreViewPicturesDialog v-model="viewPictureVisible" :data="rowData" v-if="rowData"></ScoreViewPicturesDialog>
<!-- 查看报告 -->
<ReportDialog v-model="viewReportVisible" :data="rowData" v-if="rowData && viewReportVisible"></ReportDialog>
</template> </template>
<style lang="scss"> <style lang="scss">
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论