|  | @@ -0,0 +1,201 @@
 | 
	
		
			
				|  |  | +import { defineComponent, onMounted, onUnmounted, reactive, ref, nextTick } from 'vue';
 | 
	
		
			
				|  |  | +import styles from './index.module.less';
 | 
	
		
			
				|  |  | +// import signinTips from './images/signin-tips.png';
 | 
	
		
			
				|  |  | +import {
 | 
	
		
			
				|  |  | +  Button,
 | 
	
		
			
				|  |  | +  CellGroup,
 | 
	
		
			
				|  |  | +  Field,
 | 
	
		
			
				|  |  | +  Picker,
 | 
	
		
			
				|  |  | +  Popup,
 | 
	
		
			
				|  |  | +  closeToast,
 | 
	
		
			
				|  |  | +  showToast,
 | 
	
		
			
				|  |  | +  Loading
 | 
	
		
			
				|  |  | +} from 'vant';
 | 
	
		
			
				|  |  | +import { useRoute, useRouter } from 'vue-router';
 | 
	
		
			
				|  |  | +import threeMan from './images/update/three-man.png'
 | 
	
		
			
				|  |  | +import OWxTip from '@/components/m-wx-tip';
 | 
	
		
			
				|  |  | +import { browser, getHttpOrigin, getUrlCode } from '@/helpers/utils';
 | 
	
		
			
				|  |  | +import qs from 'query-string';
 | 
	
		
			
				|  |  | +import request from '@/helpers/request';
 | 
	
		
			
				|  |  | +import { goWechatAuth } from '@/state';
 | 
	
		
			
				|  |  | +import { useInterval, useIntervalFn } from '@vueuse/core';
 | 
	
		
			
				|  |  | +import MMessageTip from '@/components/m-message-tip';
 | 
	
		
			
				|  |  | +import TCPlayer from 'tcplayer.js';
 | 
	
		
			
				|  |  | +import 'tcplayer.js/dist/tcplayer.css';
 | 
	
		
			
				|  |  | +import { _initVideo } from './initVideo'
 | 
	
		
			
				|  |  | +import nextBtn from './images/next_btn.png'
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +export default defineComponent({
 | 
	
		
			
				|  |  | +  name: 'intention-questionnaire-show',
 | 
	
		
			
				|  |  | +  setup() {
 | 
	
		
			
				|  |  | +    // 页面定时
 | 
	
		
			
				|  |  | +    const pageTimer = useInterval(1000, { controls: true });
 | 
	
		
			
				|  |  | +    pageTimer.pause();
 | 
	
		
			
				|  |  | +    const router = useRouter();
 | 
	
		
			
				|  |  | +    const route = useRoute();
 | 
	
		
			
				|  |  | +    const forms = reactive({
 | 
	
		
			
				|  |  | +      loading: true,
 | 
	
		
			
				|  |  | +      code: null,
 | 
	
		
			
				|  |  | +      openId: '' as any,
 | 
	
		
			
				|  |  | +      isPageHide: false,
 | 
	
		
			
				|  |  | +      contentA: "<p><span style=\"color: rgb(0, 0, 0);\">一、请所有家长进行</span><span style=\"color: rgb(207, 19, 34);\">签到</span></p><p><span style=\"color: rgb(0, 0, 0);\">二、</span><span style=\"color: rgb(207, 19, 34);\">观看</span><span style=\"color: rgb(0, 0, 0);\">管乐团家长会议</span></p><p><span style=\"color: rgb(0, 0, 0);\"> 1、学校领导讲话(5分钟)</span></p><p><span style=\"color: rgb(0, 0, 0);\"> 2、基金会老师介绍乐团事项(20分钟)</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *乐团组建背景及政策</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *乐团发展规划与乐器知识讲解</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *学校/基金会/家长各方职责与投入</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *入团流程讲解</span></p><p><span style=\"color: rgb(0, 0, 0);\">三、请</span><span style=\"color: rgb(207, 19, 34);\">“有意向”</span><span style=\"color: rgb(0, 0, 0);\">让孩子加入乐团的家长点击</span><span style=\"color: rgb(207, 19, 34);\">“乐团报名”</span><span style=\"color: rgb(0, 0, 0);\">完成信息填报</span></p>", // 第一段
 | 
	
		
			
				|  |  | +      contentB: "<p><span style=\"color: rgb(0, 0, 0);\">一、请所有家长进行</span><span style=\"color: rgb(207, 19, 34);\">签到</span></p><p><span style=\"color: rgb(0, 0, 0);\">二、</span><span style=\"color: rgb(207, 19, 34);\">观看</span><span style=\"color: rgb(0, 0, 0);\">管乐团家长会议</span></p><p><span style=\"color: rgb(0, 0, 0);\"> 1、学校领导讲话(5分钟)</span></p><p><span style=\"color: rgb(0, 0, 0);\"> 2、基金会老师介绍乐团事项(20分钟)</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *乐团组建背景及政策</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *乐团发展规划与乐器知识讲解</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *学校/基金会/家长各方职责与投入</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *入团流程讲解</span></p><p><span style=\"color: rgb(0, 0, 0);\">三、请</span><span style=\"color: rgb(207, 19, 34);\">“有意向”</span><span style=\"color: rgb(0, 0, 0);\">让孩子加入乐团的家长点击</span><span style=\"color: rgb(207, 19, 34);\">“乐团报名”</span><span style=\"color: rgb(0, 0, 0);\">完成信息填报</span></p>", // 第二段
 | 
	
		
			
				|  |  | +      contentC: "<p><span style=\"color: rgb(0, 0, 0);\">一、请所有家长进行</span><span style=\"color: rgb(207, 19, 34);\">签到</span></p><p><span style=\"color: rgb(0, 0, 0);\">二、</span><span style=\"color: rgb(207, 19, 34);\">观看</span><span style=\"color: rgb(0, 0, 0);\">管乐团家长会议</span></p><p><span style=\"color: rgb(0, 0, 0);\"> 1、学校领导讲话(5分钟)</span></p><p><span style=\"color: rgb(0, 0, 0);\"> 2、基金会老师介绍乐团事项(20分钟)</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *乐团组建背景及政策</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *乐团发展规划与乐器知识讲解</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *学校/基金会/家长各方职责与投入</span></p><p><span style=\"color: rgb(0, 0, 0);\"> *入团流程讲解</span></p><p><span style=\"color: rgb(0, 0, 0);\">三、请</span><span style=\"color: rgb(207, 19, 34);\">“有意向”</span><span style=\"color: rgb(0, 0, 0);\">让孩子加入乐团的家长点击</span><span style=\"color: rgb(207, 19, 34);\">“乐团报名”</span><span style=\"color: rgb(0, 0, 0);\">完成信息填报</span></p>", // 第三段
 | 
	
		
			
				|  |  | +      contentD: "",
 | 
	
		
			
				|  |  | +      introductionVideo: "https://oss.dayaedu.com/ktyq/02/1739324017357.mp4",
 | 
	
		
			
				|  |  | +      introductionVideoTime: 117,
 | 
	
		
			
				|  |  | +      coverImg: "https://oss.dayaedu.com/ktyq/02/1739324197269.png",
 | 
	
		
			
				|  |  | +      introductionVideo2: "https://oss.dayaedu.com/ktyq/02/1739324017357.mp4",
 | 
	
		
			
				|  |  | +      introductionVideoTime2: 117,
 | 
	
		
			
				|  |  | +      coverImg2: "https://oss.dayaedu.com/ktyq/02/1739324215341.png",
 | 
	
		
			
				|  |  | +      player1: null as any,
 | 
	
		
			
				|  |  | +      player2: null as any,
 | 
	
		
			
				|  |  | +      player1Speed: 1,
 | 
	
		
			
				|  |  | +      player2Speed: 1,
 | 
	
		
			
				|  |  | +      videoLoading1: true,
 | 
	
		
			
				|  |  | +      videoLoading2: true,
 | 
	
		
			
				|  |  | +      meetingType: 'primarySchoolNo' as 'primarySchoolNo' | 'primarySchoolYes' | 'juniorSchoolNo' | 'juniorSchool' | any,
 | 
	
		
			
				|  |  | +      intentionInfo: null as any,
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const showPopup = ref(false);
 | 
	
		
			
				|  |  | +    const showPopupMessage = ref('');
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // 播放视频总时长
 | 
	
		
			
				|  |  | +    const videoIntervalRef = useInterval(1000, { controls: true });
 | 
	
		
			
				|  |  | +    videoIntervalRef.pause();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const videoIntervalRef2 = useInterval(1000, { controls: true });
 | 
	
		
			
				|  |  | +    videoIntervalRef2.pause();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onMounted(async () => {
 | 
	
		
			
				|  |  | +      forms.meetingType = route.query.type || forms.meetingType;
 | 
	
		
			
				|  |  | +      nextTick(() => {
 | 
	
		
			
				|  |  | +        const videoRef: any = document.querySelector('#register-video')
 | 
	
		
			
				|  |  | +        const videoRef2: any = document.querySelector('#register-video2')
 | 
	
		
			
				|  |  | +        if(videoRef) {
 | 
	
		
			
				|  |  | +          const rect = videoRef?.getBoundingClientRect()
 | 
	
		
			
				|  |  | +          console.log(rect)
 | 
	
		
			
				|  |  | +          videoRef.style.height = rect.width / 16 * 9 + 'px'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(videoRef2) {
 | 
	
		
			
				|  |  | +          const rect = videoRef2?.getBoundingClientRect()
 | 
	
		
			
				|  |  | +          console.log(rect)
 | 
	
		
			
				|  |  | +          videoRef2.style.height = rect.width / 16 * 9 + 'px'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      _initVideo('one', forms, videoIntervalRef)
 | 
	
		
			
				|  |  | +      _initVideo('two', forms, videoIntervalRef2)
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const getAppIdAndCode = async (url?: string) => {
 | 
	
		
			
				|  |  | +      try {
 | 
	
		
			
				|  |  | +        const { data } = await request.get(
 | 
	
		
			
				|  |  | +          '/edu-app/open/paramConfig/wechatAppId'
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +        // 判断是否有微信appId
 | 
	
		
			
				|  |  | +        if (data) {
 | 
	
		
			
				|  |  | +          closeToast();
 | 
	
		
			
				|  |  | +          goWechatAuth(data, url);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      } catch(e) {
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +        console.log(e)
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    if (browser().weixin) {
 | 
	
		
			
				|  |  | +      //授权
 | 
	
		
			
				|  |  | +      const openId = sessionStorage.getItem('active-open-id');
 | 
	
		
			
				|  |  | +      forms.openId = openId;
 | 
	
		
			
				|  |  | +      const code = getUrlCode();
 | 
	
		
			
				|  |  | +      console.log(code, 'code')
 | 
	
		
			
				|  |  | +      if (!code) {
 | 
	
		
			
				|  |  | +        const newUrl =
 | 
	
		
			
				|  |  | +          getHttpOrigin() +
 | 
	
		
			
				|  |  | +          window.location.pathname +
 | 
	
		
			
				|  |  | +          '#' +
 | 
	
		
			
				|  |  | +          route.path +
 | 
	
		
			
				|  |  | +          '?' +
 | 
	
		
			
				|  |  | +          qs.stringify({
 | 
	
		
			
				|  |  | +            ...route.query
 | 
	
		
			
				|  |  | +          });
 | 
	
		
			
				|  |  | +        getAppIdAndCode(newUrl);
 | 
	
		
			
				|  |  | +        return '';
 | 
	
		
			
				|  |  | +      } else {
 | 
	
		
			
				|  |  | +        forms.code = code;
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    const nextSkip = () => {
 | 
	
		
			
				|  |  | +      router.push({
 | 
	
		
			
				|  |  | +        path: '/fill-questionnaire',
 | 
	
		
			
				|  |  | +        query: {
 | 
	
		
			
				|  |  | +          openId: forms.openId, //
 | 
	
		
			
				|  |  | +          meetingType: forms.meetingType
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      });
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    const onPageShow = () => {
 | 
	
		
			
				|  |  | +      console.log(forms.isPageHide, 'showInfo');
 | 
	
		
			
				|  |  | +      if (forms.isPageHide) {
 | 
	
		
			
				|  |  | +        window.location.reload();
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    // 处理监听页面返回不刷新的问题
 | 
	
		
			
				|  |  | +    window.addEventListener('pageshow', onPageShow);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    const onPageHide = () => {
 | 
	
		
			
				|  |  | +      console.log(forms.isPageHide, 'showInfo');
 | 
	
		
			
				|  |  | +      forms.isPageHide = true;
 | 
	
		
			
				|  |  | +    };
 | 
	
		
			
				|  |  | +    window.addEventListener('pagehide', onPageHide);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    onUnmounted(() => {
 | 
	
		
			
				|  |  | +      window.removeEventListener('pageshow', onPageShow);
 | 
	
		
			
				|  |  | +      window.removeEventListener('pagehide', onPageHide);
 | 
	
		
			
				|  |  | +    });
 | 
	
		
			
				|  |  | +    return () => (
 | 
	
		
			
				|  |  | +      <div class={styles['intention-page']}>
 | 
	
		
			
				|  |  | +        <div class={styles['content-box']}>
 | 
	
		
			
				|  |  | +          <div class={styles.contentBody} v-html={forms.contentA}></div>
 | 
	
		
			
				|  |  | +          <div class={styles.contentBody}>
 | 
	
		
			
				|  |  | +            <div class={styles.cbTitle}>一、什么是音乐(器乐)课堂数字化转型<span>(详见视频介绍)</span></div>
 | 
	
		
			
				|  |  | +            <div class={[styles['video-content']]}>
 | 
	
		
			
				|  |  | +              <video
 | 
	
		
			
				|  |  | +                id="register-video"
 | 
	
		
			
				|  |  | +                class={styles['video']}
 | 
	
		
			
				|  |  | +                src={forms.introductionVideo}
 | 
	
		
			
				|  |  | +                playsinline={true}
 | 
	
		
			
				|  |  | +                poster={forms.coverImg}
 | 
	
		
			
				|  |  | +                preload="auto"></video>
 | 
	
		
			
				|  |  | +            </div> 
 | 
	
		
			
				|  |  | +          </div>
 | 
	
		
			
				|  |  | +          <div class={styles.contentBody} v-html={forms.contentB}></div>
 | 
	
		
			
				|  |  | +          <div class={styles.contentBody} v-html={forms.contentC}></div>
 | 
	
		
			
				|  |  | +          <div class={styles.contentBody}>
 | 
	
		
			
				|  |  | +            <div class={styles.cbTitle}>四、什么是器乐数字 Ai<span>(详见视频介绍)</span></div>          
 | 
	
		
			
				|  |  | +            <div class={[styles['video-content']]}>
 | 
	
		
			
				|  |  | +              <video
 | 
	
		
			
				|  |  | +                id="register-video2"
 | 
	
		
			
				|  |  | +                class={styles['video']}
 | 
	
		
			
				|  |  | +                src={forms.introductionVideo2}
 | 
	
		
			
				|  |  | +                playsinline={true}
 | 
	
		
			
				|  |  | +                poster={forms.coverImg2}
 | 
	
		
			
				|  |  | +                preload="auto"></video>
 | 
	
		
			
				|  |  | +            </div>  
 | 
	
		
			
				|  |  | +          </div>          
 | 
	
		
			
				|  |  | +          <div class={styles.contentBody} v-html={forms.contentD}></div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* 是否在微信中打开 */}
 | 
	
		
			
				|  |  | +        {/* <OWxTip /> */}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        {/* <div class={styles.bottomBtn}>
 | 
	
		
			
				|  |  | +          <p>在您了解上述内容后,<i>请点击下一步进行意见</i></p>
 | 
	
		
			
				|  |  | +          <img class={styles.nextBtn} src={nextBtn} onClick={nextSkip} />
 | 
	
		
			
				|  |  | +        </div> */}
 | 
	
		
			
				|  |  | +      </div>
 | 
	
		
			
				|  |  | +    );
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +});
 |