index.tsx 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import { defineComponent, onMounted, reactive, ref } from 'vue';
  2. import styles from './index.module.less';
  3. import MHeader from '@/components/m-header';
  4. import MFooter from '@/components/m-footer';
  5. import { Tab, Tabs } from 'vant';
  6. import aiBanner from './images/co-ai/banner.png';
  7. import musicBanner from './images/music-room/banner.png';
  8. import CoAi from './co-ai';
  9. import PianoRoom from './piano-room';
  10. import MusicRoom from './music-room';
  11. import CoTenant from './co-tenant';
  12. import CoPerson from './co-person';
  13. import { useScroll } from '@vueuse/core';
  14. export default defineComponent({
  15. name: 'home-page',
  16. setup() {
  17. const state = reactive({
  18. activeTab: 1,
  19. banner: aiBanner
  20. });
  21. const homeRef = ref<HTMLElement | null>(null);
  22. // const { x, y, isScrolling, arrivedState, directions } = useScroll(homeRef);
  23. return () => (
  24. <div class={styles.home} ref={homeRef}>
  25. <MHeader />
  26. <div class={styles.banner}>
  27. <img class={styles.bannerImg} src={state.banner} />
  28. </div>
  29. <Tabs
  30. v-model:active={state.activeTab}
  31. lazyRender
  32. class={styles.tabs}
  33. lineHeight={0}
  34. shrink
  35. // sticky
  36. // swipeable
  37. onUpdate:active={(val: number) => {
  38. if (val === 1) {
  39. state.banner = aiBanner;
  40. } else if (val === 2) {
  41. state.banner =
  42. 'https://oss.dayaedu.com/klx/1699439721208banner.png';
  43. } else if (val === 3) {
  44. state.banner = musicBanner;
  45. } else if (val === 4) {
  46. state.banner =
  47. 'https://oss.dayaedu.com/klx/1699439591804banner.png';
  48. } else if (val === 5) {
  49. state.banner =
  50. 'https://oss.dayaedu.com/klx/1699439359542banner.png';
  51. }
  52. }}>
  53. <Tab title={'小酷Ai' + y.value} name={1}>
  54. <CoAi />
  55. </Tab>
  56. <Tab title="云酷琴房" name={2}>
  57. <PianoRoom />
  58. </Tab>
  59. <Tab title="音乐数字课堂" name={3}>
  60. <MusicRoom />
  61. </Tab>
  62. <Tab title="酷乐秀机构版" name={4}>
  63. <CoTenant />
  64. </Tab>
  65. <Tab title="酷乐秀个人版" name={5}>
  66. <CoPerson />
  67. </Tab>
  68. </Tabs>
  69. <MFooter />
  70. </div>
  71. );
  72. }
  73. });