index.tsx 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import { defineComponent, onMounted, ref } 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. export default defineComponent({
  10. name: 'prepare-lessons',
  11. setup() {
  12. const prepareStore = usePrepareStore();
  13. const directroyRef = ref();
  14. onMounted(() => {
  15. useResizeObserver(
  16. document.querySelector('#resourceRef') as HTMLElement,
  17. (entries: any) => {
  18. const entry = entries[0];
  19. const { height } = entry.contentRect;
  20. document.documentElement.style.setProperty(
  21. '--window-page-lesson-height',
  22. height + 'px'
  23. );
  24. }
  25. );
  26. });
  27. // 当前页面离开时
  28. onBeforeRouteLeave(() => {
  29. // 离开时恢复默认
  30. prepareStore.setTabType('courseware');
  31. prepareStore.setSelectMusicStatus(false);
  32. prepareStore.setSelectResourceStatus(false);
  33. prepareStore.setIsAddResource(false);
  34. prepareStore.setIsAddTrain(false);
  35. // prepareStore.setCoursewareList([]);
  36. // prepareStore.setTreeList([]);
  37. // prepareStore.setTrainList([]);
  38. });
  39. return () => (
  40. <div class={styles.prepareLessons}>
  41. {/* 左侧目录 */}
  42. <div class={styles.directoryMain} ref={directroyRef.value}>
  43. <DirectoryList />
  44. </div>
  45. {/* 中间排课 */}
  46. <div class={styles.lessonMain}>
  47. <LessonMain />
  48. </div>
  49. {/* 资源 */}
  50. <div
  51. class={[
  52. styles.resourceMain
  53. // prepareStore.getSelectMusicStatus ||
  54. // prepareStore.getSelectResourceStatus
  55. // ? styles.resourceClose
  56. // : ''
  57. ]}
  58. id="resourceRef">
  59. <ResourceMain />
  60. </div>
  61. </div>
  62. );
  63. }
  64. });