Browse Source

Merge branch 'feature-tianyong' into gym-test

TIANYONG 9 months ago
parent
commit
e95f86e164

+ 2 - 0
src/helpers/metronome.ts

@@ -217,6 +217,8 @@ class Metronome {
 
 	// 播放
 	playAudio = () => {
+		// 关闭定时器节拍器
+		return
 		/* 如果是 评测模式且不为MIDI并且节拍器资源加载成功的时候  不运行节拍器播放*/
 		if (state.modeType === "practise" && state.playMode !== "MIDI") {
 			if(state.playType === "play" && state.playSource === "music" && audioDataState.songCollection.beatSongEle){

+ 4 - 0
src/page-instrument/custom-plugins/ExerciseStatistics/index.module.less

@@ -68,3 +68,7 @@
         }
     }
 }
+
+.hidden {
+    display: none;
+}

+ 2 - 1
src/page-instrument/custom-plugins/ExerciseStatistics/index.tsx

@@ -4,6 +4,7 @@ import iconTime from "./icon-time.png";
 import request from "/src/utils/request";
 import { getSecondRPM } from "/src/utils";
 import state from '/src/state'
+import { headTopData } from "/src/page-instrument/header-top/index";
 
 // 练习统计
 export default defineComponent({
@@ -45,7 +46,7 @@ export default defineComponent({
 			getTime();
 		});
 		return () => (
-			<div class={styles.exerciseStatistics} onClick={() => (data.isHidden = !data.isHidden)}>
+			<div class={[styles.exerciseStatistics, headTopData.modeType !== 'show' && styles.hidden]} onClick={() => (data.isHidden = !data.isHidden)}>
 				<div class={[styles.btnTimeWrap, data.isHidden ? "" : styles.hide]}>
 					<img class={styles.icon} src={iconTime} />
 					<div class={styles.btnTietle}>练习时长</div>

+ 1 - 0
src/page-instrument/custom-plugins/helper-model/recommendation/index.module.less

@@ -132,6 +132,7 @@
                         font-size: 14px;
                         color: #131415;
                         caret-color: #01C1B5;
+                        min-height: 80px;
                         &::placeholder {
                             font-weight: 400;
                             font-size: 14px;

+ 3 - 0
src/page-instrument/custom-plugins/work-home/index.tsx

@@ -4,6 +4,7 @@ import styles from "./index.module.less";
 import { api_lessonTrainingSubmitTraining, api_lessonTrainingTrainingStudentDetail } from "../../api";
 import state, { handleSetSpeed, hanldeDirectSelection, setSection } from "/src/state";
 import { getQuery } from "/src/utils/queryString";
+import { data as workData } from "../work-index"
 
 export default defineComponent({
 	name: "HomeWork",
@@ -43,6 +44,7 @@ export default defineComponent({
 			const workeData = props.workeData;
 			if (workeData.id) {
 				training.times = workeData.times || 0;
+				console.log('作业次数',workeData.trainingTimes)
 				training.trainingTimes = workeData.trainingTimes || 0;
 				training.trainingSpeed = workeData.trainingSpeed;
 				training.start = Number(workeData.start);
@@ -59,6 +61,7 @@ export default defineComponent({
 			const res = await api_lessonTrainingTrainingStudentDetail(props.workeData.id, 'homeWork');
 			if (res?.code === 200) {
 				training.trainingTimes = res.data.trainingTimes || 0;
+				workData.worke.trainingTimes = training.trainingTimes;
 			}
 		};
 

+ 1 - 1
src/page-instrument/custom-plugins/work-index/index.tsx

@@ -13,7 +13,7 @@ const workEvaluatRef = ref();
 export const data = reactive({
 	/** 作业类型:练习PRACTICE, 评测EVALUATION */
 	trainingType: "" as "PRACTICE" | "EVALUATION",
-	worke: {},
+	worke: {} as any,
 });
 
 export const HANDLE_WORK_ADD = () => {

+ 8 - 8
src/page-instrument/evaluat-model/earphone/index.module.less

@@ -1,10 +1,10 @@
 .earphoneBox {
     position: relative;
-    width: 600px;
-    height: 229px;
+    width: 674px;
+    height: 257px;
     &.ipadEarphoneBox{
-        width: 540px;
-        height: 206px;
+        width: 608px;
+        height: 232px;
         .earphoneBtn{
             width: 120px;
             height: 35px;
@@ -20,9 +20,9 @@
     .earphoneBtn {
         position: absolute;
         left: 50%;
-        bottom: 25px;
-        width: 105px;
-        height: 30px;
-        transform: translateX(-43%);
+        bottom: 24px;
+        width: 133px;
+        height: 39px;
+        transform: translateX(-50%);
     }
 }

BIN
src/page-instrument/evaluat-model/icons/tip_erji.png


+ 6 - 6
src/page-instrument/evaluat-model/index.module.less

@@ -131,11 +131,11 @@
 
 .earphoneBox {
     position: relative;
-    width: 600px;
-    height: 229px;
+    width: 674px;
+    height: 257px;
     &.ipadEarphoneBox{
-        width: 540px;
-        height: 206px;
+        width: 608px;
+        height: 232px;
         .earphoneBtn{
             width: 120px;
             height: 35px;
@@ -151,9 +151,9 @@
     .earphoneBtn {
         position: absolute;
         left: 50%;
-        bottom: 13px;
+        bottom: 24px;
         width: 133px;
         height: 39px;
-        transform: translateX(-43%);
+        transform: translateX(-50%);
     }
 }

+ 27 - 20
src/page-instrument/follow-model/microphone/index.module.less

@@ -42,32 +42,39 @@
     margin: 18px 6px 17px 6px;
     cursor: pointer;
 }
-
-.microBox {
+.earphoneBox {
     position: relative;
-    width: 100vw;
-    height: 100vh;
-    .microBg {
+    width: 674px;
+    height: 257px;
+    &.ipadEarphoneBox{
+        width: 608px;
+        height: 232px;
+        .earphoneBtn{
+            .earBtn{
+                width: 76px;
+                height: 34px;
+            }
+        }
+    }
+    .earphoneBg {
         position: absolute;
         left: 50%;
-        top: 20%;
-        height: 60%;
+        top: 0;
+        height: 100%;
         transform: translateX(-50%);
     }
-    .microBtn {
+    .earphoneBtn {
         position: absolute;
-        bottom: 23.5%;
         left: 50%;
-        transform: translate(-45%);
-    }
-    .microCancel {
-        width: 11.2vw;
-        height: 100%;
-        margin-right: 2px;
-    }
-    .microConfirm {
-        width: 11.2vw;
-        height: 100%;
-        margin-left: 2px;
+        bottom: 26px;
+        transform: translateX(-50%);
+        display: flex;
+        .earBtn{
+            width: 84px;
+            height: 38px;
+            &+.earBtn{
+                margin-left: 8px;
+            }
+        }
     }
 }

+ 9 - 5
src/page-instrument/follow-model/microphone/index.tsx

@@ -6,17 +6,21 @@ import icon_confirm from "./images/icon_confirm.svg";
 import microBg from "./images/microBg.png";
 import microCancel from "./images/micro_cancel.png";
 import microConfirm from "./images/micro_confirm.png";
+import { browser } from "/src/utils";
 
 export default defineComponent({
 	name: "earphone",
 	emits: ["close"],
 	setup(props, { emit }) {
+		// 资源类型
+		const browserInfo = browser();
+		const isPad =  navigator?.userAgent?.includes("UAWEIVRD-W09") || browserInfo?.iPad || browserInfo.isTablet;
 		return () => (
-			<div class={styles.microBox}>
-				<img class={styles.microBg} src={microBg} />
-				<div class={styles.microBtn}>
-					<img class={styles.microCancel} src={microCancel} onClick={() => emit("close")} />
-					<img class={styles.microConfirm} src={microConfirm} onClick={() => emit("close")} />
+			<div class={[styles.earphoneBox, isPad && styles.ipadEarphoneBox]}>
+				<img class={styles.earphoneBg} src={microBg} />
+				<div class={styles.earphoneBtn}>
+					<img class={styles.earBtn} src={microCancel} onClick={() => emit("close")} />
+					<img class={styles.earBtn} src={microConfirm} onClick={() => emit("close")} />
 				</div>
 			</div>
 		);

+ 1 - 0
src/page-instrument/header-top/index.module.less

@@ -7,6 +7,7 @@
     margin-left: calc(-1 * var(--detailDataPaddingLeft));
     padding: 0 30px;
     justify-content: flex-end;
+    background-color: #fff;
 
     &.headerTopRight {
         justify-content: flex-end;

+ 5 - 5
src/page-instrument/header-top/index.tsx

@@ -668,10 +668,10 @@ export default defineComponent({
           }}
         >
           {/* 返回和标题 */}
-          {!(state.playState == "play" || followData.start || evaluatingData.startBegin) && !state.isWeb &&  (
+          {!(state.playState == "play" || followData.start || evaluatingData.startBegin) &&  (
             <div id="noticeBarRollDom" class={styles.headTopLeftBox}>
               {
-                !query.isMove && <img src={iconBack} class={["headTopBackBtn", styles.img, !headTopData.showBack && styles.hidenBack]} onClick={handleBack} />
+                !query.isMove && !query.isHideBack && <img src={iconBack} class={["headTopBackBtn", styles.img, !headTopData.showBack && styles.hidenBack]} onClick={handleBack} />
               }
               {smoothAnimationState.isShow.value || state.isCombineRender ? (
                 <div
@@ -684,14 +684,14 @@ export default defineComponent({
                   }
                   class={[styles.title, state.isCbsView && styles.blackTitle, "headeTopTitleBtn"]}
                   onClick={() => {
-                    isMusicList.value && (musicListShow.value = true);
+                    isMusicList.value && !state.isHomeWork && !query.isHideMusicList && (musicListShow.value = true);
                   }}
                 >
-                  {isMusicList.value && <div class={[styles.symbolNote, "driver-8"]}></div>}
+                  {isMusicList.value && !state.isHomeWork && !query.isHideMusicList && <div class={[styles.symbolNote, "driver-8"]}></div>}
                   <NoticeBar text={state.examSongName} background="none" />
                 </div>
               ) : (
-                isMusicList.value && !state.isHomeWork && (
+                isMusicList.value && !state.isHomeWork && !query.isHideMusicList && (
                   <img
                     src={listImg}
                     class={[styles.img, styles.listImg, "driver-8"]}

+ 4 - 2
src/page-instrument/header-top/speed/index.tsx

@@ -61,6 +61,8 @@ export default defineComponent({
 		})
 		// 切换节拍器
 		const toggleSwitch = async (res: any) => {
+			metronomeDisable.value = res;
+			return
 			switchLoading.value = true;
 			try {
 			  if (storeData.isApp && state.enableEvaluation) {
@@ -137,14 +139,14 @@ export default defineComponent({
 							<div onClick={()=>{ speed.value = 110 }}>110</div>
 						</div>
 						{
-							state.isMixBeat && 
+							state.isMixBeat && state.modeType !== "evaluating" &&
 							<div class={styles.metronome}>
 								<div class={styles.tit}>节拍器</div>
 								<Switch 
 									class={switchLoading.value ? styles.switchLoading : ''}
 									v-model:modelValue={metronomeDisable.value} 
 									loading={switchLoading.value}
-									onChange={toggleSwitch}			
+									onChange={toggleSwitch}
 								></Switch>
 							</div>
 						}

BIN
src/page-instrument/view-evaluat-report/component/share-top/image/videobg.png


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

@@ -406,10 +406,12 @@
             .plyr__controls {
                 .plyr__controls__item.plyr__control {
                     .icon--pressed {
+                        background-size: 100% 100%;
                         background: url("./image/pause2.png") no-repeat;
                     }
 
                     .icon--not-pressed {
+                        background-size: 100% 100%;
                         background: url("./image/play2.png") no-repeat;
                     }
                 }

+ 27 - 20
src/page-instrument/view-evaluat-report/index.module.less

@@ -46,6 +46,13 @@
     #selectionBox {
       pointer-events: none;
     }
+
+    .vf-stavenote {
+      path {
+        fill: #ADADAD;
+        stroke: #ADADAD;
+      }
+    }
   }
 
   .headHeight {
@@ -100,22 +107,22 @@
 
 .right {
   path {
-    fill: #01B996;
-    stroke: #01B996;
+    fill: #01B996 !important;
+    stroke: #01B996 !important;
   }
 }
 
 .inaccuracy {
   path {
-    fill: #FF9200;
-    stroke: #FF9200;
+    fill: #FF9200 !important;
+    stroke: #FF9200 !important;
   }
 }
 
 .wrong {
   path {
-    fill: #8F4EFB;
-    stroke: #8F4EFB;
+    fill: #8F4EFB !important;
+    stroke: #8F4EFB !important;
   }
 }
 
@@ -129,56 +136,56 @@
 // 音准
 .intonation_wrong {
   path{
-    fill: #FF9200;
-    stroke: #FF9200;
+    fill: #FF9200 !important;
+    stroke: #FF9200 !important;
   }
 }
 
 // 音准高
 .intonation_high {
   path{
-    fill: #EF231D;
-    stroke: #EF231D;
+    fill: #EF231D !important;
+    stroke: #EF231D !important;
   }
 }
 
 // 音准低
 .intonation_low {
   path{
-    fill: #0E79FF;
-    stroke: #0E79FF;
+    fill: #0E79FF !important;
+    stroke: #0E79FF !important;
   }
 }
 
 // 节奏
 .cadence_wrong {
   path{
-    fill: #FF9200;
-    stroke: #FF9200;
+    fill: #FF9200 !important;
+    stroke: #FF9200 !important;
   }
 }
 
 // 节奏快
 .cadence_fast {
   path {
-    fill: #F63582;
-    stroke: #F63582;
+    fill: #F63582 !important;
+    stroke: #F63582 !important;
   }
 }
 
 // 节奏慢
 .cadence_slow {
   path {
-    fill: #FFAA00;
-    stroke: #FFAA00;
+    fill: #FFAA00 !important;
+    stroke: #FFAA00 !important;
   }
 }
 
 // 完成度
 .integrity_wrong {
   path {
-    fill: #FF8219;
-    stroke: #FF8219;
+    fill: #FF8219 !important;
+    stroke: #FF8219 !important;
   }
 }
 

+ 1 - 1
src/state.ts

@@ -1189,7 +1189,7 @@ export const handleChangeSection = () => {
 // 重置设置
 export const resetSettings = () => {
   // 切换模式,清除选段
-  metronomeData.cursorMode = 2;
+  metronomeData.cursorMode = state.modeType === 'follow' ? 1 : 2;
   state.noSavePopShow = true;
   clearSelection();
   skipNotePlay(0, true);

+ 5 - 0
src/view/fingering/fingering-config.ts

@@ -169,6 +169,7 @@ export const mappingVoicePart = (id: number | string, soruce: "GYM" | "COLEXIU"
       "Clarinet in Bb 2": 4,
       "Alto Clarinet in Eb": 4,
       "Bass Clarinet in Bb": 4,
+      "1st Clarinet in Bb": 4,
       Bassoon: 1,
       "Alto Saxophone": 5,
       "Tenor Saxophone": 5,
@@ -275,6 +276,8 @@ export const matchVoicePart = (id: number | string, type: "SINGLE" | "CONCERT"):
       "Clarinet in Bb 2": 4,
       "Alto Clarinet in Eb": 4,
       "Bass Clarinet in Bb": 4,
+      "1st Clarinet in Bb": 4,
+      "2nd Clarinet in Bb": 4,
       Bassoon: 1,
       "Alto Saxophone": 5,
       "Alto Saxophone1": 5,
@@ -284,6 +287,8 @@ export const matchVoicePart = (id: number | string, type: "SINGLE" | "CONCERT"):
       "Baritone": 15,
       "Trumpet in Bb 1": 12,
       "Trumpet in Bb 2": 12,
+      "1st Trumpet in Bb": 12,
+      "2nd Trumpet in Bb": 12,
       "Horn in F": 13,
       "Horn in F 1": 13,
       "Horn in F 2": 13,