fix: guard reset during run and use stable key for file list
This commit is contained in:
@@ -5,6 +5,7 @@ import { createTestSubmission } from "utils/judge"
|
|||||||
import { uploadTestcases } from "../../api"
|
import { uploadTestcases } from "../../api"
|
||||||
|
|
||||||
interface FileEntry {
|
interface FileEntry {
|
||||||
|
id: number
|
||||||
in: string
|
in: string
|
||||||
out: string
|
out: string
|
||||||
error: boolean
|
error: boolean
|
||||||
@@ -21,8 +22,9 @@ const emit = defineEmits<{
|
|||||||
|
|
||||||
const message = useMessage()
|
const message = useMessage()
|
||||||
|
|
||||||
|
let nextId = 0
|
||||||
const files = ref<FileEntry[]>(
|
const files = ref<FileEntry[]>(
|
||||||
Array.from({ length: 5 }, () => ({ in: "", out: "", error: false })),
|
Array.from({ length: 5 }, () => ({ id: nextId++, in: "", out: "", error: false })),
|
||||||
)
|
)
|
||||||
|
|
||||||
const selectedLanguage = ref<LANGUAGE>("Python3")
|
const selectedLanguage = ref<LANGUAGE>("Python3")
|
||||||
@@ -59,11 +61,11 @@ const canUpload = computed(
|
|||||||
)
|
)
|
||||||
|
|
||||||
function reset() {
|
function reset() {
|
||||||
files.value = Array.from({ length: 5 }, () => ({ in: "", out: "", error: false }))
|
files.value = Array.from({ length: 5 }, () => ({ id: nextId++, in: "", out: "", error: false }))
|
||||||
}
|
}
|
||||||
|
|
||||||
function add(n: number) {
|
function add(n: number) {
|
||||||
files.value.push(...Array.from({ length: n }, () => ({ in: "", out: "", error: false })))
|
files.value.push(...Array.from({ length: n }, () => ({ id: nextId++, in: "", out: "", error: false })))
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove(index: number) {
|
function remove(index: number) {
|
||||||
@@ -144,7 +146,7 @@ async function upload() {
|
|||||||
:disabled="!hasAnswerCode"
|
:disabled="!hasAnswerCode"
|
||||||
placeholder="无答案"
|
placeholder="无答案"
|
||||||
/>
|
/>
|
||||||
<n-button size="small" @click="reset">清空</n-button>
|
<n-button size="small" :disabled="isRunning" @click="reset">清空</n-button>
|
||||||
<n-button size="small" @click="add(1)">+1</n-button>
|
<n-button size="small" @click="add(1)">+1</n-button>
|
||||||
<n-button size="small" @click="add(5)">+5</n-button>
|
<n-button size="small" @click="add(5)">+5</n-button>
|
||||||
<n-tooltip :disabled="hasAnswerCode && hasAnyInput">
|
<n-tooltip :disabled="hasAnswerCode && hasAnyInput">
|
||||||
@@ -176,7 +178,7 @@ async function upload() {
|
|||||||
|
|
||||||
<n-flex
|
<n-flex
|
||||||
v-for="(file, index) in files"
|
v-for="(file, index) in files"
|
||||||
:key="index"
|
:key="file.id"
|
||||||
align="start"
|
align="start"
|
||||||
style="gap: 8px"
|
style="gap: 8px"
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user