|
@@ -1,144 +1,144 @@
|
|
|
-import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue';
|
|
|
-import { NSkeleton } from 'naive-ui';
|
|
|
-import styles from './musicScore.module.less';
|
|
|
-import { usePageVisibility } from '@vant/use';
|
|
|
-import { useUserStore } from '/src/store/modules/users';
|
|
|
-import { vaildMusicScoreUrl } from '/src/utils/urlUtils';
|
|
|
-import { iframeDislableKeyboard } from '/src/utils';
|
|
|
-
|
|
|
-export default defineComponent({
|
|
|
- name: 'musicScore',
|
|
|
- props: {
|
|
|
- music: {
|
|
|
- type: Object,
|
|
|
- default: () => ({})
|
|
|
- },
|
|
|
- activeModel: {
|
|
|
- type: Boolean
|
|
|
- },
|
|
|
- /** 当前是否为选中状态 */
|
|
|
- activeStatus: {
|
|
|
- type: Boolean
|
|
|
- },
|
|
|
- imagePos: {
|
|
|
- type: String,
|
|
|
- default: 'left'
|
|
|
- }
|
|
|
- },
|
|
|
- emits: ['setIframe'],
|
|
|
- setup(props, { emit }) {
|
|
|
- const userStore = useUserStore();
|
|
|
- const isLoading = ref(false);
|
|
|
- const pageVisibility = usePageVisibility();
|
|
|
- /** 页面显示和隐藏 */
|
|
|
- watch(pageVisibility, value => {
|
|
|
- console.log('🚀 ~ value:', value);
|
|
|
- if (value == 'hidden') {
|
|
|
- isLoading.value = false;
|
|
|
- }
|
|
|
- });
|
|
|
- const iframeRef = ref();
|
|
|
- const isLoaded = ref(false);
|
|
|
- const renderError = ref(false);
|
|
|
- const renderSuccess = ref(false);
|
|
|
- // const origin = /(localhost|192)/.test(location.host)
|
|
|
- // ? 'https://test.lexiaoya.cn/instrument'
|
|
|
- // : // 'http://localhost:3000/instrument.html'
|
|
|
- // location.origin + '/instrument';
|
|
|
- const src = `${vaildMusicScoreUrl()}/instrument/?v=${+new Date()}&showGuide=true&platform=pc&zoom=1.2&modelType=practise&id=${
|
|
|
- props.music.content
|
|
|
- }&Authorization=${userStore.getToken}&imagePos=${props.imagePos}`;
|
|
|
- const checkView = () => {
|
|
|
- fetch(src)
|
|
|
- .then(() => {
|
|
|
- renderSuccess.value = true;
|
|
|
- renderError.value = false;
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- renderError.value = true;
|
|
|
- });
|
|
|
- };
|
|
|
- watch(
|
|
|
- () => props.music,
|
|
|
- () => {
|
|
|
- if (renderSuccess.value) return;
|
|
|
- renderError.value = false;
|
|
|
- if (props.music.display) {
|
|
|
- checkView();
|
|
|
- }
|
|
|
- }
|
|
|
- );
|
|
|
-
|
|
|
- // 去云教练完整版
|
|
|
- // const gotoAccomany = () => {
|
|
|
- // if (isLoading.value) return;
|
|
|
- // if (!browserInfo.ios) {
|
|
|
- // isLoading.value = true;
|
|
|
- // }
|
|
|
- // // const parmas = qs.stringify({
|
|
|
- // // id: props.music.content
|
|
|
- // // });
|
|
|
- // // let src = `${location.origin}/orchestra-music-score/?` + parmas
|
|
|
- // const src = `https://test.lexiaoya.cn/orchestra-music-score/?_t=1687590480955&id=11707&modelType=practice&modeType=json&Authorization=bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsib2F1dGgyLXJlc291cmNlIl0sImNsaWVudFR5cGUiOiJCQUNLRU5EIiwidXNlcl9uYW1lIjoiMTgxNjI4NTU4MDAiLCJzY29wZSI6WyJhbGwiXSwidXNlcklkIjoiMTAwMDE0OSIsImF1dGhvcml0aWVzIjpbIjE4MTYyODU1ODAwIl0sImp0aSI6IjY0MzA2NjllLTE5NGItNDk3Yy1hMDQ5LWM4YWUxMGU0NDNiOCIsImNsaWVudF9pZCI6ImptZWR1LWJhY2tlbmQifQ.aeJ0o-lSfx1Ok-YptZuC-AUY6M7k3LK9rr0Bmx7sj81pPt2HDiDqeT2PuriYdJacxWnxboyhdG_lwU0QK-W-vON97c45NQpSEFLVpZ0m1xdIqwllwf20xhyj5YJwdOFUzxf1TNEfGsHZg66J7wEJQBSzlmQwcxmEE5lqLVD8o_3f2SBqnWCj9RqE4air7FUemllMnZiu8HsS-TKtLDaGa_XW8Yb_Zjzzz6r5UcYNI-C1uKPXg18o1dhHBJ8O-Pl0U8WivPRub_opvO2NSn5L9YtPt7Dd50UeSwaIOdMeCGdii1bg__h77Stek1_5IaZLYkoo2gvmUA-xk09TwCQBpA`;
|
|
|
- // postMessage(
|
|
|
- // {
|
|
|
- // api: 'openAccompanyWebView',
|
|
|
- // content: {
|
|
|
- // url: src,
|
|
|
- // orientation: 0,
|
|
|
- // isHideTitle: true,
|
|
|
- // statusBarTextColor: false,
|
|
|
- // isOpenLight: true
|
|
|
- // }
|
|
|
- // },
|
|
|
- // () => {
|
|
|
- // if (browserInfo.ios) {
|
|
|
- // isLoading.value = true;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // );
|
|
|
- // };
|
|
|
-
|
|
|
- watch(
|
|
|
- () => props.activeModel,
|
|
|
- () => {
|
|
|
- if (iframeRef.value.contentWindow && props.activeStatus) {
|
|
|
- // console.log(
|
|
|
- // iframeRef.value.contentWindow,
|
|
|
- // props.activeModel,
|
|
|
- // 'iframeRef'
|
|
|
- // );
|
|
|
- iframeRef.value.contentWindow.postMessage(
|
|
|
- {
|
|
|
- api: 'attendClassBarStatus',
|
|
|
- hideMenu: !props.activeModel
|
|
|
- },
|
|
|
- '*'
|
|
|
- );
|
|
|
- }
|
|
|
- }
|
|
|
- );
|
|
|
-
|
|
|
- return () => (
|
|
|
- <div class={styles.musicScore}>
|
|
|
- <iframe
|
|
|
- ref={iframeRef}
|
|
|
- onLoad={(val: any) => {
|
|
|
- emit('setIframe', iframeRef.value);
|
|
|
- isLoaded.value = true;
|
|
|
- iframeDislableKeyboard(val.target);
|
|
|
- }}
|
|
|
- class={[styles.container, 'musicIframe']}
|
|
|
- frameborder="0"
|
|
|
- src={src}></iframe>
|
|
|
- {isLoaded.value && (
|
|
|
- <div class={styles.skeletonWrap}>
|
|
|
- <div>
|
|
|
- <NSkeleton text repeat={8} />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- )}
|
|
|
- </div>
|
|
|
- );
|
|
|
- }
|
|
|
-});
|
|
|
+import { defineComponent, onMounted, onUnmounted, ref, watch } from 'vue';
|
|
|
+import { NSkeleton } from 'naive-ui';
|
|
|
+import styles from './musicScore.module.less';
|
|
|
+import { usePageVisibility } from '@vant/use';
|
|
|
+import { useUserStore } from '/src/store/modules/users';
|
|
|
+import { vaildMusicScoreUrl } from '/src/utils/urlUtils';
|
|
|
+import { iframeDislableKeyboard } from '/src/utils';
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'musicScore',
|
|
|
+ props: {
|
|
|
+ music: {
|
|
|
+ type: Object,
|
|
|
+ default: () => ({})
|
|
|
+ },
|
|
|
+ activeModel: {
|
|
|
+ type: Boolean
|
|
|
+ },
|
|
|
+ /** 当前是否为选中状态 */
|
|
|
+ activeStatus: {
|
|
|
+ type: Boolean
|
|
|
+ },
|
|
|
+ imagePos: {
|
|
|
+ type: String,
|
|
|
+ default: 'left'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ emits: ['setIframe'],
|
|
|
+ setup(props, { emit }) {
|
|
|
+ const userStore = useUserStore();
|
|
|
+ const isLoading = ref(false);
|
|
|
+ const pageVisibility = usePageVisibility();
|
|
|
+ /** 页面显示和隐藏 */
|
|
|
+ watch(pageVisibility, value => {
|
|
|
+ console.log('🚀 ~ value:', value);
|
|
|
+ if (value == 'hidden') {
|
|
|
+ isLoading.value = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const iframeRef = ref();
|
|
|
+ const isLoaded = ref(false);
|
|
|
+ const renderError = ref(false);
|
|
|
+ const renderSuccess = ref(false);
|
|
|
+ // const origin = /(localhost|192)/.test(location.host)
|
|
|
+ // ? 'https://test.lexiaoya.cn/instrument'
|
|
|
+ // : // 'http://localhost:3000/instrument.html'
|
|
|
+ // location.origin + '/instrument';
|
|
|
+ const src = `${vaildMusicScoreUrl()}/instrument/?v=${+new Date()}&showGuide=true&showWebGuide=false&platform=pc&zoom=1.2&modelType=practise&id=${
|
|
|
+ props.music.content
|
|
|
+ }&Authorization=${userStore.getToken}&imagePos=${props.imagePos}`;
|
|
|
+ const checkView = () => {
|
|
|
+ fetch(src)
|
|
|
+ .then(() => {
|
|
|
+ renderSuccess.value = true;
|
|
|
+ renderError.value = false;
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ renderError.value = true;
|
|
|
+ });
|
|
|
+ };
|
|
|
+ watch(
|
|
|
+ () => props.music,
|
|
|
+ () => {
|
|
|
+ if (renderSuccess.value) return;
|
|
|
+ renderError.value = false;
|
|
|
+ if (props.music.display) {
|
|
|
+ checkView();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ // 去云教练完整版
|
|
|
+ // const gotoAccomany = () => {
|
|
|
+ // if (isLoading.value) return;
|
|
|
+ // if (!browserInfo.ios) {
|
|
|
+ // isLoading.value = true;
|
|
|
+ // }
|
|
|
+ // // const parmas = qs.stringify({
|
|
|
+ // // id: props.music.content
|
|
|
+ // // });
|
|
|
+ // // let src = `${location.origin}/orchestra-music-score/?` + parmas
|
|
|
+ // const src = `https://test.lexiaoya.cn/orchestra-music-score/?_t=1687590480955&id=11707&modelType=practice&modeType=json&Authorization=bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOlsib2F1dGgyLXJlc291cmNlIl0sImNsaWVudFR5cGUiOiJCQUNLRU5EIiwidXNlcl9uYW1lIjoiMTgxNjI4NTU4MDAiLCJzY29wZSI6WyJhbGwiXSwidXNlcklkIjoiMTAwMDE0OSIsImF1dGhvcml0aWVzIjpbIjE4MTYyODU1ODAwIl0sImp0aSI6IjY0MzA2NjllLTE5NGItNDk3Yy1hMDQ5LWM4YWUxMGU0NDNiOCIsImNsaWVudF9pZCI6ImptZWR1LWJhY2tlbmQifQ.aeJ0o-lSfx1Ok-YptZuC-AUY6M7k3LK9rr0Bmx7sj81pPt2HDiDqeT2PuriYdJacxWnxboyhdG_lwU0QK-W-vON97c45NQpSEFLVpZ0m1xdIqwllwf20xhyj5YJwdOFUzxf1TNEfGsHZg66J7wEJQBSzlmQwcxmEE5lqLVD8o_3f2SBqnWCj9RqE4air7FUemllMnZiu8HsS-TKtLDaGa_XW8Yb_Zjzzz6r5UcYNI-C1uKPXg18o1dhHBJ8O-Pl0U8WivPRub_opvO2NSn5L9YtPt7Dd50UeSwaIOdMeCGdii1bg__h77Stek1_5IaZLYkoo2gvmUA-xk09TwCQBpA`;
|
|
|
+ // postMessage(
|
|
|
+ // {
|
|
|
+ // api: 'openAccompanyWebView',
|
|
|
+ // content: {
|
|
|
+ // url: src,
|
|
|
+ // orientation: 0,
|
|
|
+ // isHideTitle: true,
|
|
|
+ // statusBarTextColor: false,
|
|
|
+ // isOpenLight: true
|
|
|
+ // }
|
|
|
+ // },
|
|
|
+ // () => {
|
|
|
+ // if (browserInfo.ios) {
|
|
|
+ // isLoading.value = true;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // );
|
|
|
+ // };
|
|
|
+
|
|
|
+ watch(
|
|
|
+ () => props.activeModel,
|
|
|
+ () => {
|
|
|
+ if (iframeRef.value.contentWindow && props.activeStatus) {
|
|
|
+ // console.log(
|
|
|
+ // iframeRef.value.contentWindow,
|
|
|
+ // props.activeModel,
|
|
|
+ // 'iframeRef'
|
|
|
+ // );
|
|
|
+ iframeRef.value.contentWindow.postMessage(
|
|
|
+ {
|
|
|
+ api: 'attendClassBarStatus',
|
|
|
+ hideMenu: !props.activeModel
|
|
|
+ },
|
|
|
+ '*'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
+ return () => (
|
|
|
+ <div class={styles.musicScore}>
|
|
|
+ <iframe
|
|
|
+ ref={iframeRef}
|
|
|
+ onLoad={(val: any) => {
|
|
|
+ emit('setIframe', iframeRef.value);
|
|
|
+ isLoaded.value = true;
|
|
|
+ iframeDislableKeyboard(val.target);
|
|
|
+ }}
|
|
|
+ class={[styles.container, 'musicIframe']}
|
|
|
+ frameborder="0"
|
|
|
+ src={src}></iframe>
|
|
|
+ {isLoaded.value && (
|
|
|
+ <div class={styles.skeletonWrap}>
|
|
|
+ <div>
|
|
|
+ <NSkeleton text repeat={8} />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|