Przeglądaj źródła

Merge branch 'feature-tianyong' into online

TIANYONG 1 rok temu
rodzic
commit
ac80f9f971

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

@@ -315,7 +315,9 @@ export default defineComponent({
       musicSheetExtend: {} as any, //所属人信息
       musicImg: '', // 五线谱图片
       musicFirstImg: '', //首调图片
-      musicJianImg: '' // 简谱固定调
+      musicJianImg: '', // 简谱固定调
+      isEvxml: false, // 是否是evxml
+      isShowFingering: true, // 是否显示指法
     })
     const state = reactive({
       loading: false,
@@ -373,7 +375,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 +404,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 +516,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 +550,7 @@ export default defineComponent({
           forms.playSpeed = 100
         }
       }
+      // console.log('xml声轨',partListNames,state.xmlFirstSpeed)
       return partListNames
     }
 
@@ -744,6 +754,7 @@ export default defineComponent({
           forms.sourceType = data.sourceType
           forms.appAuditFlag = data.appAuditFlag ? 1 : 0
           forms.midiFileUrl = data.midiFileUrl
+          forms.isShowFingering = data.isShowFingering
           forms.subjectIds = []
           if (data.subjectIds) {
             const subjectIds = data.subjectIds.split(',') || []
@@ -769,6 +780,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 +1121,7 @@ export default defineComponent({
                   v-model:value={forms.playSpeed}
                   style="width:100%"
                 />
-              </NFormItemGi>
+              </NFormItemGi>            
             </NGrid>
             <NAlert showIcon={false} style={{ marginBottom: '12px' }}>
               曲目上传
@@ -1251,7 +1263,7 @@ export default defineComponent({
                   v-model:fileList={forms.xmlFileUrl}
                   tips="仅支持上传.xml/.mxml格式文件"
                   listType="image"
-                  accept=".xml,.mxml"
+                  accept=".xml,.mxml,.evxml"
                   bucketName="cloud-coach"
                   text="点击上传XML文件"
                   onReadFileInputEventAsArrayBuffer={readFileInputEventAsArrayBuffer}
@@ -1332,7 +1344,22 @@ export default defineComponent({
                   <NRadio value={'SINGLE'}>是</NRadio>
                   <NRadio value={'CONCERT'}>否</NRadio>
                 </NRadioGroup>
-              </NFormItemGi>
+              </NFormItemGi> 
+              <NFormItemGi
+                label="是否显示指法"
+                path="isShowFingering"
+                rule={[
+                  {
+                    required: true,
+                    message: '请选择是否显示指法'
+                  }
+                ]}
+              >
+                <NRadioGroup v-model:value={forms.isShowFingering}>
+                  <NRadio value={true}>是</NRadio>
+                  <NRadio value={false}>否</NRadio>
+                </NRadioGroup>
+              </NFormItemGi>                       
             </NGrid>
 
             {forms.musicSheetType && (