index.tsx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import { defineComponent, nextTick, reactive, ref, watch } from 'vue';
  2. import styles from './index.module.less';
  3. import { NTabPane, NTabs } from 'naive-ui';
  4. import Courseware from './courseware/addCourseware';
  5. import Train from './train';
  6. import { usePrepareStore } from '/src/store/modules/prepareLessons';
  7. import TrainPresets from './train-presets';
  8. import { eventGlobal } from '/src/utils';
  9. import CoursewarePresets from './courseware-presets';
  10. export default defineComponent({
  11. name: 'lesson-main',
  12. setup() {
  13. const prepareStore = usePrepareStore();
  14. const state = reactive({
  15. editCoursewareShow: false, // 是否编辑课件
  16. coursewareType: 'create' as 'create' | 'edit',
  17. editCourseware: {} as any, //
  18. editWorkShow: false, // 是否编辑预设
  19. editWork: {} as any // 预设模板编号
  20. });
  21. const lessonMainRef = ref();
  22. // watch(
  23. // () => [state.editWorkShow, state.editCoursewareShow],
  24. // () => {
  25. // nextTick(() => {
  26. // lessonMainRef.value?.syncBarPosition();
  27. // });
  28. // }
  29. // );
  30. return () => (
  31. <div class={styles['lesson-main']}>
  32. <NTabs
  33. ref={lessonMainRef}
  34. defaultValue="courseware"
  35. paneClass={styles.paneTitle}
  36. justifyContent="center"
  37. paneWrapperClass={styles.paneWrapperContainer}
  38. value={prepareStore.getTabType}
  39. onUpdate:value={(val: string) => {
  40. prepareStore.setTabType(val);
  41. // 重置编辑状态
  42. prepareStore.setIsEditResource(false);
  43. prepareStore.setIsEditTrain(false);
  44. eventGlobal.emit('teacher-slideshow', false);
  45. if (val !== 'train') {
  46. state.editWorkShow = false;
  47. }
  48. }}>
  49. {!state.editWorkShow && (
  50. <NTabPane
  51. name="courseware"
  52. tab={
  53. state.editCoursewareShow
  54. ? state.coursewareType === 'create'
  55. ? '创建课件'
  56. : '编辑课件'
  57. : '课件'
  58. }
  59. displayDirective="if">
  60. {state.editCoursewareShow ? (
  61. <Courseware
  62. groupItem={state.editCourseware}
  63. onChange={(val: any) => {
  64. state.editCoursewareShow = val.status;
  65. prepareStore.setIsEditResource(val.status);
  66. if (!val.status) {
  67. eventGlobal.emit('teacher-slideshow', false);
  68. }
  69. }}
  70. />
  71. ) : (
  72. <CoursewarePresets
  73. onChange={(val: any) => {
  74. state.coursewareType = val.type;
  75. state.editCoursewareShow = val.status;
  76. prepareStore.setIsEditResource(val.status);
  77. state.editCourseware = val.groupItem;
  78. }}
  79. />
  80. )}
  81. </NTabPane>
  82. )}
  83. {!state.editCoursewareShow && (
  84. <NTabPane
  85. name="train"
  86. // tab="作业"
  87. tab={state.editWorkShow ? '编辑作业' : '作业'}
  88. displayDirective="if"
  89. // v-slots={{
  90. // tab: () =>
  91. // state.editWorkShow ? (
  92. // <span id="lessons-4">编辑作业</span>
  93. // ) : (
  94. // <span id="lessons-4">作业</span>
  95. // )
  96. // }}
  97. // {...{ id: 'lessons-4' }}
  98. >
  99. <div>
  100. {state.editWorkShow ? (
  101. <Train
  102. lessonPreTraining={state.editWork}
  103. onChange={(val: any) => {
  104. state.editWorkShow = val.status;
  105. if (!val.status) {
  106. eventGlobal.emit('teacher-slideshow', false);
  107. }
  108. }}
  109. />
  110. ) : (
  111. <TrainPresets
  112. onChange={(val: any) => {
  113. state.editWorkShow = val.status;
  114. state.editWork = {
  115. ...val.lessonPreTraining,
  116. title:
  117. val.lessonPreTraining?.title ||
  118. prepareStore.getSelectName + '课后作业'
  119. };
  120. }}
  121. />
  122. )}
  123. </div>
  124. </NTabPane>
  125. )}
  126. </NTabs>
  127. </div>
  128. );
  129. }
  130. });