diff --git a/src/admin/problem/detail.vue b/src/admin/problem/detail.vue index a715997..b207105 100644 --- a/src/admin/problem/detail.vue +++ b/src/admin/problem/detail.vue @@ -344,19 +344,20 @@ async function validateProblem() { // 题目 else if ( !problem.value.description || - !problem.value.input_description || - !problem.value.output_description + (!isSQLProblem.value && + (!problem.value.input_description || !problem.value.output_description)) ) { message.error("题目或输入或输出没有填写") hasErrors = true } // 样例 - else if (problem.value.samples.length == 0) { + else if (!isSQLProblem.value && problem.value.samples.length == 0) { message.error("样例没有填写") hasErrors = true } // 样例是空的 else if ( + !isSQLProblem.value && problem.value.samples.some( (sample) => sample.output === "" || sample.input === "", ) @@ -432,12 +433,18 @@ function filterAnswers() { ) } +function filterSamplesForSQL() { + // SQL 题不展示样例;后端 CreateSampleSerializer 也不接受空字符串样例 + if (isSQLProblem.value) problem.value.samples = [] +} + async function submit() { const hasValidationErrors = await validateProblem() if (hasValidationErrors) return filterHint() getTemplate() filterAnswers() + filterSamplesForSQL() syncProblemTags() const api = { "admin problem create": createProblem, @@ -592,45 +599,47 @@ watch( :min-height="300" /> -
- - 测试样例 {{ index + 1 }} - - 删除 {{ index + 1 }} - - - - - - 输入样例 - - - - - - 输出样例 - - - - -
- - 添加用例 - +