diff --git a/apps/api/src/routes/admin/lesson.ts b/apps/api/src/routes/admin/lesson.ts index 67916a0..fe853ef 100644 --- a/apps/api/src/routes/admin/lesson.ts +++ b/apps/api/src/routes/admin/lesson.ts @@ -1,4 +1,4 @@ -import { adminLessonRequestSchema, STUDENT_ROLES, type AdminLessonList, type AdminLessonRequest } from '@oj2/contract' +import { adminLessonRequestSchema, lessonModeSchema, STUDENT_ROLES, type AdminLessonList, type AdminLessonRequest } from '@oj2/contract' import { and, count, desc, eq, inArray, sql } from 'drizzle-orm' import { Hono } from 'hono' @@ -24,7 +24,12 @@ adminLessonRoutes.get('/lessons', requireTeacher, async (c) => { const offset = queryInteger(c.req.query('offset'), 0, { min: 0 }) const className = c.req.query('className')?.trim() const teacherId = queryInteger(c.req.query('teacher'), 0, { min: 0 }) - const where = and(className ? eq(schema.classLesson.className, className) : undefined, teacherId ? eq(schema.classLesson.createdBy, teacherId) : undefined) + const mode = lessonModeSchema.safeParse(c.req.query('mode')).data + const where = and( + className ? eq(schema.classLesson.className, className) : undefined, + teacherId ? eq(schema.classLesson.createdBy, teacherId) : undefined, + mode ? eq(schema.classLesson.mode, mode) : undefined, + ) const [rows, [totalRow], teachers] = await Promise.all([ db diff --git a/apps/web/src/admin/api.ts b/apps/web/src/admin/api.ts index 02088c4..18a1179 100644 --- a/apps/web/src/admin/api.ts +++ b/apps/web/src/admin/api.ts @@ -786,9 +786,9 @@ export function deleteAchievement(id: number) { // ---------- 课堂任务(class_lesson) ---------- -export function getAdminLessons(offset: number, limit: number, filters: { className: string; teacher: number | null }) { +export function getAdminLessons(offset: number, limit: number, filters: { className: string; teacher: number | null; mode: string }) { return api.get('admin/lessons', { - params: { offset, limit, className: filters.className, teacher: filters.teacher ?? '' }, + params: { offset, limit, className: filters.className, teacher: filters.teacher ?? '', mode: filters.mode }, }) } diff --git a/apps/web/src/admin/task/list.vue b/apps/web/src/admin/task/list.vue index 99ad161..7890f23 100644 --- a/apps/web/src/admin/task/list.vue +++ b/apps/web/src/admin/task/list.vue @@ -1,8 +1,8 @@