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"
/>