|
@@ -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");
|