Pārlūkot izejas kodu

Merge branch 'hqyDevNewVersion' of http://git.dayaedu.com/liushengqiang/music-score into feature-tianyong-newVersion

TIANYONG 9 mēneši atpakaļ
vecāks
revīzija
1c487a2e8c
2 mainītis faili ar 18 papildinājumiem un 29 dzēšanām
  1. 2 2
      src/helpers/metronome.ts
  2. 16 27
      src/state.ts

+ 2 - 2
src/helpers/metronome.ts

@@ -286,9 +286,9 @@ class Metronome {
 			const measureListIndex = note?.noteElement?.sourceMeasure?.measureListIndex;
 			if (measureNumberXML > -1) {
 				if (measureNumberXML != xmlNumber) {
-					// 弱起的时候 根据音符结尾时间减去音符开头时间,得到的不是正常小节的时间,然后平均分配节拍之后,当前节拍间隔会非常短 这里弱起拿正常
+					// 弱起的时候 根据音符结尾时间减去音符开头时间,得到的不是正常小节的时间,然后平均分配节拍之后,当前节拍间隔会非常短 这里弱起取整个小节的时间
 					let startTime = note.measures[0].time
-					if(i === 0){
+					if(i === 0 && note.measures[0].difftime>0){
 						startTime = note.measures[note.measures.length - 1].endtime - note.measures[0].measureLength
 					}
 					const m = {

+ 16 - 27
src/state.ts

@@ -1373,6 +1373,7 @@ const getMusicInfo = async (res: any) => {
   const tracks = xmlToTracks(xmlString) //获取声轨列表
   // 设置音源  track 为当前的声轨 index为当前的
   const { track, index, musicalInstrumentId } = state.isSimplePage ? { track:tracks[0], index:0, musicalInstrumentId: '' } : initMusicSource(res.data, tracks, partIndex, workRecordInstrumentId)
+  // 这里返回的track可能和实际的对不上,所以重新筛选一下
   const realTrack = musicalInstrumentId && res.data?.musicalInstruments?.length ? res.data?.musicalInstruments.find((item: any) => item?.id == musicalInstrumentId)?.code?.split(',')?.[0] : '';
   const musicInfo = {
     ...res.data,
@@ -1410,23 +1411,11 @@ function initMusicSource(data: any, tracks: string[], partIndex: number, workRec
     musicObj = musicSheetSoundList.find((item: any) => {
       return isAllSubject ? item.audioPlayType === "PLAY" : (item.audioPlayType === "PLAY" && item.musicalInstrumentId == instrumentId)
     })
-    // 因为可能根据学生的乐器id也找不到曲目所以尝试取第一个
-    if(!musicObj){
+    // 当没有找到原音的时候,并且instrumentId没有值的时候,取默认第一个乐器
+    if(!musicObj && !instrumentId){
       musicObj = musicSheetSoundList.find((item: any) => {
         return item.audioPlayType === "PLAY"
       })
-      // 取第一个时候,不播放演奏文件切换为演唱模式  总控平台排除这个逻辑
-      if(!query.isCbs){
-        state.playType = "sing"
-        if(musicObj) {
-          musicObj.audioFileUrl = null
-          musicObj.audioBeatMixUrl = null
-        }
-        if(accompanyObj) {
-          accompanyObj.audioFileUrl = null
-          accompanyObj.audioBeatMixUrl = null
-        }
-      }
     }
     fanSongObj = musicSheetSoundList.find((item: any) => {
       return item.audioPlayType === "SING"
@@ -1601,12 +1590,12 @@ const setState = (data: any, index: number) => {
   /**
    * 单曲,指法根据用户当前的乐器来显示,如果没有则取musicSheetSoundList第一个track
    */
-  const currentInstrumentId = query.instrumentId || storeData.user?.instrumentId;
-  let musicalCode = !currentInstrumentId ? data.musicSheetSoundList?.find((item:any)=>{ return item.audioPlayType === "PLAY" })?.track || '' : data.musicSheetSoundList?.find((item: any) => item?.musicalInstrumentId == currentInstrumentId && item.audioPlayType === "PLAY")?.track || '';
-  const pitchSubject = musicalInstrumentCodeInfo.find((n) => n.code.toLocaleLowerCase() === subjectCode.toLocaleLowerCase())
-  const pitchMusical = musicalInstrumentCodeInfo.find((n) => n.code.toLocaleLowerCase() === musicalCode.toLocaleLowerCase())
-  state.subjectCodeId = pitchSubject ? pitchSubject.id : 0
-  state.musicalCodeId = pitchMusical ? pitchMusical.id : 0
+  // const currentInstrumentId = query.instrumentId || storeData.user?.instrumentId;
+  // let musicalCode = !currentInstrumentId ? data.musicSheetSoundList?.find((item:any)=>{ return item.audioPlayType === "PLAY" })?.track || '' : data.musicSheetSoundList?.find((item: any) => item?.musicalInstrumentId == currentInstrumentId && item.audioPlayType === "PLAY")?.track || '';
+  // const pitchSubject = musicalInstrumentCodeInfo.find((n) => n.code.toLocaleLowerCase() === subjectCode.toLocaleLowerCase())
+  // const pitchMusical = musicalInstrumentCodeInfo.find((n) => n.code.toLocaleLowerCase() === musicalCode.toLocaleLowerCase())
+  // state.subjectCodeId = pitchSubject ? pitchSubject.id : 0
+  // state.musicalCodeId = pitchMusical ? pitchMusical.id : 0
   state.categoriesId = data.musicCategoryId;
   state.categoriesName = data.musicTagNames;
   // state.enableEvaluation = data.isEvaluated ? true : false;
@@ -1710,13 +1699,13 @@ const setState = (data: any, index: number) => {
    * 能否转谱:先取isConvertibleScore字段,如果isConvertibleScore为true,则取musicalInstruments字段匹配的当前分轨的transferFlag,都为true则可以转谱
    * 
    */
-  let pitchTrack = null
-  if (state.isConcert) {
-    musicalCode = musicalInstrumentCodeInfo.find((item: any) => item.id === state.musicalCodeId)?.code
-    pitchTrack = data.musicalInstruments?.find((item: any) => item.code?.split(',')[0] === musicalCode)
-  } else {
-    pitchTrack = data.musicalInstruments?.find((item: any) => item.code?.split(',')[0] === musicalCode)
-  }
+  // let pitchTrack = null
+  // if (state.isConcert) {
+  //   musicalCode = musicalInstrumentCodeInfo.find((item: any) => item.id === state.musicalCodeId)?.code
+  //   pitchTrack = data.musicalInstruments?.find((item: any) => item.code?.split(',')[0] === musicalCode)
+  // } else {
+  //   pitchTrack = data.musicalInstruments?.find((item: any) => item.code?.split(',')[0] === musicalCode)
+  // }
   let musicalRenderType = ''
   // if (pitchTrack?.defaultScore) {
   //   musicalRenderType = pitchTrack?.defaultScore === 'STAVE' ? 'staff' : pitchTrack?.defaultScore === 'JIAN' ? 'fixedTone' : pitchTrack?.defaultScore === 'FIRST' ? 'firstTone' : ''