瀏覽代碼

添加曲目接口对接调整

yuanliang 1 年之前
父節點
當前提交
9b90dd2289

+ 5 - 0
src/components/pagination/index.tsx

@@ -43,6 +43,10 @@ export default defineComponent({
     pageSizes: {
       type: Array as PropType<any>,
       default: () => [10, 20, 30, 40]
+    },
+    pageSlot:{
+      type: Number,
+      default: 9
     }
   },
   emits: ['update:page', 'update:pageSize', 'list'],
@@ -164,6 +168,7 @@ export default defineComponent({
         pageSizes={props.pageSizes}
         onUpdatePage={onUpdatePage}
         onUpdatePageSize={onUpdatePageSize}
+        pageSlot = {props.pageSlot}
       ></NPagination>
     )
   }

+ 70 - 65
src/components/upload-file/index.tsx

@@ -6,9 +6,9 @@ import {
   UploadFileInfo,
   useMessage
 } from 'naive-ui'
-import { defineComponent, watch, PropType, reactive, ref } from 'vue'
+import {defineComponent, watch, PropType, reactive, ref} from 'vue'
 import Copper from './copper'
-import { getUploadSign, onFileUpload, onOnlyFileUpload } from '@/utils/oss-file-upload'
+import {getUploadSign, onFileUpload, onOnlyFileUpload} from '@/utils/oss-file-upload'
 
 export default defineComponent({
   name: 'upload-file',
@@ -101,8 +101,8 @@ export default defineComponent({
     }
   },
   // readFileInputEventAsArrayBuffer 只会在文件的时间回调
-  emits: ['update:fileList', 'close', 'readFileInputEventAsArrayBuffer', 'remove'],
-  setup(props, { slots, attrs, emit, expose }) {
+  emits: ['update:fileList', 'upload:success', 'close', 'readFileInputEventAsArrayBuffer', 'remove'],
+  setup(props, {slots, attrs, emit, expose}) {
     const ossUploadUrl = `https://${props.bucketName}.ks3-cn-beijing.ksyuncs.com/`
     const message = useMessage()
     const visiable = ref<boolean>(false)
@@ -149,17 +149,17 @@ export default defineComponent({
     }
     initFileList()
     watch(
-      () => props.imageList,
-      () => {
-        initFileList()
-      }
+        () => props.imageList,
+        () => {
+          initFileList()
+        }
     )
     watch(
-      () => props.fileList,
-      () => {
-        console.log('list')
-        initFileList()
-      }
+        () => props.fileList,
+        () => {
+          console.log('list')
+          initFileList()
+        }
     )
     const handleClearFile = () => {
       uploadRef.value?.clear()
@@ -219,7 +219,7 @@ export default defineComponent({
           }
         }
         // const { data } = await policy(obj)
-        const { data } = await getUploadSign(obj)
+        const {data} = await getUploadSign(obj)
 
         state.policy = data.policy
         state.signature = data.signature
@@ -243,23 +243,27 @@ export default defineComponent({
     }
 
     const onCustomRequest = ({
-      file,
-      // data,
-      // headers,
-      // withCredentials,
-      action,
-      onFinish,
-      onError,
-      onProgress
-    }: UploadCustomRequestOptions) => {
+                               file,
+                               // data,
+                               // headers,
+                               // withCredentials,
+                               action,
+                               onFinish,
+                               onError,
+                               onProgress
+                             }: UploadCustomRequestOptions) => {
       const item = state
 
       item.file = file
-      onFileUpload({ file, action, data: item, onProgress, onFinish, onError })
+      onFileUpload({file, action, data: item, onProgress, onFinish, onError})
     }
 
     const onFinish = (options: any) => {
       emit('update:fileList', options.file.url)
+      emit('upload:success', {
+        url: options.file.url,
+        name: options.file.name
+      })
       emit('readFileInputEventAsArrayBuffer', tempFiileBuffer.value)
       // options.file.url = url
       visiable.value = false
@@ -268,6 +272,7 @@ export default defineComponent({
     const onRemove = async (options: any) => {
       console.log('🚀 ~ options', options)
       emit('update:fileList', '')
+      emit('upload:success', {})
       emit('remove')
       btnLoading.value = false
     }
@@ -290,7 +295,7 @@ export default defineComponent({
           }
         }
         // const { data } = await policy(obj)
-        const { data } = await getUploadSign(obj)
+        const {data} = await getUploadSign(obj)
 
         state.policy = data.policy
         state.signature = data.signature
@@ -321,47 +326,47 @@ export default defineComponent({
       }
     }
     return () => (
-      <div>
-        <NUpload
-          ref={uploadRef}
-          action={ossUploadUrl}
-          customRequest={onCustomRequest}
-          data={state}
-          v-model:fileList={fileListRef.value}
-          listType={props.listType}
-          accept={props.accept}
-          multiple={props.multiple}
-          max={props.max}
-          disabled={props.disabled}
-          showFileList={props.showFileList}
-          showPreviewButton
-          onBeforeUpload={(options: any) => onBeforeUpload(options)}
-          onFinish={(options: any) => onFinish(options)}
-          onRemove={(options: any) => onRemove(options)}
-        >
-          {props.listType === 'image' && (
-            <NButton loading={btnLoading.value} type="primary">
-              {props.text}
-            </NButton>
-          )}
-        </NUpload>
-        {props.tips && <p style="font-size: 13px; color: #666; padding-top: 4px;">{props.tips}</p>}
+        <div>
+          <NUpload
+              ref={uploadRef}
+              action={ossUploadUrl}
+              customRequest={onCustomRequest}
+              data={state}
+              v-model:fileList={fileListRef.value}
+              listType={props.listType}
+              accept={props.accept}
+              multiple={props.multiple}
+              max={props.max}
+              disabled={props.disabled}
+              showFileList={props.showFileList}
+              showPreviewButton
+              onBeforeUpload={(options: any) => onBeforeUpload(options)}
+              onFinish={(options: any) => onFinish(options)}
+              onRemove={(options: any) => onRemove(options)}
+          >
+            {props.listType === 'image' && (
+                <NButton loading={btnLoading.value} type="primary">
+                  {props.text}
+                </NButton>
+            )}
+          </NUpload>
+          {props.tips && <p style="font-size: 13px; color: #666; padding-top: 4px;">{props.tips}</p>}
 
-        <NModal
-          v-model:show={visiable.value}
-          preset="dialog"
-          showIcon={false}
-          title="上传图片"
-          style={{ width: '800px' }}
-        >
-          {/* @cropper-no="error" @cropper-ok="success" */}
-          <Copper
-            ref={CropperModal}
-            onClose={() => (visiable.value = false)}
-            onCropperOk={cropperOk}
-          />
-        </NModal>
-      </div>
+          <NModal
+              v-model:show={visiable.value}
+              preset="dialog"
+              showIcon={false}
+              title="上传图片"
+              style={{width: '800px'}}
+          >
+            {/* @cropper-no="error" @cropper-ok="success" */}
+            <Copper
+                ref={CropperModal}
+                onClose={() => (visiable.value = false)}
+                onCropperOk={cropperOk}
+            />
+          </NModal>
+        </div>
     )
   }
 })

+ 18 - 10
src/views/music-library/music-sheet/modal/music-operation.tsx

@@ -296,7 +296,6 @@ export default defineComponent({
       midiFileUrl: null, // 伴奏文件 MIDI文件(保留字段)
       subjectIds: '', // 可用声部
       subjectIdList: [] as any, // 可用声部
-      musicalInstrumentIds: '',  //可用乐器
       musicalInstrumentIdList: [] as any,  //可用乐器
       musicCategoryId: null,  //曲目分类
       musicSheetAccompanimentList: [] as any,  //曲目伴奏
@@ -355,8 +354,9 @@ export default defineComponent({
             musicTag: '-1',
             multiTracksSelection: forms.multiTracksSelection.join(','),
             musicSheetSoundList: forms.musicSheetSoundList.filter((next: any) => {
-              next.audioFileUrl
+              return !!next.audioFileUrl;
             }),
+            musicalInstrumentIds: forms.musicalInstrumentIdList.join(','),
             extConfigJson: JSON.stringify({gradualTimes: forms.graduals})
           }
           if (forms.audioType == 'MIDI') {
@@ -465,7 +465,6 @@ export default defineComponent({
           forms.musicalInstrumentIdList.push(codeIdMap.get(code));
         }
       })
-      forms.musicalInstrumentIds = forms.musicalInstrumentIdList.join(",")
 
       // 声部
       if (forms.musicalInstrumentIdList.length > 0) {
@@ -588,17 +587,22 @@ export default defineComponent({
           forms.status = data.status
           forms.musicCategoryId = data.musicCategoryId
           forms.musicSheetSoundList = data.musicSheetSoundList || []
+          forms.musicSheetSoundList.forEach((next: any) => {
+            forms.multiTracksSelection.push(next.track)
+          })
+
           forms.musicSheetType = data.musicSheetType || "SINGLE"
           forms.musicSheetAccompanimentList = data.musicSheetAccompanimentList
           data.musicSheetAccompanimentList?.forEach((next: any) => {
             state.musicSheetAccompanimentUrlList.push(next.audioFileUrl);
           })
           forms.evaluationStandard = data.evaluationStandard
-          forms.musicalInstrumentIds = data.musicalInstrumentIds
           forms.musicalInstrumentIdList = data.musicalInstrumentIds.split(',') || []
 
           forms.subjectIds = data.subjectIds
           forms.subjectIdList = data.subjectIds?.split(',') || []
+          forms.sourceType = data.sourceType
+          forms.musicSheetExtend = data.musicSheetExtend
           // 获取渐变 和 是否多声部
           try {
             const extConfigJson = data.extConfigJson ? JSON.parse(data.extConfigJson) : {}
@@ -932,13 +936,14 @@ export default defineComponent({
                         bucketName="cloud-coach"
                         text="点击上传伴奏文件"
                         max={10}
-                        onUpdate:fileList={(val: string) => {
-                          state.musicSheetAccompanimentUrls = [state.musicSheetAccompanimentUrls, val].filter(Boolean).join(',')
+                        onUpload:success={(file) => {
+                          state.musicSheetAccompanimentUrls = [state.musicSheetAccompanimentUrls, file.url].filter(Boolean).join(',')
                           state.musicSheetAccompanimentUrlList = state.musicSheetAccompanimentUrls?.split(',').filter(Boolean)
                           forms.musicSheetAccompanimentList = []
                           for (let i = 0; i < state.musicSheetAccompanimentUrlList.length; i++) {
                             forms.musicSheetAccompanimentList.push({
                               audioFileUrl: state.musicSheetAccompanimentUrlList[i],
+                              track: file.name,
                               sortNumber: i + 1
                             })
                           }
@@ -971,7 +976,7 @@ export default defineComponent({
                         accept=".mp3,.aac"
                         bucketName="cloud-coach"
                         text="点击上传MIDI文件"
-                        onReadFileInputEventAsArrayBuffer={readFileInputEventAsArrayBuffer}
+                        // onReadFileInputEventAsArrayBuffer={readFileInputEventAsArrayBuffer}
                     />
                   </NFormItemGi>
               )}
@@ -994,6 +999,11 @@ export default defineComponent({
                     bucketName="cloud-coach"
                     text="点击上传XML文件"
                     onReadFileInputEventAsArrayBuffer={readFileInputEventAsArrayBuffer}
+                    onRemove={() => {
+                      forms.multiTracksSelection = []
+                      state.partListNames = []
+                      forms.musicSheetSoundList = []
+                    }}
                 />
               </NFormItemGi>
 
@@ -1031,6 +1041,7 @@ export default defineComponent({
                     v-model:value={forms.musicalInstrumentIdList}
                     clearable
                     multiple
+                    maxTagCount={3}
                 />
               </NFormItemGi>
             </NGrid>
@@ -1071,9 +1082,6 @@ export default defineComponent({
                       >
                         <NCheckboxGroup
                             v-model:value={forms.multiTracksSelection}
-                            onUpdateValue={(value) => {
-                              console.log(value)
-                            }}
                         >
                           <NGrid yGap={2} cols={4}
                           >

+ 1 - 0
src/views/music-library/music-sheet/modal/musicSheetOwnerDialog.tsx

@@ -162,6 +162,7 @@ export default defineComponent({
                 onList={getList}
                 sync
                 saveKey="music-list"
+                pageSlot={5}
             ></Pagination>
           </div>
         </div>