index.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { defineComponent, ref } from 'vue';
  2. import styles from './index.module.less';
  3. import { useUserStore } from '/src/store/modules/users';
  4. import { vaildMusicScoreUrl } from '/src/utils/urlUtils';
  5. import { iframeDislableKeyboard } from '/src/utils';
  6. export default defineComponent({
  7. name: 'song-modal',
  8. props: {
  9. item: {
  10. type: Object,
  11. default: () => ({})
  12. },
  13. /** 从哪里使用 */
  14. from: {
  15. type: String,
  16. default: ''
  17. }
  18. },
  19. setup(props) {
  20. const userStore = useUserStore();
  21. const iframeRef = ref();
  22. const isLoaded = ref(false);
  23. let src = `${vaildMusicScoreUrl()}/instrument?v=${+new Date()}&modelType=practise&id=${
  24. props.item.content
  25. }&Authorization=${userStore.getToken}&platform=pc&zoom=0.8`;
  26. if (props.item.instrumentId) {
  27. src += '&instrumentId=' + props.item.instrumentId;
  28. }
  29. return () => (
  30. <div class={styles.musicScore}>
  31. <iframe
  32. ref={iframeRef}
  33. onLoad={(val: any) => {
  34. // emit('setIframe', iframeRef.value);
  35. isLoaded.value = true;
  36. iframeDislableKeyboard(val.target);
  37. }}
  38. class={[styles.container, 'musicIframe']}
  39. frameborder="0"
  40. src={src}></iframe>
  41. </div>
  42. );
  43. }
  44. });