新增消息类型:语音,视频
This commit is contained in:
@@ -339,6 +339,36 @@
|
||||
<img width="100%" :src="previewUrl" alt="Preview">
|
||||
</el-dialog>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="语音" name="voice">
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action="/message_push/api/upload"
|
||||
{% raw %}:on-success="handleVoiceSuccess"
|
||||
:before-upload="beforeVoiceUpload"
|
||||
:on-preview="handleVoicePreview"
|
||||
:file-list="voiceList" {% endraw %}>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">只能上传mp3/wav文件,且不超过10MB</div>
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="voicePreviewVisible" append-to-body>
|
||||
<audio controls :src="voicePreviewUrl" style="width: 100%"></audio>
|
||||
</el-dialog>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="视频" name="video">
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action="/message_push/api/upload"
|
||||
{% raw %}:on-success="handleVideoSuccess"
|
||||
:before-upload="beforeVideoUpload"
|
||||
:on-preview="handleVideoPreview"
|
||||
:file-list="videoList" {% endraw %}>
|
||||
<el-button size="small" type="primary">点击上传</el-button>
|
||||
<div slot="tip" class="el-upload__tip">只能上传mp4文件,且不超过20MB</div>
|
||||
</el-upload>
|
||||
<el-dialog :visible.sync="videoPreviewVisible" append-to-body>
|
||||
<video controls :src="videoPreviewUrl" style="width: 100%"></video>
|
||||
</el-dialog>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="链接" name="link">
|
||||
<el-form-item label="链接标题">
|
||||
<el-input {% raw %}v-model="taskForm.content_link.title" {% endraw %}></el-input>
|
||||
@@ -441,6 +471,8 @@ new Vue({
|
||||
groups: [],
|
||||
content_text: '',
|
||||
content_image: '',
|
||||
content_voice: '',
|
||||
content_video: '',
|
||||
content_link: {
|
||||
title: '',
|
||||
des: '',
|
||||
@@ -498,6 +530,12 @@ new Vue({
|
||||
previewVisible: false,
|
||||
previewUrl: '',
|
||||
thumbnailList: [],
|
||||
voiceList: [],
|
||||
voicePreviewVisible: false,
|
||||
voicePreviewUrl: '',
|
||||
videoList: [],
|
||||
videoPreviewVisible: false,
|
||||
videoPreviewUrl: '',
|
||||
isEdit: false
|
||||
}
|
||||
},
|
||||
@@ -599,6 +637,8 @@ new Vue({
|
||||
groups: [],
|
||||
content_text: '',
|
||||
content_image: '',
|
||||
content_voice: '',
|
||||
content_video: '',
|
||||
content_link: {
|
||||
title: '',
|
||||
des: '',
|
||||
@@ -914,6 +954,76 @@ new Vue({
|
||||
this.previewVisible = true;
|
||||
},
|
||||
|
||||
// 语音上传相关
|
||||
handleVoiceSuccess(response, file) {
|
||||
if (response.success) {
|
||||
this.taskForm.content_voice = response.data.url;
|
||||
const fileName = file.name;
|
||||
this.voiceList = [{
|
||||
name: fileName,
|
||||
url: `/static/uploads/${response.data.url.split('/').pop()}`
|
||||
}];
|
||||
} else {
|
||||
this.$message.error('上传失败');
|
||||
}
|
||||
},
|
||||
|
||||
beforeVoiceUpload(file) {
|
||||
const isVoice = file.type === 'audio/mp3' || file.type === 'audio/wav';
|
||||
const isLt10M = file.size / 1024 / 1024 < 10;
|
||||
|
||||
if (!isVoice) {
|
||||
this.$message.error('只能上传mp3/wav文件!');
|
||||
return false;
|
||||
}
|
||||
if (!isLt10M) {
|
||||
this.$message.error('语音文件大小不能超过 10MB!');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
handleVoicePreview(file) {
|
||||
const fileName = file.url.split('/').pop();
|
||||
this.voicePreviewUrl = `/static/uploads/${fileName}`;
|
||||
this.voicePreviewVisible = true;
|
||||
},
|
||||
|
||||
// 视频上传相关
|
||||
handleVideoSuccess(response, file) {
|
||||
if (response.success) {
|
||||
this.taskForm.content_video = response.data.url;
|
||||
const fileName = file.name;
|
||||
this.videoList = [{
|
||||
name: fileName,
|
||||
url: `/static/uploads/${response.data.url.split('/').pop()}`
|
||||
}];
|
||||
} else {
|
||||
this.$message.error('上传失败');
|
||||
}
|
||||
},
|
||||
|
||||
beforeVideoUpload(file) {
|
||||
const isVideo = file.type === 'video/mp4';
|
||||
const isLt20M = file.size / 1024 / 1024 < 20;
|
||||
|
||||
if (!isVideo) {
|
||||
this.$message.error('只能上传mp4文件!');
|
||||
return false;
|
||||
}
|
||||
if (!isLt20M) {
|
||||
this.$message.error('视频文件大小不能超过 20MB!');
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
handleVideoPreview(file) {
|
||||
const fileName = file.url.split('/').pop();
|
||||
this.videoPreviewUrl = `/static/uploads/${fileName}`;
|
||||
this.videoPreviewVisible = true;
|
||||
},
|
||||
|
||||
// 工具函数
|
||||
getStatusType(status) {
|
||||
const typeMap = {
|
||||
|
||||
Reference in New Issue
Block a user