index.tsx 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. });
  16. return () => (
  17. <div class={styles['lesson-main']}>
  18. <NTabs
  19. defaultValue="courseware"
  20. paneClass={styles.paneTitle}
  21. justifyContent="center"
  22. paneWrapperClass={styles.paneWrapperContainer}
  23. value={prepareStore.getTabType}
  24. onUpdate:value={(val: string) => {
  25. prepareStore.setTabType(val);
  26. // 重置编辑状态
  27. prepareStore.setIsEditResource(false);
  28. prepareStore.setIsEditTrain(false);
  29. eventGlobal.emit(
  30. 'teacher-slideshow',
  31. val === 'train' ? false : true
  32. );
  33. }}>
  34. <NTabPane name="courseware" tab="课件" displayDirective="show">
  35. <Courseware />
  36. </NTabPane>
  37. <NTabPane
  38. name="train"
  39. tab="作业"
  40. displayDirective="if"
  41. v-slots={{ tab: () => <span id="lessons-4">作业</span> }}
  42. {...{ id: 'lessons-4' }}>
  43. <div>
  44. {state.editWorkShow ? (
  45. <Train
  46. onChange={(val: any) => {
  47. state.editWorkShow = val.status;
  48. if (!val.status) {
  49. eventGlobal.emit('teacher-slideshow', false);
  50. }
  51. }}
  52. />
  53. ) : (
  54. <TrainPresets
  55. onChange={(val: any) => (state.editWorkShow = val.status)}
  56. />
  57. )}
  58. </div>
  59. </NTabPane>
  60. </NTabs>
  61. </div>
  62. );
  63. }
  64. });