fix problem status.

This commit is contained in:
2023-04-06 14:28:35 +08:00
parent 48fc661205
commit 14c42c6744
9 changed files with 22 additions and 29 deletions

6
src/components.d.ts vendored
View File

@@ -13,7 +13,6 @@ declare module '@vue/runtime-core' {
IEpCaretRight: typeof import('~icons/ep/caret-right')['default']
IEpLoading: typeof import('~icons/ep/loading')['default']
IEpLock: typeof import('~icons/ep/lock')['default']
IEpMenu: typeof import('~icons/ep/menu')['default']
IEpMoon: typeof import('~icons/ep/moon')['default']
IEpMoreFilled: typeof import('~icons/ep/more-filled')['default']
IEpSunny: typeof import('~icons/ep/sunny')['default']
@@ -23,10 +22,10 @@ declare module '@vue/runtime-core' {
NCard: typeof import('naive-ui')['NCard']
NCheckbox: typeof import('naive-ui')['NCheckbox']
NCheckboxGroup: typeof import('naive-ui')['NCheckboxGroup']
NCode: typeof import("naive-ui")["NCode"]
NCode: typeof import('naive-ui')['NCode']
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
NDataTable: typeof import('naive-ui')['NDataTable']
NDatePicker: typeof import("naive-ui")["NDatePicker"]
NDatePicker: typeof import('naive-ui')['NDatePicker']
NDescriptions: typeof import('naive-ui')['NDescriptions']
NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem']
NDropdown: typeof import('naive-ui')['NDropdown']
@@ -42,7 +41,6 @@ declare module '@vue/runtime-core' {
NInput: typeof import('naive-ui')['NInput']
NLayout: typeof import('naive-ui')['NLayout']
NLayoutContent: typeof import('naive-ui')['NLayoutContent']
NLayoutFooter: typeof import('naive-ui')['NLayoutFooter']
NLayoutHeader: typeof import('naive-ui')['NLayoutHeader']
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
NMenu: typeof import('naive-ui')['NMenu']

View File

@@ -75,10 +75,6 @@ export function getSubmission(id: string) {
})
}
export function submissionExists(problemID: number) {
return http.get("submission_exists", { params: { problem_id: problemID } })
}
export function submitCode(data: SubmitCodePayload) {
return http.post("submission", data)
}

View File

@@ -27,6 +27,11 @@ function goSubmissions() {
router.push({ name, query: { problem: props.problem._id } })
}
function goTestCat() {
const data = router.resolve({ name: "play" })
window.open(data.href, "_blank")
}
function edit() {
router.push("/admin/problem/edit/" + props.problem.id)
}
@@ -94,6 +99,7 @@ function select(key: string) {
<n-space>
<n-button @click="reset">重置</n-button>
<n-button @click="goSubmissions">提交信息</n-button>
<n-button type="info" @click="goTestCat">自测猫</n-button>
<n-button type="warning" v-if="userStore.isSuperAdmin" @click="edit">
编辑
</n-button>

View File

@@ -4,7 +4,6 @@ import { code } from "oj/composables/code"
import { SOURCES } from "utils/constants"
import { Problem, ProblemStatus } from "utils/types"
import { createTestSubmission } from "utils/judge"
import { submissionExists } from "oj/api"
import { useThemeVars } from "naive-ui"
interface Props {
@@ -18,14 +17,8 @@ type Sample = Problem["samples"][number] & {
}
const props = defineProps<Props>()
const route = useRoute()
const theme = useThemeVars()
const style = computed(() => "color: " + theme.value.primaryColor)
const solved = ref(false)
onMounted(() => {
if (route.params.contestID) checkSubmission()
})
const samples = ref<Sample[]>(
props.problem.samples.map((sample, index) => ({
@@ -46,11 +39,6 @@ const disabled = computed(
)
)
async function checkSubmission() {
const res = await submissionExists(props.problem.id)
solved.value = res.data
}
async function test(sample: Sample, index: number) {
samples.value = samples.value.map((sample) => {
if (sample.id === index) {
@@ -97,7 +85,7 @@ function type(status: ProblemStatus) {
<template>
<n-alert
v-if="problem.my_status === 0 || (route.params.contestID && solved)"
v-if="problem.my_status === 0"
type="success"
title="🎉 本 题 已 经 被 你 解 决 啦"
/>

5
src/play/index.vue Normal file
View File

@@ -0,0 +1,5 @@
<script lang="ts" setup></script>
<template>
<n-button>测试猫</n-button>
</template>
<style scoped></style>

View File

@@ -92,6 +92,11 @@ export const routes: RouteRecordRaw[] = [
},
],
},
{
path: "/play",
component: () => import("~/play/index.vue"),
name: "play",
},
{
path: "/admin",
component: () => import("~/shared/layout/admin.vue"),

View File

@@ -2,9 +2,6 @@
import Login from "../Login.vue"
import Signup from "../Signup.vue"
import Header from "../Header.vue"
import { useConfigStore } from "../store/config"
const configStore = useConfigStore()
</script>
<template>
@@ -15,7 +12,6 @@ const configStore = useConfigStore()
<n-layout-content content-style="padding: 16px; overflow-x: initial">
<router-view></router-view>
</n-layout-content>
<p class="footer">{{ configStore.config?.website_footer }}</p>
<Login />
<Signup />
</n-layout>
@@ -25,8 +21,4 @@ const configStore = useConfigStore()
.header {
padding: 8px;
}
.footer {
text-align: center;
margin: 20px 0;
}
</style>

View File

@@ -18,6 +18,7 @@
"oj/*": ["./src/oj/*"],
"admin/*": ["./src/admin/*"],
"learn/*": ["./src/learn/*"],
"play/*": ["./src/play/*"],
},
"types": ["naive-ui/volar"]
},

View File

@@ -25,6 +25,7 @@ export default defineConfig({
fancy: ["highlight.js", "party-js"],
chart: ["vue-chartjs", "chart.js"],
editor: ["@wangeditor/editor"],
monaco: ["monaco-editor"],
},
},
},
@@ -36,6 +37,7 @@ export default defineConfig({
oj: path.resolve(__dirname, "./src/oj"),
admin: path.resolve(__dirname, "./src/admin"),
learn: path.resolve(__dirname, "./src/learn"),
play: path.relative(__dirname, "./src/play"),
},
},
plugins: [