This commit is contained in:
2023-01-20 12:29:32 +08:00
parent 40fae1c7c0
commit 0b2d9e3efd
23 changed files with 271 additions and 150 deletions

View File

@@ -1,17 +0,0 @@
<script setup lang="ts">
import { JUDGE_STATUS } from "../../utils/constants"
import { SUBMISSION_RESULT } from "../../utils/types"
interface Props {
result: SUBMISSION_RESULT
}
defineProps<Props>()
</script>
<template>
<n-tag :type="JUDGE_STATUS[result]['type']">
{{ JUDGE_STATUS[result]["name"] }}
</n-tag>
</template>
<style scoped></style>

View File

@@ -36,7 +36,7 @@ function change(value: string) {
<n-form-item>
<n-space>
<n-button @click="reset">重置</n-button>
<n-button @click="$router.push(`/status?problem=${problem._id}`)">
<n-button @click="$router.push(`/submission?problem=${problem._id}`)">
提交信息
</n-button>
</n-space>

View File

@@ -7,7 +7,7 @@ import { SOURCES, JUDGE_STATUS, SubmissionStatus } from "utils/constants"
import { submissionMemoryFormat, submissionTimeFormat } from "utils/functions"
import { Problem, Submission, SubmitCodePayload } from "utils/types"
import { getSubmission, submitCode } from "oj/api"
import SubmissionResultTag from "../../components/SubmissionResultTag.vue"
import SubmissionResultTag from "../../../shared/SubmissionResultTag.vue"
import { DataTableColumn } from "naive-ui"
const problem = inject<Ref<Problem>>("problem")

View File

@@ -1,5 +0,0 @@
<script setup lang="ts"></script>
<template>status detail</template>
<style scoped></style>

View File

@@ -0,0 +1,80 @@
<script setup lang="ts">
import { getSubmission } from "oj/api"
import { Submission } from "utils/types"
import { JUDGE_STATUS, LANGUAGE_VALUE } from "utils/constants"
import {
parseTime,
submissionMemoryFormat,
submissionTimeFormat,
} from "utils/functions"
import { DataTableColumn, NAlert, NDataTable } from "naive-ui"
import copy from "copy-text-to-clipboard"
import SubmissionResultTag from "~/shared/SubmissionResultTag.vue"
const props = defineProps<{
submissionID: string
}>()
const submission = ref<Submission>()
async function init() {
const res = await getSubmission(props.submissionID)
submission.value = res.data
}
const columns: DataTableColumn<Submission["info"]["data"][number]>[] = [
{ title: "测试用例", key: "test_case" },
{
title: "测试状态",
key: "result",
render: (row) => h(SubmissionResultTag, { result: row.result }),
},
{
title: "占用内存",
key: "memory",
render: (row) => submissionMemoryFormat(row.memory),
},
{
title: "执行耗时",
key: "real_time",
render: (row) => submissionTimeFormat(row.real_time),
},
{ title: "信号", key: "signal" },
]
onMounted(init)
</script>
<template>
<n-space vertical v-if="submission" :size="24">
<n-alert
:type="JUDGE_STATUS[submission.result]['type']"
:title="JUDGE_STATUS[submission.result]['name']"
>
<n-space>
<span>提交时间{{ parseTime(submission.create_time) }}</span>
<span>语言{{ submission.language }}</span>
<span>提交人 {{ submission.username }}</span>
</n-space>
</n-alert>
<n-card embedded>
<n-space justify="end">
<n-button @click="copy(submission!.code)">复制代码</n-button>
</n-space>
<n-code
class="code"
word-wrap
:language="LANGUAGE_VALUE[submission.language]"
:code="submission.code"
show-line-numbers
/>
</n-card>
<n-data-table :columns="columns" :data="submission.info.data" />
</n-space>
</template>
<style scoped>
.code {
font-size: 20px;
}
</style>

View File

@@ -1,7 +1,7 @@
<script setup lang="ts">
import { DataTableColumn, SelectOption } from "naive-ui"
import { NButton } from "naive-ui"
import SubmissionResultTag from "oj/components/SubmissionResultTag.vue"
import SubmissionResultTag from "~/shared/SubmissionResultTag.vue"
import Pagination from "~/shared/Pagination.vue"
import {
submissionMemoryFormat,
@@ -23,8 +23,6 @@ interface Query {
const route = useRoute()
const router = useRouter()
const problemID = <string>route.query.problem ?? ""
const contestID = <string>route.query.contest ?? ""
const submissions = ref([])
const total = ref(0)
@@ -57,8 +55,8 @@ async function listSubmissions() {
...query,
myself: query.myself ? "1" : "0",
offset,
problem_id: problemID,
contest_id: contestID,
problem_id: <string>route.query.problem ?? "",
contest_id: <string>route.params.contestID ?? "",
})
submissions.value = res.data.results
total.value = res.data.total
@@ -98,7 +96,7 @@ watch(
)
watch(
() => route.path === "/status" && route.query,
() => route.path === "/submission" && route.query,
(newVal) => {
if (newVal) listSubmissions()
}
@@ -116,7 +114,15 @@ const columns: DataTableColumn<Submission>[] = [
title: "编号",
key: "id",
render: (row) =>
h(NButton, { text: true, type: "info" }, () => row.id.slice(0, 12)),
h(
NButton,
{
text: true,
type: "info",
onClick: () => router.push("/submission/" + row.id),
},
() => row.id.slice(0, 12)
),
},
{
title: "状态",