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,7 +38,7 @@ public class MpMessageSendReqVO { | ||
| 38 | private String title; | 38 | private String title; |
| 39 | 39 | ||
| 40 | @ApiModelProperty(value = "描述", required = true, example = "你猜") | 40 | @ApiModelProperty(value = "描述", required = true, example = "你猜") |
| 41 | - @NotEmpty(message = "消息内容不能为空", groups = VideoGroup.class) | 41 | + @NotEmpty(message = "消息描述不能为空", groups = VideoGroup.class) |
| 42 | private String description; | 42 | private String description; |
| 43 | 43 | ||
| 44 | @ApiModelProperty(value = "缩略图的媒体 id", required = true, example = "qqc_2Fot30Jse-HDoZmo5RrUDijz2nGUkP") | 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,7 +28,7 @@ | ||
| 28 | <!-- 列表 --> | 28 | <!-- 列表 --> |
| 29 | <el-table v-loading="loading" :data="list"> | 29 | <el-table v-loading="loading" :data="list"> |
| 30 | <el-table-column label="编号" align="center" prop="mediaId" /> | 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 | <el-table-column label="语音" align="center"> | 32 | <el-table-column label="语音" align="center"> |
| 33 | <template v-slot="scope"> | 33 | <template v-slot="scope"> |
| 34 | <wx-voice-player :url="scope.row.url" /> | 34 | <wx-voice-player :url="scope.row.url" /> |
| @@ -54,6 +54,7 @@ | @@ -54,6 +54,7 @@ | ||
| 54 | <!-- 列表 --> | 54 | <!-- 列表 --> |
| 55 | <el-table v-loading="loading" :data="list"> | 55 | <el-table v-loading="loading" :data="list"> |
| 56 | <el-table-column label="编号" align="center" prop="mediaId" /> | 56 | <el-table-column label="编号" align="center" prop="mediaId" /> |
| 57 | + <el-table-column label="文件名" align="center" prop="name" /> | ||
| 57 | <el-table-column label="标题" align="center" prop="title" /> | 58 | <el-table-column label="标题" align="center" prop="title" /> |
| 58 | <el-table-column label="介绍" align="center" prop="introduction" /> | 59 | <el-table-column label="介绍" align="center" prop="introduction" /> |
| 59 | <el-table-column label="视频" align="center"> | 60 | <el-table-column label="视频" align="center"> |
yudao-ui-admin/src/views/mp/components/wx-reply/main.vue
| @@ -81,15 +81,16 @@ | @@ -81,15 +81,16 @@ | ||
| 81 | </el-dialog> | 81 | </el-dialog> |
| 82 | </el-row> | 82 | </el-row> |
| 83 | </el-tab-pane> | 83 | </el-tab-pane> |
| 84 | + <!-- 类型 4:视频 --> | ||
| 84 | <el-tab-pane name="video"> | 85 | <el-tab-pane name="video"> |
| 85 | <span slot="label"><i class="el-icon-share"></i> 视频</span> | 86 | <span slot="label"><i class="el-icon-share"></i> 视频</span> |
| 86 | <el-row> | 87 | <el-row> |
| 87 | - <el-input v-model="objData.repName" placeholder="请输入标题"></el-input> | 88 | + <el-input v-model="objData.title" placeholder="请输入标题"></el-input> |
| 88 | <div style="margin: 20px 0;"></div> | 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 | <div style="margin: 20px 0;"></div> | 91 | <div style="margin: 20px 0;"></div> |
| 91 | <div style="text-align: center;"> | 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 | </div> | 94 | </div> |
| 94 | <div style="margin: 20px 0;"></div> | 95 | <div style="margin: 20px 0;"></div> |
| 95 | <div style="text-align: center"> | 96 | <div style="text-align: center"> |
| @@ -161,13 +162,15 @@ | @@ -161,13 +162,15 @@ | ||
| 161 | import WxNews from '@/views/mp/components/wx-news/main.vue' | 162 | import WxNews from '@/views/mp/components/wx-news/main.vue' |
| 162 | import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue' | 163 | import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue' |
| 163 | import WxVoicePlayer from '@/views/mp/components/wx-voice-play/main.vue'; | 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 | export default { | 167 | export default { |
| 166 | name: "wxReplySelect", | 168 | name: "wxReplySelect", |
| 167 | components: { | 169 | components: { |
| 168 | WxNews, | 170 | WxNews, |
| 169 | WxMaterialSelect, | 171 | WxMaterialSelect, |
| 170 | - WxVoicePlayer | 172 | + WxVoicePlayer, |
| 173 | + WxVideoPlayer | ||
| 171 | }, | 174 | }, |
| 172 | props: { | 175 | props: { |
| 173 | objData: { // 消息对象。 | 176 | objData: { // 消息对象。 |
| @@ -354,27 +357,22 @@ | @@ -354,27 +357,22 @@ | ||
| 354 | || this.objData.type === 'voice') { | 357 | || this.objData.type === 'voice') { |
| 355 | tempObjItem.mediaId = item.mediaId | 358 | tempObjItem.mediaId = item.mediaId |
| 356 | this.objData.mediaId = item.mediaId | 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 | tempObjItem.name = item.name | 362 | tempObjItem.name = item.name |
| 364 | this.objData.name = item.name | 363 | this.objData.name = item.name |
| 365 | } else if (this.objData.type === 'video') { | 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 | this.tempObj.set(this.objData.type, tempObjItem) | 378 | this.tempObj.set(this.objData.type, tempObjItem) |
| @@ -400,15 +398,8 @@ | @@ -400,15 +398,8 @@ | ||
| 400 | this.dialogThumbVisible = false | 398 | this.dialogThumbVisible = false |
| 401 | }, | 399 | }, |
| 402 | deleteObj() { | 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 | getPage(page, params) { | 404 | getPage(page, params) { |
| 414 | this.tableLoading = true | 405 | this.tableLoading = true |