import { defineComponent, ref, watch } from 'vue'; import styles from './musicScore.module.less'; import qs from 'query-string'; import iconStart from '../image/icon-start.svg'; import { listenerMessage, postMessage } from '@/helpers/native-message'; import { Skeleton } from 'vant'; import { usePageVisibility } from '@vant/use'; import { useRoute } from 'vue-router'; import { browser } from '@/helpers/utils'; import { state } from '@/state'; export default defineComponent({ name: 'musicScore', props: { music: { type: Object, default: () => ({}) }, activeModel: { type: Boolean } }, emits: ['setIframe'], setup(props, { emit }) { const browserInfo = browser(); const route = useRoute(); 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 Authorization = sessionStorage.getItem('Authorization') || ''; const origin = /(localhost|192)/.test(location.host) ? 'https://test.gym.lexiaoya.cn' : location.origin; const src = `${origin}/${ state.platformType === 'TEACHER' ? 'accompany-teacher' : 'accompany' }/?Authorization=${Authorization}#/detail/${ props.music.content }?isHideBack=true`; 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 origin = /(localhost|192)/.test(location.host) ? 'https://test.gym.lexiaoya.cn' : location.origin; const src = `${origin}/accompany/?Authorization=${Authorization}#/detail/${props.music.content}?isHideBack=true`; postMessage( { api: 'openAccompanyWebView', content: { url: src, orientation: 0, isHideTitle: true, statusBarTextColor: false, isOpenLight: true } }, () => { if (browserInfo.ios) { isLoading.value = true; } } ); }; listenerMessage('webViewOnResume', () => { isLoading.value = false; }); return () => (
{/* {route.query.source == 'my-course' && isLoaded.value && (
{ e.stopPropagation(); gotoAccomany(); }}>
)} */}
); } });