From 97426f0895b95cb911c4afe664e030bf8932b64a Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Fri, 9 Oct 2026 12:57:14 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E9=A2=98=E7=9B=AE=E5=88=97=E8=A1=A8):=20?= =?UTF-8?q?=E9=80=89=E4=BA=86=E7=9F=A5=E8=AF=86=E7=82=B9=E5=90=8E=E9=A2=98?= =?UTF-8?q?=E7=9B=AE=E6=94=B9=E6=88=90=E6=8C=89=E9=A2=98=E5=8F=B7=E6=8E=92?= =?UTF-8?q?=EF=BC=8C=E5=92=8C=E5=B9=B3=E6=97=B6=E7=9C=8B=E6=83=AF=E7=9A=84?= =?UTF-8?q?=E3=80=8C=E6=9C=80=E6=96=B0=E7=9A=84=E5=9C=A8=E5=89=8D=E3=80=8D?= =?UTF-8?q?=E4=B8=8D=E4=B8=80=E6=A0=B7=E2=80=94=E2=80=94=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=B8=80=E5=BE=8B=E6=8C=89=E6=9C=80=E6=96=B0=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 排序下拉固定三项:最新创建(默认)/ 按题号 / 最多人做对。 Co-Authored-By: Claude Opus 5.5 --- apps/api/src/routes/problem.ts | 6 +++--- apps/web/src/oj/problem/list.vue | 15 ++++++--------- packages/contract/src/problem.ts | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/api/src/routes/problem.ts b/apps/api/src/routes/problem.ts index 974477a..5425175 100644 --- a/apps/api/src/routes/problem.ts +++ b/apps/api/src/routes/problem.ts @@ -169,10 +169,10 @@ problemRoutes.get("/problems", optionalAuth, async (c) => { filters.push(notInArray(schema.problem.id, [...states.solved])) const where = and(...filters) - // 默认:选了知识点按题号(同一系列的题挨在一起),全部题目按最新创建。 - // 旧的排序值(最多提交、画流程图……)落到默认 —— 类型已经拆成了单独的筛选 + // 默认按最新创建(选了知识点也一样)。旧的排序值(最多提交、画流程图……)落到默认 —— + // 类型已经拆成了单独的筛选 const sort = problemListSortSchema.safeParse(c.req.query("sort") ?? "").data ?? "" - const effective = sort || (tag ? "id" : "new") + const effective = sort || "new" const allCounts = effective === "popular" ? await problemUserCounts() : null const popularity = allCounts ? sql`case ${schema.problem.id} ${sql.join( diff --git a/apps/web/src/oj/problem/list.vue b/apps/web/src/oj/problem/list.vue index ca5fe89..3863f15 100644 --- a/apps/web/src/oj/problem/list.vue +++ b/apps/web/src/oj/problem/list.vue @@ -179,15 +179,12 @@ const countText = computed(() => { return { kind: "total" as const, n: total.value } }) -// ---- 排序:默认随知识点走(选了按题号,全部按最新创建),下拉里显示的是实际生效的那个 ---- -const sortOptions = computed(() => { - const byId = !!query.tag - return [ - { label: byId ? "按题号" : "最新创建", value: "" }, - { label: byId ? "最新创建" : "按题号", value: byId ? "new" : "id" }, - { label: "最多人做对", value: "popular" }, - ] -}) +// ---- 排序:默认按最新创建(选了知识点也一样) ---- +const sortOptions = [ + { label: "最新创建", value: "" }, + { label: "按题号", value: "id" }, + { label: "最多人做对", value: "popular" }, +] // ---- 出题者 ---- const authorOptions = ref<{ label: string; value: string }[]>([]) diff --git a/packages/contract/src/problem.ts b/packages/contract/src/problem.ts index b07ad38..34af3f0 100644 --- a/packages/contract/src/problem.ts +++ b/packages/contract/src/problem.ts @@ -439,7 +439,7 @@ export const problemListSchema = paginatedSchema(problemListItemSchema) /** 题目列表「全部类型」下拉:有参考图 / 画流程图 / 语法要求 */ export const problemTypeFilterSchema = z.enum(["reference", "flowchart", "ast"]) -/** 题目列表的排序。空串是默认:选了知识点按题号,全部题目按最新创建 */ +/** 题目列表的排序。空串是默认:按最新创建 */ export const problemListSortSchema = z.enum(["", "id", "new", "popular"]) /**