fix: show all languages in selector regardless of answer code

This commit is contained in:
2026-05-19 04:16:17 -06:00
parent 09475db932
commit f57c2c4137

View File

@@ -29,15 +29,18 @@ const files = ref<FileEntry[]>(
const selectedLanguage = ref<LANGUAGE>("Python3") const selectedLanguage = ref<LANGUAGE>("Python3")
// 始终显示所有语言,不管有没有答案代码
const availableLanguages = computed(() => const availableLanguages = computed(() =>
props.answers props.answers.map((a) => ({ label: a.language, value: a.language })),
.filter((a) => a.code.trim())
.map((a) => ({ label: a.language, value: a.language })),
) )
const hasAnswerCode = computed(() => availableLanguages.value.length > 0) // 当前选中语言是否有答案代码(用于控制"先运行"按钮)
const hasAnswerCode = computed(() => {
const answer = props.answers.find((a) => a.language === selectedLanguage.value)
return !!answer?.code.trim()
})
// 当可用语言列表变化时,确保 selectedLanguage 始终指向一个有效值 // 当语言列表变化时,确保 selectedLanguage 始终指向一个有效值
watch( watch(
availableLanguages, availableLanguages,
(langs) => { (langs) => {
@@ -144,17 +147,14 @@ async function upload() {
style="width: 120px" style="width: 120px"
:options="availableLanguages" :options="availableLanguages"
v-model:value="selectedLanguage" v-model:value="selectedLanguage"
:disabled="!hasAnswerCode"
placeholder="无答案"
/> />
<n-button size="small" :disabled="isRunning" @click="reset">清空</n-button> <n-button :disabled="isRunning" @click="reset">清空</n-button>
<n-button size="small" :disabled="isRunning" @click="add(1)">+1</n-button> <n-button :disabled="isRunning" @click="add(1)">+1</n-button>
<n-button size="small" :disabled="isRunning" @click="add(5)">+5</n-button> <n-button :disabled="isRunning" @click="add(5)">+5</n-button>
<n-tooltip :disabled="hasAnswerCode && hasAnyInput"> <n-tooltip :disabled="hasAnswerCode && hasAnyInput">
<template #trigger> <template #trigger>
<span> <span>
<n-button <n-button
size="small"
type="success" type="success"
:loading="isRunning" :loading="isRunning"
:disabled="!hasAnswerCode || !hasAnyInput" :disabled="!hasAnswerCode || !hasAnyInput"
@@ -167,7 +167,6 @@ async function upload() {
{{ !hasAnswerCode ? "请先在题目中填写答案代码" : "请先填写输入" }} {{ !hasAnswerCode ? "请先在题目中填写答案代码" : "请先填写输入" }}
</n-tooltip> </n-tooltip>
<n-button <n-button
size="small"
type="primary" type="primary"
:loading="isUploading" :loading="isUploading"
:disabled="!canUpload" :disabled="!canUpload"
@@ -197,7 +196,6 @@ async function upload() {
/> />
</n-flex> </n-flex>
<n-button <n-button
size="small"
:disabled="files.length === 1 || isRunning" :disabled="files.length === 1 || isRunning"
style="margin-top: 22px" style="margin-top: 22px"
@click="remove(index)" @click="remove(index)"