From 48e94aa8894e297a93b3ed495eba58b1d42a7f94 Mon Sep 17 00:00:00 2001 From: wangzhibiao Date: Sun, 20 Sep 2026 20:36:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AD=A6=E5=91=98=EF=BC=9A?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A0=E7=9C=9F=E5=AE=9E=E4=BE=9D=E6=8D=AE?= =?UTF-8?q?=E7=9A=84=E4=B8=AA=E4=BA=BA=E9=9B=B7=E8=BE=BE=E8=AF=84=E5=88=86?= =?UTF-8?q?=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build_ui/src/views/train/me/student/index.vue | 132 ++++++++++-------- 1 file changed, 74 insertions(+), 58 deletions(-) diff --git a/build_ui/src/views/train/me/student/index.vue b/build_ui/src/views/train/me/student/index.vue index 05e4344d7..849a09adf 100644 --- a/build_ui/src/views/train/me/student/index.vue +++ b/build_ui/src/views/train/me/student/index.vue @@ -227,20 +227,77 @@ - - + +
- 多维能力成长画像(真实能力模型分析) + 个人培训全生命周期客观表现全景(严格展示真实事实,无算法虚假评分)
刷新
-
-
-
- + + + + +
+ 课堂考勤打卡事实 +
+
+

正常出勤打卡:{{ attendanceNormalCount }} 次

+

异常打卡流水:{{ attendanceAbnormalCount }} 次(迟到/早退/请假/缺勤)

+

应出勤总课次:{{ timetableList.length }} 节

+
+
+
+ + + +
+ 班级参训与开班报到 +
+
+

当前参与班级:{{ enrollmentList.length }} 个

+

开班报到确认: + + {{ reportDetail ? '已完成报到' : '待确认报到' }} + +

+

累计已计学时:{{ totalHours }} 小时

+
+
+
+
+ + + + + +
+ 考核成绩状态 +
+ + + +
+
+ + + +
+ 自主实训与学习平台 +
+ + + +
+
+
@@ -291,6 +348,14 @@ export default { totalHours() { if (!this.durationList || this.durationList.length === 0) return 0 return this.durationList.reduce((acc, cur) => acc + Number(cur.totalDurationHours || cur.duration || 0), 0) + }, + attendanceNormalCount() { + if (!this.attendanceList || this.attendanceList.length === 0) return 0 + return this.attendanceList.filter(i => i.checkinStatus === 1).length + }, + attendanceAbnormalCount() { + if (!this.attendanceList || this.attendanceList.length === 0) return 0 + return this.attendanceList.filter(i => i.checkinStatus != null && i.checkinStatus !== 1).length } }, created() { @@ -398,64 +463,15 @@ export default { getMyPortrait() .then(res => { this.portraitData = res.data - // 仅当后端返回真实有效实体且具有 portraitId 时才判定为有数据,杜绝伪造数据 - if (this.portraitData && this.portraitData.portraitId) { - this.hasPortraitData = true - this.$nextTick(() => { - this.renderRadarChart() - }) - } else { - this.hasPortraitData = false - } this.portraitLoading = false }) .catch(() => { - this.hasPortraitData = false + this.portraitData = null this.portraitLoading = false }) }, - renderRadarChart() { - if (!this.$refs.radarChart) return - if (!this.chartInstance) { - this.chartInstance = echarts.init(this.$refs.radarChart) - } - const data = this.portraitData || {} - const option = { - title: { - text: (data.planName ? data.planName + ' · ' : '') + '综合成长能力画像', - left: 'center', - textStyle: { fontSize: 15, color: '#303133' } - }, - tooltip: {}, - radar: { - indicator: [ - { name: '出勤纪律(%)', max: 100 }, - { name: '理论成绩', max: 100 }, - { name: '实操成绩', max: 100 }, - { name: '学时评价', max: 100 } - ], - radius: '65%' - }, - series: [{ - name: '能力评价', - type: 'radar', - data: [{ - value: [ - Number(data.attendanceRate || 0), - Number(data.theoryScore || 0), - Number(data.practicalScore || 0), - Number(data.totalStudyHour || 0) - ], - name: '综合评分' - }] - }] - } - this.chartInstance.setOption(option) - }, handleResize() { - if (this.chartInstance) { - this.chartInstance.resize() - } + // 预留扩展 }, formatEnrollmentStatusText(status) { const map = { 0: '待报到', 1: '已报到', 2: '请假', 3: '退训', 4: '已完成' }