From 339c871d65abc44020342d5664d362f89a3304e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=98=BF=E6=A2=A6?= Date: Sat, 30 May 2026 11:29:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AF=B9=E6=8E=A5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 4 +- project.config.json | 2 +- src/api/homework.ts | 43 ++- src/api/parent.ts | 144 ++++++++ src/pages.json | 2 +- src/pages/parent/analysis/index.vue | 537 ++++++++++++++++++++-------- src/pages/parent/home/index.vue | 124 ++++++- src/pages/parent/reports/detail.vue | 182 ++++++++-- src/pages/parent/utils/data.ts | 3 +- src/pages/wrong/index.vue | 129 ++++++- src/utils/subject.ts | 6 + 11 files changed, 959 insertions(+), 217 deletions(-) diff --git a/.env b/.env index e542642..8a18c18 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ -VITE_BASE_URL = http://43.136.52.196:9053 - # VITE_BASE_URL = https://ai.lingxixue.com + #VITE_BASE_URL = http://43.136.52.196:9053 + VITE_BASE_URL = https://ai.lingxixue.com # VITE_WS_URL = ws://8.138.151.141:8888/ VITE_WS_URL = ws://ec2-13-36-229-106.eu-west-3.compute.amazonaws.com:8888/ diff --git a/project.config.json b/project.config.json index a13f88f..037c413 100644 --- a/project.config.json +++ b/project.config.json @@ -4,6 +4,7 @@ "compileType": "miniprogram", "appid": "wxa5522671f30c5891", "projectname": "灵犀学", + "libVersion": "3.4.4", "setting": { "urlCheck": false, "es6": true, @@ -14,6 +15,5 @@ "ignoreUploadUnusedFiles": false, "minifyWXML": true }, - "libVersion": "3.4.4", "condition": {} } diff --git a/src/api/homework.ts b/src/api/homework.ts index 359b615..4274113 100644 --- a/src/api/homework.ts +++ b/src/api/homework.ts @@ -138,9 +138,50 @@ export const getPaperRecordDetail = (data: { recordId: string; reportFlag: numbe data, }); +export interface JobReportVo { + actualScore?: number; + beginTime?: string; + costTime?: number; + jobId?: number; + jobName?: string; + submitEndTime?: string; + totalScore?: number; + userId?: number; +} + +export interface PaperChanelAnalyzeItem { + chanelTypeName?: string; + titleCount?: number; +} + +export interface PaperDifficultyAnalyzeItem { + actualScore?: number; + difficultyName?: string; + /** 百分比比例,乘以 10000,如 9850 表示 98.5% */ + proportion?: number; + score?: number; + titleCount?: number; +} + +export interface StuRankVoItem { + markScore?: number; + paperScore?: number; + rankNum?: number; + scoreRate?: number; + selfFlag?: number; + stuName?: string; +} + +export interface JobAnalyseVo { + jobReportVo?: JobReportVo; + paperChanelAnalyzeList?: PaperChanelAnalyzeItem[]; + paperDifficultyAnalyzeList?: PaperDifficultyAnalyzeItem[]; + stuRankVoList?: StuRankVoItem[]; +} + /** 作业整体分析 */ export const getJobAnalyse = (params: { recordId: string }) => - request({ + request({ url: '/sc/job/getJobAnalyse', method: 'GET', params, diff --git a/src/api/parent.ts b/src/api/parent.ts index 2616d27..53ae4c7 100644 --- a/src/api/parent.ts +++ b/src/api/parent.ts @@ -90,6 +90,150 @@ export const manualBindChild = (childAcc: string) => data: `childAcc=${encodeURIComponent(childAcc.trim())}`, }); +export interface WrongKpointRatioItem { + errorCount?: number; + kpointId?: number; + kpointName?: string; + ratio?: number; + ratioPercent?: number; +} + +export interface WrongKpointRatioResult { + items?: WrongKpointRatioItem[]; + subjectId?: number; + subjectName?: string; + totalErrorCount?: number; +} + +export interface KpointScoreItem { + kpointId?: number; + kpointName?: string; + actualScore?: number; + fullscore?: number; + scoreRate?: number; + scoreRatePercent?: number; + levelCode?: number; + levelName?: string; +} + +export interface KpointScoreLevel { + levelCode?: number; + levelName?: string; + items?: KpointScoreItem[]; +} + +export interface KpointScoreResult { + subjectId?: number; + subjectName?: string; + levels?: KpointScoreLevel[]; +} + +export interface ScoreAbilityPoint { + hasData?: boolean; + scoreAbility?: number; + scoreRate?: number; + statDate?: string; +} + +export interface ScoreAbilityResult { + assessmentCode?: number; + assessmentName?: string; + endDate?: string; + overallScoreAbility?: number; + points?: ScoreAbilityPoint[]; + stabilityCode?: number; + stabilityName?: string; + startDate?: string; + subjectId?: number; + subjectName?: string; +} + +export interface WrongQuestionSubjectSummary { + subjectId?: number; + subjectName?: string; + totalCount?: number; + masteredCount?: number; + reviewCount?: number; + newCount?: number; +} + +export interface WrongQuestionSummaryResult { + thisWeekStart?: string; + thisWeekEnd?: string; + subjects?: WrongQuestionSubjectSummary[]; +} + +export type WeeklySubjectTrendCode = 'PROGRESS' | 'REGRESSION' | 'STABLE' | 'NO_COMPARE'; + +export interface WeeklySubjectItem { + subjectId?: number; + subjectName?: string; + levelCode?: number; + levelName?: string; + thisWeekRecordCount?: number; + thisWeekScoreRate?: number; + lastWeekRecordCount?: number; + lastWeekScoreRate?: number | null; + delta?: number | null; + trendCode?: WeeklySubjectTrendCode | string; + trendName?: string; +} + +export interface WeeklySubjectLevel { + levelCode?: number; + levelName?: string; + subjects?: WeeklySubjectItem[]; +} + +export interface WeeklySubjectResult { + lastWeekEnd?: string; + lastWeekStart?: string; + thisWeekEnd?: string; + thisWeekStart?: string; + levels?: WeeklySubjectLevel[]; + subjects?: WeeklySubjectItem[]; +} + +/** 家长端首页 - 本周学科分层与趋势 */ +export const getWeeklySubject = (params: { userId: string | number }) => + request({ + url: '/school/parent/weeklySubject', + method: 'GET', + params, + }); + +/** 家长端 - 错题汇总(按学科) */ +export const getWrongQuestionSummary = (params: { userId: string | number }) => + request({ + url: '/school/parent/wrongQuestionSummary', + method: 'GET', + params, + }); + +/** 家长端 - 错题知识点占比 */ +export const getWrongKpointRatio = (params: { subjectId: string | number; userId: string | number }) => + request({ + url: '/school/parent/wrongKpointRatio', + method: 'GET', + params, + }); + +/** 家长端 - 知识点得分(按等级分组) */ +export const getKpointScore = (params: { subjectId: string | number; userId: string | number }) => + request({ + url: '/school/parent/kpointScore', + method: 'GET', + params, + }); + +/** 家长端 - 得分能力趋势 */ +export const getScoreAbility = (params: { subjectId: string | number; userId: string | number }) => + request({ + url: '/school/parent/scoreAbility', + method: 'GET', + params, + }); + /** 扫码后申请绑定孩子/设备 */ export const parentBindApply = (params: { childId?: string | number; diff --git a/src/pages.json b/src/pages.json index 5617aab..a59bb07 100644 --- a/src/pages.json +++ b/src/pages.json @@ -195,7 +195,7 @@ "role": "parent" }, "style": { - "navigationBarTitleText": "成绩查询家长主页", + "navigationBarTitleText": "家长主页", "mp-weixin": { "pageOrientation": "portrait" } diff --git a/src/pages/parent/analysis/index.vue b/src/pages/parent/analysis/index.vue index f9e818c..d0843ac 100644 --- a/src/pages/parent/analysis/index.vue +++ b/src/pages/parent/analysis/index.vue @@ -1,32 +1,43 @@ @@ -253,13 +479,21 @@ const abilityChartOpts = { margin-top: 36rpx; } +.loading-wrap { + padding: 24rpx 0; +} + +.ratio-scroll { + min-height: 280rpx; + max-height: 520rpx; +} + .ratio-layout { display: flex; - align-items: center; + align-items: flex-start; gap: 28rpx; width: 100%; max-width: 100%; - overflow: hidden; } .ratio-main { @@ -370,12 +604,17 @@ const abilityChartOpts = { } } -.score-table { +.score-table-wrap { border: 2rpx solid #e2e8f0; border-radius: 24rpx; overflow: hidden; } +.score-table-scroll { + min-height: 280rpx; + max-height: 520rpx; +} + .score-row { display: grid; grid-template-columns: minmax(0, 1fr) 112rpx 150rpx; diff --git a/src/pages/parent/home/index.vue b/src/pages/parent/home/index.vue index 31fa7ce..d534da9 100644 --- a/src/pages/parent/home/index.vue +++ b/src/pages/parent/home/index.vue @@ -14,20 +14,25 @@ - - {{ band.label.slice(0, 2) }} - - - {{ item.subject }} - {{ trendText(item.status) }} - - - 暂无需要关注的学科 + + + - + - + @@ -58,41 +63,117 @@