Browse Source

feat: 延迟检测流程统一

TIANYONG 1 year ago
parent
commit
c55a83dea7

BIN
src/page-instrument/evaluat-model/delay-check/image/icon-back.png


+ 9 - 1
src/page-instrument/evaluat-model/delay-check/index.module.less

@@ -13,7 +13,15 @@
     background-repeat: no-repeat;
     background-size: 102% 110%;
 }
-
+.delayBackBtn {
+    position: absolute;
+    left: 0.62rem;
+    top: 0.47rem;
+    display: block;
+    width: 1.19rem;
+    height: 1.19rem;
+    z-index: 99;
+}
 .item {
     position: absolute;
     left: 0;

+ 42 - 20
src/page-instrument/evaluat-model/delay-check/index.tsx

@@ -26,14 +26,17 @@ import icon_4_2 from "./image/icon_4_2.png";
 import icon_3_0 from "./image/icon_3_0.png";
 import icon_3_1 from "./image/icon_3_1.png";
 import icon_3_2 from "./image/icon_3_2.png";
+import iconBack from "./image/icon-back.png";
 import { evaluatingData } from "/src/view/evaluating";
 import { IPostMessage } from "/src/utils/native-message";
 import state from "/src/state";
 
 export default defineComponent({
 	name: "delay-check",
-	emits: ["close"],
+	emits: ["close", "back"],
 	setup(props, { emit }) {
+		// startTune定时器
+		let startTuneTimer: any = null
 		const anim = ref();
 		const data = reactive({
 			show: false,
@@ -54,27 +57,19 @@ export default defineComponent({
 		};
 		/** 持续检测耳机状态 */
 		const keepCheckEarphone = async () => {
-			if (data.step >= 7) return;
+			if (data.step >= 7 || !data.show) return;
 			evaluatingData.earphone = await getEarphoneState();
+			// console.log('erji',evaluatingData.earphone,data.step)
 			if (evaluatingData.earphone) {
-				if (data.step <= 5) {
-					if (data.checkStatus === "ing") {
-						data.count = 0;
-						clearTimeout(data.startTimer);
-						clearTimeout(data.stopTimer);
-						toggleTune("stop");
-					}
-					data.step = 3;
-				}
+				clearTimeout(data.startTimer);
+				clearTimeout(data.stopTimer);
+				clearTimeout(startTuneTimer);
+				data.checkStatus = "init"
+				data.step = 3
 			} else {
-				if (data.step === 2 || data.step === 3) {
-					data.step = 4;
-					setTimeout(() => {
-						data.step = 5;
-						data.checkStatus = "ing";
-						data.count = 0;
-						toggleTune("start");
-					}, 2000);
+				if (data.step === 3) {
+					data.step = 2
+					data.checkStatus = "init"
 				}
 			}
 			setTimeout(() => {
@@ -101,14 +96,36 @@ export default defineComponent({
 		onMounted(() => {
 			data.show = true;
 			sendResult(listenerResult);
+			keepCheckEarphone();
 		});
 		onUnmounted(() => {
+			data.show = false;
 			removeResult(listenerResult);
 		});
 
 		const handleStartTune = async () => {
-			await keepCheckEarphone();
 			// data.step = evaluatingData.earphone ? 4 : 3;
+			if (evaluatingData.earphone) {
+				if (data.step <= 5) {
+					if (data.checkStatus === "ing") {
+						data.count = 0;
+						clearTimeout(data.startTimer);
+						clearTimeout(data.stopTimer);
+						toggleTune("stop");
+					}
+					data.step = 3;
+				}
+			} else {
+				if (data.step === 2 || data.step === 3) {
+					data.step = 4;
+					startTuneTimer = setTimeout(() => {
+						data.step = 5;
+						data.checkStatus = "ing";
+						data.count = 0;
+						toggleTune("start");
+					}, 2000);
+				}
+			}			
 		};
 		const hanldeEndTune = () => {
 			console.log('设置soundEffect')
@@ -138,6 +155,11 @@ export default defineComponent({
 				v-model:show={data.show}
 			>
 				<div class={styles.delayBox}>
+					{/*返回按钮*/}
+					<img class={styles.delayBackBtn} src={iconBack} onClick={() => {
+						clearTimeout(startTuneTimer)
+						emit("back")
+					}} />
 					<div class={[styles.item, data.step !== 7 && styles.show]}>
 						<Vue3Lottie animationData={bg}></Vue3Lottie>
 					</div>

+ 11 - 2
src/page-instrument/evaluat-model/index.tsx

@@ -3,7 +3,7 @@ import { connectWebsocket, evaluatingData, handleEndBegin, handleStartBegin, han
 import Earphone from "./earphone";
 import styles from "./index.module.less";
 import SoundEffect from "./sound-effect";
-import state from "/src/state";
+import state, { handleRessetState } from "/src/state";
 import { storeData } from "/src/store";
 import { browser } from "/src/utils";
 import { getNoteByMeasuresSlursStart } from "/src/helpers/formateMusic";
@@ -19,6 +19,7 @@ import iconTastBg from "./icons/task-bg.svg";
 import iconEvaluat from "./icons/evaluating.json";
 import { api_musicPracticeRecordVideoUpload } from "../api";
 import DelayCheck from "./delay-check";
+import { headTopData } from "../header-top/index";
 
 // frequency 频率, amplitude 振幅, decibels 分贝
 type TCriteria = "frequency" | "amplitude" | "decibels";
@@ -32,7 +33,14 @@ export default defineComponent({
       isSaveVideo: state.setting.camera && state.setting.saveToAlbum,
       shareMode: false,
     });
-
+    /**
+     * 检测返回
+     */
+    const handleDelayBack = () => {
+      evaluatingData.soundEffectMode = false;
+      handleRessetState();
+      headTopData.modeType = "init";
+    }
     /**
      * 执行检测
      */
@@ -275,6 +283,7 @@ export default defineComponent({
               evaluatingData.soundEffectMode = false;
               handlePerformDetection();
             }}
+            onBack={() => handleDelayBack()}
           />
         )}