index.tsx 2.4 KB

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