From 20a6ddc79c2253655a139bf154322c8327868653 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Sat, 19 Sep 2026 05:07:37 -0600 Subject: [PATCH] =?UTF-8?q?feat(=E8=87=AA=E5=AD=A6):=20=E9=87=8D=E5=81=9A?= =?UTF-8?q?=E5=AD=A6=E7=94=9F=E7=AB=AF=E9=A1=B5=E9=9D=A2=E4=B8=8E=E6=95=99?= =?UTF-8?q?=E5=B8=88=E7=AB=AF=E5=AD=A6=E6=83=85=E6=A6=82=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 学生端:目录 + 居中限宽正文 + 可收起的示例代码栏;目录改成三态圆点, 顶部加总进度;上一课/下一课栏桌面端固定在底部。 教师端:汇总卡片、学生状态标签与筛选(未开始/7 天没学/只读不练等)、 最后学习补「N 天前」、按练习表加「没人一次对/多数人卡住」提示。 Co-Authored-By: Claude Sonnet 5 --- apps/web/src/admin/learn/index.vue | 186 ++++++++++++++- .../src/oj/learn/components/LearnSummary.vue | 55 +++++ .../src/oj/learn/components/LessonBody.vue | 24 ++ .../src/oj/learn/components/LessonList.vue | 159 ++++++++----- apps/web/src/oj/learn/components/PagerBar.vue | 38 +++ .../oj/learn/composables/useExerciseParse.ts | 2 +- apps/web/src/oj/learn/index.vue | 222 ++++++++---------- 7 files changed, 498 insertions(+), 188 deletions(-) create mode 100644 apps/web/src/oj/learn/components/LearnSummary.vue create mode 100644 apps/web/src/oj/learn/components/LessonBody.vue create mode 100644 apps/web/src/oj/learn/components/PagerBar.vue diff --git a/apps/web/src/admin/learn/index.vue b/apps/web/src/admin/learn/index.vue index d9e70cc..bdc38d8 100644 --- a/apps/web/src/admin/learn/index.vue +++ b/apps/web/src/admin/learn/index.vue @@ -1,6 +1,6 @@ + + + + diff --git a/apps/web/src/oj/learn/components/LessonBody.vue b/apps/web/src/oj/learn/components/LessonBody.vue new file mode 100644 index 0000000..0ae6675 --- /dev/null +++ b/apps/web/src/oj/learn/components/LessonBody.vue @@ -0,0 +1,24 @@ + + + diff --git a/apps/web/src/oj/learn/components/LessonList.vue b/apps/web/src/oj/learn/components/LessonList.vue index 7f73d98..14ad2ae 100644 --- a/apps/web/src/oj/learn/components/LessonList.vue +++ b/apps/web/src/oj/learn/components/LessonList.vue @@ -1,9 +1,8 @@ + + diff --git a/apps/web/src/oj/learn/components/PagerBar.vue b/apps/web/src/oj/learn/components/PagerBar.vue new file mode 100644 index 0000000..8fc4206 --- /dev/null +++ b/apps/web/src/oj/learn/components/PagerBar.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/apps/web/src/oj/learn/composables/useExerciseParse.ts b/apps/web/src/oj/learn/composables/useExerciseParse.ts index aa483ba..e8fb43c 100644 --- a/apps/web/src/oj/learn/composables/useExerciseParse.ts +++ b/apps/web/src/oj/learn/composables/useExerciseParse.ts @@ -1,6 +1,6 @@ import type { Exercise } from "utils/types" -type Segment = +export type Segment = { type: "md"; content: string } | { type: "exercise"; exercise: Exercise } export function parseExercises( diff --git a/apps/web/src/oj/learn/index.vue b/apps/web/src/oj/learn/index.vue index b6aecd6..52eb5eb 100644 --- a/apps/web/src/oj/learn/index.vue +++ b/apps/web/src/oj/learn/index.vue @@ -1,14 +1,18 @@