index.tsx 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import { defineComponent, ref, reactive, onMounted } from 'vue';
  2. import { useRoute } from 'vue-router';
  3. import request from '@/helpers/request';
  4. import MEmpty from '@/components/m-empty';
  5. import styles from './index.module.less';
  6. import musicBg from '../../image/music_bg.png';
  7. import titleIcon1 from '../../image/title_icon1.png';
  8. import playIcon from '../../image/music_play_icon.png';
  9. import emptyIcon from '../../image/ins-empty-icon.png';
  10. export default defineComponent({
  11. name: 'InstrumentInfo',
  12. props: {
  13. id: {
  14. type: String,
  15. default: ''
  16. },
  17. type: {
  18. type: String,
  19. default: ''
  20. },
  21. },
  22. emits: ['close', 'select'],
  23. setup(props, { emit }) {
  24. const route = useRoute();
  25. const forms = reactive({
  26. detailId: route.query.detailId,
  27. loading: false,
  28. dataInfo: {} as any,
  29. musicList: [] as any,
  30. title: ' ',
  31. });
  32. const getDetail = async () => {
  33. forms.loading = true;
  34. try {
  35. const { data } = await request.get(
  36. '/edu-app/knowledgeWiki/detail/' + props.id
  37. );
  38. data.intros = data.intros.replace(
  39. /<video/gi,
  40. '<video style="width: 100% !important;" controlslist="nodownload" poster="https://oss.dayaedu.com/ktqy/1701759849244.png"'
  41. );
  42. forms.dataInfo = data || {};
  43. forms.musicList = data.knowledgeWikiResources.map((item: any) => {
  44. return {
  45. id: item.id,
  46. name: item.name,
  47. url: item.url
  48. };
  49. });
  50. console.log(1111,forms.musicList)
  51. } catch {}
  52. forms.loading = false;
  53. };
  54. onMounted(async () => {
  55. await getDetail();
  56. });
  57. return () => (
  58. <div class={styles.knowledgeBg}>
  59. <div class={styles.left}>
  60. {
  61. props.type === 'wiki' &&
  62. <div class={styles.insTop}>
  63. <div class={styles.imgSection}>
  64. <img class={styles.img} src={forms.dataInfo.avatar || musicBg} />
  65. <div class={styles.pan}>
  66. <img src={forms.dataInfo.avatar || musicBg} />
  67. </div>
  68. </div>
  69. <div class={styles.songName}>{forms.dataInfo.name || '--'}</div>
  70. <div class={styles.songWords}>
  71. {forms.dataInfo.lyricists && (
  72. <span>作词:{forms.dataInfo.lyricists}</span>
  73. )}
  74. {forms.dataInfo.composers && (
  75. <span>作曲:{forms.dataInfo.composers}</span>
  76. )}
  77. </div>
  78. </div>
  79. }
  80. {
  81. props.type === 'instrument' &&
  82. <div class={styles.insTop}>
  83. <img src={forms.dataInfo.avatar} />
  84. <div class={styles.insName}>{forms.dataInfo.name || ''}</div>
  85. <div class={styles.insTro}>{forms.dataInfo.knowledgeWikiCategoryName || ''}</div>
  86. </div>
  87. }
  88. {
  89. props.type === 'musician' &&
  90. <div class={styles.insTop}>
  91. <img class={styles.musician} src={forms.dataInfo.avatar} />
  92. <div class={styles.insName}>{forms.dataInfo.name || ''}</div>
  93. <div class={styles.insTro}>{forms.dataInfo.knowledgeWikiCategoryName || ''}</div>
  94. </div>
  95. }
  96. <div class={styles.insList}>
  97. {
  98. forms.musicList.length ?
  99. <>
  100. {forms.musicList.map((item: any, index: number) => {
  101. return (
  102. <div class={styles.li}>
  103. <img class={styles.liBg} src={musicBg} />
  104. <div class={styles.liName}>{item.name || '--'}</div>
  105. <img class={styles.liPlay} src={playIcon} />
  106. </div>
  107. );
  108. })}
  109. </> :
  110. <div class={styles.emptyBox}>
  111. <img src={emptyIcon} />
  112. <span>暂无曲目~</span>
  113. </div>
  114. }
  115. </div>
  116. </div>
  117. <div class={styles.right}>
  118. <div class={styles.title}><img class={styles.liBg} src={titleIcon1} />乐器简介</div>
  119. <div class={styles.desc} v-html={forms.dataInfo.intros}></div>
  120. {!forms.loading && !forms.dataInfo.intros && (
  121. <MEmpty description="暂无内容" />
  122. )}
  123. </div>
  124. </div>
  125. );
  126. }
  127. });