index.tsx 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import { Button, Popup } from 'vant'
  2. import { PropType, defineComponent, onMounted, ref, watch } from 'vue'
  3. import styles from './index.module.less'
  4. import { postMessage } from '@/helpers/native-message'
  5. import { getCodeBaseUrl } from '@/helpers/utils'
  6. import { ElButton, ElScrollbar } from 'element-plus'
  7. export default defineComponent({
  8. name: 'message-tip',
  9. props: {
  10. type: {
  11. type: String as PropType<'upload' | 'error' | 'origin'>,
  12. default: 'upload'
  13. },
  14. title: {
  15. type: String,
  16. default: '温馨提示'
  17. },
  18. showButton: {
  19. type: Boolean,
  20. default: true
  21. },
  22. buttonText: {
  23. type: String,
  24. default: '我已知晓'
  25. }
  26. },
  27. emits: ['confirm'],
  28. setup(props, { emit }) {
  29. const showPopup = ref(false)
  30. // props.title, props.type
  31. // watch(
  32. // () => [props.title, props.type],
  33. // () => {}
  34. // )
  35. // 详情
  36. const onDetail = (type: string) => {
  37. let url = `${getCodeBaseUrl('/teacher')}/#/registerProtocol`
  38. if (type === 'question') {
  39. url = `${getCodeBaseUrl('/teacher')}/muic-standard/question.html`
  40. } else if (type === 'music') {
  41. url = `${getCodeBaseUrl('/teacher')}/muic-standard/index.html`
  42. }
  43. window.open(url)
  44. }
  45. return () => (
  46. <div
  47. class={[
  48. styles.popupContainer,
  49. props.type === 'error' ? styles.popupContainerError : ''
  50. ]}
  51. >
  52. <p class={styles.title1}>
  53. <span>{props.title}</span>
  54. </p>
  55. <div class={styles.popupTips}>
  56. {props.type === 'upload' && (
  57. <ElScrollbar class={styles.container}>
  58. <p class={styles.cTitle}>注意事项:</p>
  59. <div class={styles.cContent}>
  60. 1、必须是上传人自己参与制作的作品 <br />
  61. 2、歌曲及歌曲信息中请勿涉及政治、宗教、广告、涉毒、犯罪、色情、低俗、暴力、血腥、消极等违规内容,违反者直接删除内容。多次违反则进行封号处理;
  62. <br />
  63. 3、点击查看
  64. <span onClick={() => onDetail('protocol')}>
  65. 《用户注册协议》
  66. </span>
  67. ,如果您上传了文件,即认为您完全同意并遵守该协议的内容。
  68. </div>
  69. <p class={styles.cTitle}>曲谱审核标准:</p>
  70. <div class={styles.cContent}>
  71. 1、文件大小不要超过10MB,不符合版面规范的乐谱,审核未通过的不予上架,详情参考
  72. <span onClick={() => onDetail('music')}>《曲谱排版规范》</span>
  73. <br />
  74. 2、XML与MIDI文件内容必须一致,推荐使用Sibelius打谱软件;导出设置:导出XML-未压缩(*.XML)/导出MIDI:音色-其他回放设备General
  75. MIDI、MIDI、MIDI文件类型-类型0、不要勾选“将弱拍小节导出为具有休止符的完整小节”。点击查看
  76. <span onClick={() => onDetail('question')}>《常见问题》</span>
  77. </div>
  78. </ElScrollbar>
  79. )}
  80. {props.type === 'error' && (
  81. <div class={styles.container}>
  82. <div class={styles.cContent}>
  83. 声轨名称解析失败,请对照
  84. <span onClick={() => onDetail('protocol')}>
  85. 《曲谱排版规范》
  86. </span>
  87. 检查后重试
  88. </div>
  89. </div>
  90. )}
  91. {props.type === 'origin' && (
  92. <div class={styles.container}>
  93. <div class={styles.cContent}>
  94. 1、同一首曲目不可重复上传,如有不同版本统一用“()”补充。举例:人生的旋转木马(长笛二重奏版)
  95. <br />
  96. 2、曲目名后可添加曲目信息备注,包含但不限于曲目类型等。曲目名《XXX》,举例:人声的旋转木马《哈尔的移动城堡》(长笛二重奏版)
  97. <br />
  98. 3、其他信息不要写在曲目名里,如歌手、上传人员昵称等。
  99. </div>
  100. </div>
  101. )}
  102. </div>
  103. {props.showButton && (
  104. <div class={styles.btnGroup}>
  105. <ElButton
  106. type="primary"
  107. class={styles.button}
  108. onClick={() => emit('confirm')}
  109. >
  110. {props.buttonText}
  111. </ElButton>
  112. </div>
  113. )}
  114. </div>
  115. )
  116. }
  117. })