瀏覽代碼

feat: 支持上传evxml格式的曲谱文件

TIANYONG 11 月之前
父節點
當前提交
ead6165592
共有 1 個文件被更改,包括 16 次插入6 次删除
  1. 16 6
      src/views/music-library/music-sheet/modal/music-operation.tsx

+ 16 - 6
src/views/music-library/music-sheet/modal/music-operation.tsx

@@ -315,7 +315,8 @@ export default defineComponent({
       musicSheetExtend: {} as any, //所属人信息
       musicImg: '', // 五线谱图片
       musicFirstImg: '', //首调图片
-      musicJianImg: '' // 简谱固定调
+      musicJianImg: '', // 简谱固定调
+      isEvxml: false, // 是否是evxml
     })
     const state = reactive({
       loading: false,
@@ -373,7 +374,8 @@ export default defineComponent({
             musicalInstrumentIds: forms.musicalInstrumentIdList.join(','),
             extConfigJson: JSON.stringify({
               repeatedBeats: forms.repeatedBeats ? 1 : 0,
-              gradualTimes: forms.graduals
+              gradualTimes: forms.graduals,
+              isEvxml: forms.isEvxml ? 1 : 0,
             }),
             subjectIds: forms.subjectIds.join(',')
           }
@@ -401,6 +403,8 @@ export default defineComponent({
 
     // 上传XML,初始化音轨 音轨速度 乐器、声部
     const readFileInputEventAsArrayBuffer = (file: any) => {
+      // 是否是evxml
+      forms.isEvxml = file?.name?.includes('.evxml') ? true : false;
       const xmlRead = new FileReader()
       xmlRead.onload = (res) => {
         try {
@@ -511,7 +515,11 @@ export default defineComponent({
       const partList: any =
         xmlParse.getElementsByTagName('part-list')?.[0]?.getElementsByTagName('score-part') || []
       let partListNames = Array.from(partList).map((item: any) => {
-        const part = item.getElementsByTagName('part-name')?.[0].textContent || ''
+        let part = item.getElementsByTagName('part-name')?.[0]?.textContent || ''
+        // evxml没有分轨,需要手动设置一个默认的名称,用于上传原音
+        if (forms.isEvxml) {
+          part = part || 'noPartName'
+        }
         return {
           value: part,
           label: part
@@ -541,6 +549,7 @@ export default defineComponent({
           forms.playSpeed = 100
         }
       }
+      // console.log('xml声轨',partListNames,state.xmlFirstSpeed)
       return partListNames
     }
 
@@ -769,6 +778,7 @@ export default defineComponent({
             const extConfigJson = data.extConfigJson ? JSON.parse(data.extConfigJson) : {}
             forms.graduals = extConfigJson.gradualTimes || {}
             forms.repeatedBeats = !!extConfigJson.repeatedBeats
+            forms.isEvxml = !!extConfigJson.isEvxml
           } catch (error) {}
           forms.evaluationStandard = data.evaluationStandard
           forms.musicSheetExtend = data.musicSheetExtend
@@ -1109,7 +1119,7 @@ export default defineComponent({
                   v-model:value={forms.playSpeed}
                   style="width:100%"
                 />
-              </NFormItemGi>
+              </NFormItemGi>            
             </NGrid>
             <NAlert showIcon={false} style={{ marginBottom: '12px' }}>
               曲目上传
@@ -1249,9 +1259,9 @@ export default defineComponent({
                   size={10}
                   key={'xmlFileUrl'}
                   v-model:fileList={forms.xmlFileUrl}
-                  tips="仅支持上传.xml/.mxml格式文件"
+                  tips="仅支持上传.xml/.mxml/.evxml格式文件"
                   listType="image"
-                  accept=".xml,.mxml"
+                  accept=".xml,.mxml,.evxml"
                   bucketName="cloud-coach"
                   text="点击上传XML文件"
                   onReadFileInputEventAsArrayBuffer={readFileInputEventAsArrayBuffer}