Browse Source

Merge branch 'hqy筛选' of http://git.dayaedu.com/liushengqiang/music-score into ktyq-online-new

黄琪勇 4 months ago
parent
commit
1ebbd0639e

+ 11 - 13
src/helpers/formateMusic.ts

@@ -366,7 +366,7 @@ export const onlyVisible = (xml: string, partIndex: number): string => {
 	const detailId = state.examSongId + "";
 	const xmlParse = new DOMParser().parseFromString(xml, "text/xml");
 	const partList = xmlParse.getElementsByTagName("part-list")?.[0]?.getElementsByTagName("score-part") || [];
-	const partListNames = Array.from(partList).map((item) => item.getElementsByTagName("part-name")?.[0]?.textContent?.trim() || "");
+	//const partListNames = Array.from(partList).map((item) => item.getElementsByTagName("part-name")?.[0]?.textContent?.trim() || "");
 	const parts: any = xmlParse.getElementsByTagName("part");
 	// const firstTimeInfo = parts[0]?.getElementsByTagName('metronome')[0]?.parentElement?.parentElement?.cloneNode(true)
 	const firstMeasures = [...parts[0]?.getElementsByTagName("measure")];
@@ -376,14 +376,14 @@ export const onlyVisible = (xml: string, partIndex: number): string => {
 	const rehearsals = [...parts[0]?.getElementsByTagName("rehearsal")];
 
 	/** 第一分谱如果是约定的配置分谱则跳过 */
-	if (partListNames[0]?.toLocaleUpperCase?.() === "COMMON") {
-		partIndex++;
-		partListNames.shift();
-	}
+	// if (partListNames[0]?.toLocaleUpperCase?.() === "COMMON") {
+	// 	partIndex++;
+	// 	partListNames.shift();
+	// }
 	const visiblePartInfo = partList[partIndex];
 	// console.log(visiblePartInfo, partIndex)
 	// 根据后台已选择的分轨筛选出能切换的声轨
-	state.partListNames = partListNames;
+	//state.partListNames = partListNames;
 	// console.log('分轨名称',state.partListNames)
 	if (visiblePartInfo) {
 		const id = visiblePartInfo.getAttribute("id");
@@ -523,14 +523,11 @@ export const onlyVisible = (xml: string, partIndex: number): string => {
 export const onlyVisible2 = (xml: string): string => {
 	if (!xml) return "";
 	// console.log('原始xml')
-	const detailId = state.examSongId + "";
+	//const detailId = state.examSongId + "";
 	const xmlParse = new DOMParser().parseFromString(xml, "text/xml");
 	const partList = xmlParse.getElementsByTagName("part-list")?.[0]?.getElementsByTagName("score-part") || [];
-	const partListNames = Array.from(partList).map((item) => item.getElementsByTagName("part-name")?.[0]?.textContent?.trim() || "");
-
-
-	state.partListNames = partListNames;
-
+	//const partListNames = Array.from(partList).map((item) => item.getElementsByTagName("part-name")?.[0]?.textContent?.trim() || "");
+	//state.partListNames = partListNames;
 	Array.from(partList).forEach((part) => {
 		let partListName = part.getElementsByTagName("part-name")?.[0]?.textContent?.trim();
 		if (!state.canSelectTracks.includes(partListName)) {
@@ -1293,7 +1290,8 @@ export const formateTimes = (osmd: OpenSheetMusicDisplay) => {
 				// 找出这个音符前面音符的结束时间
 				let preNoteTImes = allNotes[allNotes.length - 1]?.endtime*1000
 				if(!preNoteTImes){
-					preNoteTImes = Math.max(fixtime - noteLength, 0)*1000 //如果前一个音符没有结束时间,证明这个音符是第一个音符没有打时间,所以往前奏里面找补
+					//如果前一个音符没有结束时间,证明这个音符是第一个音符没有打时间,当有timegap以fixtime当开始时间(1795013294269087745),当第一个小节有times这个往前奏里面找补(1795013306436763649)
+					preNoteTImes = (state.evXmlBeginArr.length>0 ? fixtime : Math.max(fixtime - noteLength, 0))*1000
 				}
 				// 找出这个音符后面音符的开始时间
 				let nextI = i

+ 2 - 1
src/helpers/metronome.ts

@@ -315,7 +315,8 @@ class Metronome {
 					let nextNoteStartTime = times[note.measures[note.measures.length - 1].i + 1]?.time
 					let noteEndTime = 0
 					if(!nextNoteStartTime){
-						noteEndTime = time + noteLengthTime
+						// 当不够的时候补上时值
+						noteEndTime = time + noteLengthTime > endtime ? time + noteLengthTime : endtime
 					}else{
 						if(Math.abs(nextNoteStartTime - endtime)*1000< 10){
 							// 当首位本来就是相连的

+ 1 - 0
src/page-instrument/component/the-music-list/list.tsx

@@ -106,6 +106,7 @@ export default defineComponent({
         ...query
       }
       queryObj.id = item.id
+      queryObj["part-index"] = ""
       forms.musicalInstrumentId && (queryObj.instrumentId = forms.musicalInstrumentId)
       location.href =
         location.origin +

BIN
src/page-instrument/evaluat-model/evaluat-result/img/icon_expression0.png


BIN
src/page-instrument/evaluat-model/evaluat-result/img/icon_expression1.png


BIN
src/page-instrument/evaluat-model/evaluat-result/img/icon_expression2.png


BIN
src/page-instrument/evaluat-model/evaluat-result/img/icon_expression3.png


BIN
src/page-instrument/evaluat-model/evaluat-result/img/icon_expression4.png


+ 1 - 10
src/page-instrument/evaluat-model/evaluat-result/index.tsx

@@ -13,11 +13,6 @@ import bczpImg from "./img/bczp.png";
 import bczpJzImg from "./img/bczpJz.png";
 import zlycImg from "./img/zlyc.png";
 import iconBadge from "./img/icon-badge.png";
-import icon_expression0 from "./img/icon_expression0.png";
-import icon_expression1 from "./img/icon_expression1.png";
-import icon_expression2 from "./img/icon_expression2.png";
-import icon_expression3 from "./img/icon_expression3.png";
-import icon_expression4 from "./img/icon_expression4.png";
 import yzImg from "./img/yz.png";
 import jzImg from "./img/jz.png";
 import wzxImg from "./img/wzx.png";
@@ -139,11 +134,7 @@ export default defineComponent({
                     </div>
                   </div>
                 </div>
-                <img style={{ display: evaluatingData.resultData.leve === 0 ? "" : "none" }} class={styles.rightBadge} src={icon_expression0} />
-                <img style={{ display: evaluatingData.resultData.leve === 1 ? "" : "none" }} class={styles.rightBadge} src={icon_expression1} />
-                <img style={{ display: evaluatingData.resultData.leve === 2 ? "" : "none" }} class={styles.rightBadge} src={icon_expression2} />
-                <img style={{ display: evaluatingData.resultData.leve === 3 ? "" : "none" }} class={styles.rightBadge} src={icon_expression3} />
-                <img style={{ display: evaluatingData.resultData.leve === 4 ? "" : "none" }} class={styles.rightBadge} src={icon_expression4} />
+                <img class={styles.rightBadge} src={evaluatingData.resultData.img} />
               </div>
               {!state.isPercussion && (
                 <div class={styles.detail}>

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

@@ -697,7 +697,7 @@ export default defineComponent({
           {!(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 && !state.isAttendClass && <img src={iconBack} class={["headTopBackBtn", styles.img, !headTopData.showBack && styles.hidenBack]} onClick={handleBack} />
               }
               {smoothAnimationState.isShow.value || state.isCombineRender ? (
                 <div
@@ -710,14 +710,14 @@ export default defineComponent({
                   }
                   class={[styles.title, state.isCbsView && styles.blackTitle, "headeTopTitleBtn"]}
                   onClick={() => {
-                    isMusicList.value && (musicListShow.value = true);
+                    isMusicList.value && !state.isAttendClass && (musicListShow.value = true);
                   }}
                 >
-                  {isMusicList.value && <div class={[styles.symbolNote, "driver-8"]}></div>}
+                  {isMusicList.value && !state.isAttendClass && <div class={[styles.symbolNote, "driver-8"]}></div>}
                   <NoticeBar text={state.examSongName} background="none" />
                 </div>
               ) : (
-                isMusicList.value && (
+                isMusicList.value && !state.isAttendClass && (
                   <img
                     src={listImg}
                     class={[styles.img, styles.listImg, "driver-8"]}

+ 1 - 1
src/page-instrument/header-top/settting/index.tsx

@@ -100,7 +100,7 @@ export default defineComponent({
                                 </div>   
                         }
                         {
-                            state.modeType === 'practise' && state.mingSong && state.mingSongGirl &&
+                            state.modeType === 'practise' && state.playType === "sing" && state.mingSong && state.mingSongGirl &&
                             <div class={styles.cellBox}>
                                 <div class={styles.tit}>唱名类型</div>
                                 <div class={styles.radioBox}>

+ 6 - 0
src/page-instrument/view-detail/emptyMusic/index.tsx

@@ -18,6 +18,12 @@ export default defineComponent({
          HANDLE_WORK_ADD()
          // 不在APP中,
          if (!storeData.isApp) {
+            window.parent.postMessage(
+               {
+                  api: "back",
+               },
+               "*"
+            );
             window.close()
             return
          }

+ 6 - 6
src/state.ts

@@ -1395,6 +1395,9 @@ const getMusicInfo = async (res: any) => {
       workRecordInstrumentId = res.data?.instrumentId
     }
   }
+  // multiTracksSelection 返回为空,默认代表全部分轨
+  state.canSelectTracks = res.data.multiTracksSelection === "null" || res.data.multiTracksSelection === "" || res.data.multiTracksSelection === null ? [] : res.data.multiTracksSelection?.split(',');
+  state.canSelectTracks = state.canSelectTracks.map((item: any)=>item.trim())
   /* 获取声轨列表 */
   let xmlString = await fetch(res.data.xmlFileUrl).then((response) => response.text());
   xmlString = xmlAddPartName(xmlString);
@@ -1464,7 +1467,6 @@ function initMusicSource(data: any, tracks: string[], partIndex: number, workRec
     if(state.isScoreRender && (partIndex===999 || (state.defaultScoreRender && partIndex===-1))){
         // 总谱渲染
         state.isCombineRender = true
-        state.partListNames = tracks
         banSongObj = musicSheetAccompanimentList.find((item: any) => {
           return item.audioPlayType === "SING"
         })
@@ -1484,8 +1486,8 @@ function initMusicSource(data: any, tracks: string[], partIndex: number, workRec
         index = 999
         musicalInstrumentId = ''
     }else{
-      // 合奏只显示一个声轨
-      track = tracks[partIndex===-1?0:partIndex]
+      // 合奏只显示一个声轨   当为-1时候,取tracks中 后端勾选了的第一个值
+      track =  partIndex === -1 ? tracks.find(value => state.canSelectTracks.includes(value))! : tracks[partIndex]
       // 根据当前的声轨 取数据
       musicObj = musicSheetSoundList.find((item: any) => {
         return item.audioPlayType === "PLAY" && item.track === track
@@ -1504,6 +1506,7 @@ function initMusicSource(data: any, tracks: string[], partIndex: number, workRec
       })
       musicalInstrumentId = musicObj?.musicalInstrumentId
     }
+    state.partListNames = tracks
   }
   // 当没有任何曲目的时候报错
   if (!musicObj?.audioFileUrl && !accompanyObj?.audioFileUrl && !fanSongObj?.audioFileUrl && !banSongObj?.audioFileUrl && !fanSongObj?.solmizationFileUrl && !fanSongObj?.femaleSolmizationFileUrl) {
@@ -1680,9 +1683,6 @@ const setState = (data: any, index: number) => {
     state.enableEvaluation = state.accompany || state.music ? true : false
   }
   state.isConcert = data.musicSheetType === "CONCERT" ? true : false;
-  // multiTracksSelection 返回为空,默认代表全部分轨
-  state.canSelectTracks = data.multiTracksSelection === "null" || data.multiTracksSelection === "" || data.multiTracksSelection === null ? [] : data.multiTracksSelection?.split(',');
-  state.canSelectTracks = state.canSelectTracks.map((item: any)=>item.trim())
   // 开启预备小节
   state.isOpenPrepare = true;
   state.extStyleConfigJson = data.extStyleConfigJson || {}

BIN
src/view/evaluating/icons/1.png


BIN
src/view/evaluating/icons/2.png


BIN
src/view/evaluating/icons/3.png


BIN
src/view/evaluating/icons/4.png


BIN
src/view/evaluating/icons/5.png


+ 2 - 2
vite.config.ts

@@ -76,8 +76,8 @@ export default defineConfig({
         // target: "https://kt.colexiu.com",
         // target: "https://test.lexiaoya.cn",
         // target: "https://kt.colexiu.com",
-        // target: "https://test.resource.colexiu.com", // 内容平台开发环境,内容平台开发,需在url链接上加上isCbs=true
-        target: "https://test.kt.colexiu.com",
+        target: "https://test.resource.colexiu.com", // 内容平台开发环境,内容平台开发,需在url链接上加上isCbs=true
+        //target: "https://test.kt.colexiu.com",
         // target: "https://mec.colexiu.com",
         changeOrigin: true,
         rewrite: (path) => path.replace(/^\/instrument/, ""),