|
@@ -2,16 +2,22 @@
|
|
|
<div class='app-container'>
|
|
|
<el-form class="form" label-width="100px" ref="form" :model="data.form" :rules="data.rules">
|
|
|
<el-form-item class="chooseAudio" label="选择音频:" prop="audioList">
|
|
|
- <div class="audioList" v-for="(item, index) in data.form.audioList" :key="item.id" :style="{'height': item.type !== 2 ? '45px' : ''}">
|
|
|
- <el-tag v-if="item.type === 0 || item.type === 1" size="large" :closable="checkClose()"
|
|
|
- @close="handleClose(index)">
|
|
|
- {{ item.audioName }}
|
|
|
- </el-tag>
|
|
|
- <div v-if="item.type === 2" class="audio">
|
|
|
- <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
|
|
|
- <span>{{ item.audioName }}</span>
|
|
|
+ <div :class="['audio_box', audioListHidden ? 'audio_box_hidden' : '']">
|
|
|
+ <div class="audioList" v-for="(item, index) in data.form.audioList" :key="item.id"
|
|
|
+ :style="{ 'height': item.type !== 2 ? '45px' : '' }">
|
|
|
+ <el-tag v-if="item.type === 0 || item.type === 1" size="large" :closable="checkClose()"
|
|
|
+ @close="handleClose(index)">
|
|
|
+ {{ item.audioName }}
|
|
|
+ </el-tag>
|
|
|
+ <div v-if="item.type === 2" class="audio">
|
|
|
+ <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
|
|
|
+ <span>{{ item.audioName }}</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <el-button type="primary" link v-if="data.form.audioList.length >= 15"
|
|
|
+ :icon="audioListHidden ? 'ArrowDown' : 'ArrowUp'" style="width: 100%; height: 20px; margin-bottom: 10px"
|
|
|
+ @click="handleHidden" />
|
|
|
<div style="width: 100%;">
|
|
|
<el-button v-if="checkClose()" icon="Plus" @click="getDialog">新增</el-button>
|
|
|
</div>
|
|
@@ -79,7 +85,8 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item v-if="data.form.id" label="当前状态:" prop="status">
|
|
|
<el-select v-model="data.form.status" placeholder="请选择当前状态">
|
|
|
- <el-option v-for="item in sys_change_status" :key="item.value" :value="Number(item.value)" :label="item.label" />
|
|
|
+ <el-option v-for="item in sys_change_status" :key="item.value" :value="Number(item.value)"
|
|
|
+ :label="item.label" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
@@ -95,43 +102,49 @@
|
|
|
<el-option v-for="item in data.radioOptions" :key="item.value" :value="item.value" :label="item.label" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="名称:">
|
|
|
+ <el-form-item v-show="audioData.form.type !== 2" label="音频ID:">
|
|
|
+ <el-input v-model="audioData.form.id" placeholder="请输入音频ID" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="音频名称:">
|
|
|
<el-input v-model="audioData.form.name" placeholder="请输入名称" />
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="分类:">
|
|
|
+ <el-form-item v-show="audioData.form.type === 1" label="歌手名称:">
|
|
|
+ <el-input v-model="audioData.form.singerName" placeholder="请输入歌手名称" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-show="audioData.form.type === 0" label="音频分类:">
|
|
|
<el-select v-model="audioData.form.sceneId" placeholder="请选择分类">
|
|
|
<el-option v-for="item in audioClassData.options" :key="item.id" :value="item.id" :label="item.name" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="当前状态:">
|
|
|
- <el-select v-model="audioData.form.status" placeholder="请选择当前状态">
|
|
|
- <el-option v-for="item in sys_change_status" :key="item.value" :value="item.value" :label="item.label" />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="Search" @click="getSearch">搜索</el-button>
|
|
|
<el-button icon="Refresh" @click="getRefresh">重置</el-button>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
- <el-table v-if="audioData.form.type !== 2" ref="table" :data="audioData.tableData" :row-key="rowKey"
|
|
|
+ <el-table v-show="audioData.form.type !== 2" ref="table" :data="audioData.tableData" :row-key="rowKey"
|
|
|
@selection-change="handleSelectionChange" v-loading="audioData.loading">
|
|
|
- <el-table-column type="selection" width="55" />
|
|
|
- <el-table-column label="ID" prop="id" align="center" show-overflow-tooltip />
|
|
|
- <el-table-column label="名称" prop="name" align="center" show-overflow-tooltip />
|
|
|
- <el-table-column label="时长" prop="playTime" align="center">
|
|
|
+ <el-table-column type="selection" width="55" key="selection" />
|
|
|
+ <el-table-column label="ID" prop="id" align="center" key="id" show-overflow-tooltip />
|
|
|
+ <el-table-column label="音频名称" prop="name" align="center" key="name" show-overflow-tooltip />
|
|
|
+ <el-table-column v-if="audioData.form.type == 1" label="歌手名称" prop="singerName" key="singerName"
|
|
|
+ align="center" />
|
|
|
+ <el-table-column v-if="audioData.form.type !== 1" label="时长" prop="playTime" align="center" key="playTime">
|
|
|
<template #default="scope">
|
|
|
{{ playTime(scope.row.playTime) }}
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column label="分类" prop="sceneId" align="center" :formatter="sceneFormatter" />
|
|
|
- <el-table-column label="当前状态" prop="status" align="center" :formatter="statusFormatter" />
|
|
|
- <el-table-column label="更新时间" prop="updateTime" align="center" show-overflow-tooltip />
|
|
|
+ <el-table-column label="分类" prop="sceneId" align="center" key="sceneId" :formatter="sceneFormatter" />
|
|
|
+ <el-table-column label="当前状态" prop="status" align="center" key="status" :formatter="statusFormatter" />
|
|
|
+ <el-table-column label="更新时间" prop="updateTime" align="center" key="updateTime" show-overflow-tooltip />
|
|
|
</el-table>
|
|
|
- <div class="audio_table" v-else>
|
|
|
- <div class="audio" v-for="item in audioData.tableData" :key="item.id" @click="handleChooseAudio(item)">
|
|
|
- <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
|
|
|
- <span>{{ item.name }}</span>
|
|
|
+ <div v-show="audioData.form.type === 2" v-loading="audioData.loading">
|
|
|
+ <div class="audio_table">
|
|
|
+ <div class="audio" v-for="item in audioData.tableData" :key="item.id" @click="handleChooseAudio(item)">
|
|
|
+ <img src="@/assets/icons/svg/file.svg" width="70" height="70" />
|
|
|
+ <span>{{ item.name }}</span>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+ <el-empty v-show="audioData.tableData.length === 0" description="暂无数据" />
|
|
|
</div>
|
|
|
<pagination v-show="audioData.total > 0" :total="audioData.total" v-model:page="audioData.form.pageNum"
|
|
|
v-model:limit="audioData.form.pageSize" @pagination="getAudio" />
|
|
@@ -268,7 +281,7 @@ function getDialog() {
|
|
|
if (val && data.selectionList.length > 0) {
|
|
|
data.selectionList.map(i => {
|
|
|
let row = val.find(j => j.id === i.audioId)
|
|
|
- if(row) {
|
|
|
+ if (row) {
|
|
|
proxy.$refs.table.toggleRowSelection(row, true)
|
|
|
}
|
|
|
})
|
|
@@ -289,7 +302,7 @@ const getRefresh = () => {
|
|
|
audioData.form = {
|
|
|
pageNum: 1,
|
|
|
pageSize: 10,
|
|
|
- type: 0
|
|
|
+ type: audioData.form.type
|
|
|
}
|
|
|
getAudio()
|
|
|
}
|
|
@@ -329,14 +342,23 @@ const handleChooseAudio = (e) => {
|
|
|
dialogVisible.value = false
|
|
|
}
|
|
|
|
|
|
+// 插播音频过多隐藏
|
|
|
+const audioListHidden = ref(false)
|
|
|
// 确定
|
|
|
const getPush = () => {
|
|
|
data.form.audioList = []
|
|
|
data.form.audioList = JSON.parse(JSON.stringify(data.selectionList))
|
|
|
proxy.$modal.msgSuccess('选择成功!')
|
|
|
dialogVisible.value = false
|
|
|
+ audioListHidden.value = data.form.audioList.length >= 15 ? true : false
|
|
|
}
|
|
|
|
|
|
+// 展开隐藏
|
|
|
+const handleHidden = () => {
|
|
|
+ audioListHidden.value = audioListHidden.value ? false : true
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
// 删除音频
|
|
|
const handleClose = (index) => {
|
|
|
data.form.audioList.splice(index, 1)
|
|
@@ -457,9 +479,7 @@ const statusFormatter = (row) => {
|
|
|
|
|
|
const sceneFormatter = (row) => {
|
|
|
let e = audioClassData.options.find(i => i.id === row.sceneId)
|
|
|
- if (row.sceneId && e) {
|
|
|
- return audioClassData.options.find(i => i.id === row.sceneId).name
|
|
|
- }
|
|
|
+ return row.sceneId && e ? audioClassData.options.find(i => i.id === row.sceneId).name : '/'
|
|
|
}
|
|
|
|
|
|
// 监听
|
|
@@ -483,11 +503,21 @@ watch(() => audioData.form.type, (val) => {
|
|
|
}
|
|
|
|
|
|
.chooseAudio {
|
|
|
- .audioList {
|
|
|
- margin-right: 10px;
|
|
|
+ .audio_box {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+
|
|
|
+ .audioList {
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+.audio_box_hidden {
|
|
|
+ height: 135px;
|
|
|
+ overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
.audio_table {
|
|
|
display: flex;
|
|
|
flex-wrap: wrap;
|