index.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { defineComponent, reactive } from 'vue';
  2. import styles from './index.module.less';
  3. import { NTabPane, NTabs } from 'naive-ui';
  4. import Courseware from './courseware';
  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. export default defineComponent({
  10. name: 'lesson-main',
  11. setup() {
  12. const prepareStore = usePrepareStore();
  13. const state = reactive({
  14. editWorkShow: false, // 是否编辑预设
  15. editWork: {} as any // 预设模板编号
  16. });
  17. return () => (
  18. <div class={styles['lesson-main']}>
  19. <NTabs
  20. defaultValue="courseware"
  21. paneClass={styles.paneTitle}
  22. justifyContent="center"
  23. paneWrapperClass={styles.paneWrapperContainer}
  24. value={prepareStore.getTabType}
  25. onUpdate:value={(val: string) => {
  26. prepareStore.setTabType(val);
  27. // 重置编辑状态
  28. prepareStore.setIsEditResource(false);
  29. prepareStore.setIsEditTrain(false);
  30. eventGlobal.emit(
  31. 'teacher-slideshow',
  32. val === 'train' ? false : true
  33. );
  34. if (val !== 'train') {
  35. state.editWorkShow = false;
  36. }
  37. }}>
  38. <NTabPane name="courseware" tab="课件" displayDirective="show">
  39. <Courseware />
  40. </NTabPane>
  41. <NTabPane
  42. name="train"
  43. tab="作业"
  44. displayDirective="if"
  45. v-slots={{ tab: () => <span id="lessons-4">作业</span> }}
  46. {...{ id: 'lessons-4' }}>
  47. <div>
  48. {state.editWorkShow ? (
  49. <Train
  50. lessonPreTraining={state.editWork}
  51. onChange={(val: any) => {
  52. state.editWorkShow = val.status;
  53. if (!val.status) {
  54. eventGlobal.emit('teacher-slideshow', false);
  55. }
  56. }}
  57. />
  58. ) : (
  59. <TrainPresets
  60. onChange={(val: any) => {
  61. state.editWorkShow = val.status;
  62. state.editWork = {
  63. ...val.lessonPreTraining,
  64. title:
  65. val.lessonPreTraining?.title ||
  66. prepareStore.getSelectName + '课后作业'
  67. };
  68. }}
  69. />
  70. )}
  71. </div>
  72. </NTabPane>
  73. </NTabs>
  74. </div>
  75. );
  76. }
  77. });