classStudentRecode.tsx 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { defineComponent, onMounted, reactive, ref } from 'vue';
  2. import styles from '../index.module.less';
  3. import {
  4. NButton,
  5. NDataTable,
  6. NForm,
  7. NFormItem,
  8. NImage,
  9. NSelect,
  10. NSpace,
  11. NTabPane,
  12. NTabs
  13. } from 'naive-ui';
  14. import { getStudentDetail, getTrainingStudentList } from '../api';
  15. import { useRoute } from 'vue-router';
  16. import CBreadcrumb from '/src/components/CBreadcrumb';
  17. import defultHeade from '@/components/layout/images/teacherIcon.png';
  18. import femaleIcon from '@/views/setting/images/femaleIcon.png';
  19. import maleIcon from '@/views/setting/images/maleIcon.png';
  20. import PracticeData from '@/views/studentList/components/practiceData';
  21. import EvaluationRecords from '@/views/studentList/components/evaluationRecords';
  22. import dayjs from 'dayjs';
  23. export default defineComponent({
  24. name: 'classStudentRecode',
  25. setup(props, { emit }) {
  26. const state = reactive({
  27. studentInfo: { avatar: '', nickname: '', gender: null, subjectNames: '' }
  28. });
  29. const activeStudentTab = ref('textRcode');
  30. const route = useRoute();
  31. const routerList = ref([
  32. { name: '班级管理', path: '/classList' },
  33. { name: route.query.name, path: '/classDetail' },
  34. { name: route.query.studentName, path: '/classStudentRecode' }
  35. ] as any);
  36. const getWorkInfo = async () => {
  37. console.log(route.query.studentId);
  38. try {
  39. const res = await getStudentDetail({
  40. id: route.query.studentId
  41. });
  42. state.studentInfo = { ...res.data };
  43. } catch (e) {
  44. console.log(e);
  45. }
  46. };
  47. onMounted(() => {
  48. getWorkInfo();
  49. });
  50. return () => (
  51. <div>
  52. <CBreadcrumb list={routerList.value}></CBreadcrumb>
  53. <div class={styles.listWrap}>
  54. <div class={styles.teacherList}>
  55. <div class={styles.teacherHeader}>
  56. <div class={styles.teacherHeaderBorder}>
  57. <NImage
  58. class={styles.teacherHeaderImg}
  59. src={
  60. state.studentInfo.avatar
  61. ? state.studentInfo.avatar
  62. : defultHeade
  63. }
  64. previewDisabled></NImage>
  65. </div>
  66. </div>
  67. <div class={styles.workafterInfo}>
  68. <h4 class={styles.studentGender}>
  69. {state.studentInfo.nickname}{' '}
  70. <NImage
  71. src={
  72. state.studentInfo.gender ? maleIcon : femaleIcon
  73. }></NImage>
  74. </h4>
  75. <p>
  76. {route.query.name}{' '}
  77. {state.studentInfo.subjectNames
  78. ? '|' + state.studentInfo.subjectNames
  79. : ''}
  80. </p>
  81. </div>
  82. </div>
  83. <NTabs
  84. class={styles.customTabs}
  85. v-model:value={activeStudentTab.value}
  86. size="large"
  87. animated={false}
  88. pane-wrapper-style="margin: 0 -4px"
  89. pane-style="padding-left: 4px; padding-right: 4px; box-sizing: border-box;">
  90. <NTabPane name="textRcode" tab="练习记录">
  91. <PracticeData
  92. classGroupId={route.query.id as string}
  93. studentId={route.query.studentId as string}></PracticeData>
  94. </NTabPane>
  95. <NTabPane name="evaluatingRcode" tab="评测记录">
  96. <EvaluationRecords
  97. classGroupId={route.query.id as string}
  98. studentId={route.query.studentId as string}></EvaluationRecords>
  99. </NTabPane>
  100. </NTabs>
  101. </div>
  102. </div>
  103. );
  104. }
  105. });