yuanliang 11 місяців тому
батько
коміт
1408508c2f

+ 38 - 36
src/views/music-library/music-sheet/modal/music-operationV2.tsx

@@ -368,33 +368,7 @@ export default defineComponent({
         () => forms.multiTracksSelection,
         (value) => {
           initInstrumentAndSubjectByCode(value)
-        }
-    )
-
-    watch(
-        () => forms.musicalInstrumentIdList,
-        (value) => {
-          forms.fSongList.forEach((fSong: any) => {
-            state.initFSongMap.set(fSong.musicalInstrumentId, fSong)
-          })
-
-          let fSongList = [] as any
-          value.forEach((item: any) => {
-            if (state.initFSongMap.has(item)) {
-              fSongList.push(state.initFSongMap.get(item))
-            } else {
-              fSongList.push({
-                musicSheetId: props.data.id,
-                audioFileUrl: null,
-                audioPlayType: 'SING',
-                musicalInstrumentId: item,
-                musicalInstrumentName: state.instrumentIdNameMap.get(item),
-                solmizationFileUrl: null, // 唱名男
-                femaleSolmizationFileUrl: null, // 唱名女
-              })
-            }
-          })
-          forms.fSongList = fSongList
+          initFSongList()
         }
     )
 
@@ -457,7 +431,7 @@ export default defineComponent({
 
           for (let i = 0; i < forms.fSongList.length; i++) {
             let fSong = forms.fSongList[i]
-            if (fSong.audioFileUrl || fSong.solmizationFileUrl) {
+            if (fSong.audioFileUrl || fSong.solmizationFileUrl || fSong.femaleSolmizationFileUrl) {
               musicSheetSoundList.push(fSong)
               audioPlayTypes.add("SING")
             }
@@ -593,6 +567,32 @@ export default defineComponent({
       })
     }
 
+    const initFSongList = async () => {
+      forms.fSongList.forEach((fSong: any) => {
+        state.initFSongMap.set(fSong.track, fSong)
+      })
+
+      let fSongList = [] as any
+      forms.multiTracksSelection.forEach((item: any) => {
+        if (state.initFSongMap.has(item)) {
+          fSongList.push(state.initFSongMap.get(item))
+        } else {
+          fSongList.push({
+            musicSheetId: props.data.id,
+            audioFileUrl: null,
+            audioPlayType: 'SING',
+            musicalInstrumentId: null,
+            track: item,
+            // musicalInstrumentName: state.instrumentIdNameMap.get(item),
+            musicalInstrumentName: null,
+            solmizationFileUrl: null, // 唱名男
+            femaleSolmizationFileUrl: null, // 唱名女
+          })
+        }
+      })
+      forms.fSongList = fSongList
+    }
+
     // 上传XML,初始化音轨 音轨速度 乐器、声部
     const readFileInputEventAsArrayBuffer = (file: any) => {
       // 是否是evxml
@@ -1113,11 +1113,11 @@ export default defineComponent({
 
           // 初始化演奏
           for (let i = 0; i < state.musicSheetSoundList.length; i++) {
-            if (state.musicSheetSoundList[i].audioPlayType == 'SING') {
+            if (state.musicSheetSoundList[i].audioPlayType == 'SING' && state.musicSheetSoundList[i].track != null) {
               // 范唱 唱名
               state.initFSongMap.set(state.musicSheetSoundList[i].musicalInstrumentId, {
                 ...state.musicSheetSoundList[i],
-                musicalInstrumentName: state.instrumentIdNameMap.get(state.musicSheetSoundList[i].musicalInstrumentId),
+                // musicalInstrumentName: state.instrumentIdNameMap.get(state.musicSheetSoundList[i].musicalInstrumentId),
               })
             } else {
               if (forms.isAllSubject) {
@@ -1147,16 +1147,18 @@ export default defineComponent({
               state.partListNames = getPartListNames(res?.data as any) as any
 
               // 初始化音轨和原音
+              let multiTracksSelection = [] as any
               if (data.multiTracksSelection) {
                 data.multiTracksSelection = data.multiTracksSelection.toLocaleUpperCase()
               }
               if (!data.multiTracksSelection || data.multiTracksSelection.trim() == '' || data.multiTracksSelection.trim() == 'NULL') {
-                forms.multiTracksSelection = ['']
+                multiTracksSelection.push('')
               } else {
-                forms.multiTracksSelection = data.multiTracksSelection.split(',')
+                multiTracksSelection = data.multiTracksSelection.split(',')
               }
               let names = state.partListNames.map((next: any) => next.label)
-              forms.multiTracksSelection = names.filter((next: any) => forms.multiTracksSelection.includes(next.toLocaleUpperCase()))
+              multiTracksSelection = names.filter((next: any) => multiTracksSelection.includes(next.toLocaleUpperCase()))
+              forms.multiTracksSelection = multiTracksSelection
 
               const existSoundList = data.musicSheetSoundList ? data.musicSheetSoundList : []
               // 如果只有一个原音文件,并且原音没有对应声轨,取xml解析中的第一个声轨绑定当当前原音
@@ -1792,7 +1794,7 @@ export default defineComponent({
                     <NGrid class={styles.audioSection}>
                       <NFormItemGi
                           span={12}
-                          label={item.musicalInstrumentName + '范唱'}
+                          label={item.track + '范唱'}
                           path={item.audioFileUrl}
                           rule={[
                             {
@@ -1819,7 +1821,7 @@ export default defineComponent({
                 return (
                     <NGrid cols={2}>
                       <NFormItemGi
-                          label={item.musicalInstrumentName + '唱名(男)'}
+                          label={item.track + '唱名(男)'}
                           path={item.solmizationFileUrl}
                           rule={[
                             {
@@ -1840,7 +1842,7 @@ export default defineComponent({
                         />
                       </NFormItemGi>
                       <NFormItemGi
-                          label={item.musicalInstrumentName + '唱名(女)'}
+                          label={item.track + '唱名(女)'}
                           path={item.femaleSolmizationFileUrl}
                           rule={[
                             {