index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import OHeader from '@/components/o-header'
  2. import request from '@/helpers/request'
  3. import { state } from '@/state'
  4. import { Image, Loading } from 'vant'
  5. import { defineComponent, reactive, onMounted, watch } from 'vue'
  6. import { RouterView, useRoute, useRouter } from 'vue-router'
  7. import { getImage } from './images'
  8. import styles from './index.module.less'
  9. import MusicList from './music-list'
  10. export default defineComponent({
  11. name: 'accompany',
  12. setup(props, ctx) {
  13. const route = useRoute()
  14. const router = useRouter()
  15. const data = reactive({
  16. childPath: '',
  17. svgs: [] as any,
  18. musicTreeActive: ''
  19. })
  20. const getTree = async () => {
  21. try {
  22. const res: any = await request.post(
  23. state.platformApi + '/musicSheetCategories/page', {
  24. data: {
  25. parentId: 0,
  26. enable: true,
  27. page: 1,
  28. rows: 10
  29. }
  30. }
  31. )
  32. console.log(res, 'res')
  33. const result = res.data.rows || []
  34. if (Array.isArray(result)) {
  35. data.svgs = result.map((n: any, index: number) => {
  36. return {
  37. ...n,
  38. id: n.id,
  39. icon: n.coverImg,
  40. btnIcon: getImage('b2.svg'),
  41. color: '#9881FF',
  42. title: n.name,
  43. subtitle: '',
  44. btnText: 'GO >'
  45. }
  46. })
  47. console.log('🚀 ~ data.svgs', data.svgs)
  48. }
  49. } catch (error) {
  50. console.log(error)
  51. }
  52. handleOpen()
  53. }
  54. const handleOpen = () => {
  55. const src: string = route?.path || 'accompany'
  56. data.childPath = src.replace(/\//g, '') || 'accompany'
  57. console.log('🚀 ~ route.path', data.childPath)
  58. }
  59. watch(
  60. () => route.path,
  61. () => {
  62. handleOpen()
  63. }
  64. )
  65. onMounted(() => {
  66. getTree()
  67. })
  68. return () => (
  69. <div class={styles.accompany}>
  70. <OHeader />
  71. <div class={styles.accompanyCategory}>
  72. {data.svgs.map((item: any) => {
  73. return (
  74. <div
  75. class={styles.container}
  76. onClick={() => {
  77. router.push({
  78. path: '/musicList',
  79. query: {
  80. categorieid: item.id
  81. }
  82. })
  83. }}
  84. >
  85. <Image src={item.icon} width="100%" height="100%">
  86. {{
  87. loading: () => <Loading type="spinner" size="20" />
  88. }}
  89. </Image>
  90. </div>
  91. )
  92. })}
  93. </div>
  94. </div>
  95. )
  96. }
  97. })