hljs.
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
<script setup lang="ts"></script>
|
||||
|
||||
<template>status detail</template>
|
||||
|
||||
<style scoped></style>
|
||||
80
src/oj/submission/detail.vue
Normal file
80
src/oj/submission/detail.vue
Normal 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>
|
||||
@@ -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: "状态",
|
||||
Reference in New Issue
Block a user