@@ -690,20 +691,42 @@ async function initGradeWholeDataStats(val) {
console.error('Error occurred while calling API:', error);
}
}
-// 查看详情
-function toView(val) {
+// 查看详情 - 年级报告表格点击,切换到班级报告 tab
+function toView(val: any) {
console.log(val, 'valllllltoView==============>')
const gradeName = val.gradeAndClassName.split("-")[0];
- console.log(gradeName,'gradeName')
- console.log(data.value.classes,'data.value.classes')
- const grade = data.value.classes.find(item => item.label.startsWith(gradeName));
- console.log(grade,'gradeeeeee')
- let params = {
- id: val.classId,
- gradeId: grade.value
+ const grade = data.value.classes.find((item: any) => item.label.startsWith(gradeName));
+ if (grade) {
+ classTabId.value = [grade.value, val.classId]
+ onClassTabChange([grade.value, val.classId])
+ switchTab('class')
+ }
+}
+// 班级报告内嵌表格"查看详情"→切换到学生报告 tab
+async function onEmbeddedToViewStudent(e: any) {
+ console.log(e, 'onEmbeddedToViewStudent')
+ // e 是 commonTable 行数据,包含 classId, studentNo 等
+ const gradeId = classTabId.value?.[0]
+ const classId = classTabId.value?.[1]
+ // 在级联选择器中选择班级
+ studentClassTabId.value = [gradeId, classId]
+ await onStudentClassChange([gradeId, classId])
+ // 学生列表加载完成后设置选中
+ const stu = studentList.value.find((s: any) => s.studentNo === e.studentNo || s.StudentNo === e.studentNo)
+ if (stu) {
+ studentTabId.value = stu
+ onStudentTabChange(stu)
+ }
+ switchTab('student')
+}
+// 教师报告内嵌表格"查看详情"→切换到班级报告 tab
+function onEmbeddedToStudentView(result: any) {
+ console.log(result, 'onEmbeddedToStudentView')
+ if (result) {
+ classTabId.value = [result.gradeId, result.id]
+ onClassTabChange([result.gradeId, result.id])
+ switchTab('class')
}
- // let params=[val.classId,data.value.newGradeId!=0?data.value.newGradeId:1]
- eventBus.emit('toDetail', params)
}
// 年级体测平均成绩
function averageBar(val) {
@@ -1274,11 +1297,26 @@ async function toViewStudent(val) {
data.value.dialogData.dialogVisible = true
}
-function toViewStudentDetail(val) {
+async function toViewStudentDetail(val: any) {
console.log(val, 'toViewStudentDetail')
- let k = data.value.gradeList.filter(item => item.gradeName == val.gradeName)
- val.gradeId = k[0].id
- eventBus.emit('toViewStudent', val);
+ // 找到对应的 gradeId
+ let k = data.value.gradeList.filter((item: any) => item.gradeName == val.gradeName)
+ val.gradeId = k[0]?.id
+ // 找到对应的 classId
+ const gradeData = data.value.classes.find((item: any) => item.label === val.gradeName) as any
+ const classObj = gradeData?.children?.find((c: any) => c.label === val.className) as any
+ const classId = val.classId || classObj?.value
+ const gradeId = val.gradeId || gradeData?.value
+ // 切换到学生报告 tab
+ studentClassTabId.value = [gradeId, classId]
+ await onStudentClassChange([gradeId, classId])
+ const stu = studentList.value.find((s: any) => s.studentNo === val.studentNo || s.StudentNo === val.studentNo)
+ if (stu) {
+ studentTabId.value = stu
+ onStudentTabChange(stu)
+ }
+ switchTab('student')
+ data.value.dialogData.dialogVisible = false
}
diff --git a/src/views/StudentDataStatistics/index.vue b/src/views/StudentDataStatistics/index.vue
index 4a3a0a6..e0a2d39 100644
--- a/src/views/StudentDataStatistics/index.vue
+++ b/src/views/StudentDataStatistics/index.vue
@@ -108,6 +108,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -117,9 +127,12 @@ import * as echarts from 'echarts';
import * as _api from '@/api/grade.js'
import { useRoute } from 'vue-router';
import axios from 'axios'
-import eventBus from '@/eventBus';
import { ElMessage } from 'element-plus';
+import TrainingRecords from '@/views/studentsManage/trainingRecords/index.vue';
+import ExaminationRecords from '@/views/studentsManage/examinationRecords/index.vue';
const route = useRoute();
+const showTrainingDialog = ref(false)
+const showPhysicalDialog = ref(false)
const data = ref({
selectData: 1,
selectOptions: [{
@@ -397,13 +410,15 @@ async function initResultTrends1(a, b, c, d) {
}
}
-// 点击训练记录
+// 点击训练记录 → 弹窗展示
function toRecord() {
- eventBus.emit('toRecord', data.value.paramsValue)
+ localStorage.setItem('toRecord', JSON.stringify(data.value.paramsValue))
+ showTrainingDialog.value = true
}
-// 点击体测记录
+// 点击体测记录 → 弹窗展示
function stamina() {
- eventBus.emit('toPhysical', data.value.paramsValue)
+ localStorage.setItem('toRecord', JSON.stringify(data.value.paramsValue))
+ showPhysicalDialog.value = true
}
// 近五节课心率变化echarts
function heartEcharts(val) {
diff --git a/src/views/classView1/index.vue b/src/views/classView1/index.vue
index 9d3976e..5dd3247 100644
--- a/src/views/classView1/index.vue
+++ b/src/views/classView1/index.vue
@@ -93,6 +93,8 @@ import { useRoute } from 'vue-router';
import * as _api from '@/api/grade.js';
import commonTable from '@/views/motionData/trainingData/components/commonTbale/index.vue';
import eventBus from '@/eventBus';
+const props = defineProps<{ embedded?: boolean }>()
+const emit = defineEmits(['toViewStudent'])
const route = useRoute();
const data = ref({
selectData: 1,
@@ -274,7 +276,11 @@ onBeforeUnmount(() => {
})
function toView(e) {
// console.log(e, 'eeeeeeeeeee')
- eventBus.emit('toViewStudent', e)
+ if (props.embedded) {
+ emit('toViewStudent', e)
+ } else {
+ eventBus.emit('toViewStudent', e)
+ }
}
// 切换等级占比项目
function changeProject(e) {
diff --git a/src/views/studentsManage/examinationRecords/index.vue b/src/views/studentsManage/examinationRecords/index.vue
index c9b1ce2..4923405 100644
--- a/src/views/studentsManage/examinationRecords/index.vue
+++ b/src/views/studentsManage/examinationRecords/index.vue
@@ -352,7 +352,7 @@ function paginateTableData(pageIndex, pageSize) {