diff --git a/apps/web/src/admin/problem/components/SQLTestcaseEditor.vue b/apps/web/src/admin/problem/components/SQLTestcaseEditor.vue index 7717ecd..7263f43 100644 --- a/apps/web/src/admin/problem/components/SQLTestcaseEditor.vue +++ b/apps/web/src/admin/problem/components/SQLTestcaseEditor.vue @@ -181,14 +181,16 @@ async function upload() { const file = new File([blob], "testcase.zip", { type: "application/zip" }) const res = await uploadTestcases(file, { sql: true }) - const testcases: Testcase[] = res.data.info - const baseScore = Math.floor(100 / testcases.length) - const remainder = 100 - baseScore * testcases.length - testcases.forEach((tc, i) => { - tc.score = String( - i === testcases.length - 1 ? baseScore + remainder : baseScore, - ) - }) + // score 不在上传响应里,是这里按测试点数量平分补上的(余数给最后一个) + const entries = res.data.info + const baseScore = Math.floor(100 / entries.length) + const remainder = 100 - baseScore * entries.length + const testcases: Testcase[] = entries.map((entry, i) => ({ + ...entry, + score: String( + i === entries.length - 1 ? baseScore + remainder : baseScore, + ), + })) emit("uploaded", res.data.id, testcases) message.success("上传成功") diff --git a/apps/web/src/admin/problem/components/TestcaseGenerator.vue b/apps/web/src/admin/problem/components/TestcaseGenerator.vue index 589ce29..3eb79a1 100644 --- a/apps/web/src/admin/problem/components/TestcaseGenerator.vue +++ b/apps/web/src/admin/problem/components/TestcaseGenerator.vue @@ -169,14 +169,16 @@ async function upload() { const file = new File([blob], "testcase.zip", { type: "application/zip" }) const res = await uploadTestcases(file) - const testcases: Testcase[] = res.data.info - const baseScore = Math.floor(100 / testcases.length) - const remainder = 100 - baseScore * testcases.length - testcases.forEach((tc, i) => { - tc.score = String( - i === testcases.length - 1 ? baseScore + remainder : baseScore, - ) - }) + // score 不在上传响应里,是这里按测试点数量平分补上的(余数给最后一个) + const entries = res.data.info + const baseScore = Math.floor(100 / entries.length) + const remainder = 100 - baseScore * entries.length + const testcases: Testcase[] = entries.map((entry, i) => ({ + ...entry, + score: String( + i === entries.length - 1 ? baseScore + remainder : baseScore, + ), + })) emit("uploaded", res.data.id, testcases) message.success("上传成功") diff --git a/apps/web/src/admin/problem/detail.vue b/apps/web/src/admin/problem/detail.vue index 53a09fa..af71d82 100644 --- a/apps/web/src/admin/problem/detail.vue +++ b/apps/web/src/admin/problem/detail.vue @@ -294,10 +294,12 @@ async function handleUploadTestcases({ file }: UploadCustomRequestOptions) { message.error("上传测试用例失败") return } - const testcases = res.data.info - for (let file of testcases) { - file.score = (100 / testcases.length).toFixed(0) - } + // score 不在上传响应里,前端按测试点数量平分补上 + const entries = res.data.info + const testcases: Testcase[] = entries.map((entry) => ({ + ...entry, + score: (100 / entries.length).toFixed(0), + })) problem.value.testCaseScore = testcases problem.value.testCaseId = res.data.id } catch (err) { diff --git a/apps/web/src/admin/tutorial/detail.vue b/apps/web/src/admin/tutorial/detail.vue index 500b385..dd6893f 100644 --- a/apps/web/src/admin/tutorial/detail.vue +++ b/apps/web/src/admin/tutorial/detail.vue @@ -1,7 +1,7 @@