Commit 7ba6a2e385538eb4008dcdf2df40da0a06a6ef92
1 parent
331af28f
mp:增加【视频】消息的发送
Showing
3 changed files
with
25 additions
and
33 deletions
yudao-module-mp/yudao-module-mp-biz/src/main/java/cn/iocoder/yudao/module/mp/controller/admin/message/vo/MpMessageSendReqVO.java
| ... | ... | @@ -38,7 +38,7 @@ public class MpMessageSendReqVO { |
| 38 | 38 | private String title; |
| 39 | 39 | |
| 40 | 40 | @ApiModelProperty(value = "描述", required = true, example = "你猜") |
| 41 | - @NotEmpty(message = "消息内容不能为空", groups = VideoGroup.class) | |
| 41 | + @NotEmpty(message = "消息描述不能为空", groups = VideoGroup.class) | |
| 42 | 42 | private String description; |
| 43 | 43 | |
| 44 | 44 | @ApiModelProperty(value = "缩略图的媒体 id", required = true, example = "qqc_2Fot30Jse-HDoZmo5RrUDijz2nGUkP") | ... | ... |
yudao-ui-admin/src/views/mp/components/wx-material-select/main.vue
| ... | ... | @@ -28,7 +28,7 @@ |
| 28 | 28 | <!-- 列表 --> |
| 29 | 29 | <el-table v-loading="loading" :data="list"> |
| 30 | 30 | <el-table-column label="编号" align="center" prop="mediaId" /> |
| 31 | - <el-table-column label="名字" align="center" prop="name" /> | |
| 31 | + <el-table-column label="文件名" align="center" prop="name" /> | |
| 32 | 32 | <el-table-column label="语音" align="center"> |
| 33 | 33 | <template v-slot="scope"> |
| 34 | 34 | <wx-voice-player :url="scope.row.url" /> |
| ... | ... | @@ -54,6 +54,7 @@ |
| 54 | 54 | <!-- 列表 --> |
| 55 | 55 | <el-table v-loading="loading" :data="list"> |
| 56 | 56 | <el-table-column label="编号" align="center" prop="mediaId" /> |
| 57 | + <el-table-column label="文件名" align="center" prop="name" /> | |
| 57 | 58 | <el-table-column label="标题" align="center" prop="title" /> |
| 58 | 59 | <el-table-column label="介绍" align="center" prop="introduction" /> |
| 59 | 60 | <el-table-column label="视频" align="center"> | ... | ... |
yudao-ui-admin/src/views/mp/components/wx-reply/main.vue
| ... | ... | @@ -81,15 +81,16 @@ |
| 81 | 81 | </el-dialog> |
| 82 | 82 | </el-row> |
| 83 | 83 | </el-tab-pane> |
| 84 | + <!-- 类型 4:视频 --> | |
| 84 | 85 | <el-tab-pane name="video"> |
| 85 | 86 | <span slot="label"><i class="el-icon-share"></i> 视频</span> |
| 86 | 87 | <el-row> |
| 87 | - <el-input v-model="objData.repName" placeholder="请输入标题"></el-input> | |
| 88 | + <el-input v-model="objData.title" placeholder="请输入标题"></el-input> | |
| 88 | 89 | <div style="margin: 20px 0;"></div> |
| 89 | - <el-input v-model="objData.repDesc" placeholder="请输入描述"></el-input> | |
| 90 | + <el-input v-model="objData.description" placeholder="请输入描述"></el-input> | |
| 90 | 91 | <div style="margin: 20px 0;"></div> |
| 91 | 92 | <div style="text-align: center;"> |
| 92 | - <a target="_blank" v-if="objData.url" :href="objData.url"><i class="icon-shipinbofang"> 播放视频</i></a> | |
| 93 | + <wx-video-player v-if="objData.url" :url="objData.url" /> | |
| 93 | 94 | </div> |
| 94 | 95 | <div style="margin: 20px 0;"></div> |
| 95 | 96 | <div style="text-align: center"> |
| ... | ... | @@ -161,13 +162,15 @@ |
| 161 | 162 | import WxNews from '@/views/mp/components/wx-news/main.vue' |
| 162 | 163 | import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue' |
| 163 | 164 | import WxVoicePlayer from '@/views/mp/components/wx-voice-play/main.vue'; |
| 165 | + import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue'; | |
| 164 | 166 | |
| 165 | 167 | export default { |
| 166 | 168 | name: "wxReplySelect", |
| 167 | 169 | components: { |
| 168 | 170 | WxNews, |
| 169 | 171 | WxMaterialSelect, |
| 170 | - WxVoicePlayer | |
| 172 | + WxVoicePlayer, | |
| 173 | + WxVideoPlayer | |
| 171 | 174 | }, |
| 172 | 175 | props: { |
| 173 | 176 | objData: { // 消息对象。 |
| ... | ... | @@ -354,27 +357,22 @@ |
| 354 | 357 | || this.objData.type === 'voice') { |
| 355 | 358 | tempObjItem.mediaId = item.mediaId |
| 356 | 359 | this.objData.mediaId = item.mediaId |
| 357 | - if (item.url) { | |
| 358 | - tempObjItem.url = item.url; | |
| 359 | - this.objData.url = item.url; | |
| 360 | - } else { // 必须使用 $delete 删除,否则 vue 监听不到数据 | |
| 361 | - this.$delete(this.objData, 'url'); | |
| 362 | - } | |
| 360 | + tempObjItem.url = item.url; | |
| 361 | + this.objData.url = item.url; | |
| 363 | 362 | tempObjItem.name = item.name |
| 364 | 363 | this.objData.name = item.name |
| 365 | 364 | } else if (this.objData.type === 'video') { |
| 366 | - // getMaterialVideo({ | |
| 367 | - // mediaId:item.mediaId | |
| 368 | - // }).then(response => { | |
| 369 | - // if(response.code == 200){ | |
| 370 | - // let data = response.data | |
| 371 | - // this.$set(this.objData,'repName',data.title) | |
| 372 | - // this.$set(this.objData,'repDesc',data.description) | |
| 373 | - // this.$set(this.objData,'url',data.downUrl) | |
| 374 | - // tempObjItem.repDesc = data.description | |
| 375 | - // tempObjItem.url = data.downUrl | |
| 376 | - // } | |
| 377 | - // }) | |
| 365 | + tempObjItem.mediaId = item.mediaId | |
| 366 | + this.objData.mediaId = item.mediaId | |
| 367 | + tempObjItem.url = item.url; | |
| 368 | + this.objData.url = item.url; | |
| 369 | + tempObjItem.name = item.name | |
| 370 | + this.objData.name = item.name | |
| 371 | + // title、introduction | |
| 372 | + this.objData.title = item.title | |
| 373 | + tempObjItem.title = this.objData.title | |
| 374 | + this.objData.description = item.introduction // 消息使用的是 description,素材使用的是 introduction,所以转换下 | |
| 375 | + tempObjItem.description = this.objData.introduction | |
| 378 | 376 | } |
| 379 | 377 | // 最终设置到临时缓存 |
| 380 | 378 | this.tempObj.set(this.objData.type, tempObjItem) |
| ... | ... | @@ -400,15 +398,8 @@ |
| 400 | 398 | this.dialogThumbVisible = false |
| 401 | 399 | }, |
| 402 | 400 | deleteObj() { |
| 403 | - console.log('删除!'); | |
| 404 | - if (this.objData.type === 'news') { | |
| 405 | - // TODO 芋艿,待实现 | |
| 406 | - } else if(this.objData.type === 'image' | |
| 407 | - || this.objData.type === 'voice') { | |
| 408 | - this.selectMaterial({}) // 选择一个空的素材 | |
| 409 | - } else if(this.objData.type === 'video') { | |
| 410 | - // TODO 芋艿,待实现 | |
| 411 | - } | |
| 401 | + // this.$delete(this.objData, 'url'); TODO 芋艿:重新实现清空;还有 reset | |
| 402 | + this.selectMaterial({}) // 选择一个空的素材 | |
| 412 | 403 | }, |
| 413 | 404 | getPage(page, params) { |
| 414 | 405 | this.tableLoading = true | ... | ... |