index.tsx 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { defineComponent,reactive } from 'vue'
  2. import icon from '../videoDetailItem/images/icon.png'
  3. import classes from './index.module.less'
  4. import detaile from './images/detaile.png'
  5. import music from './images/music.png'
  6. import arrow from './images/arrow.png'
  7. type Props = {
  8. addName: String
  9. addUserAvatar: String
  10. musicSheetName: String
  11. subjectNames: String
  12. composer: String
  13. chargeType: String
  14. }
  15. const chargeTypes = {
  16. CHARGE: '点播',
  17. FREE: '免费',
  18. VIP: 'VIP'
  19. }
  20. export default defineComponent({
  21. name: 'musicLIstItem',
  22. props: {
  23. item: {
  24. type: Object as () => Props,
  25. default: () => ({})
  26. }
  27. },
  28. setup(props: any) {
  29. const item = props.item
  30. return () => (
  31. <div>
  32. <div class={classes.itemWrap}>
  33. <div class={classes.left}>
  34. <div class={classes.imgWrap}>
  35. <img src={music} alt="" />
  36. </div>
  37. <div class={classes.textWrap}>
  38. <p>
  39. {item.musicSheetName}
  40. <span>作曲: {item.composer}</span>
  41. </p>
  42. <div class={classes.authorInfo}>
  43. <img
  44. class={classes.icon}
  45. src={item.addUserAvatar || icon}
  46. alt=""
  47. />
  48. <span class={classes.authorName}>{item.addName}</span>
  49. <div class={classes.tagList}>
  50. <div class={classes.tag}>{item.subjectNames}</div>
  51. {/* <div class={classes.tag}>圆号</div> */}
  52. </div>
  53. </div>
  54. </div>
  55. </div>
  56. <div class={classes.right}>
  57. <div
  58. class={[
  59. classes.touchButton,
  60. classes[item.chargeType.toLocaleLowerCase()]
  61. ]}
  62. >
  63. {chargeTypes[item.chargeType]}
  64. </div>
  65. <img class={classes.arrow} src={arrow} alt="" />
  66. </div>
  67. </div>
  68. </div>
  69. )
  70. }
  71. })