Browse Source

Merge branch 'feature-tianyong' into gym-online

TIANYONG 7 months ago
parent
commit
1137ffe23a
1 changed files with 27 additions and 14 deletions
  1. 27 14
      src/page-instrument/view-evaluat-report/index.tsx

+ 27 - 14
src/page-instrument/view-evaluat-report/index.tsx

@@ -83,6 +83,7 @@ export default defineComponent({
       headerHide: false,
       musicalNotesPlayStats: [] as any[],
       userMeasureScore: {} as any,
+      isNewReport: true,
     });
     const getAPPData = async () => {
       const screenData = await isSpecialShapedScreen();
@@ -169,7 +170,7 @@ export default defineComponent({
       state.partIndex = Number(res?.data?.partIndex);
       let resultData = {} as any;
       try {
-        resultData = JSON.parse(res?.data?.scoreData);
+        resultData = eval('(' + res?.data?.scoreData + ')');
       } catch (error) {
         console.error("解析评测结果:", error);
       }
@@ -179,7 +180,7 @@ export default defineComponent({
       console.log('结果11',resultData)
       detailData.musicalNotesPlayStats = resultData.musicalNotesPlayStats?.notesData || [];
       detailData.userMeasureScore = resultData.userMeasureScore || {};
-
+      detailData.isNewReport = res.data.practiceTime ? true : false;
       scoreData.heardLevel = res.data?.heardLevel;
       scoreData.cadence = res.data?.cadence;
       scoreData.integrity = res.data?.integrity;
@@ -237,7 +238,7 @@ export default defineComponent({
     };
 
     const filterNotes = () => {
-      let include = ["RIGHT", "WRONG", "NOT_PLAYED"];
+      let include = detailData.isNewReport ? ["RIGHT", "WRONG", "NOT_PLAYED"] : ["RIGHT", "WRONG", "NOT_PLAY"];
       if (scoreData.itemType === "intonation") {
         // 音准
         include.push(...["HIGH", "LOW"]);
@@ -246,15 +247,15 @@ export default defineComponent({
         include.push(...["EARLY", "LATE"]);
       } else if (scoreData.itemType === "integrity") {
         // 完整性
-        include = ["SHORT", "NORMAL", "NOT_PLAYED"];
+        include = detailData.isNewReport ? ["SHORT", "NORMAL", "NOT_PLAYED"] : ["INTEGRITY_WRONG", "RIGHT", "NOT_PLAY"];
       }
       if (scoreData.itemType === "cadence") {
-        return detailData.musicalNotesPlayStats.filter((item: any) => include.includes(item.rhythmicAssessment.result));
+        return detailData.musicalNotesPlayStats.filter((item: any) => include.includes(item.rhythmicAssessment ? item.rhythmicAssessment.result : item.musicalErrorType));
       } else if (scoreData.itemType === "integrity") {
-        return detailData.musicalNotesPlayStats.filter((item: any) => include.includes(item.integrityAssessment?.result));
+        return detailData.musicalNotesPlayStats.filter((item: any) => include.includes(item.integrityAssessment ? item.integrityAssessment?.result : item.musicalErrorType));
       } else  {
         return detailData.musicalNotesPlayStats.filter((item: any) => {
-          let result = item.pitchAssessment.result;
+          let result = item.pitchAssessment ? item.pitchAssessment.result : item.musicalErrorType;
           // if (scoreData.itemType === "integrity") {
           //   result = result === "HIGH" || result === "LOW" || result === "WRONG" ? "RIGHT" : result;
           // }
@@ -269,16 +270,21 @@ export default defineComponent({
       // console.log(1111,notes)
       for (const note of notes) {
         const idx = note.musicalNotesIndex !== undefined ? note.musicalNotesIndex : note.index;
-        const active = allNote.value.find((item: any) => item.i === idx);
+        const active = detailData.isNewReport ? allNote.value.find((item: any) => item.i === idx) : allNote.value[idx];
         setTimeout(() => {
-          if (useedid.value.includes(active.id)) {
+          if (!active?.id) return;
+          if (active?.id && useedid.value.includes(active?.id)) {
             return;
           }
           useedid.value.push(active.id);
           const svgEl = document.getElementById("vf-" + active.id);
           const stemEl = document.getElementById("vf-" + active.id + "-stem");
-          let errType = scoreData.itemType === "cadence" ? note.rhythmicAssessment.result : scoreData.itemType === "integrity" ? note.integrityAssessment.result : note.pitchAssessment.result;
-          // console.log(1111222,errType)
+          let errType = '';
+          if (detailData.isNewReport) {
+            errType = scoreData.itemType === "cadence" ? note.rhythmicAssessment.result : scoreData.itemType === "integrity" ? note.integrityAssessment.result : note.pitchAssessment.result;
+          } else {
+            errType = note.musicalErrorType
+          }
           /**
            * 新版小酷AI不需要在当前的音符复制出来一个音符,所以注释掉isNeedCopyElement和copySvg
            */
@@ -287,12 +293,19 @@ export default defineComponent({
           // if (scoreData.itemType === "integrity") {
           //   errType = errType = note.pitchAssessment.result === "HIGH" || note.pitchAssessment.result === "LOW" || note.pitchAssessment.result === "WRONG" ? "RIGHT" : errType;
           // }
-          if (scoreData.itemType === "integrity") {
-            errType = errType = note.integrityAssessment.result === "NORMAL" ? "RIGHT" : note.integrityAssessment.result === "SHORT" ? "SHORT" : errType;
+          if (detailData.isNewReport) {
+            if (scoreData.itemType === "integrity") {
+              errType = errType = note.integrityAssessment.result === "NORMAL" ? "RIGHT" : note.integrityAssessment.result === "SHORT" ? "SHORT" : errType;
+            }
+          } else {
+            errType = note.musicalErrorType
+          }
+          if (!detailData.isNewReport) {
+            errType = errType == "NOT_PLAY" ? "NOT_PLAYED" : errType == "INTEGRITY_WRONG" ? "SHORT" : errType;
           }
           stemEl?.classList.add(colorsClass[errType]);
           svgEl?.classList.add(colorsClass[errType]);
-          // console.log(123456,'添加颜色',errType)
+          console.log(123456,'添加颜色',errType)
           // 评测过的音符,需要给小节添加背景色
           // if (errType !== "NOT_PLAYED") {
           //   const staveNote = svgEl?.parentNode?.parentNode?.querySelector(".vf-stave");