|
@@ -1,16 +1,35 @@
|
|
|
import type {SelectOption} from 'naive-ui'
|
|
|
-import {NAlert, NButton, NCascader, NCheckbox, NForm, NFormItemGi, NGi, NGrid, NInput, NInputNumber, NRadio, NRadioGroup, NSelect, NSpace, useDialog, useMessage} from 'naive-ui'
|
|
|
+import {
|
|
|
+ NAlert,
|
|
|
+ NButton,
|
|
|
+ NCascader,
|
|
|
+ NCheckbox,
|
|
|
+ NForm,
|
|
|
+ NFormItemGi,
|
|
|
+ NGi,
|
|
|
+ NGrid,
|
|
|
+ NInput,
|
|
|
+ NInputNumber,
|
|
|
+ NModal,
|
|
|
+ NRadio,
|
|
|
+ NRadioGroup,
|
|
|
+ NSelect,
|
|
|
+ NSpace,
|
|
|
+ useDialog,
|
|
|
+ useMessage,
|
|
|
+ NCheckboxGroup, NCol
|
|
|
+} from 'naive-ui'
|
|
|
import {defineComponent, onMounted, PropType, reactive, ref} from 'vue'
|
|
|
import {musicSheetDetail, musicSheetSave, musicSheetUpdate} from '../../api'
|
|
|
import UploadFile from '@/components/upload-file'
|
|
|
import styles from './index.module.less'
|
|
|
import deepClone from '@/utils/deep.clone'
|
|
|
import axios from 'axios'
|
|
|
-import {CheckboxGroup} from "vant";
|
|
|
import {musicSheetSourceType, musicSheetType} from "@/utils/constant";
|
|
|
import {getSelectDataFromObj} from "@/utils/objectUtil";
|
|
|
import {musicalInstrumentPage} from "@views/system-manage/subject-manage/api";
|
|
|
import {subjectPage} from "@views/system-manage/api";
|
|
|
+import MusicSheetOwnerDialog from "@views/music-library/music-sheet/modal/musicSheetOwnerDialog";
|
|
|
|
|
|
/**
|
|
|
* 获取指定元素下一个Note元素
|
|
@@ -249,6 +268,7 @@ export default defineComponent({
|
|
|
}
|
|
|
},
|
|
|
emits: ['close', 'getList'],
|
|
|
+
|
|
|
setup(props, {slots, attrs, emit}) {
|
|
|
const forms = reactive({
|
|
|
graduals: {} as any, // 渐变速度
|
|
@@ -256,9 +276,9 @@ export default defineComponent({
|
|
|
xmlFileUrl: null, // XML
|
|
|
midiUrl: null, // mid
|
|
|
name: null, // 曲目名称
|
|
|
- musicTag: [] as any, // 曲目标签
|
|
|
+ // musicTag: [] as any, // 曲目标签
|
|
|
composer: null, // 音乐人
|
|
|
- playSpeed: null, // 曲谱速度
|
|
|
+ playSpeed: null as any, // 曲谱速度
|
|
|
// showFingering: null as any, // 是否显示指法
|
|
|
// canEvaluate: null as any, // 是否评测
|
|
|
// notation: null as any, // 能否转和简谱
|
|
@@ -267,24 +287,33 @@ export default defineComponent({
|
|
|
musicCover: null, // 曲谱封面
|
|
|
remark: null, // 曲谱描述
|
|
|
musicSheetSoundList: [] as any, // 原音
|
|
|
- musicSheetCategoriesId: null,
|
|
|
+ // musicSheetCategoriesId: null,
|
|
|
status: false,
|
|
|
- musicSheetType: null, // 曲目类型
|
|
|
+ musicSheetType: 'SINGLE', // 曲目类型
|
|
|
sourceType: undefined, //来源类型/作者属性(PLATFORM: 平台; ORG: 机构; PERSON: 个人)
|
|
|
- userId: null, // 所属人
|
|
|
- appAuditFlag: false, // 是否审核版本
|
|
|
+ // userId: null, // 所属人
|
|
|
+ appAuditFlag: 0, // 是否审核版本
|
|
|
midiFileUrl: null, // 伴奏文件 MIDI文件(保留字段)
|
|
|
subjectIds: '', // 可用声部
|
|
|
subjectIdList: [] as any, // 可用声部
|
|
|
musicalInstrumentIds: '', //可用乐器
|
|
|
musicalInstrumentIdList: [] as any, //可用乐器
|
|
|
musicCategoryId: null, //曲目分类
|
|
|
- musicSheetAccompanimentList: [], //曲目伴奏
|
|
|
+ musicSheetAccompanimentList: [] as any, //曲目伴奏
|
|
|
audioType: 'HOMEMODE', // 伴奏类型
|
|
|
- isPlayBeat: 1, // 是否播放节拍器
|
|
|
- isUseSystemBeat: '1', // 是否使用系统节拍器(0:否;1:是)
|
|
|
- repeatedBeats: '0', // 是否重复节拍时长
|
|
|
+ isPlayBeat: true, // 是否播放节拍器
|
|
|
+ isUseSystemBeat: true, // 是否使用系统节拍器(0:否;1:是)
|
|
|
+ repeatedBeats: false, // 是否重复节拍时长
|
|
|
evaluationStandard: 'AMPLITUDE', // 评分标准 节奏 AMPLITUDE 音准 FREQUENCY 分贝 DECIBELS
|
|
|
+ multiTracksSelection: [] as any, // 声轨
|
|
|
+ musicSheetExtend: { // 所属人信息
|
|
|
+ userId: 1,
|
|
|
+ userName: '小王',
|
|
|
+ musicSheetId: 1,
|
|
|
+ applicationId: 1,
|
|
|
+ organizationRoleId: 1,
|
|
|
+ useApplicationIds: 1,
|
|
|
+ },
|
|
|
})
|
|
|
const state = reactive({
|
|
|
loading: false,
|
|
@@ -292,10 +321,14 @@ export default defineComponent({
|
|
|
xmlFirstSpeed: null as any, // 第一个音轨速度
|
|
|
partListNames: [] as any, // 所有音轨声部列表
|
|
|
musicSheetCategories: [...props.musicSheetCategories] as any,
|
|
|
- musicSheetAccompanimentNames: [] as any,
|
|
|
+ musicSheetAccompanimentUrls: '' as any,
|
|
|
+ musicSheetAccompanimentUrlList: [] as any,
|
|
|
instrumentData: [],
|
|
|
instrumentList: [],
|
|
|
subjectList: [],
|
|
|
+ showMusicSheetOwnerDialog: false, //所属人弹框
|
|
|
+ musicSheetOwnerData: {}, //所属人信息
|
|
|
+ multiTracks: null,
|
|
|
})
|
|
|
const gradualData = reactive({
|
|
|
list: [] as any[],
|
|
@@ -320,6 +353,10 @@ export default defineComponent({
|
|
|
const obj = {
|
|
|
...forms,
|
|
|
musicTag: '-1',
|
|
|
+ multiTracksSelection: forms.multiTracksSelection.join(','),
|
|
|
+ musicSheetSoundList: forms.musicSheetSoundList.filter((next: any) => {
|
|
|
+ next.audioFileUrl
|
|
|
+ }),
|
|
|
extConfigJson: JSON.stringify({gradualTimes: forms.graduals})
|
|
|
}
|
|
|
if (forms.audioType == 'MIDI') {
|
|
@@ -327,7 +364,7 @@ export default defineComponent({
|
|
|
}
|
|
|
btnLoading.value = true
|
|
|
if (props.type === 'add') {
|
|
|
- await musicSheetSave({...obj})
|
|
|
+ await musicSheetSave(obj)
|
|
|
message.success('添加成功')
|
|
|
} else if (props.type === 'edit') {
|
|
|
await musicSheetUpdate({...obj, id: props.data.id})
|
|
@@ -405,7 +442,7 @@ export default defineComponent({
|
|
|
|
|
|
state.xmlFirstSpeed = xmlParse.getElementsByTagName('per-minute')?.[0]?.textContent || ''
|
|
|
if (!forms.playSpeed) {
|
|
|
- forms.playSpeed = state.xmlFirstSpeed
|
|
|
+ forms.playSpeed = Number.parseInt(state.xmlFirstSpeed)
|
|
|
}
|
|
|
|
|
|
// 乐器
|
|
@@ -428,6 +465,7 @@ export default defineComponent({
|
|
|
forms.musicalInstrumentIdList.push(codeIdMap.get(code));
|
|
|
}
|
|
|
})
|
|
|
+ forms.musicalInstrumentIds = forms.musicalInstrumentIdList.join(",")
|
|
|
|
|
|
// 声部
|
|
|
if (forms.musicalInstrumentIdList.length > 0) {
|
|
@@ -503,6 +541,29 @@ export default defineComponent({
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ const checkMultiTracks = (value: string) => {
|
|
|
+ if (!value) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (value === 'all') {
|
|
|
+ forms.multiTracksSelection = []
|
|
|
+ state.partListNames.forEach((next: any) => {
|
|
|
+ forms.multiTracksSelection.push(next.value)
|
|
|
+ })
|
|
|
+ } else if (value === 'invert') {
|
|
|
+ state.partListNames.forEach((next: any) => {
|
|
|
+ const indexOf = forms.multiTracksSelection.indexOf(next.value);
|
|
|
+ if (indexOf > -1) {
|
|
|
+ forms.multiTracksSelection.splice(indexOf, 1)
|
|
|
+ } else {
|
|
|
+ forms.multiTracksSelection.push(next.value)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else if (value === 'allUncheck') {
|
|
|
+ forms.multiTracksSelection = []
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
onMounted(async () => {
|
|
|
initInstrumentList();
|
|
|
if (props.type === 'edit' || props.type === 'preview') {
|
|
@@ -514,7 +575,7 @@ export default defineComponent({
|
|
|
forms.xmlFileUrl = data.xmlFileUrl
|
|
|
forms.midiUrl = data.midiUrl
|
|
|
forms.name = data.name
|
|
|
- forms.musicTag = data.musicTag?.split(',')
|
|
|
+ // forms.musicTag = data.musicTag?.split(',')
|
|
|
forms.composer = data.composer
|
|
|
forms.playSpeed = data.playSpeed
|
|
|
// forms.showFingering = Number(data.showFingering)
|
|
@@ -525,12 +586,12 @@ export default defineComponent({
|
|
|
forms.musicCover = data.musicCover
|
|
|
forms.remark = data.remark
|
|
|
forms.status = data.status
|
|
|
- forms.musicSheetCategoriesId = data.musicSheetCategoriesId
|
|
|
+ forms.musicCategoryId = data.musicCategoryId
|
|
|
forms.musicSheetSoundList = data.musicSheetSoundList || []
|
|
|
forms.musicSheetType = data.musicSheetType || "SINGLE"
|
|
|
forms.musicSheetAccompanimentList = data.musicSheetAccompanimentList
|
|
|
data.musicSheetAccompanimentList?.forEach((next: any) => {
|
|
|
- state.musicSheetAccompanimentNames.push(next.audioFileUrl);
|
|
|
+ state.musicSheetAccompanimentUrlList.push(next.audioFileUrl);
|
|
|
})
|
|
|
forms.evaluationStandard = data.evaluationStandard
|
|
|
forms.musicalInstrumentIds = data.musicalInstrumentIds
|
|
@@ -680,7 +741,7 @@ export default defineComponent({
|
|
|
<NGrid cols={2}>
|
|
|
<NFormItemGi
|
|
|
label="所属人"
|
|
|
- path="userId"
|
|
|
+ path="musicSheetExtend.userId"
|
|
|
rule={[
|
|
|
{
|
|
|
required: true,
|
|
@@ -688,20 +749,31 @@ export default defineComponent({
|
|
|
}
|
|
|
]}
|
|
|
>
|
|
|
- <NSelect
|
|
|
- v-model:value={forms.userId}
|
|
|
- options={
|
|
|
- [
|
|
|
- {
|
|
|
- label: '小A',
|
|
|
- value: '1'
|
|
|
- }
|
|
|
- ] as any
|
|
|
- }
|
|
|
- filterable
|
|
|
- clearable
|
|
|
- placeholder="请选择曲目所属人"
|
|
|
- />
|
|
|
+ {/*<NButton*/}
|
|
|
+ {/* v-model:value={forms.musicSheetExtend.userId}*/}
|
|
|
+ {/* options={*/}
|
|
|
+ {/* [*/}
|
|
|
+ {/* {*/}
|
|
|
+ {/* label: '小A',*/}
|
|
|
+ {/* value: '1'*/}
|
|
|
+ {/* }*/}
|
|
|
+ {/* ] as any*/}
|
|
|
+ {/* }*/}
|
|
|
+ {/* filterable*/}
|
|
|
+ {/* clearable*/}
|
|
|
+ {/* placeholder="请选择曲目所属人"*/}
|
|
|
+ {/*/>*/}
|
|
|
+ <NButton
|
|
|
+ type="primary"
|
|
|
+ size="small"
|
|
|
+ text
|
|
|
+ //v-auth="orchestraSubsidyStandard/update1597887579789053953"
|
|
|
+ onClick={() => {
|
|
|
+ state.showMusicSheetOwnerDialog = true
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {forms.musicSheetExtend?.userId ? forms.musicSheetExtend.userName + "(" + forms.musicSheetExtend.userId + ")" : '请选择所属人'}
|
|
|
+ </NButton>
|
|
|
</NFormItemGi>
|
|
|
<NFormItemGi label="速度" path="playSpeed">
|
|
|
<NInputNumber
|
|
@@ -712,30 +784,44 @@ export default defineComponent({
|
|
|
</NFormItemGi>
|
|
|
</NGrid>
|
|
|
<NGrid cols={2}>
|
|
|
- <NFormItemGi label="审核版本" path="speed">
|
|
|
+ <NFormItemGi label="审核版本" path="appAuditFlag"
|
|
|
+ rule={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择曲目所属人'
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
<NSelect
|
|
|
options={
|
|
|
[
|
|
|
{
|
|
|
label: '是',
|
|
|
- value: true
|
|
|
+ value: 1
|
|
|
},
|
|
|
{
|
|
|
label: '否',
|
|
|
- value: false
|
|
|
+ value: 0
|
|
|
}
|
|
|
] as any
|
|
|
}
|
|
|
v-model:value={forms.appAuditFlag}
|
|
|
/>
|
|
|
</NFormItemGi>
|
|
|
- <NFormItemGi label="曲目分类" path="musicSheetCategories">
|
|
|
+ <NFormItemGi label="曲目分类" path="musicCategoryId"
|
|
|
+ rule={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择曲目分类'
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
<NCascader
|
|
|
valueField="id"
|
|
|
labelField="name"
|
|
|
children-field="musicSheetCategoriesList"
|
|
|
placeholder="请选择分类"
|
|
|
- v-model:value={forms.musicSheetCategoriesId}
|
|
|
+ v-model:value={forms.musicCategoryId}
|
|
|
options={state.musicSheetCategories}
|
|
|
clearable
|
|
|
/>
|
|
@@ -760,8 +846,8 @@ export default defineComponent({
|
|
|
// }
|
|
|
// }}
|
|
|
>
|
|
|
- <NRadio value="1">是</NRadio>
|
|
|
- <NRadio value="0">否</NRadio>
|
|
|
+ <NRadio value={true}>是</NRadio>
|
|
|
+ <NRadio value={false}>否</NRadio>
|
|
|
</NRadioGroup>
|
|
|
</NFormItemGi>
|
|
|
<NFormItemGi
|
|
@@ -829,7 +915,7 @@ export default defineComponent({
|
|
|
{forms.playMode === 'MP3' && (
|
|
|
<NFormItemGi
|
|
|
label="上传伴奏"
|
|
|
- path="musicSheetAccompanimentNames"
|
|
|
+ path="musicSheetAccompanimentList"
|
|
|
rule={[
|
|
|
{
|
|
|
required: true,
|
|
@@ -839,13 +925,28 @@ export default defineComponent({
|
|
|
>
|
|
|
<UploadFile
|
|
|
size={10}
|
|
|
- v-model:imageList={state.musicSheetAccompanimentNames}
|
|
|
+ v-model:imageList={state.musicSheetAccompanimentUrlList}
|
|
|
tips="仅支持上传.mp3格式文件"
|
|
|
listType="image"
|
|
|
accept=".mp3"
|
|
|
bucketName="cloud-coach"
|
|
|
text="点击上传伴奏文件"
|
|
|
max={10}
|
|
|
+ onUpdate:fileList={(val: string) => {
|
|
|
+ state.musicSheetAccompanimentUrls = [state.musicSheetAccompanimentUrls, val].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],
|
|
|
+ sortNumber: i + 1
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }}
|
|
|
+ onRemove={() => {
|
|
|
+ state.musicSheetAccompanimentUrlList = []
|
|
|
+ state.musicSheetAccompanimentUrls = ''
|
|
|
+ }}
|
|
|
// onReadFileInputEventAsArrayBuffer={readFileInputEventAsArrayBuffer}
|
|
|
multiple={true}
|
|
|
/>
|
|
@@ -916,48 +1017,6 @@ export default defineComponent({
|
|
|
placeholder="请选择可用声部"
|
|
|
/>
|
|
|
</NFormItemGi>
|
|
|
- {(forms.musicSheetType === 'SINGLE') && (
|
|
|
- <NFormItemGi
|
|
|
- label="页面渲染声轨"
|
|
|
- path="audioType"
|
|
|
- rule={[
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: '请选择页面渲染声轨'
|
|
|
- }
|
|
|
- ]}
|
|
|
- >
|
|
|
- <CheckboxGroup>
|
|
|
- <NCheckbox value="长笛">长笛</NCheckbox>
|
|
|
- <NCheckbox value="竖笛">竖笛</NCheckbox>
|
|
|
- <NCheckbox value="葫芦丝">葫芦丝</NCheckbox>
|
|
|
- <NCheckbox value="萨克斯">萨克斯</NCheckbox>
|
|
|
- </CheckboxGroup>
|
|
|
- </NFormItemGi>
|
|
|
- )}
|
|
|
- {forms.musicSheetType === 'CONCERT' && (
|
|
|
- <NFormItemGi
|
|
|
- label="用户可切换声轨"
|
|
|
- path="audioType"
|
|
|
- rule={[
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: '请选择用户可切换声轨'
|
|
|
- }
|
|
|
- ]}
|
|
|
- >
|
|
|
- <CheckboxGroup>
|
|
|
- <NCheckbox value="长笛">长笛</NCheckbox>
|
|
|
- <NCheckbox value="竖笛">竖笛</NCheckbox>
|
|
|
- <NCheckbox value="葫芦丝">葫芦丝</NCheckbox>
|
|
|
- <NCheckbox value="萨克斯">萨克斯</NCheckbox>
|
|
|
- </CheckboxGroup>
|
|
|
- </NFormItemGi>
|
|
|
- )}
|
|
|
-
|
|
|
- </NGrid>
|
|
|
-
|
|
|
- <NGrid cols={2}>
|
|
|
<NFormItemGi label="可用乐器" path="musicalInstrumentIdList"
|
|
|
rule={[
|
|
|
{
|
|
@@ -975,6 +1034,65 @@ export default defineComponent({
|
|
|
/>
|
|
|
</NFormItemGi>
|
|
|
</NGrid>
|
|
|
+
|
|
|
+ {(forms.musicSheetType) && (
|
|
|
+ <NGrid cols={1}>
|
|
|
+ <NFormItemGi
|
|
|
+ label={`${forms.musicSheetType === 'SINGLE' ? '页面渲染声轨' : '用户可切换声轨'}`}
|
|
|
+ path="multiTracksSelection"
|
|
|
+ rule={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: `请选择${forms.musicSheetType === 'SINGLE' ? '页面渲染声轨' : '用户可切换声轨'}`
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <NGrid style="padding-top: 4px;">
|
|
|
+ <NGi span={24}>
|
|
|
+ <NRadioGroup
|
|
|
+ v-model:value={state.multiTracks}
|
|
|
+ onUpdateValue={(value) => {
|
|
|
+ checkMultiTracks(value)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <NRadio value={'all'}>全选</NRadio>
|
|
|
+ <NRadio value={'allUncheck'}>重置</NRadio>
|
|
|
+ <NRadio value={'invert'}>反选</NRadio>
|
|
|
+ </NRadioGroup>
|
|
|
+ </NGi>
|
|
|
+ <NGi span={24} style={"margin-top:5px"}><NFormItemGi
|
|
|
+ label=''
|
|
|
+ path="multiTracksSelection"
|
|
|
+ rule={[
|
|
|
+ {
|
|
|
+ required: false,
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <NCheckboxGroup
|
|
|
+ v-model:value={forms.multiTracksSelection}
|
|
|
+ onUpdateValue={(value) => {
|
|
|
+ console.log(value)
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ <NGrid yGap={2} cols={4}
|
|
|
+ >
|
|
|
+ {state.partListNames.map((item: any, index: number) => (
|
|
|
+ <NGi>
|
|
|
+ <NCheckbox value={item.value} label={item.label} onChange={() => {
|
|
|
+ console.log("forms.multiTracksSelection", forms.multiTracksSelection)
|
|
|
+ console.log("forms.musicSheetSoundList", forms.musicSheetSoundList)
|
|
|
+ }}/>
|
|
|
+ </NGi>
|
|
|
+ ))}
|
|
|
+ </NGrid>
|
|
|
+ </NCheckboxGroup>
|
|
|
+ </NFormItemGi></NGi>
|
|
|
+ </NGrid>
|
|
|
+ </NFormItemGi>
|
|
|
+ </NGrid>
|
|
|
+ )
|
|
|
+ }
|
|
|
<NGrid cols={2}>
|
|
|
<NFormItemGi label="是否播放节拍器" path="isPlayBeat"
|
|
|
rule={[
|
|
@@ -987,8 +1105,8 @@ export default defineComponent({
|
|
|
<NRadioGroup
|
|
|
v-model:value={forms.isPlayBeat}
|
|
|
>
|
|
|
- <NRadio value={1}>是</NRadio>
|
|
|
- <NRadio value={0}>否</NRadio>
|
|
|
+ <NRadio value={true}>是</NRadio>
|
|
|
+ <NRadio value={false}>否</NRadio>
|
|
|
</NRadioGroup>
|
|
|
</NFormItemGi>
|
|
|
{forms.isPlayBeat && (
|
|
@@ -1003,70 +1121,74 @@ export default defineComponent({
|
|
|
<NRadioGroup
|
|
|
v-model:value={forms.isUseSystemBeat}
|
|
|
>
|
|
|
- <NRadio value="1">系统节拍器</NRadio>
|
|
|
- <NRadio value="0">MP3节拍器</NRadio>
|
|
|
+ <NRadio value={true}>系统节拍器</NRadio>
|
|
|
+ <NRadio value={false}>MP3节拍器</NRadio>
|
|
|
</NRadioGroup>
|
|
|
</NFormItemGi>
|
|
|
)}
|
|
|
</NGrid>
|
|
|
{/* 只有播放类型为mp3时才会有原音 */}
|
|
|
- {forms.playMode === 'MP3' && (
|
|
|
+ {forms.playMode === 'MP3' && forms.musicSheetSoundList.length > 0 && (
|
|
|
<>
|
|
|
{forms.musicSheetSoundList.map((item: any, index: number) => (
|
|
|
<>
|
|
|
- {item.track?.toLocaleUpperCase?.() != 'COMMON' && <NGrid class={styles.audioSection}>
|
|
|
- <NFormItemGi
|
|
|
- span={12}
|
|
|
- label="原音"
|
|
|
- path={`musicSheetSoundList[${index}].audioFileUrl`}
|
|
|
- rule={[
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: `请上传${
|
|
|
- item.track ? item.track + '的' : '第' + (index + 1) + '个'
|
|
|
- }原音`
|
|
|
- }
|
|
|
- ]}
|
|
|
+ {item.track?.toLocaleUpperCase?.() != 'COMMON' &&
|
|
|
+ <NGrid class={styles.audioSection}
|
|
|
+ v-show={forms.multiTracksSelection.indexOf(item.track) > -1}
|
|
|
>
|
|
|
- <UploadFile
|
|
|
- size={10}
|
|
|
- v-model:fileList={item.audioFileUrl}
|
|
|
- tips="仅支持上传.mp3/.aac格式文件"
|
|
|
- listType="image"
|
|
|
- accept=".mp3,.aac"
|
|
|
- bucketName="cloud-coach"
|
|
|
- />
|
|
|
- </NFormItemGi>
|
|
|
- {state.partListNames.length > 1 && (
|
|
|
- <NFormItemGi
|
|
|
- span={12}
|
|
|
- label="所属轨道"
|
|
|
- path={`musicSheetSoundList[${index}].track`}
|
|
|
- rule={[
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: '请选择所属轨道'
|
|
|
- }
|
|
|
- ]}
|
|
|
- >
|
|
|
- <NSelect
|
|
|
- placeholder="请选择所属轨道"
|
|
|
- v-model:value={item.track}
|
|
|
- options={initPartsListStatus(item.track)}
|
|
|
- />
|
|
|
- </NFormItemGi>
|
|
|
- )}
|
|
|
- <NGi class={styles.btnRemove}>
|
|
|
- <NButton
|
|
|
- type="primary"
|
|
|
- text
|
|
|
- disabled={forms.musicSheetSoundList.length === 1}
|
|
|
- onClick={() => removeSys(index)}
|
|
|
+ <NFormItemGi
|
|
|
+ span={12}
|
|
|
+ label="原音"
|
|
|
+ path={`musicSheetSoundList[${index}].audioFileUrl`}
|
|
|
+ rule={[
|
|
|
+ {
|
|
|
+ // required: forms.multiTracksSelection.indexOf(forms.musicSheetSoundList[index].audioFileUrl) > -1,
|
|
|
+ required: false,
|
|
|
+ message: `请上传${
|
|
|
+ item.track ? item.track + '的' : '第' + (index + 1) + '个'
|
|
|
+ }原音`
|
|
|
+ }
|
|
|
+ ]}
|
|
|
>
|
|
|
- 删除
|
|
|
- </NButton>
|
|
|
- </NGi>
|
|
|
- </NGrid>}
|
|
|
+ <UploadFile
|
|
|
+ size={10}
|
|
|
+ v-model:fileList={item.audioFileUrl}
|
|
|
+ tips="仅支持上传.mp3/.aac格式文件"
|
|
|
+ listType="image"
|
|
|
+ accept=".mp3,.aac"
|
|
|
+ bucketName="cloud-coach"
|
|
|
+ />
|
|
|
+ </NFormItemGi>
|
|
|
+ {state.partListNames.length > 1 && (
|
|
|
+ <NFormItemGi
|
|
|
+ span={12}
|
|
|
+ label="所属轨道"
|
|
|
+ path={`musicSheetSoundList[${index}].track`}
|
|
|
+ rule={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: '请选择所属轨道'
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ >
|
|
|
+ <NSelect
|
|
|
+ placeholder="请选择所属轨道"
|
|
|
+ v-model:value={item.track}
|
|
|
+ options={initPartsListStatus(item.track)}
|
|
|
+ />
|
|
|
+ </NFormItemGi>
|
|
|
+ )}
|
|
|
+ {/*<NGi class={styles.btnRemove}>*/}
|
|
|
+ {/* <NButton*/}
|
|
|
+ {/* type="primary"*/}
|
|
|
+ {/* text*/}
|
|
|
+ {/* disabled={forms.musicSheetSoundList.length === 1}*/}
|
|
|
+ {/* onClick={() => removeSys(index)}*/}
|
|
|
+ {/* >*/}
|
|
|
+ {/* 删除*/}
|
|
|
+ {/* </NButton>*/}
|
|
|
+ {/*</NGi>*/}
|
|
|
+ </NGrid>}
|
|
|
</>
|
|
|
))}
|
|
|
|
|
@@ -1102,6 +1224,22 @@ export default defineComponent({
|
|
|
</NButton>
|
|
|
</NSpace>
|
|
|
)}
|
|
|
+
|
|
|
+ <NModal
|
|
|
+ v-model:show={state.showMusicSheetOwnerDialog}
|
|
|
+ preset="dialog"
|
|
|
+ showIcon={false}
|
|
|
+ maskClosable={false}
|
|
|
+ title="所属人"
|
|
|
+ style={{width: '800px'}}
|
|
|
+ >
|
|
|
+ <MusicSheetOwnerDialog onClose={() => {
|
|
|
+ state.showMusicSheetOwnerDialog = false
|
|
|
+ }} onChoseMusicSheetOwnerData={(musicSheetOwnerData) => {
|
|
|
+ state.musicSheetOwnerData = musicSheetOwnerData
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </NModal>
|
|
|
</div>
|
|
|
)
|
|
|
}
|