소스 검색

曲目声部乐器反显调整

yuanliang 11 달 전
부모
커밋
0ccb404dfd
2개의 변경된 파일55개의 추가작업 그리고 19개의 파일을 삭제
  1. 53 17
      src/views/music-library/music-sheet/modal/music-operationV2.tsx
  2. 2 2
      vite.config.ts

+ 53 - 17
src/views/music-library/music-sheet/modal/music-operationV2.tsx

@@ -329,6 +329,7 @@ export default defineComponent({
 
       fSongList:[] as any,// 范唱列表
       isScoreRender: true, // 总谱渲染
+      defaultScoreRender: true, // 演奏是否默认展示总谱渲染
       scoreAudioFileUrl: null as any, // 总谱文件
     })
     const state = reactive({
@@ -369,7 +370,7 @@ export default defineComponent({
     watch(
         () => forms.multiTracksSelection,
         (value) => {
-          initInstrumentAndSubjectByCode(value)
+          initInstrumentAndSubjectByTrack(value)
           initFSongList()
         }
     )
@@ -507,6 +508,15 @@ export default defineComponent({
             })
           }
 
+          let isScoreRender
+          let defaultScoreRender
+          if (forms.multiTracksSelection.length > 1) {
+            isScoreRender = forms.isScoreRender
+            if (forms.isScoreRender) {
+              defaultScoreRender = forms.defaultScoreRender
+            }
+          }
+
 
           const obj = {
             musicCategoryId: forms.musicCategoryId,
@@ -547,6 +557,8 @@ export default defineComponent({
             isPlaySingBeat: forms.isPlaySingBeat,
             isAllSubject: forms.isAllSubject,
             musicSheetExtend: forms.sourceType == 'PLATFORM' ? null : forms.musicSheetExtend,
+            isScoreRender: isScoreRender,
+            defaultScoreRender: defaultScoreRender,
           }
           if (forms.audioType == 'MIDI') {
             obj.musicSheetSoundList = []
@@ -704,14 +716,14 @@ export default defineComponent({
         }
       }
       // 乐器支持多编码,暂不开放
-      initInstrumentAndSubjectByCode(instrumentCodeList)
+      initInstrumentAndSubjectByTrack(instrumentCodeList)
     }
 
-    // 通过乐器编码反显乐器和声部
-    const initInstrumentAndSubjectByCode = async (codes: string[]) => {
+    // 通过声轨反显乐器和声部
+    const initInstrumentAndSubjectByTrack = async (tracks: string[]) => {
       // 选择一个声轨,独奏
       // 选择了多个声轨,合奏,乐器和声部自动反显,不可修改
-      if (!codes || codes.length <= 1) {
+      if (!tracks || tracks.length <= 1) {
         forms.musicSheetType = 'SINGLE'
         state.subjectDisabled = false
         state.instrumentDisabled = false
@@ -720,11 +732,13 @@ export default defineComponent({
       forms.musicSheetType = 'CONCERT'
       state.subjectDisabled = true
       state.instrumentDisabled = true
+      await initInstrumentAndSubjectByCode(tracks)
+    }
 
+    // 通过乐器编码反显乐器和声部
+    const initInstrumentAndSubjectByCode = async (codes: string[]) => {
       forms.musicalInstrumentIdList = []
       forms.subjectIds = []
-
-
       const codeIdMap = new Map<string, []>() as any
       state.instrumentData.forEach((data: any) => {
         if (!data.disabled) {
@@ -755,7 +769,7 @@ export default defineComponent({
       // 声部
       if (forms.musicalInstrumentIdList.length > 0) {
         await showBackSubject(forms.musicalInstrumentIdList)
-        changeSubject(forms.subjectIds)
+        // changeSubject(forms.subjectIds)
       }
     }
 
@@ -847,6 +861,10 @@ export default defineComponent({
 
     // 反显声部
     const showBackSubject = async (musicalInstrumentIdList: []) => {
+      forms.subjectIds = []
+      if (!musicalInstrumentIdList || musicalInstrumentIdList.length == 0) {
+        return
+      }
       try {
         const { data } = await subjectPage({
           page: 1,
@@ -1015,7 +1033,7 @@ export default defineComponent({
             });
           })
           state.instrumentData = tempList
-          // state.instrumentList = tempList
+          state.instrumentList = deepClone(tempList)
         } catch {
         }
       }
@@ -1088,7 +1106,6 @@ export default defineComponent({
             state.subjectList = state.subjectList.filter((subject: any) => {
               return (!subject.disabled || subjectIds.includes(subject.value));
             })
-
           }
           forms.musicCategoryId = data.musicCategoryId
           forms.audioType = data.audioType
@@ -1143,7 +1160,10 @@ export default defineComponent({
           }
 
           forms.musicalInstrumentIdList = data.musicalInstrumentIds ? data.musicalInstrumentIds.split(',') : []
-          await changeSubject(forms.subjectIds)
+          // 乐器下拉格式化,停用的过滤
+          state.instrumentList = state.instrumentList.filter((next: any) => {
+            return (next.enableFlag || forms.musicalInstrumentIdList.includes(next.id));
+          })
 
 
           setOwnerName()
@@ -1167,6 +1187,8 @@ export default defineComponent({
               let names = state.partListNames.map((next: any) => next.label)
               multiTracksSelection = names.filter((next: any) => multiTracksSelection.includes(next.toLocaleUpperCase()))
               forms.multiTracksSelection = multiTracksSelection
+              // 根据声轨数量判断独奏合奏
+              forms.musicSheetType = forms.multiTracksSelection.length > 1 ? 'CONCERT' : 'SINGLE'
 
               const existSoundList = data.musicSheetSoundList ? data.musicSheetSoundList : []
               // 如果只有一个原音文件,并且原音没有对应声轨,取xml解析中的第一个声轨绑定当当前原音
@@ -1212,9 +1234,6 @@ export default defineComponent({
                   state.multiTracks = 'all'
                 }
 
-                // 根据声轨数量判断独奏合奏
-                forms.musicSheetType = forms.multiTracksSelection.length > 1 ? 'CONCERT' : 'SINGLE'
-
                 // 处理没有声轨,但有原音
                 if (forms.musicSheetType == 'CONCERT') {
                   state.musicSheetSoundList.forEach((next: any) => {
@@ -1626,14 +1645,14 @@ export default defineComponent({
                       <NSelect
                           v-model:value={forms.subjectIds}
                           options={state.subjectList}
-                          disabled={state.subjectDisabled}
+                          disabled={true}
                           multiple
                           filterable
                           clearable
                           placeholder="请选择可用声部"
                           maxTagCount={10}
                           onUpdateValue={async (val: any) => {
-                            await changeSubject(val)
+                            // await changeSubject(val)
                           }}
                       />
                     </NFormItemGi>
@@ -1659,6 +1678,7 @@ export default defineComponent({
                           filterable
                           maxTagCount={10}
                           onUpdateValue={async (value: any) => {
+                            await showBackSubject(value)
                           }}
                       />
                     </NFormItemGi>
@@ -1725,7 +1745,7 @@ export default defineComponent({
                 </NFormItemGi>
               </NGrid>
               {forms.multiTracksSelection.length > 1 && (
-                  <NGrid cols={1}>
+                  <NGrid cols={2}>
                     <NFormItemGi
                         label="总谱渲染"
                         path="isScoreRender"
@@ -1743,6 +1763,22 @@ export default defineComponent({
                         <NRadio value={false}>不支持</NRadio>
                       </NRadioGroup>
                     </NFormItemGi>
+                    <NFormItemGi
+                        label="默认显示"
+                        path="defaultScoreRender"
+                        rule={[
+                          {
+                            required: false,
+                          }
+                        ]}
+                    >
+                      <NRadioGroup
+                          v-model:value={forms.defaultScoreRender}
+                      >
+                        <NRadio value={true}>总谱</NRadio>
+                        <NRadio value={false}>分轨</NRadio>
+                      </NRadioGroup>
+                    </NFormItemGi>
                   </NGrid>
               )}
               <NAlert showIcon={false} style={{marginBottom: '12px'}}>

+ 2 - 2
vite.config.ts

@@ -19,9 +19,9 @@ function pathResolve(dir: string) {
 }
 
 // const proxyUrl = 'https://dev.lexiaoya.cn'
-// const proxyUrl = 'http://127.0.0.1:7293/'
+const proxyUrl = 'http://127.0.0.1:7293/'
 // const proxyUrl = 'https://resource.colexiu.com/'
-const proxyUrl = 'https://dev.resource.colexiu.com'
+// const proxyUrl = 'https://dev.resource.colexiu.com'
 // https://test.resource.colexiu.com/
 
 export default ({ command, mode }: ConfigEnv): UserConfig => {