|  | @@ -13,6 +13,9 @@ import state from "/src/state";
 | 
	
		
			
				|  |  |  import { studentQueryUserInfo } from "../api";
 | 
	
		
			
				|  |  |  import { usePageVisibility } from "@vant/use";
 | 
	
		
			
				|  |  |  import { Vue3Lottie } from "vue3-lottie";
 | 
	
		
			
				|  |  | +import { popImgs, hanldeConfirmPop, hanldeClosePop, evaluatingData } from "/src/view/evaluating"
 | 
	
		
			
				|  |  | +import { Popup } from "vant";
 | 
	
		
			
				|  |  | +import AbnormalPop from "/src/view/abnormal-pop";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  export default defineComponent({
 | 
	
		
			
				|  |  |    name: "modeView",
 | 
	
	
		
			
				|  | @@ -54,56 +57,80 @@ export default defineComponent({
 | 
	
		
			
				|  |  |          state.isVip = false;
 | 
	
		
			
				|  |  |          openGuid();
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    };
 | 
	
		
			
				|  |  | -    const pageVisible = usePageVisibility();
 | 
	
		
			
				|  |  | -    watch(
 | 
	
		
			
				|  |  | -      () => pageVisible.value,
 | 
	
		
			
				|  |  | -      (val) => {
 | 
	
		
			
				|  |  | -        if (val === "visible") {
 | 
	
		
			
				|  |  | -          if (storeData.user.vipMember) return;
 | 
	
		
			
				|  |  | -          console.log("页面显示");
 | 
	
		
			
				|  |  | -          getUserInfo();
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -    watch(
 | 
	
		
			
				|  |  | -      () => headTopData.modeType,
 | 
	
		
			
				|  |  | -      (value, oldValue) => {
 | 
	
		
			
				|  |  | -        // headTopData.modeType 值 刚开始是 ""  所以 第一次切换时候不触发播放动画
 | 
	
		
			
				|  |  | -        if (!oldValue) return;
 | 
	
		
			
				|  |  | -        nextTick(() => {
 | 
	
		
			
				|  |  | -          if (value === "show") {
 | 
	
		
			
				|  |  | -            modeImgDom1.value?.pause();
 | 
	
		
			
				|  |  | -            modeImgDom2.value?.pause();
 | 
	
		
			
				|  |  | -            modeImgDom3.value?.pause();
 | 
	
		
			
				|  |  | -          } else if (value === "init") {
 | 
	
		
			
				|  |  | -            modeImgDom1.value?.play();
 | 
	
		
			
				|  |  | -            modeImgDom2.value?.play();
 | 
	
		
			
				|  |  | -            modeImgDom3.value?.play();
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -    onMounted(() => {
 | 
	
		
			
				|  |  | -      openGuid();
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -    return () => (
 | 
	
		
			
				|  |  | -      <div class={[styles.modeView, headTopData.modeType !== "init" && styles.hidden]}>
 | 
	
		
			
				|  |  | -        <img
 | 
	
		
			
				|  |  | -          src={backImg}
 | 
	
		
			
				|  |  | -          class={styles.back}
 | 
	
		
			
				|  |  | -          onClick={() => {
 | 
	
		
			
				|  |  | -            headTopData.modeType = "show";
 | 
	
		
			
				|  |  | -          }}
 | 
	
		
			
				|  |  | -        />
 | 
	
		
			
				|  |  | -        <img src={nameImg} class={styles.name} />
 | 
	
		
			
				|  |  | -        <div class={[styles.modeBox, ((!state.isPercussion && !state.enableEvaluation) || (state.isPercussion && state.enableEvaluation) || (state.isPercussion && !state.enableEvaluation)) && styles.twoModeBox]}>
 | 
	
		
			
				|  |  | -          <Vue3Lottie ref={modeImgDom1} class={styles.modeImg} animationData={lxMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("practise")}></Vue3Lottie>
 | 
	
		
			
				|  |  | -          {!state.isPercussion && <Vue3Lottie ref={modeImgDom2} class={styles.modeImg} animationData={glMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("follow")}></Vue3Lottie>}
 | 
	
		
			
				|  |  | -          {state.enableEvaluation && <Vue3Lottie ref={modeImgDom3} class={styles.modeImg} animationData={pcMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("evaluating")}></Vue3Lottie>}
 | 
	
		
			
				|  |  | -        </div>
 | 
	
		
			
				|  |  | -        {data.showVip && <TheVip />}
 | 
	
		
			
				|  |  | -      </div>
 | 
	
		
			
				|  |  | -    );
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +      const pageVisible = usePageVisibility()
 | 
	
		
			
				|  |  | +      watch(
 | 
	
		
			
				|  |  | +         () => pageVisible.value,
 | 
	
		
			
				|  |  | +         val => {
 | 
	
		
			
				|  |  | +            if (val === "visible") {
 | 
	
		
			
				|  |  | +               if (storeData.user.vipMember) return
 | 
	
		
			
				|  |  | +               console.log("页面显示")
 | 
	
		
			
				|  |  | +               getUserInfo()
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +         }
 | 
	
		
			
				|  |  | +      )
 | 
	
		
			
				|  |  | +      watch(() => headTopData.modeType, (value,oldValue) => {
 | 
	
		
			
				|  |  | +         // headTopData.modeType 值 刚开始是 ""  所以 第一次切换时候不触发播放动画
 | 
	
		
			
				|  |  | +         if(!oldValue) return
 | 
	
		
			
				|  |  | +         nextTick(()=>{
 | 
	
		
			
				|  |  | +            if(value === "show"){
 | 
	
		
			
				|  |  | +               modeImgDom1.value?.pause()
 | 
	
		
			
				|  |  | +               modeImgDom2.value?.pause()
 | 
	
		
			
				|  |  | +               modeImgDom3.value?.pause()
 | 
	
		
			
				|  |  | +            }else if(value === "init"){
 | 
	
		
			
				|  |  | +               modeImgDom1.value?.play()
 | 
	
		
			
				|  |  | +               modeImgDom2.value?.play()
 | 
	
		
			
				|  |  | +               modeImgDom3.value?.play()
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +         })
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      onMounted(() => {
 | 
	
		
			
				|  |  | +         openGuid()
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +      watch(
 | 
	
		
			
				|  |  | +         () => evaluatingData.socketErrorStatus,
 | 
	
		
			
				|  |  | +         () => {
 | 
	
		
			
				|  |  | +           if (evaluatingData.socketErrorStatus === 2) {
 | 
	
		
			
				|  |  | +             setTimeout(() => {
 | 
	
		
			
				|  |  | +               evaluatingData.socketErrorPop = false;
 | 
	
		
			
				|  |  | +             }, 1000);
 | 
	
		
			
				|  |  | +           }
 | 
	
		
			
				|  |  | +         }
 | 
	
		
			
				|  |  | +       );      
 | 
	
		
			
				|  |  | +      return () => (
 | 
	
		
			
				|  |  | +         <div class={[styles.modeView, headTopData.modeType !== "init" && styles.hidden]}>
 | 
	
		
			
				|  |  | +            <img
 | 
	
		
			
				|  |  | +               src={backImg}
 | 
	
		
			
				|  |  | +               class={styles.back}
 | 
	
		
			
				|  |  | +               onClick={() => {
 | 
	
		
			
				|  |  | +                  headTopData.modeType = "show"
 | 
	
		
			
				|  |  | +               }}
 | 
	
		
			
				|  |  | +            />
 | 
	
		
			
				|  |  | +            <img src={nameImg} class={styles.name} />
 | 
	
		
			
				|  |  | +            <div
 | 
	
		
			
				|  |  | +               class={[
 | 
	
		
			
				|  |  | +                  styles.modeBox,
 | 
	
		
			
				|  |  | +                  ((!state.isPercussion && !state.enableEvaluation) ||
 | 
	
		
			
				|  |  | +                     (state.isPercussion && state.enableEvaluation) ||
 | 
	
		
			
				|  |  | +                     (state.isPercussion && !state.enableEvaluation)) &&
 | 
	
		
			
				|  |  | +                     styles.twoModeBox
 | 
	
		
			
				|  |  | +               ]}
 | 
	
		
			
				|  |  | +            >
 | 
	
		
			
				|  |  | +               <Vue3Lottie ref={modeImgDom1} class={styles.modeImg} animationData={lxMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("practise")}></Vue3Lottie>
 | 
	
		
			
				|  |  | +               {
 | 
	
		
			
				|  |  | +                  !state.isPercussion && <Vue3Lottie ref={modeImgDom2} class={styles.modeImg} animationData={glMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("follow")}></Vue3Lottie>
 | 
	
		
			
				|  |  | +               }
 | 
	
		
			
				|  |  | +               {
 | 
	
		
			
				|  |  | +                  state.enableEvaluation && <Vue3Lottie ref={modeImgDom3} class={styles.modeImg} animationData={pcMode} autoPlay={false} loop={true} onClick={() => headTopData.handleChangeModeType("evaluating")}></Vue3Lottie>
 | 
	
		
			
				|  |  | +               }
 | 
	
		
			
				|  |  | +            </div>
 | 
	
		
			
				|  |  | +            {data.showVip && <TheVip />}
 | 
	
		
			
				|  |  | +            {/** 延迟检测中途,socket出错,网络提示弹窗 */}
 | 
	
		
			
				|  |  | +            <div>
 | 
	
		
			
				|  |  | +               <Popup teleport="body" closeOnClickOverlay={false} class={["popup-custom", "van-scale"]} transition="van-scale" v-model:show={evaluatingData.socketErrorPop}>
 | 
	
		
			
				|  |  | +                  <AbnormalPop onConfirm={hanldeConfirmPop} onClose={hanldeClosePop} />
 | 
	
		
			
				|  |  | +               </Popup>
 | 
	
		
			
				|  |  | +            </div>            
 | 
	
		
			
				|  |  | +         </div>
 | 
	
		
			
				|  |  | +      )
 | 
	
		
			
				|  |  | +   }
 | 
	
		
			
				|  |  | +})
 |