| 
					
				 | 
			
			
				@@ -10,7 +10,7 @@ import { getNoteByMeasuresSlursStart } from "/src/helpers/formateMusic"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { Icon, Popup, showToast, closeToast, showLoadingToast } from "vant"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import EvaluatResult from "./evaluat-result"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import EvaluatAudio from "./evaluat-audio"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { api_getDeviceDelay, api_openAdjustRecording, api_proxyServiceMessage, api_videoUpdate, getEarphone, api_back, api_startDelayCheck, api_cancelDelayCheck, api_remove_cancelDelayCheck, api_closeDelayCheck, api_finishDelayCheck, api_retryEvaluating, api_remove_finishDelayCheck } from "/src/helpers/communication"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { api_getDeviceDelay, api_openAdjustRecording, api_proxyServiceMessage, api_videoUpdate, getEarphone, api_back, api_startDelayCheck, api_cancelDelayCheck, api_remove_cancelDelayCheck, api_closeDelayCheck, api_finishDelayCheck, api_retryEvaluating, api_remove_finishDelayCheck, api_workUpdate } from "/src/helpers/communication"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import EvaluatShare from "./evaluat-share"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { Vue3Lottie } from "vue3-lottie"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import startData from "./data/start.json"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -25,6 +25,8 @@ import Countdown from "./countdown"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { IPostMessage } from "/src/utils/native-message"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import tipErjiBg from "./icons/tip_erji.png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import tipErjiBtn from "./icons/tip_btn.png" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import SubmitNoDonePop from "./submit-nodone"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { selfSubmitWorkHome } from "../custom-plugins/work-index"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // const DelayCheck = defineAsyncComponent(() => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //   import('./delay-check') 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -59,6 +61,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       evaluatUpdateAudio: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       isSaveVideo: state.setting.camera && state.setting.saveToAlbum, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       shareMode: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      showNoDonePop: false, // 提交作业显示未达标确认弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 检测返回 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -196,7 +199,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 妙极客的曲子,选择的第一小节,beatLength需要传递fixtime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (state.isEvxml && startIndex == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           actualBeatLength = Math.round((state.times[0].fixtime * 1000) / 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }           
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         selectTimes = state.times.filter((n: any, index: number) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           return index >= startIndex && index <= endIndex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -329,7 +332,7 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 评测结果按钮处理 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    const handleEvaluatResult = (type: "practise" | "tryagain" | "look" | "share" | "update" | "selfCancel") => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleEvaluatResult = (type: "practise" | "tryagain" | "look" | "share" | "update" | "selfCancel" | "submitWork") => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (type === "update") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (state.isAppPlay) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           evaluatModel.evaluatUpdateAudio = true; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -371,11 +374,56 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // evaluatingData.isBeginMask = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         evaluatingData.evaluatings = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         state.playState = "paused"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else if (type === "submitWork") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 作业模式,提交作业,作业没有达标时,提交作业需要弹窗提醒 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!state.isWorkDone) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          evaluatModel.showNoDonePop = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          submitWorkHome(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       resetPlaybackToStart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       evaluatingData.resulstMode = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 关闭提交作业确认弹窗 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const handleCloseSubmitPop = (type: "again" | "confirm") => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      evaluatModel.showNoDonePop = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (type === "again") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        handleEvaluatResult("tryagain"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        submitWorkHome(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        resetPlaybackToStart(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        evaluatingData.resulstMode = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 提交作业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    const submitWorkHome = async () => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      // 分为开了摄像头和没开摄像头的情况 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (state.setting.camera) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const res = await api_workUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        console.log('提交作业回调',res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (res?.content?.type === "success") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            handleSaveResult({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              id: evaluatingData.resultData?.recordId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              videoFilePath: res?.content?.filePath, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 手动提交评测作业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            selfSubmitWorkHome(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else if (res?.content?.type === "error") { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            showToast({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              message: res.content?.message || "上传失败", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 手动提交评测作业 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        selfSubmitWorkHome(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 上传音视频 */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const hanldeUpdateVideoAndAudio = async (update = false) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (!update) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -489,11 +537,11 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const earPhonePopShow = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return evaluatingData.earphoneMode && !state.isLoading && !state.hasDriverPop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return evaluatingData.earphoneMode && !state.isLoading && !state.hasDriverPop && !evaluatingData.showOpenCameraPop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     const tipErjiPopShow = computed(() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			return evaluatingData.tipErjiShow && !state.isLoading && !state.hasDriverPop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return evaluatingData.tipErjiShow && !state.isLoading && !state.hasDriverPop && !evaluatingData.showOpenCameraPop; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // watch( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -640,6 +688,10 @@ export default defineComponent({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <Popup teleport="body" class={["popup-custom", "van-scale"]} transition="van-scale" v-model:show={evaluatModel.shareMode}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <EvaluatShare onClose={() => (evaluatModel.shareMode = false)} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         </Popup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        <Popup teleport="body" class={["popup-custom", "van-scale"]} transition="van-scale" v-model:show={evaluatModel.showNoDonePop}> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          <SubmitNoDonePop onClose={handleCloseSubmitPop} /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        </Popup> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </div> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 |