diff --git a/pages/parent/report/report.wxml b/pages/parent/report/report.wxml index 19b63fd..fd4501d 100644 --- a/pages/parent/report/report.wxml +++ b/pages/parent/report/report.wxml @@ -187,7 +187,6 @@ 上次成绩 {{selectedFitnessItem.scoreTrendChart.axisY[selectedFitnessItem.scoreTrendChart.axisY.length - 2] || '- -'}} {{selectedFitnessItem.unit}} - 查看详细趋势 diff --git a/pages/teacher/count/count.js b/pages/teacher/count/count.js index 2310b4a..7c0fad3 100644 --- a/pages/teacher/count/count.js +++ b/pages/teacher/count/count.js @@ -164,7 +164,7 @@ Page({ pageIndex: this.data.page, PageSize: 20, }) - if(!this.data.nowCourse.id && res.data.datas.length > 0){ + if((!!this.data.nowCourse && !this.data.nowCourse.id) && res.data.datas.length > 0){ const detail = await getClassRoomReportDetails(res.data.datas[0].id) this.setData({ nowCourseDetail:this.data.nowCourse.id ? this.data.nowCourseDetail: detail.data @@ -176,7 +176,7 @@ Page({ courseList: refresh ? res.data.datas : [...this.data.courseList, ...res.data.datas], page: this.data.page + 1, hasMore: res.data.total > (this.data.page) * 20, - nowCourse: !this.data.nowCourse.id || refresh ? res.data.datas[0] : this.data.nowCourse, + nowCourse: (!!this.data.nowCourse && !this.data.nowCourse.id) || refresh ? res.data.datas[0] : this.data.nowCourse, }) }, @@ -378,7 +378,11 @@ Page({ hasMore:true },()=>{ if(this.data.isTrainer){ - this.getTrainClass(true) + if(this.data.activeTab === 0){ + this.getTrainClass(true) + }else if(this.data.activeTab === 1){ + this.getFitnessStudents() + } }else{ this.getClass() } diff --git a/subpackage/parent/fitness-detail/fitness-detail.js b/subpackage/parent/fitness-detail/fitness-detail.js index fe03784..86c2993 100644 --- a/subpackage/parent/fitness-detail/fitness-detail.js +++ b/subpackage/parent/fitness-detail/fitness-detail.js @@ -20,7 +20,7 @@ Page({ const fmt = v => (v != null && !isNaN(v)) ? Number(v).toFixed(1) : v const formattedItem = { ...item, - lastScore: fmt(item.lastScore), + lastScore: fmt(item.scoreTrendChart.axisY.slice(-1)[0]), classAvgScore: fmt(item.classAvgScore), schoolAvgScore: fmt(item.schoolAvgScore), } diff --git a/subpackage/parent/fitness-detail/fitness-detail.wxml b/subpackage/parent/fitness-detail/fitness-detail.wxml index 887da09..9d2496a 100644 --- a/subpackage/parent/fitness-detail/fitness-detail.wxml +++ b/subpackage/parent/fitness-detail/fitness-detail.wxml @@ -37,13 +37,13 @@ {{item ? item.lastScore : 0}} - + 机构平均成绩 diff --git a/subpackage/teacher/student-fitness-detail/student-fitness-detail.js b/subpackage/teacher/student-fitness-detail/student-fitness-detail.js index bccbb8f..706b18f 100644 --- a/subpackage/teacher/student-fitness-detail/student-fitness-detail.js +++ b/subpackage/teacher/student-fitness-detail/student-fitness-detail.js @@ -31,13 +31,28 @@ Page({ this.setData({ studentNo: options.studentNo || '' }); try { const res = await getReport({ studentNo: options.studentNo }); - const list = (res.data && res.data.categoryScoreList) || []; + const rawList = (res.data && res.data.categoryScoreList) || []; + const list = rawList.filter(item => !(item.name && item.name.includes('米') && item.name.includes('跑'))); + + // 雷达图根据 gradeId 过滤不适用的项目 + const gradeId = list.length > 0 ? list[0].gradeId : null; + let radarList = list; + if (gradeId !== null && gradeId !== undefined) { + if (gradeId <= 2) { + radarList = list.filter(item => item.name !== '一分钟仰卧起坐' && item.name !== '立定跳远'); + } else if (gradeId > 2 && gradeId <= 6) { + radarList = list.filter(item => item.name !== '立定跳远'); + } else if (gradeId > 6) { + radarList = list.filter(item => item.name !== '一分钟跳绳'); + } + } + const fitnessItems = list.map(item => ({ ...item, unit: UNIT_MAP[item.name] || '', })); this.setData({ - fitnessReport: list, + fitnessReport: radarList, fitnessItems, }, () => { // 如果 onReady 已经触发,数据到位后立即绘图 @@ -54,8 +69,9 @@ Page({ onReady() { const info = wx.getWindowInfo(); const pixelRatio = info.pixelRatio; - const radarCWidth = info.windowWidth * 0.86; - const radarCHeight = info.windowWidth * 0.86; + const rpxRatio = info.windowWidth / 750; + const radarCWidth = Math.floor(info.windowWidth - 2 * 30 * rpxRatio); + const radarCHeight = Math.floor(radarCWidth * 1.05); this.setData({ radarCWidth, radarCHeight, pixelRatio, readyFired: true }, () => { // 如果数据已经加载完,直接绘图;否则等 onLoad 回调里触发 if (this.data.fitnessReport && this.data.fitnessReport.length > 0) { @@ -66,9 +82,23 @@ Page({ drawRadarChart(that) { const list = that.data.fitnessReport || []; - const categories = list.map(i => i.name); + // 长文本自动换行(超过5字在中间插入换行) + const categories = list.map(i => { + const name = i.name || ''; + if (name.length > 5) { + const mid = Math.ceil(name.length / 2); + return name.slice(0, mid) + '\n' + name.slice(mid); + } + return name; + }); const prevData = list.map(i => i.prevScore || 0); const currentData = list.map(i => i.lastScore || 0); + // 本次成绩数据标签:显示分数 + 等级 + const currentDataLabels = list.map(i => { + const score = i.lastScore != null ? i.lastScore : ''; + const rank = i.rank != null ? i.rank : ''; + return rank ? score + '\n' + rank : String(score); + }); const query = wx.createSelectorQuery().in(that); query.select('#radarCanvas').fields({ node: true, size: true }).exec(res => { @@ -84,26 +114,27 @@ Page({ height: that.data.radarCHeight * that.data.pixelRatio, categories, series: [ - { name: '上次成绩', data: prevData, color: '#4A90E2' }, - { name: '本次成绩', data: currentData, color: '#E74C3C' }, + { name: '上次成绩', data: prevData, color: '#4A90E2', dataLabel: false }, + { name: '本次成绩', data: currentData, color: '#E74C3C', dataLabels: currentDataLabels, textColor: '#E74C3C', textSize: 11 }, ], pixelRatio: that.data.pixelRatio, animation: true, + tapLegend: true, background: 'rgba(0,0,0,0)', color: ['#4A90E2', '#E74C3C'], - padding: [0, 0, 0, 10], + padding: [0, 0, 0, 15], legend: { show: true, position: 'bottom', float: 'center', fontSize: 12, lineHeight: 11, - margin: 5, + margin: 0, itemGap: 20, }, extra: { radar: { - gridType: 'radar', + gridType: that.data.fitnessReport.length === 4 ? 'circle' : 'radar', gridColor: '#CCCCCC', gridCount: 4, opacity: 0.15, @@ -112,6 +143,7 @@ Page({ labelShow: true, labelColor: '#333', fontSize: 13, + labelMargin: 30, labelPointShow: false, max: 100, }, diff --git a/subpackage/teacher/student-fitness-detail/student-fitness-detail.wxml b/subpackage/teacher/student-fitness-detail/student-fitness-detail.wxml index 2d4085d..dde0789 100644 --- a/subpackage/teacher/student-fitness-detail/student-fitness-detail.wxml +++ b/subpackage/teacher/student-fitness-detail/student-fitness-detail.wxml @@ -53,7 +53,7 @@ 上次成绩 {{selectedFitnessItem.prevScore}} {{selectedFitnessItem.unit}} - + 查看详细趋势