歌曲库补全支持上传的文件类型
This commit is contained in:
parent
6ccbec1f82
commit
263f8ef8d3
@ -5,12 +5,12 @@
|
|||||||
<el-input v-model="search.title" />
|
<el-input v-model="search.title" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="所属歌单">
|
<el-form-item label="所属歌单">
|
||||||
<el-select v-model="search.libIds" multiple collapse-tags>
|
<el-select v-model="search.libIds" multiple collapse-tags clearable>
|
||||||
<el-option v-for="musicLib in musicLibs" :key="musicLib._id" :value="musicLib._id" :label="musicLib.name" />
|
<el-option v-for="musicLib in musicLibs" :key="musicLib._id" :value="musicLib._id" :label="musicLib.name" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="文件类型">
|
<el-form-item label="文件类型">
|
||||||
<el-select v-model="search.exts" multiple >
|
<el-select v-model="search.exts" multiple collapse-tags clearable>
|
||||||
<el-option v-for="ext in exts" :key="ext" :value="ext" :label="ext" />
|
<el-option v-for="ext in exts" :key="ext" :value="ext" :label="ext" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -108,9 +108,9 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<el-dialog v-model="uploadModal" title="上传音乐" :width="550" @closed="uploadModalClosed" >
|
<el-dialog v-model="uploadModal" title="上传音乐" :width="550" @closed="uploadModalClosed" >
|
||||||
<el-form :label-width="80">
|
<el-form ref="uploadForm" :model="uploadFormData" :rules="uploadRules" :label-width="80">
|
||||||
<el-form-item label="歌单">
|
<el-form-item label="歌单" prop="libId">
|
||||||
<el-select v-model="libIdSelected">
|
<el-select v-model="uploadFormData.libId">
|
||||||
<el-option v-for="musicLib in musicLibs" :key="musicLib._id" :value="musicLib._id" :label="musicLib.name" />
|
<el-option v-for="musicLib in musicLibs" :key="musicLib._id" :value="musicLib._id" :label="musicLib.name" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -118,20 +118,23 @@
|
|||||||
ref="musicUpload"
|
ref="musicUpload"
|
||||||
:action="`${apiBase}/music/upload`"
|
:action="`${apiBase}/music/upload`"
|
||||||
name="file"
|
name="file"
|
||||||
accept=".mp3,.flac"
|
:accept="uploadAccept"
|
||||||
:headers="{token: store.state.loginInfo.token}"
|
:headers="{token: store.state.loginInfo.token}"
|
||||||
:on-success="uploadSuccess"
|
:on-success="uploadSuccess"
|
||||||
:on-error="uploadError"
|
:on-error="uploadError"
|
||||||
:auto-upload="false"
|
:auto-upload="false"
|
||||||
multiple
|
multiple
|
||||||
drag
|
drag
|
||||||
:data="{libId: libIdSelected}">
|
:data="{libId: uploadFormData.libId}">
|
||||||
<div class="el-upload__text">
|
<div class="el-upload__text">
|
||||||
拖拽到此处或<em>点击上传</em>
|
拖拽到此处或<em>点击上传</em>
|
||||||
</div>
|
</div>
|
||||||
<template #tip>
|
<template #tip>
|
||||||
<div class="el-upload__tip">
|
<div class="el-upload__tip" style="display: flex; align-items: center; gap: 5px;">
|
||||||
可选择 mp3/flac 文件
|
<span>支持上传的文件类型</span>
|
||||||
|
<el-tag v-for="ext in uploadExtList" :key="ext" size="small">
|
||||||
|
{{ ext }}<span v-if="ext === 'ncm'"> (自动解码)</span>
|
||||||
|
</el-tag>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
@ -190,7 +193,7 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, watch } from 'vue'
|
import { ref, watch, computed } from 'vue'
|
||||||
import { useStore } from 'vuex'
|
import { useStore } from 'vuex'
|
||||||
import { useBaseList } from '@/model/baselist'
|
import { useBaseList } from '@/model/baselist'
|
||||||
import { MsgResult, Page } from '@/model/common.dto'
|
import { MsgResult, Page } from '@/model/common.dto'
|
||||||
@ -228,7 +231,8 @@ const store = useStore()
|
|||||||
const apiBase = import.meta.env.VITE_APP_API_BASE
|
const apiBase = import.meta.env.VITE_APP_API_BASE
|
||||||
const { loading, modalLoading, total, search, setLoadData, loadDataBase, reset, pageChange, pageSizeChange } = useBaseList(new MusicPage())
|
const { loading, modalLoading, total, search, setLoadData, loadDataBase, reset, pageChange, pageSizeChange } = useBaseList(new MusicPage())
|
||||||
const currentRow = ref<MusicModel | null>(null)
|
const currentRow = ref<MusicModel | null>(null)
|
||||||
const libIdSelected = ref<string | null>(null)
|
const uploadFormData = ref<{ libId: string | null }>({ libId: null })
|
||||||
|
const uploadForm = ref<VForm>()
|
||||||
const exts = ref<string[]>([])
|
const exts = ref<string[]>([])
|
||||||
const musicLibs = ref<MusicLibModel[]>([])
|
const musicLibs = ref<MusicLibModel[]>([])
|
||||||
const musicData = ref<MusicModel[]>([])
|
const musicData = ref<MusicModel[]>([])
|
||||||
@ -246,6 +250,17 @@ const libDrawerVisible = ref(false)
|
|||||||
const libTableData = ref<(MusicLibModel & { _isNew?: boolean })[]>([])
|
const libTableData = ref<(MusicLibModel & { _isNew?: boolean })[]>([])
|
||||||
const libSaving = ref(false)
|
const libSaving = ref(false)
|
||||||
|
|
||||||
|
const uploadRules = {
|
||||||
|
libId: [{ required: true, message: '请选择歌单', trigger: 'change' }]
|
||||||
|
}
|
||||||
|
|
||||||
|
const uploadExtList = computed(() => {
|
||||||
|
return Array.from(new Set([...exts.value, 'ncm']))
|
||||||
|
})
|
||||||
|
const uploadAccept = computed(() => {
|
||||||
|
return uploadExtList.value.map(ext => `.${ext}`).join(',')
|
||||||
|
})
|
||||||
|
|
||||||
const lyricRuleValidate = {
|
const lyricRuleValidate = {
|
||||||
cloudId: [
|
cloudId: [
|
||||||
{ required: true, message: '请输入网易云ID', trigger: 'blur' }
|
{ required: true, message: '请输入网易云ID', trigger: 'blur' }
|
||||||
@ -360,14 +375,13 @@ async function saveMusicLib(row: MusicModel) {
|
|||||||
}
|
}
|
||||||
function openUploadModal() {
|
function openUploadModal() {
|
||||||
uploadModal.value = true
|
uploadModal.value = true
|
||||||
libIdSelected.value = null
|
uploadFormData.value = { libId: null }
|
||||||
}
|
}
|
||||||
async function uploadMusic() {
|
async function uploadMusic() {
|
||||||
if (!libIdSelected.value) {
|
uploadForm.value?.validate((valid: boolean) => {
|
||||||
ElMessage.warning('请选择歌单')
|
if (!valid) return
|
||||||
return
|
musicUpload.value?.submit()
|
||||||
}
|
})
|
||||||
musicUpload.value?.submit()
|
|
||||||
}
|
}
|
||||||
function uploadSuccess(response: MsgResult) {
|
function uploadSuccess(response: MsgResult) {
|
||||||
if (response.code === 0) {
|
if (response.code === 0) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user