|
@@ -1,5 +1,5 @@
|
|
|
import { Transition, defineComponent, onMounted, reactive, watch, defineAsyncComponent, computed, onUnmounted } from "vue";
|
|
|
-import { connectWebsocket, evaluatingData, handleEndBegin, handleStartBegin, handleStartEvaluat, handleViewReport, startCheckDelay, checkUseEarphone, handleCancelEvaluat, checkMinInterval } from "/src/view/evaluating";
|
|
|
+import { connectWebsocket, evaluatingData, handleEndBegin, handleStartBegin, handleStartEvaluat, handleViewReport, startCheckDelay, checkUseEarphone, handleCancelEvaluat, checkMinInterval, handleEndEvaluat } from "/src/view/evaluating";
|
|
|
import Earphone from "./earphone";
|
|
|
import styles from "./index.module.less";
|
|
|
import SoundEffect from "./sound-effect";
|
|
@@ -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_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 } from "/src/helpers/communication";
|
|
|
import EvaluatShare from "./evaluat-share";
|
|
|
import { Vue3Lottie } from "vue3-lottie";
|
|
|
import startData from "./data/start.json";
|
|
@@ -266,6 +266,8 @@ export default defineComponent({
|
|
|
// rate = parseFloat(rate.toFixed(2));
|
|
|
console.log("速度比例", rate, "速度", state.speed);
|
|
|
calculateInfo = formatTimes();
|
|
|
+ // 评测的速度,如果是选段,则选选段开头小节的速度
|
|
|
+ const evaluatSpeed = state.sectionStatus && state.section.length === 2 && state.section[0].measureSpeed ? state.section[0].measureSpeed * state.basePlayRate : state.speed;
|
|
|
const content = {
|
|
|
musicXmlInfos: calculateInfo.datas,
|
|
|
subjectId: state.musicalCode,
|
|
@@ -278,7 +280,7 @@ export default defineComponent({
|
|
|
clientId: storeData.platformType === "STUDENT" ? "student" : storeData.platformType === "TEACHER" ? "teacher" : "education",
|
|
|
hertz: state.setting.frequency,
|
|
|
reactionTimeMs: state.setting.reactionTimeMs ? Number(state.setting.reactionTimeMs) : 0,
|
|
|
- speed: state.speed,
|
|
|
+ speed: evaluatSpeed,
|
|
|
heardLevel: state.setting.evaluationDifficulty,
|
|
|
// beatLength: Math.round((state.fixtime * 1000) / rate),
|
|
|
beatLength: actualBeatLength,
|
|
@@ -327,8 +329,8 @@ export default defineComponent({
|
|
|
} else if (type === "selfCancel") {
|
|
|
// 再来一次,需要手动取消评测,不生成评测记录,不显示评测结果弹窗
|
|
|
evaluatingData.oneselfCancleEvaluating = true;
|
|
|
- handleCancelEvaluat();
|
|
|
- startBtnHandle();
|
|
|
+ // handleCancelEvaluat();
|
|
|
+ handleEndEvaluat(true, 'selfCancel');
|
|
|
}
|
|
|
resetPlaybackToStart();
|
|
|
evaluatingData.resulstMode = false;
|
|
@@ -443,6 +445,18 @@ export default defineComponent({
|
|
|
}
|
|
|
);
|
|
|
|
|
|
+ // 手动取消评测,需要自动再次评测
|
|
|
+ watch(
|
|
|
+ () => evaluatingData.hideResultModal,
|
|
|
+ (val) => {
|
|
|
+ if (val && evaluatingData.oneselfCancleEvaluating) {
|
|
|
+ setTimeout(() => {
|
|
|
+ startBtnHandle();
|
|
|
+ }, 500);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
// 如果打开了延迟检测开关,需要先发送开始检测的消息
|
|
|
const delayData = await api_getDeviceDelay();
|
|
@@ -462,6 +476,7 @@ export default defineComponent({
|
|
|
|
|
|
onUnmounted(() => {
|
|
|
api_remove_finishDelayCheck(handleFinishDelayCheck);
|
|
|
+ api_remove_cancelDelayCheck(handleCancelDelayCheck);
|
|
|
clearTimeout(checkErjiTimer);
|
|
|
checkErjiTimer = null;
|
|
|
});
|
|
@@ -482,12 +497,20 @@ export default defineComponent({
|
|
|
<>
|
|
|
<img class={styles.iconBtn} src={headImg("icon_reset.png")} onClick={() => {
|
|
|
// 校验评测最小间隔时间
|
|
|
- checkMinInterval()
|
|
|
+ const currentTime = +new Date();
|
|
|
+ // 开始评测和结束评测的间隔时间小于800毫秒,则不处理
|
|
|
+ if (currentTime - evaluatingData.recordingTime < 800) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
handleEvaluatResult("selfCancel")
|
|
|
}} />
|
|
|
<img class={styles.iconBtn} src={headImg("submit.png")} onClick={() => {
|
|
|
// 校验评测最小间隔时间
|
|
|
- checkMinInterval()
|
|
|
+ const currentTime = +new Date();
|
|
|
+ // 开始评测和结束评测的间隔时间小于800毫秒,则不处理
|
|
|
+ if (currentTime - evaluatingData.recordingTime < 800) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
handleEndBegin()
|
|
|
}} />
|
|
|
</>
|