|
@@ -1496,9 +1496,17 @@ function initMusicSource(data: any, tracks: string[], partIndex: number) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const setState = (data: any, index: number) => {
|
|
const setState = (data: any, index: number) => {
|
|
- // 根据当前文件有没有 设置当前的播放模式
|
|
|
|
- if(!state.music){
|
|
|
|
- if(state.accompany){
|
|
|
|
|
|
+ // 获取当前模式 声部切换用
|
|
|
|
+ const localStoragePlayType = localStorage.getItem("musicScorePlayType")
|
|
|
|
+ if(localStoragePlayType) {
|
|
|
|
+ localStorage.removeItem("musicScorePlayType")
|
|
|
|
+ state.playType = localStoragePlayType as any
|
|
|
|
+ }
|
|
|
|
+ // 根据当前文件有没有 设置当前的播放模式
|
|
|
|
+ if(state.playType === "play"){
|
|
|
|
+ if(state.music){
|
|
|
|
+ state.playSource = "music"
|
|
|
|
+ }else if(state.accompany){
|
|
state.playSource = "background"
|
|
state.playSource = "background"
|
|
}else{
|
|
}else{
|
|
if(state.fanSong){
|
|
if(state.fanSong){
|
|
@@ -1512,7 +1520,24 @@ const setState = (data: any, index: number) => {
|
|
state.playSource = "mingSong"
|
|
state.playSource = "mingSong"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ }else{
|
|
|
|
+ if(state.fanSong){
|
|
|
|
+ state.playSource = "music"
|
|
|
|
+ }else if(state.banSong){
|
|
|
|
+ state.playSource = "background"
|
|
|
|
+ }else if(state.mingSong){
|
|
|
|
+ state.playSource = "mingSong"
|
|
|
|
+ }else{
|
|
|
|
+ if(state.music){
|
|
|
|
+ state.playType = "play"
|
|
|
|
+ state.playSource = "music"
|
|
|
|
+ }else if(state.accompany){
|
|
|
|
+ state.playType = "play"
|
|
|
|
+ state.playSource = "background"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+
|
|
state.appName = "COLEXIU";
|
|
state.appName = "COLEXIU";
|
|
state.detailId = data.bizId;
|
|
state.detailId = data.bizId;
|
|
state.xmlUrl = data.xmlFileUrl;
|
|
state.xmlUrl = data.xmlFileUrl;
|
|
@@ -1894,13 +1919,17 @@ watch(
|
|
// console.log('选中的小节',matchMeasureNum,'需要减去的小节',needReduceMultipleRestNum,'当前的小节',state.activeMeasureIndex)
|
|
// console.log('选中的小节',matchMeasureNum,'需要减去的小节',needReduceMultipleRestNum,'当前的小节',state.activeMeasureIndex)
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|
|
const dataNum = item.getAttribute('data-num') // 值可能为字符串类型的undefined
|
|
const dataNum = item.getAttribute('data-num') // 值可能为字符串类型的undefined
|
|
- const measureNum = (dataNum && dataNum !== "undefined") ? Number(dataNum) : -1;
|
|
|
|
|
|
+ let measureNum = (dataNum && dataNum !== "undefined") ? Number(dataNum) : -1;
|
|
let nextDataNum = state.vfmeasures[idx+1]?.getAttribute('data-num')
|
|
let nextDataNum = state.vfmeasures[idx+1]?.getAttribute('data-num')
|
|
// 当有换行小节,下个小节的nextDataNum是undefined,所以这里需要往后找一个
|
|
// 当有换行小节,下个小节的nextDataNum是undefined,所以这里需要往后找一个
|
|
if(!(nextDataNum && nextDataNum !== "undefined")){
|
|
if(!(nextDataNum && nextDataNum !== "undefined")){
|
|
nextDataNum = state.vfmeasures[idx + 2]?.getAttribute('data-num')
|
|
nextDataNum = state.vfmeasures[idx + 2]?.getAttribute('data-num')
|
|
}
|
|
}
|
|
const nextMeasureNum = Number(nextDataNum)
|
|
const nextMeasureNum = Number(nextDataNum)
|
|
|
|
+ // 当measureNum 为undefined 则是下一个小节的换行小节,所以这里等于下一个小节
|
|
|
|
+ if(measureNum === -1) {
|
|
|
|
+ measureNum = nextMeasureNum
|
|
|
|
+ }
|
|
if (measureNum >= 0 && (measureNum === state.activeMeasureIndex || (measureNum < state.activeMeasureIndex && nextMeasureNum > state.activeMeasureIndex))) {
|
|
if (measureNum >= 0 && (measureNum === state.activeMeasureIndex || (measureNum < state.activeMeasureIndex && nextMeasureNum > state.activeMeasureIndex))) {
|
|
item.querySelector('.vf-custom-bg')?.setAttribute("fill", "#132D4C")
|
|
item.querySelector('.vf-custom-bg')?.setAttribute("fill", "#132D4C")
|
|
item.querySelector('.vf-custom-bot')?.setAttribute("fill", "#040D1E")
|
|
item.querySelector('.vf-custom-bot')?.setAttribute("fill", "#040D1E")
|
|
@@ -1952,7 +1981,17 @@ watch(
|
|
}
|
|
}
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|
|
const dataNum = item.getAttribute('data-num') // 值可能为字符串类型的undefined
|
|
const dataNum = item.getAttribute('data-num') // 值可能为字符串类型的undefined
|
|
- const measureNum = (dataNum && dataNum !== "undefined") ? Number(dataNum) : -1;
|
|
|
|
|
|
+ let measureNum = (dataNum && dataNum !== "undefined") ? Number(dataNum) : -1;
|
|
|
|
+ let nextDataNum = state.vfmeasures[idx+1]?.getAttribute('data-num')
|
|
|
|
+ // 当有换行小节,下个小节的nextDataNum是undefined,所以这里需要往后找一个
|
|
|
|
+ if(!(nextDataNum && nextDataNum !== "undefined")){
|
|
|
|
+ nextDataNum = state.vfmeasures[idx + 2]?.getAttribute('data-num')
|
|
|
|
+ }
|
|
|
|
+ const nextMeasureNum = Number(nextDataNum)
|
|
|
|
+ // 当measureNum 为undefined 则是下一个小节的换行小节,所以这里等于下一个小节
|
|
|
|
+ if(measureNum === -1) {
|
|
|
|
+ measureNum = nextMeasureNum
|
|
|
|
+ }
|
|
// 小于选中置灰
|
|
// 小于选中置灰
|
|
if (measureNum < leftMeasureNumberXML) {
|
|
if (measureNum < leftMeasureNumberXML) {
|
|
item.querySelector('.vf-custom-bg')?.setAttribute("fill", "rgba(96,159,207,0.5)")
|
|
item.querySelector('.vf-custom-bg')?.setAttribute("fill", "rgba(96,159,207,0.5)")
|
|
@@ -1973,13 +2012,17 @@ watch(
|
|
// 恢复选段前
|
|
// 恢复选段前
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|
|
state.vfmeasures.forEach((item: any, idx: number) => {
|
|
const dataNum = item.getAttribute('data-num') // 值可能为字符串类型的undefined
|
|
const dataNum = item.getAttribute('data-num') // 值可能为字符串类型的undefined
|
|
- const measureNum = (dataNum && dataNum !== "undefined") ? Number(dataNum) : -1;
|
|
|
|
|
|
+ let measureNum = (dataNum && dataNum !== "undefined") ? Number(dataNum) : -1;
|
|
let nextDataNum = state.vfmeasures[idx+1]?.getAttribute('data-num')
|
|
let nextDataNum = state.vfmeasures[idx+1]?.getAttribute('data-num')
|
|
// 当有换行小节,下个小节的nextDataNum是undefined,所以这里需要往后找一个
|
|
// 当有换行小节,下个小节的nextDataNum是undefined,所以这里需要往后找一个
|
|
if(!(nextDataNum && nextDataNum !== "undefined")){
|
|
if(!(nextDataNum && nextDataNum !== "undefined")){
|
|
nextDataNum = state.vfmeasures[idx + 2]?.getAttribute('data-num')
|
|
nextDataNum = state.vfmeasures[idx + 2]?.getAttribute('data-num')
|
|
}
|
|
}
|
|
const nextMeasureNum = Number(nextDataNum)
|
|
const nextMeasureNum = Number(nextDataNum)
|
|
|
|
+ // 当measureNum 为undefined 则是下一个小节的换行小节,所以这里等于下一个小节
|
|
|
|
+ if(measureNum === -1) {
|
|
|
|
+ measureNum = nextMeasureNum
|
|
|
|
+ }
|
|
if (measureNum >= 0 && (measureNum === state.activeMeasureIndex || (measureNum < state.activeMeasureIndex && nextMeasureNum > state.activeMeasureIndex)) ) {
|
|
if (measureNum >= 0 && (measureNum === state.activeMeasureIndex || (measureNum < state.activeMeasureIndex && nextMeasureNum > state.activeMeasureIndex)) ) {
|
|
item.querySelector('.vf-custom-bg')?.setAttribute("fill", "#132D4C")
|
|
item.querySelector('.vf-custom-bg')?.setAttribute("fill", "#132D4C")
|
|
item.querySelector('.vf-custom-bot')?.setAttribute("fill", "#040D1E")
|
|
item.querySelector('.vf-custom-bot')?.setAttribute("fill", "#040D1E")
|