index.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import { defineComponent, onMounted, ref, onUnmounted, reactive } from 'vue';
  2. import styles from './index.module.less';
  3. import DirectoryList from './components/directory-main';
  4. import LessonMain from './components/lesson-main';
  5. import ResourceMain from './components/resource-main';
  6. import { useResizeObserver } from '@vueuse/core';
  7. import { onBeforeRouteLeave } from 'vue-router';
  8. import { usePrepareStore } from '/src/store/modules/prepareLessons';
  9. // import LessonsGuideIn from '@/custom-plugins/guide-page/lessons-guideIn';
  10. import { eventGlobal } from '/src/utils';
  11. export default defineComponent({
  12. name: 'prepare-lessons',
  13. setup() {
  14. const state = reactive({
  15. sidebarShow: false
  16. });
  17. const prepareStore = usePrepareStore();
  18. const resourceMainRef = ref();
  19. // console.log(prepareStore, 'prepareStore');
  20. const directroyRef = ref();
  21. const onSlideChange = (val: boolean) => {
  22. console.log(val, 'val');
  23. state.sidebarShow = val;
  24. resourceMainRef.value?.resetTabPosition();
  25. };
  26. onMounted(() => {
  27. // 作业预设事件
  28. eventGlobal.on('teacher-slideshow', onSlideChange);
  29. // // 课件编辑事件
  30. // eventGlobal.on('courseware-slideshow', onSlideChange);
  31. });
  32. onUnmounted(() => {
  33. eventGlobal.off('teacher-slideshow', onSlideChange);
  34. });
  35. onMounted(() => {
  36. useResizeObserver(
  37. document.querySelector('#lessons-height') as HTMLElement,
  38. (entries: any) => {
  39. const entry = entries[0];
  40. const { height } = entry.contentRect;
  41. document.documentElement.style.setProperty(
  42. '--window-page-lesson-height',
  43. height + 'px'
  44. );
  45. }
  46. );
  47. });
  48. // 当前页面离开时
  49. onBeforeRouteLeave(() => {
  50. // 离开时恢复默认
  51. prepareStore.setTabType('courseware');
  52. prepareStore.setSelectMusicStatus(false);
  53. prepareStore.setSelectResourceStatus(false);
  54. prepareStore.setIsAddResource(false);
  55. prepareStore.setIsAddTrain(false);
  56. prepareStore.setIsEditResource(false);
  57. prepareStore.setIsEditTrain(false);
  58. // sessionStorage.removeItem('prepareLessonCourseWareSubjectIsNull');
  59. });
  60. onUnmounted(() => {
  61. prepareStore.setSubjectId('');
  62. });
  63. return () => (
  64. <div
  65. class={[
  66. styles.prepareLessons,
  67. state.sidebarShow ? styles.showSideBar : styles.hideSideBar
  68. ]}
  69. id="lessons-height">
  70. {/* 左侧目录 */}
  71. <div class={styles.directoryMain} ref={directroyRef.value}>
  72. <DirectoryList sidebarShow={state.sidebarShow} />
  73. </div>
  74. {/* 中间排课 */}
  75. <div class={styles.lessonMain}>
  76. <LessonMain />
  77. </div>
  78. {/* 资源 */}
  79. <div class={[styles.resourceMain]}>
  80. {state.sidebarShow && <ResourceMain ref={resourceMainRef} />}
  81. </div>
  82. {/* {state.sidebarShow && <LessonsGuideIn></LessonsGuideIn>} */}
  83. </div>
  84. );
  85. }
  86. });