Browse Source

fix: #9528 bug修复

TIANYONG 1 year ago
parent
commit
7813b66429

+ 5 - 1
src/helpers/formateMusic.ts

@@ -780,11 +780,15 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				currentTime,
 				isDouble,
 				isMutileSubject,
+				measuresTempoInBPM: note?.sourceMeasure?.tempoInBPM
 			});
 		}
 
 		iterator.moveToNextVisibleVoiceEntry(false);
 	}
+	// 是否是变速的曲子
+	const hasVaryingSpeed = _notes.some((item: any) => item.measuresTempoInBPM !== _notes[0].measuresTempoInBPM)
+	console.log('变速曲子',hasVaryingSpeed)
 	for (let { note, iterator, currentTime, isDouble, isMutileSubject } of _notes) {
 		if (note) {
 			if (si === 0) {
@@ -832,7 +836,7 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 			let relativeTime = usetime;
 			let beatSpeed = 0;
 			// 速度不能为0 此处的速度应该是按照设置的速度而不是校准后的速度,否则mp3速度不对
-			if (measureSpeed !== baseSpeed) {
+			if (measureSpeed !== baseSpeed && !hasVaryingSpeed) {
 				beatSpeed = baseSpeed || measureSpeed || 100
 			} else {
 				beatSpeed = (state.isSpecialBookCategory ? measureSpeed : baseSpeed) || 1;

+ 3 - 0
src/page-instrument/theme.css

@@ -21,4 +21,7 @@ body{
     top: 0;
     right: 0;
     transform: translate(40%, -40%);
+}
+.shiyiBox > .van-icon-cross {
+    display: none !important;
 }

+ 15 - 0
src/page-instrument/view-evaluat-report/component/share-top/image/shiyi-close.svg

@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+    <title>关闭</title>
+    <g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+        <g id="评测报告-图标释义" transform="translate(-660.000000, -27.000000)">
+            <g id="关闭" transform="translate(661.000000, 28.000000)">
+                <circle id="椭圆形" stroke="#FFFFFF" stroke-width="1.22367143" stroke-linecap="round" stroke-linejoin="round" cx="15" cy="15" r="15"></circle>
+                <g id="编组-8" transform="translate(14.693878, 15.306122) rotate(-315.000000) translate(-14.693878, -15.306122) translate(7.346939, 7.959184)" fill="#FFFFFF">
+                    <path d="M0.918367347,6.42857143 L13.7755102,6.42857143 C14.2827105,6.42857143 14.6938776,6.8397385 14.6938776,7.34693878 C14.6938776,7.85413906 14.2827105,8.26530612 13.7755102,8.26530612 L0.918367347,8.26530612 C0.411167066,8.26530612 -1.09084133e-11,7.85413906 -1.09084755e-11,7.34693878 C-1.09085376e-11,6.8397385 0.411167066,6.42857143 0.918367347,6.42857143 Z" id="矩形" transform="translate(7.346939, 7.346939) rotate(-270.000000) translate(-7.346939, -7.346939) "></path>
+                    <rect id="矩形" transform="translate(7.346939, 7.346939) rotate(-180.000000) translate(-7.346939, -7.346939) " x="8.69251253e-13" y="6.42857143" width="14.6938776" height="1.83673469" rx="0.918367347"></rect>
+                </g>
+            </g>
+        </g>
+    </g>
+</svg>

+ 9 - 2
src/page-instrument/view-evaluat-report/component/share-top/index.module.less

@@ -227,7 +227,14 @@
         }
     }
 }
-
+.shiyiClose {
+    width: 24px;
+    height: 24px;
+    position: absolute;
+    right: -34px;
+    top: -20px;
+    cursor: pointer;
+}
 .shiyiPopup{
     background: #fff;
     border-radius: 20px;
@@ -271,7 +278,7 @@
         width: 50%;
         display: flex;
         align-items: center;
-        padding: 7px 0 7px 26px;
+        padding: 12px 0 12px 34px;
         position: relative;
         &:nth-child(2n) {
             transform: translateX(20px);

+ 4 - 6
src/page-instrument/view-evaluat-report/component/share-top/index.tsx

@@ -7,6 +7,7 @@ import iconBack from "./image/icon-back.svg";
 import iconShiyi from "./image/icon-shiyi.svg";
 import iconhuifang from "./image/icon-huifang.svg";
 import shiyiTop from "./image/shiyi-top.png";
+import shiyiClose from "./image/shiyi-close.svg";
 import firstLeft from "./image/first-left.svg";
 import firstRight from "./image/first-right.svg";
 import firstTop from "./image/first-top.svg";
@@ -288,7 +289,7 @@ export default defineComponent({
 							{
 								itemType.value === "integrity" && 
 								<div>
-									<Note fill="#2ABC6F" />
+									<img class={styles.firstIcon3} src={firstCorrect} />
 									<span>演奏正确</span>
 								</div>								
 							}							
@@ -338,11 +339,12 @@ export default defineComponent({
 
 				<Popup
 					v-model:show={shareData.shiyiShow}
-					class="popup-custom van-scale center-closeBtn"
+					class="popup-custom van-scale center-closeBtn shiyiBox"
 					transition="van-scale"
 					teleport="body"
 					closeable
 				>
+					<img onClick={() => shareData.shiyiShow = false }  class={styles.shiyiClose} src={shiyiClose} />
 					{scoreData.value.musicType === 'staff' ?
 						<div class={styles.shiyiPopup}>
 							<img class={styles.shiyiTop} src={shiyiTop} />
@@ -379,10 +381,6 @@ export default defineComponent({
 									<Note fill="#ADADAD" />
 									<span>灰色音符:未演奏</span>
 								</div>
-
-
-
-
 							</div>
 						</div> : 
 						<div class={styles.shiyiPopup}>

+ 1 - 0
src/page-instrument/view-evaluat-report/index.tsx

@@ -192,6 +192,7 @@ export default defineComponent({
 			scoreData.score = res.data?.score;
 			scoreData.videoFilePath = res.data?.videoFilePath || res.data?.recordFilePath;
 			scoreData.musicType = query.musicRenderType;
+			state.isEvaluatReport = true;
 			await getMusicDetail(resultData.musicalNotesPlayStats?.examSongId);
 			// 从练习记录进入评测报告,默认显示五线谱
 			// if (!query.musicRenderType) {

+ 2 - 0
src/state.ts

@@ -418,6 +418,8 @@ const state = reactive({
   beatStartTime: 0,
   /** 是否为详情预览模式 */
   isPreView: false,
+  /** 是否为评测报告模式 */
+  isEvaluatReport: false,  
 });
 const browserInfo = browser();
 let offset_duration = 0;

+ 1 - 1
src/view/music-score/index.tsx

@@ -163,7 +163,7 @@ export default defineComponent({
 					state.musicRenderType == EnumMusicRenderType.staff ? "staff" : "jianpuTone",
 				]}
 			>
-				{props.showSelection && musicData.showSelection && !state.isPreView && <Selection />}
+				{props.showSelection && musicData.showSelection && !state.isPreView && !state.isEvaluatReport && <Selection />}
 			</div>
 		);
 	},