detail-item.tsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. import { defineComponent, reactive, ref } from 'vue'
  2. import styles from './detail-item.module.less'
  3. import msgIcon from '@/school/images/msg-icon.png'
  4. import sendmsgIcon from '@/school/images/sendmsg-icon.png'
  5. import phoneIcon from '@/school/images/phone-icon.png'
  6. import { postMessage } from '@/helpers/native-message'
  7. import { Icon, ActionSheet } from 'vant'
  8. import Image1 from '@/school/images/Image1.png'
  9. import Image2 from '@/school/images/Image2.png'
  10. import Image3 from '@/school/images/Image3.png'
  11. import Image4 from '@/school/images/Image4.png'
  12. import Image5 from '@/school/images/Image5.png'
  13. const scoreInfos: any = {
  14. 1: {
  15. img: Image1,
  16. tips: '你的演奏不太好,音准和完整性还需加强,再练一练吧~',
  17. mome: '敢于尝试'
  18. },
  19. 2: {
  20. img: Image2,
  21. tips: '你的演奏还不熟练,音准和完整性还需加强,加紧训练才能有好成绩哦~',
  22. mome: '还要加油哦~'
  23. },
  24. 3: {
  25. img: Image3,
  26. tips: '你的演奏还不流畅,音准和节奏还需加强,科学的练习才能更完美哦~',
  27. mome: '突破自我'
  28. },
  29. 4: {
  30. img: Image4,
  31. tips: '你的演奏还不错,继续加油吧,加强音准,离完美就差一步啦~',
  32. mome: '崭露头角'
  33. },
  34. 5: {
  35. img: Image5,
  36. tips: '你的演奏非常不错,音准的把握和节奏稍有瑕疵,完整性把握的很好~',
  37. mome: '你很棒'
  38. }
  39. }
  40. export default defineComponent({
  41. props: ['item'],
  42. name: 'detail-item',
  43. setup(props) {
  44. const getLeveByScoreId = (score?: any) => {
  45. if (!score && typeof score !== 'number') {
  46. return {}
  47. }
  48. let leve: any = 1
  49. if (score > 20 && score <= 40) {
  50. leve = 2
  51. } else if (score > 40 && score <= 60) {
  52. leve = 3
  53. } else if (score > 60 && score <= 80) {
  54. leve = 4
  55. } else if (score > 80) {
  56. leve = 5
  57. }
  58. return leve
  59. }
  60. const gotoDetail = () => {
  61. const url =
  62. window.location.origin + `/orchestra-music-score/report-share.html?id=${props.item.id}`
  63. postMessage({
  64. api: 'openWebView',
  65. content: {
  66. url: url,
  67. orientation: 0,
  68. isHideTitle: true,
  69. statusBarTextColor: false,
  70. isOpenLight: true
  71. }
  72. })
  73. // window.open()
  74. }
  75. return () => (
  76. <>
  77. <div>
  78. <div class={styles.itemWrap} onClick={gotoDetail}>
  79. <div class={styles.itemTop}>
  80. <div class={styles.itemTopLeft}>
  81. <p class={styles.itemTopMain}>{props.item.musicSheetName}</p>
  82. <p class={styles.itemTopSub}>{props.item.createTime}</p>
  83. </div>
  84. <div class={styles.itemTopRight}>
  85. <div class={styles.imgWrap}>
  86. <img src={scoreInfos[getLeveByScoreId(props.item.score || 0)].img} alt="" />
  87. </div>
  88. <Icon name="arrow" class={styles.imgIcon} />
  89. </div>
  90. </div>
  91. <div class={styles.itemBottom}>
  92. <div class={styles.itemBottomDot}>
  93. <p class={styles.dotMain} style={{ color: '#F67146' }}>
  94. {props.item.score || 0}
  95. <span>分</span>{' '}
  96. </p>
  97. <p class={styles.dotSub}> 综合得分</p>
  98. </div>
  99. <div class={styles.itemBottomDot}>
  100. <p class={styles.dotMain}>
  101. {props.item.intonation || 0}
  102. <span>分</span>{' '}
  103. </p>
  104. <p class={styles.dotSub}>音准 </p>
  105. </div>
  106. <div class={styles.itemBottomDot}>
  107. <p class={styles.dotMain}>
  108. {props.item.cadence || 0}
  109. <span>分</span>{' '}
  110. </p>
  111. <p class={styles.dotSub}>节奏 </p>
  112. </div>
  113. <div class={styles.itemBottomDot}>
  114. <p class={styles.dotMain}>
  115. {props.item.integrity || 0}
  116. <span>分</span>{' '}
  117. </p>
  118. <p class={styles.dotSub}>完成度 </p>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </>
  124. )
  125. }
  126. })