|
@@ -371,7 +371,10 @@ export default defineComponent({
|
|
|
musicTag: '-1',
|
|
|
multiTracksSelection: forms.multiTracksSelection.join(','),
|
|
|
musicSheetSoundList: forms.musicSheetSoundList.filter((next: any) => {
|
|
|
- return !!next.audioFileUrl && (!next.track || forms.multiTracksSelection.includes(next.track))
|
|
|
+ return (
|
|
|
+ !!next.audioFileUrl &&
|
|
|
+ (!next.track || forms.multiTracksSelection.includes(next.track))
|
|
|
+ )
|
|
|
}),
|
|
|
musicalInstrumentIds: forms.musicalInstrumentIdList.join(','),
|
|
|
extConfigJson: JSON.stringify({
|
|
@@ -416,7 +419,12 @@ export default defineComponent({
|
|
|
} catch (error) {}
|
|
|
|
|
|
forms.musicSheetSoundList = forms.musicSheetSoundList.filter((item: any) => {
|
|
|
- return (!item.track || !containOther(item.track) || (item.track?.toLocaleUpperCase?.() != 'COMMON' && forms.multiTracksSelection.includes(item.track)))
|
|
|
+ return (
|
|
|
+ !item.track ||
|
|
|
+ !containOther(item.track) ||
|
|
|
+ (item.track?.toLocaleUpperCase?.() != 'COMMON' &&
|
|
|
+ forms.multiTracksSelection.includes(item.track))
|
|
|
+ )
|
|
|
})
|
|
|
state.partListNames = getPartListNames(res?.target?.result as any) as any
|
|
|
parseInstrumentAndSubject(res?.target?.result as any)
|
|
@@ -424,7 +432,7 @@ export default defineComponent({
|
|
|
|
|
|
let map = new Map<String, String>()
|
|
|
for (let i = 0; i < forms.musicSheetSoundList.length; i++) {
|
|
|
- let track = forms.musicSheetSoundList[i].track;
|
|
|
+ let track = forms.musicSheetSoundList[i].track
|
|
|
if (track) {
|
|
|
map.set(track, forms.musicSheetSoundList[i])
|
|
|
}
|
|
@@ -433,20 +441,24 @@ export default defineComponent({
|
|
|
let newMusicSheetSoundList = []
|
|
|
let tracks = [] as any
|
|
|
for (let j = 0; j < state.partListNames.length; j++) {
|
|
|
- let track = state.partListNames[j].value;
|
|
|
+ let track = state.partListNames[j].value
|
|
|
if (map.has(track)) {
|
|
|
newMusicSheetSoundList.push(map.get(track))
|
|
|
} else {
|
|
|
- newMusicSheetSoundList.push({audioFileUrl: null, track: track, musicalInstrumentId: null})
|
|
|
+ newMusicSheetSoundList.push({
|
|
|
+ audioFileUrl: null,
|
|
|
+ track: track,
|
|
|
+ musicalInstrumentId: null
|
|
|
+ })
|
|
|
}
|
|
|
tracks.push(track)
|
|
|
- if(!forms.multiTracksSelection.includes(track)) {
|
|
|
+ if (!forms.multiTracksSelection.includes(track)) {
|
|
|
forms.multiTracksSelection.push(track)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
for (let i = 0; i < forms.musicSheetSoundList.length; i++) {
|
|
|
- let track = forms.musicSheetSoundList[i].track;
|
|
|
+ let track = forms.musicSheetSoundList[i].track
|
|
|
if (!track || !tracks.includes(track)) {
|
|
|
forms.musicSheetSoundList[i].track = null
|
|
|
newMusicSheetSoundList.push(forms.musicSheetSoundList[i])
|
|
@@ -491,8 +503,13 @@ export default defineComponent({
|
|
|
|
|
|
const validSoundNum = () => {
|
|
|
return forms.musicSheetSoundList.filter((item: any) => {
|
|
|
- return (!item.track || !containOther(item.track) || (item.track?.toLocaleUpperCase?.() != 'COMMON' && forms.multiTracksSelection.includes(item.track)))
|
|
|
- }).length;
|
|
|
+ return (
|
|
|
+ !item.track ||
|
|
|
+ !containOther(item.track) ||
|
|
|
+ (item.track?.toLocaleUpperCase?.() != 'COMMON' &&
|
|
|
+ forms.multiTracksSelection.includes(item.track))
|
|
|
+ )
|
|
|
+ }).length
|
|
|
}
|
|
|
|
|
|
const parseInstrumentAndSubject = (xml: any) => {
|
|
@@ -500,10 +517,12 @@ export default defineComponent({
|
|
|
const xmlParse = new DOMParser().parseFromString(xml, 'text/xml')
|
|
|
// 乐器
|
|
|
const instrumentCodeList: any = []
|
|
|
- const instrumentEle = xmlParse.getElementsByTagName('virtual-instrument')
|
|
|
+ // const instrumentEle = xmlParse.getElementsByTagName('score-part')
|
|
|
+ const instrumentEle: any =
|
|
|
+ xmlParse.getElementsByTagName('part-list')?.[0]?.getElementsByTagName('score-part') || []
|
|
|
for (let index = 0; index < instrumentEle.length; index++) {
|
|
|
const note = instrumentEle[index]
|
|
|
- let instrumentCode = note.getElementsByTagName('virtual-name')?.[0]?.textContent || ''
|
|
|
+ let instrumentCode = note.getElementsByTagName('part-name')?.[0]?.textContent || ''
|
|
|
instrumentCode = instrumentCode.toLocaleLowerCase().trim()
|
|
|
if (instrumentCode && !instrumentCodeList.includes(instrumentCode)) {
|
|
|
instrumentCodeList.push(instrumentCode)
|
|
@@ -539,6 +558,7 @@ export default defineComponent({
|
|
|
}
|
|
|
})
|
|
|
forms.musicalInstrumentIdList = []
|
|
|
+
|
|
|
instrumentCodeList.forEach((code: string) => {
|
|
|
if (codeIdMap.has(code)) {
|
|
|
forms.musicalInstrumentIdList.push(codeIdMap.get(code))
|
|
@@ -736,14 +756,14 @@ export default defineComponent({
|
|
|
// 声轨数据兼容
|
|
|
const formatTrack = (track: string) => {
|
|
|
if (!track) {
|
|
|
- return '';
|
|
|
+ return ''
|
|
|
}
|
|
|
- const trim = track.trim().toUpperCase();
|
|
|
+ const trim = track.trim().toUpperCase()
|
|
|
// 导入后的脏数据兼容
|
|
|
if (trim == 'P1' || trim == 'NULL') {
|
|
|
- return '';
|
|
|
+ return ''
|
|
|
}
|
|
|
- return track.trim();
|
|
|
+ return track.trim()
|
|
|
}
|
|
|
|
|
|
onMounted(async () => {
|
|
@@ -831,9 +851,8 @@ export default defineComponent({
|
|
|
}
|
|
|
})
|
|
|
state.subjectList = state.subjectList.filter((subject: any) => {
|
|
|
- return (!subject.disabled || subjectIds.includes(subject.value));
|
|
|
+ return !subject.disabled || subjectIds.includes(subject.value)
|
|
|
})
|
|
|
-
|
|
|
}
|
|
|
forms.musicalInstrumentIdList = data.musicalInstrumentIds
|
|
|
? data.musicalInstrumentIds.split(',')
|
|
@@ -867,16 +886,20 @@ export default defineComponent({
|
|
|
// 初始化音轨和原音
|
|
|
let tracks = state.partListNames.map((next: any) => next.label)
|
|
|
if (data.multiTracksSelection) {
|
|
|
- forms.multiTracksSelection = data.multiTracksSelection.toLocaleUpperCase().split(',')
|
|
|
+ forms.multiTracksSelection = data.multiTracksSelection
|
|
|
+ .toLocaleUpperCase()
|
|
|
+ .split(',')
|
|
|
} else {
|
|
|
- forms.multiTracksSelection.push('');
|
|
|
+ forms.multiTracksSelection.push('')
|
|
|
}
|
|
|
- forms.multiTracksSelection = tracks.filter((next: any) => forms.multiTracksSelection.includes(next.toLocaleUpperCase()))
|
|
|
+ forms.multiTracksSelection = tracks.filter((next: any) =>
|
|
|
+ forms.multiTracksSelection.includes(next.toLocaleUpperCase())
|
|
|
+ )
|
|
|
|
|
|
const existSoundList = data.musicSheetSoundList ? data.musicSheetSoundList : []
|
|
|
// 如果只有一个原音文件,并且原音没有对应声轨,取xml解析中的第一个声轨绑定当当前原音
|
|
|
if (existSoundList.length === 1 && !formatTrack(existSoundList[0].track)) {
|
|
|
- let track = state.partListNames.length > 0 ? state.partListNames[0].value : null;
|
|
|
+ let track = state.partListNames.length > 0 ? state.partListNames[0].value : null
|
|
|
forms.musicSheetSoundList.push({
|
|
|
audioFileUrl: existSoundList[0].audioFileUrl, // 原音
|
|
|
musicalInstrumentId: existSoundList[0].musicalInstrumentId,
|
|
@@ -1494,44 +1517,45 @@ export default defineComponent({
|
|
|
}
|
|
|
]}
|
|
|
>
|
|
|
- <NCheckboxGroup v-model:value={forms.multiTracksSelection}
|
|
|
- onUpdateValue={(val: any) => {
|
|
|
- if (state.partListNames.length != val.length) {
|
|
|
- state.multiTracks = null
|
|
|
- }else {
|
|
|
- state.multiTracks = 'all'
|
|
|
- }
|
|
|
- //
|
|
|
- // let removeTracks = [] as any
|
|
|
- // for (let i = 0; i < forms.multiTracksSelection.length; i++) {
|
|
|
- // let track = forms.musicSheetSoundList[i].track
|
|
|
- // if (!val.includes(track)) {
|
|
|
- // removeTracks.push(track)
|
|
|
- // }
|
|
|
- // }
|
|
|
- // // 新增
|
|
|
- // for (let i = 0; i < val.length; i++) {
|
|
|
- // let track = val.value;
|
|
|
- // let contain = false
|
|
|
- // for (let j = 0; j < forms.musicSheetSoundList.length; j++) {
|
|
|
- // let track1 = forms.musicSheetSoundList[i].track;
|
|
|
- // if (track == track1) {
|
|
|
- // contain = true
|
|
|
- // break
|
|
|
- // }
|
|
|
- // }
|
|
|
- // if (!contain) {
|
|
|
- // forms.musicSheetSoundList.push({audioFileUrl: null, track: track, musicalInstrumentId: null})
|
|
|
- // }
|
|
|
- // }
|
|
|
- // // 删除
|
|
|
- // if (removeTracks.length > 0) {
|
|
|
- // forms.musicSheetSoundList = forms.musicSheetSoundList.filter((val: any) => {
|
|
|
- // return removeTracks.includes(val)
|
|
|
- // })
|
|
|
- // }
|
|
|
- // forms.multiTracksSelection = val
|
|
|
- }}
|
|
|
+ <NCheckboxGroup
|
|
|
+ v-model:value={forms.multiTracksSelection}
|
|
|
+ onUpdateValue={(val: any) => {
|
|
|
+ if (state.partListNames.length != val.length) {
|
|
|
+ state.multiTracks = null
|
|
|
+ } else {
|
|
|
+ state.multiTracks = 'all'
|
|
|
+ }
|
|
|
+ //
|
|
|
+ // let removeTracks = [] as any
|
|
|
+ // for (let i = 0; i < forms.multiTracksSelection.length; i++) {
|
|
|
+ // let track = forms.musicSheetSoundList[i].track
|
|
|
+ // if (!val.includes(track)) {
|
|
|
+ // removeTracks.push(track)
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // // 新增
|
|
|
+ // for (let i = 0; i < val.length; i++) {
|
|
|
+ // let track = val.value;
|
|
|
+ // let contain = false
|
|
|
+ // for (let j = 0; j < forms.musicSheetSoundList.length; j++) {
|
|
|
+ // let track1 = forms.musicSheetSoundList[i].track;
|
|
|
+ // if (track == track1) {
|
|
|
+ // contain = true
|
|
|
+ // break
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // if (!contain) {
|
|
|
+ // forms.musicSheetSoundList.push({audioFileUrl: null, track: track, musicalInstrumentId: null})
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // // 删除
|
|
|
+ // if (removeTracks.length > 0) {
|
|
|
+ // forms.musicSheetSoundList = forms.musicSheetSoundList.filter((val: any) => {
|
|
|
+ // return removeTracks.includes(val)
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ // forms.multiTracksSelection = val
|
|
|
+ }}
|
|
|
>
|
|
|
<NGrid yGap={2} cols={4}>
|
|
|
{state.partListNames.map((item: any) => (
|
|
@@ -1682,7 +1706,7 @@ export default defineComponent({
|
|
|
path={`musicSheetSoundList[${index}].track`}
|
|
|
rule={[
|
|
|
{
|
|
|
- required: validSoundNum() > 1 && item.track ==null,
|
|
|
+ required: validSoundNum() > 1 && item.track == null,
|
|
|
message: '请选择所属轨道'
|
|
|
}
|
|
|
]}
|
|
@@ -1712,7 +1736,10 @@ export default defineComponent({
|
|
|
)
|
|
|
}
|
|
|
|
|
|
- if (value != null && !forms.multiTracksSelection.includes(value)) {
|
|
|
+ if (
|
|
|
+ value != null &&
|
|
|
+ !forms.multiTracksSelection.includes(value)
|
|
|
+ ) {
|
|
|
forms.multiTracksSelection.push(value)
|
|
|
}
|
|
|
item.track = value
|