index.tsx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. // import { PaperClipIcon } from '@heroicons/vue/solid'
  2. import { defineComponent, toRefs, reactive, onMounted, ref } from 'vue'
  3. import arrow from '@/components/musicLIstItem/images/arrow.png'
  4. import styles from './index.module.less'
  5. import albumItem from '@/components/albumItem'
  6. import videoDetailItem from '@/components/videoDetailItem'
  7. import musicLIstItem from '@/components/musicLIstItem'
  8. import hotSearch from '@/components/hotSearch'
  9. import { Swiper, SwiperSlide } from 'swiper/vue'
  10. import { Navigation, Pagination, Scrollbar, A11y } from 'swiper'
  11. import request from '@/helpers/request'
  12. import silder from '@/components/silder'
  13. import searchInput from '@/components/searchInput'
  14. import banner from '@/components/banner'
  15. import 'swiper/css'
  16. import 'swiper/css/navigation'
  17. import 'swiper/css/pagination'
  18. import 'swiper/css/scrollbar'
  19. import { useRoute,useRouter } from 'vue-router'
  20. export default defineComponent({
  21. name: 'musicLibrary',
  22. components: {
  23. albumItem,
  24. videoDetailItem,
  25. musicLIstItem,
  26. hotSearch,
  27. silder,
  28. searchInput,
  29. banner
  30. },
  31. setup() {
  32. const state = reactive({
  33. albumList: [],
  34. musicList: []
  35. })
  36. const router = useRouter()
  37. const getAlbumList = async () => {
  38. try {
  39. const res = await request.post('/api-website/open/music/album/list', {
  40. data: {
  41. albumStatus: 1,
  42. page: 1,
  43. rows: 10
  44. }
  45. })
  46. state.albumList = res.data.rows
  47. } catch (e) {
  48. console.log(e)
  49. }
  50. }
  51. const getMusicList = async () => {
  52. try {
  53. const res = await request.post('/api-website/open/music/sheet/list', {
  54. data: {
  55. albumStatus: 'PASS',
  56. page: 1,
  57. rows: 5,
  58. state: 1
  59. }
  60. })
  61. state.musicList = res.data.rows
  62. } catch (e) {
  63. console.log(e)
  64. }
  65. }
  66. const gotoSearch = (val:string|object)=>{
  67. if(typeof val == 'string'){
  68. router.push({path:'/searchdetail',query:{search:val}})
  69. }else{
  70. router.push({path:'/searchdetail',query:{...val}})
  71. }
  72. }
  73. const gotoMusic=()=>{
  74. router.push({path:'/searchdetail',query:{type:'music'}})
  75. }
  76. onMounted(() => {
  77. getAlbumList()
  78. getMusicList()
  79. })
  80. return () => (
  81. <div>
  82. <banner></banner>
  83. <div class="bg-white">
  84. <div class={styles.w1200}>
  85. <div class={styles.section}>
  86. {/* <div class={styles.titleWrap}>
  87. <img src={titleDot} class={styles.dotImg} alt="" />
  88. <h4>热门专辑</h4>
  89. <img src={titleDot} class={styles.dotImg} alt="" />
  90. </div> */}
  91. <searchInput isWhile={false} onStartSearch={(val:any)=>gotoSearch(val)}></searchInput>
  92. <hotSearch onHotTag={(val:string)=>{gotoSearch(val)}} type={''}></hotSearch>
  93. <h5 class={styles.hotAlbum}>热门专辑</h5>
  94. <div class={styles.albumList}>
  95. {state.albumList.map(item => {
  96. return <albumItem detail={item}></albumItem>
  97. })}
  98. </div>
  99. </div>
  100. </div>
  101. </div>
  102. <div>
  103. <div class={styles.w1200}>
  104. <div class={styles.section}>
  105. <div class={styles.videoNav}>
  106. <h5>热门乐谱</h5>
  107. <div class={styles.wrapRight} onClick={()=>gotoMusic()}>
  108. <span>更多</span>
  109. <img class={styles.arrow} src={arrow} alt="" />
  110. </div>
  111. </div>
  112. <div class={styles.musicList}>
  113. {state.musicList.map(item => {
  114. return <musicLIstItem item={item}></musicLIstItem>
  115. })}
  116. </div>
  117. </div>
  118. {/* <musicLIstItem></musicLIstItem> */}
  119. </div>
  120. </div>
  121. <silder></silder>
  122. </div>
  123. )
  124. }
  125. })