From 69069f278c99e2975e5e818a00e3d085f90091a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=A2=A6?= Date: Fri, 1 May 2026 12:24:23 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=92=E8=A1=8C=E6=A6=9C=E3=80=81?= =?UTF-8?q?=E5=AD=A6=E5=91=98=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .components.d.ts | 3 + src/components/layout/AppHeader.vue | 25 +- src/components/lm/LmFilterTabs.vue | 85 ++++ src/components/lm/LmStudentSummaryTable.vue | 260 +++++++++++ src/components/lm/LmStudentTable.vue | 254 +++++++++++ src/router/index.ts | 18 + src/views/Subjects/RankingList.vue | 421 ++++++++++++++++++ src/views/Subjects/StudentManagement.vue | 455 ++++++++++++++++++++ src/views/Subjects/SubjectAnalysis.vue | 315 ++++++++++++++ src/views/Subjects/SubjectDetail.vue | 9 +- src/views/Subjects/WrongQuestions.vue | 54 +-- 11 files changed, 1846 insertions(+), 53 deletions(-) create mode 100644 src/components/lm/LmFilterTabs.vue create mode 100644 src/components/lm/LmStudentSummaryTable.vue create mode 100644 src/components/lm/LmStudentTable.vue create mode 100644 src/views/Subjects/RankingList.vue create mode 100644 src/views/Subjects/StudentManagement.vue create mode 100644 src/views/Subjects/SubjectAnalysis.vue diff --git a/.components.d.ts b/.components.d.ts index 314f6c6..0d8c3be 100644 --- a/.components.d.ts +++ b/.components.d.ts @@ -15,7 +15,10 @@ declare module 'vue' { ElDrawer: typeof import('element-plus/es')['ElDrawer'] ElOption: typeof import('element-plus/es')['ElOption'] ElSelect: typeof import('element-plus/es')['ElSelect'] + LmFilterTabs: typeof import('./src/components/lm/LmFilterTabs.vue')['default'] LmSelect: typeof import('./src/components/lm/LmSelect.vue')['default'] + LmStudentSummaryTable: typeof import('./src/components/lm/LmStudentSummaryTable.vue')['default'] + LmStudentTable: typeof import('./src/components/lm/LmStudentTable.vue')['default'] LoadingState: typeof import('./src/components/loading/LoadingState.vue')['default'] PageFrame: typeof import('./src/components/layout/PageFrame.vue')['default'] QuestionNumberNav: typeof import('./src/components/answerQuestions/QuestionNumberNav.vue')['default'] diff --git a/src/components/layout/AppHeader.vue b/src/components/layout/AppHeader.vue index 01ce556..b5cdd44 100644 --- a/src/components/layout/AppHeader.vue +++ b/src/components/layout/AppHeader.vue @@ -18,7 +18,13 @@
-
+
+
diff --git a/src/components/lm/LmStudentSummaryTable.vue b/src/components/lm/LmStudentSummaryTable.vue new file mode 100644 index 0000000..74b389b --- /dev/null +++ b/src/components/lm/LmStudentSummaryTable.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/src/components/lm/LmStudentTable.vue b/src/components/lm/LmStudentTable.vue new file mode 100644 index 0000000..284a27f --- /dev/null +++ b/src/components/lm/LmStudentTable.vue @@ -0,0 +1,254 @@ + + + + + diff --git a/src/router/index.ts b/src/router/index.ts index c100875..05d86b9 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -9,6 +9,18 @@ const router = createRouter({ name: 'subjects', component: () => import('@/views/Subjects/index.vue'), }, + { + path: '/subjects/student-management', + name: 'student-management', + component: () => import('@/views/Subjects/StudentManagement.vue'), + meta: { hideLayout: true }, + }, + { + path: '/subjects/ranking-list', + name: 'ranking-list', + component: () => import('@/views/Subjects/RankingList.vue'), + meta: { hideLayout: true }, + }, { path: '/subjects/:subject', name: 'subject-detail', @@ -33,6 +45,12 @@ const router = createRouter({ component: () => import('@/views/Subjects/WrongQuestions.vue'), meta: { hideLayout: true }, }, + { + path: '/subjects/:subject/analysis', + name: 'subject-analysis', + component: () => import('@/views/Subjects/SubjectAnalysis.vue'), + meta: { hideLayout: true }, + }, { path: '/answer-questions/wrong-retrain', name: 'wrong-retrain-answer', diff --git a/src/views/Subjects/RankingList.vue b/src/views/Subjects/RankingList.vue new file mode 100644 index 0000000..b5fa966 --- /dev/null +++ b/src/views/Subjects/RankingList.vue @@ -0,0 +1,421 @@ + + + + + diff --git a/src/views/Subjects/StudentManagement.vue b/src/views/Subjects/StudentManagement.vue new file mode 100644 index 0000000..6bffb73 --- /dev/null +++ b/src/views/Subjects/StudentManagement.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/src/views/Subjects/SubjectAnalysis.vue b/src/views/Subjects/SubjectAnalysis.vue new file mode 100644 index 0000000..f49e986 --- /dev/null +++ b/src/views/Subjects/SubjectAnalysis.vue @@ -0,0 +1,315 @@ + + + + + diff --git a/src/views/Subjects/SubjectDetail.vue b/src/views/Subjects/SubjectDetail.vue index 99e4543..e0af350 100644 --- a/src/views/Subjects/SubjectDetail.vue +++ b/src/views/Subjects/SubjectDetail.vue @@ -24,7 +24,7 @@ 学习神器 学习神器 - @@ -212,6 +212,13 @@ function goToWrongQuestions() { params: { subject: subjectName.value }, }); } + +function goToSubjectAnalysis() { + router.push({ + name: "subject-analysis", + params: { subject: subjectName.value }, + }); +}