classDetail.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { defineComponent, onMounted, ref } from 'vue';
  2. import styles from './index.module.less';
  3. import { NTabs, NTabPane } from 'naive-ui';
  4. import { useRoute, onBeforeRouteUpdate } from 'vue-router';
  5. import CBreadcrumb from '@/components/CBreadcrumb';
  6. import ClassStudent from './components/classStudent';
  7. import AfterWork from './components/afterWork';
  8. import ClassRecord from './components/classRecord';
  9. import TestRecode from './components/testRecode';
  10. import { getTabsCache, setTabsCaches } from '@/hooks/use-async';
  11. import { classGroupDetail } from './api';
  12. export default defineComponent({
  13. name: 'base-setting',
  14. setup() {
  15. const classDetailTabs = sessionStorage.getItem('classDetailTabs');
  16. const activeTab = ref(classDetailTabs || 'afterWork');
  17. sessionStorage.removeItem('classDetailTabs');
  18. const route = useRoute();
  19. const routerList = ref([
  20. { name: '班级管理', path: '/classList' },
  21. { name: route.query.name, path: '/classDetail' }
  22. ] as any);
  23. getTabsCache((val: any) => {
  24. if (val.form.tabName) {
  25. activeTab.value = val.form.tabName;
  26. }
  27. });
  28. const setTabs = (val: any) => {
  29. setTabsCaches(val, 'tabName', route);
  30. };
  31. const upgradeFlag = ref();
  32. const getClassGroupDetail = async () => {
  33. try {
  34. const id = route.query.id;
  35. const { data } = await classGroupDetail({ id });
  36. upgradeFlag.value = data.upgradeFlag ? 1 : 0; // 是否为历史班
  37. } catch {
  38. //
  39. }
  40. };
  41. getClassGroupDetail();
  42. onMounted(() => {
  43. if (classDetailTabs) {
  44. activeTab.value = classDetailTabs;
  45. }
  46. });
  47. onBeforeRouteUpdate(() => {
  48. const classDetailTabs = sessionStorage.getItem('classDetailTabs');
  49. if (classDetailTabs) {
  50. activeTab.value = classDetailTabs;
  51. }
  52. });
  53. return () => (
  54. <div>
  55. <CBreadcrumb list={routerList.value}></CBreadcrumb>
  56. <div class={[styles.listWrap, styles.infoListWrap]}>
  57. <NTabs
  58. class={styles.customTabs}
  59. v-model:value={activeTab.value}
  60. onUpdate:value={(val: any) => setTabs(val)}
  61. size="large"
  62. animated={false}
  63. pane-wrapper-style="margin: 0 -4px"
  64. pane-style="padding-left: 4px; padding-right: 4px; box-sizing: border-box;">
  65. <NTabPane name="afterWork" tab="课后作业">
  66. <AfterWork upgradeFlag={upgradeFlag.value}></AfterWork>
  67. </NTabPane>
  68. <NTabPane name="practice" tab="学练记录">
  69. <TestRecode></TestRecode>
  70. </NTabPane>
  71. <NTabPane name="attendclass" tab="上课记录">
  72. <ClassRecord />
  73. </NTabPane>
  74. <NTabPane name="student" tab="学员名单">
  75. <ClassStudent upgradeFlag={upgradeFlag.value}></ClassStudent>
  76. </NTabPane>
  77. </NTabs>
  78. </div>
  79. </div>
  80. );
  81. }
  82. });