Sfoglia il codice sorgente

适配错误数据

yuanliang 11 mesi fa
parent
commit
909675646c

+ 44 - 30
src/views/music-library/music-sheet/modal/music-operation.tsx

@@ -370,7 +370,7 @@ export default defineComponent({
             musicTag: '-1',
             multiTracksSelection: forms.multiTracksSelection.join(','),
             musicSheetSoundList: forms.musicSheetSoundList.filter((next: any) => {
-              return !!next.audioFileUrl && forms.multiTracksSelection.includes(next.track)
+              return !!next.audioFileUrl && (!next.track || forms.multiTracksSelection.includes(next.track))
             }),
             musicalInstrumentIds: forms.musicalInstrumentIdList.join(','),
             extConfigJson: JSON.stringify({
@@ -522,18 +522,18 @@ export default defineComponent({
           part = part || 'noPartName'
         }
         return {
-          value: part,
-          label: part
+          value: part.trim(),
+          label: part.trim()
         }
       })
 
       // 处理空数据
-      if (partListNames.length === 1 && forms.details.id && !partListNames[0].value) {
-        partListNames[0] = {
-          value: forms.details.multiTracksSelection,
-          label: forms.details.multiTracksSelection
-        }
-      }
+      // if (partListNames.length === 1 && forms.details.id && !partListNames[0].value) {
+      //   partListNames[0] = {
+      //     value: forms.details.multiTracksSelection,
+      //     label: forms.details.multiTracksSelection
+      //   }
+      // }
 
       partListNames = partListNames.filter((n: any) => n.value?.toLocaleUpperCase?.() != 'COMMON')
 
@@ -544,7 +544,7 @@ export default defineComponent({
       state.xmlFirstSpeed = xmlParse.getElementsByTagName('per-minute')?.[0]?.textContent || ''
       if (!forms.playSpeed) {
         if (state.xmlFirstSpeed) {
-          forms.playSpeed = Number.parseInt(state.xmlFirstSpeed)
+          forms.playSpeed = Number.parseFloat(state.xmlFirstSpeed)
         } else {
           // 速度默认给100
           forms.playSpeed = 100
@@ -613,15 +613,18 @@ export default defineComponent({
         negativeText: '取消',
         onPositiveClick: async () => {
           const sound = forms.musicSheetSoundList[index]
-          const track = sound.track
-          if (track) {
+          let track = sound.track
+          if (!track) {
+            track = ''
+          }
+          // if (track) {
             const selectIndex = forms.multiTracksSelection.indexOf(track)
             if (selectIndex > -1) {
               forms.multiTracksSelection.splice(selectIndex, 1)
             }
-          } else {
-            forms.musicSheetSoundList.splice(index, 1)
-          }
+          // } else {
+          //   forms.musicSheetSoundList.splice(index, 1)
+          // }
         }
       })
     }
@@ -741,7 +744,7 @@ export default defineComponent({
           forms.name = data.name
           // forms.musicTag = data.musicTag?.split(',')
           forms.composer = data.composer
-          forms.playSpeed = data.playSpeed
+          forms.playSpeed = data.playSpeed ? Number.parseFloat(data.playSpeed) : 100
           // forms.showFingering = Number(data.showFingering)
           // forms.canEvaluate = Number(data.canEvaluate)
           // forms.notation = Number(data.notation)
@@ -794,9 +797,16 @@ export default defineComponent({
               state.partListNames = getPartListNames(res?.data as any) as any
 
               // 初始化音轨和原音
-              forms.multiTracksSelection = data.multiTracksSelection
-                ? data.multiTracksSelection.split(',')
-                : []
+              if (data.multiTracksSelection) {
+                data.multiTracksSelection = data.multiTracksSelection.toLocaleUpperCase()
+              }
+              if (!data.multiTracksSelection || data.multiTracksSelection.trim() == '' || data.multiTracksSelection.trim() == 'NULL') {
+                forms.multiTracksSelection = ['']
+              } else {
+                forms.multiTracksSelection = data.multiTracksSelection.split(',')
+              }
+              let names = state.partListNames.map((next: any) => next.label)
+              forms.multiTracksSelection = names.filter((next: any) => forms.multiTracksSelection.includes(next.toLocaleUpperCase()))
 
               const existSoundList = data.musicSheetSoundList ? data.musicSheetSoundList : []
               if (existSoundList.length === 1 && existSoundList[0].track === 'P1') {
@@ -809,13 +819,16 @@ export default defineComponent({
                 state.partListNames.forEach((item: any) => {
                   let audioFileUrl = null
                   existSoundList.forEach((next: any) => {
+                    if (!next.track || next.track.trim() == '') {
+                      next.track = ''
+                    }
                     if (next.track == item.value) {
                       audioFileUrl = next.audioFileUrl
                     }
                   })
                   forms.musicSheetSoundList.push({
                     audioFileUrl: audioFileUrl, // 原音
-                    track: item.value // 轨道
+                    track: item.value ? item.value : '' // 轨道
                   })
                   tracks.push(item.value)
                 })
@@ -1111,7 +1124,7 @@ export default defineComponent({
                 path="playSpeed"
                 rule={[
                   {
-                    required: false,
+                    required: true,
                     message: '请输入速度'
                   }
                 ]}
@@ -1119,9 +1132,10 @@ export default defineComponent({
                 <NInputNumber
                   placeholder="请输入速度"
                   v-model:value={forms.playSpeed}
+                  min="0"
                   style="width:100%"
                 />
-              </NFormItemGi>            
+              </NFormItemGi>
             </NGrid>
             <NAlert showIcon={false} style={{ marginBottom: '12px' }}>
               曲目上传
@@ -1183,7 +1197,7 @@ export default defineComponent({
                 >
                   <UploadFile
                     disabled={state.previewMode}
-                    size={10}
+                    size={30}
                     v-model:imageList={state.musicSheetAccompanimentUrlList}
                     tips="仅支持上传.mp3格式文件"
                     listType="image"
@@ -1233,7 +1247,7 @@ export default defineComponent({
                   <UploadFile
                     desc={'MIDI文件'}
                     disabled={state.previewMode}
-                    size={10}
+                    size={30}
                     v-model:fileList={forms.midiFileUrl}
                     tips="仅支持上传.MID格式文件"
                     listType="image"
@@ -1258,7 +1272,7 @@ export default defineComponent({
                 <UploadFile
                   desc={'XML文件'}
                   disabled={state.previewMode}
-                  size={10}
+                  size={30}
                   key={'xmlFileUrl'}
                   v-model:fileList={forms.xmlFileUrl}
                   tips="仅支持上传.xml/.mxml格式文件"
@@ -1325,12 +1339,12 @@ export default defineComponent({
             </NGrid>
             <NGrid cols={2}>
               <NFormItemGi
-                label="谱面渲染"
+                label="多声轨渲染"
                 path="musicSheetType"
                 rule={[
                   {
                     required: true,
-                    message: '请选择谱面渲染',
+                    message: '请选择多声轨渲染',
                     trigger: 'change'
                   }
                 ]}
@@ -1344,7 +1358,7 @@ export default defineComponent({
                   <NRadio value={'SINGLE'}>是</NRadio>
                   <NRadio value={'CONCERT'}>否</NRadio>
                 </NRadioGroup>
-              </NFormItemGi> 
+              </NFormItemGi>
               <NFormItemGi
                 label="是否显示指法"
                 path="isShowFingering"
@@ -1359,7 +1373,7 @@ export default defineComponent({
                   <NRadio value={true}>是</NRadio>
                   <NRadio value={false}>否</NRadio>
                 </NRadioGroup>
-              </NFormItemGi>                       
+              </NFormItemGi>
             </NGrid>
 
             {forms.musicSheetType && (
@@ -1552,7 +1566,7 @@ export default defineComponent({
                               path={`musicSheetSoundList[${index}].track`}
                               rule={[
                                 {
-                                  required: true,
+                                  required: false,
                                   message: '请选择所属轨道'
                                 }
                               ]}

+ 18 - 8
src/views/music-library/music-sheet/modal/music-operationV2.tsx

@@ -458,7 +458,7 @@ export default defineComponent({
             if (musicSheetType == 'CONCERT' && forms.musicSheetSoundList_YY.length > 0) {
               audioPlayTypes.push("PLAY")
               forms.musicSheetSoundList_YY.forEach((musicSheetSound: any) => {
-                if (musicSheetSound.track && musicSheetSound.audioFileUrl) {
+                if (musicSheetSound.audioFileUrl) {
                   musicSheetSoundList.push({
                     ...musicSheetSound,
                     musicSheetId: props.data.id,
@@ -1006,7 +1006,16 @@ export default defineComponent({
               state.partListNames = getPartListNames(res?.data as any) as any
 
               // 初始化音轨和原音
-              forms.multiTracksSelection = data.multiTracksSelection ? data.multiTracksSelection.trim().split(',') : ['']
+              if (data.multiTracksSelection) {
+                data.multiTracksSelection = data.multiTracksSelection.toLocaleUpperCase()
+              }
+              if (!data.multiTracksSelection || data.multiTracksSelection.trim() == '' || data.multiTracksSelection.trim() == 'NULL') {
+                forms.multiTracksSelection = ['']
+              } else {
+                forms.multiTracksSelection = data.multiTracksSelection.split(',')
+              }
+              let names = state.partListNames.map((next: any) => next.label)
+              forms.multiTracksSelection = names.filter((next: any) => forms.multiTracksSelection.includes(next.toLocaleUpperCase()))
 
               if (state.musicSheetSoundList.length === 1 && state.musicSheetSoundList[0].track === 'P1') {
                 forms.musicSheetSoundList_YY.push({
@@ -1338,7 +1347,7 @@ export default defineComponent({
                   <UploadFile
                       desc={'XML文件'}
                       disabled={state.previewMode}
-                      size={10}
+                      size={30}
                       key={'xmlFileUrl'}
                       v-model:fileList={forms.xmlFileUrl}
                       tips="仅支持上传.xml/.mxml格式文件"
@@ -1472,6 +1481,7 @@ export default defineComponent({
                   <NInputNumber
                       placeholder="请输入速度"
                       v-model:value={forms.playSpeed}
+                      min={0}
                       style="width:100%"
                   />
                 </NFormItemGi>
@@ -1601,7 +1611,7 @@ export default defineComponent({
                   <UploadFile
                       desc={'上传范唱'}
                       disabled={state.previewMode}
-                      size={10}
+                      size={30}
                       key={'xmlFileUrl'}
                       v-model:fileList={state.fSongFile}
                       tips="仅支持上传.mp3格式文件"
@@ -1626,7 +1636,7 @@ export default defineComponent({
                   <UploadFile
                       desc={'上传伴唱'}
                       disabled={state.previewMode}
-                      size={10}
+                      size={30}
                       v-model:fileList={state.bSongFile}
                       tips="仅支持上传.mp3格式文件"
                       listType="image"
@@ -1651,7 +1661,7 @@ export default defineComponent({
                   <UploadFile
                       desc={'上传范唱'}
                       disabled={state.previewMode}
-                      size={10}
+                      size={30}
                       key={'xmlFileUrl'}
                       v-model:fileList={forms.solmizationFileUrl}
                       tips="仅支持上传.mp3格式文件"
@@ -1747,7 +1757,7 @@ export default defineComponent({
                     >
                       <UploadFile
                           disabled={state.previewMode}
-                          size={10}
+                          size={30}
                           v-model:imageList={state.musicSheetAccompanimentUrlList}
                           tips="仅支持上传.mp3格式文件"
                           listType="image"
@@ -1797,7 +1807,7 @@ export default defineComponent({
                       <UploadFile
                           desc={'上传原音'}
                           disabled={state.previewMode}
-                          size={10}
+                          size={30}
                           max={1}
                           v-model:fileList={forms.musicSheetSoundList_all_subject}
                           tips="仅支持上传.mp3格式文件"