mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-25 16:51:52 +08:00
mp:修复 WxMaterialSelect 组件的音乐 tab,无法选择图片素材报错
This commit is contained in:
parent
0499226c3d
commit
3654afedcc
@ -137,7 +137,7 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog title="选择图文" :visible.sync="dialogNewsVisible" width="90%" append-to-body>
|
<el-dialog title="选择图文" :visible.sync="dialogNewsVisible" width="90%" append-to-body>
|
||||||
<WxMaterialSelect :objData="objData" @selectMaterial="selectMaterial" :newsType="newsType"></WxMaterialSelect>
|
<wx-material-select :objData="objData" @selectMaterial="selectMaterial" :newsType="newsType" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
@ -158,7 +158,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog title="选择图片" :visible.sync="dialogThumbVisible" width="80%" append-to-body>
|
<el-dialog title="选择图片" :visible.sync="dialogThumbVisible" width="80%" append-to-body>
|
||||||
<wx-material-select :objData="{type:'image'}" @selectMaterial="selectMaterial" />
|
<wx-material-select :objData="{type:'image', accountId: objData.accountId}" @selectMaterial="selectMaterial" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="18">
|
<el-col :span="18">
|
||||||
@ -176,398 +176,369 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// import { getPage, getMaterialVideo } from '@/api/wxmp/wxmaterial'
|
import WxNews from '@/views/mp/components/wx-news/main.vue'
|
||||||
import {getAccessToken} from '@/utils/auth'
|
import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue'
|
||||||
import WxNews from '@/views/mp/components/wx-news/main.vue'
|
import WxVoicePlayer from '@/views/mp/components/wx-voice-play/main.vue';
|
||||||
import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue'
|
import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue';
|
||||||
import WxVoicePlayer from '@/views/mp/components/wx-voice-play/main.vue';
|
|
||||||
import WxVideoPlayer from '@/views/mp/components/wx-video-play/main.vue';
|
|
||||||
|
|
||||||
export default {
|
import { getAccessToken } from '@/utils/auth'
|
||||||
name: "wxReplySelect",
|
|
||||||
components: {
|
export default {
|
||||||
WxNews,
|
name: "wxReplySelect",
|
||||||
WxMaterialSelect,
|
components: {
|
||||||
WxVoicePlayer,
|
WxNews,
|
||||||
WxVideoPlayer
|
WxMaterialSelect,
|
||||||
|
WxVoicePlayer,
|
||||||
|
WxVideoPlayer
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
objData: { // 消息对象。
|
||||||
|
type: Object, // 设置为 Object 的原因,方便属性的传递
|
||||||
|
required: true,
|
||||||
},
|
},
|
||||||
props: {
|
newsType:{ // 图文类型:1、已发布图文;2、草稿箱图文
|
||||||
objData: { // 消息对象。
|
type: String,
|
||||||
type: Object, // 设置为 Object 的原因,方便属性的传递
|
default: "1"
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
newsType:{ // 图文类型:1、已发布图文;2、草稿箱图文
|
|
||||||
type: String,
|
|
||||||
default: "1"
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
data() {
|
},
|
||||||
return {
|
data() {
|
||||||
tempPlayerObj: {
|
return {
|
||||||
type: '2'
|
tempPlayerObj: {
|
||||||
},
|
type: '2'
|
||||||
tableData: [],
|
},
|
||||||
page: {
|
|
||||||
total: 0, // 总页数
|
|
||||||
currentPage: 1, // 当前页数
|
|
||||||
pageSize: 20, // 每页显示多少条
|
|
||||||
ascs:[],//升序字段
|
|
||||||
descs:[]//降序字段
|
|
||||||
},
|
|
||||||
tableLoading: false,
|
|
||||||
|
|
||||||
tempObj: new Map().set( // 临时缓存,切换消息类型的 tab 的时候,可以保存对应的数据;
|
tempObj: new Map().set( // 临时缓存,切换消息类型的 tab 的时候,可以保存对应的数据;
|
||||||
this.objData.type, // 消息类型
|
this.objData.type, // 消息类型
|
||||||
Object.assign({}, this.objData)), // 消息内容
|
Object.assign({}, this.objData)), // 消息内容
|
||||||
|
|
||||||
// ========== 素材选择的弹窗,是否可见 ==========
|
// ========== 素材选择的弹窗,是否可见 ==========
|
||||||
dialogNewsVisible: false, // 图文
|
dialogNewsVisible: false, // 图文
|
||||||
dialogImageVisible: false, // 图片
|
dialogImageVisible: false, // 图片
|
||||||
dialogVoiceVisible: false, // 语音
|
dialogVoiceVisible: false, // 语音
|
||||||
dialogVideoVisible: false, // 视频
|
dialogVideoVisible: false, // 视频
|
||||||
dialogThumbVisible: false, // 缩略图
|
dialogThumbVisible: false, // 缩略图
|
||||||
|
|
||||||
// ========== 文件上传(图片、语音、视频) ==========
|
// ========== 文件上传(图片、语音、视频) ==========
|
||||||
fileList: [], // 文件列表
|
fileList: [], // 文件列表
|
||||||
uploadData: {
|
uploadData: {
|
||||||
"accountId": undefined,
|
"accountId": undefined,
|
||||||
"type": this.objData.type,
|
"type": this.objData.type,
|
||||||
"title":'',
|
"title":'',
|
||||||
"introduction":''
|
"introduction":''
|
||||||
},
|
|
||||||
actionUrl: process.env.VUE_APP_BASE_API + '/admin-api/mp/material/upload-temporary',
|
|
||||||
headers: { Authorization: "Bearer " + getAccessToken() }, // 设置上传的请求头部
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods:{
|
|
||||||
beforeThumbImageUpload(file){
|
|
||||||
const isType = file.type === 'image/jpeg'
|
|
||||||
|| file.type === 'image/png'
|
|
||||||
|| file.type === 'image/gif'
|
|
||||||
|| file.type === 'image/bmp'
|
|
||||||
|| file.type === 'image/jpg';
|
|
||||||
if (!isType) {
|
|
||||||
this.$message.error('上传图片格式不对!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
const isLt = file.size / 1024 / 1024 < 2;
|
|
||||||
if (!isLt) {
|
|
||||||
this.$message.error('上传图片大小不能超过 2M!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.uploadData.accountId = this.objData.accountId;
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
beforeVoiceUpload(file){
|
actionUrl: process.env.VUE_APP_BASE_API + '/admin-api/mp/material/upload-temporary',
|
||||||
this.tableLoading = true
|
headers: { Authorization: "Bearer " + getAccessToken() }, // 设置上传的请求头部
|
||||||
// 校验格式
|
|
||||||
const isType = file.type === 'audio/mp3'
|
|
||||||
|| file.type === 'audio/mpeg'
|
|
||||||
|| file.type === 'audio/wma'
|
|
||||||
|| file.type === 'audio/wav'
|
|
||||||
|| file.type === 'audio/amr';
|
|
||||||
if (!isType) {
|
|
||||||
this.$message.error('上传语音格式不对!' + file.type);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// 校验大小
|
|
||||||
const isLt = file.size / 1024 / 1024 < 2;
|
|
||||||
if (!isLt) {
|
|
||||||
this.$message.error('上传语音大小不能超过 2M!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.uploadData.accountId = this.objData.accountId;
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
beforeImageUpload(file) {
|
|
||||||
// 校验格式
|
|
||||||
const isType = file.type === 'image/jpeg'
|
|
||||||
|| file.type === 'image/png'
|
|
||||||
|| file.type === 'image/gif'
|
|
||||||
|| file.type === 'image/bmp'
|
|
||||||
|| file.type === 'image/jpg';
|
|
||||||
if (!isType) {
|
|
||||||
this.$message.error('上传图片格式不对!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// 校验大小
|
|
||||||
const isLt = file.size / 1024 / 1024 < 2;
|
|
||||||
if (!isLt) {
|
|
||||||
this.$message.error('上传图片大小不能超过 2M!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.uploadData.accountId = this.objData.accountId;
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
beforeVideoUpload(file){
|
|
||||||
// 校验格式
|
|
||||||
const isType = file.type === 'video/mp4';
|
|
||||||
if (!isType) {
|
|
||||||
this.$message.error('上传视频格式不对!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// 校验大小
|
|
||||||
const isLt = file.size / 1024 / 1024 < 10;
|
|
||||||
if (!isLt) {
|
|
||||||
this.$message.error('上传视频大小不能超过 10M!');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.uploadData.accountId = this.objData.accountId;
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
handleUploadSuccess(response, file, fileList) {
|
|
||||||
if (response.code !== 0) {
|
|
||||||
this.$message.error('上传出错:' + response.msg)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 清空上传时的各种数据
|
|
||||||
this.fileList = []
|
|
||||||
this.uploadData.title = ''
|
|
||||||
this.uploadData.introduction = ''
|
|
||||||
|
|
||||||
// 上传好的文件,本质是个素材,所以可以进行选中
|
|
||||||
let item = response.data
|
|
||||||
this.selectMaterial(item)
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 切换消息类型的 tab
|
|
||||||
*
|
|
||||||
* @param tab tab
|
|
||||||
*/
|
|
||||||
handleClick(tab) {
|
|
||||||
// 设置后续文件上传的文件类型
|
|
||||||
this.uploadData.type = this.objData.type;
|
|
||||||
if (this.uploadData.type === 'music') { // 【音乐】上传的是缩略图
|
|
||||||
this.uploadData.type = 'thumb';
|
|
||||||
}
|
|
||||||
|
|
||||||
// 从 tempObj 临时缓存中,获取对应的数据,并设置回 objData
|
|
||||||
let tempObjItem = this.tempObj.get(this.objData.type)
|
|
||||||
if (tempObjItem) {
|
|
||||||
this.objData.content = tempObjItem.content ? tempObjItem.content : null
|
|
||||||
this.objData.mediaId = tempObjItem.mediaId ? tempObjItem.mediaId : null
|
|
||||||
this.objData.url = tempObjItem.url ? tempObjItem.url : null
|
|
||||||
this.objData.name = tempObjItem.url ? tempObjItem.name : null
|
|
||||||
this.objData.title = tempObjItem.title ? tempObjItem.title : null
|
|
||||||
this.objData.description = tempObjItem.description ? tempObjItem.description : null
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// 如果获取不到,需要把 objData 复原
|
|
||||||
// 必须使用 $set 赋值,不然 input 无法输入内容
|
|
||||||
this.$set(this.objData, 'content', '');
|
|
||||||
this.$set(this.objData, 'title', '');
|
|
||||||
this.$set(this.objData, 'description', '');
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 选择素材,将设置设置到 objData 变量
|
|
||||||
*
|
|
||||||
* @param item 素材
|
|
||||||
*/
|
|
||||||
selectMaterial(item) {
|
|
||||||
// 选择好素材,所以隐藏弹窗
|
|
||||||
this.closeMaterial();
|
|
||||||
|
|
||||||
// 创建 tempObjItem 对象,并设置对应的值
|
|
||||||
let tempObjItem = {}
|
|
||||||
tempObjItem.type = this.objData.type;
|
|
||||||
if (this.objData.type === 'news') {
|
|
||||||
tempObjItem.articles = item.content.newsItem
|
|
||||||
this.objData.articles = item.content.newsItem
|
|
||||||
} else if (this.objData.type === 'music') { // 音乐需要特殊处理,因为选择的是图片的缩略图
|
|
||||||
tempObjItem.thumbMediaId = item.mediaId
|
|
||||||
this.objData.thumbMediaId = item.mediaId
|
|
||||||
tempObjItem.thumbMediaUrl = item.url
|
|
||||||
this.objData.thumbMediaUrl = item.url
|
|
||||||
// title、introduction、musicUrl、hqMusicUrl:从 objData 到 tempObjItem,避免上传素材后,被覆盖掉
|
|
||||||
tempObjItem.title = this.objData.title || ''
|
|
||||||
tempObjItem.introduction = this.objData.introduction || ''
|
|
||||||
tempObjItem.musicUrl = this.objData.musicUrl || ''
|
|
||||||
tempObjItem.hqMusicUrl = this.objData.hqMusicUrl || ''
|
|
||||||
} else if (this.objData.type === 'image'
|
|
||||||
|| this.objData.type === 'voice') {
|
|
||||||
tempObjItem.mediaId = item.mediaId
|
|
||||||
this.objData.mediaId = item.mediaId
|
|
||||||
tempObjItem.url = item.url;
|
|
||||||
this.objData.url = item.url;
|
|
||||||
tempObjItem.name = item.name
|
|
||||||
this.objData.name = item.name
|
|
||||||
} else if (this.objData.type === 'video') {
|
|
||||||
tempObjItem.mediaId = item.mediaId
|
|
||||||
this.objData.mediaId = item.mediaId
|
|
||||||
tempObjItem.url = item.url;
|
|
||||||
this.objData.url = item.url;
|
|
||||||
tempObjItem.name = item.name
|
|
||||||
this.objData.name = item.name
|
|
||||||
// title、introduction:从 item 到 tempObjItem,因为素材里有 title、introduction
|
|
||||||
if (item.title) {
|
|
||||||
this.objData.title = item.title || ''
|
|
||||||
tempObjItem.title = item.title || ''
|
|
||||||
}
|
|
||||||
if (item.introduction) {
|
|
||||||
this.objData.description = item.introduction || '' // 消息使用的是 description,素材使用的是 introduction,所以转换下
|
|
||||||
tempObjItem.description = item.introduction || ''
|
|
||||||
}
|
|
||||||
} else if (this.objData.type === 'text') {
|
|
||||||
this.objData.content = item.content || ''
|
|
||||||
}
|
|
||||||
// 最终设置到临时缓存
|
|
||||||
this.tempObj.set(this.objData.type, tempObjItem)
|
|
||||||
},
|
|
||||||
openMaterial() {
|
|
||||||
if (this.objData.type === 'news') {
|
|
||||||
this.dialogNewsVisible = true
|
|
||||||
} else if(this.objData.type === 'image') {
|
|
||||||
this.dialogImageVisible = true
|
|
||||||
} else if(this.objData.type === 'voice') {
|
|
||||||
this.dialogVoiceVisible = true
|
|
||||||
} else if(this.objData.type === 'video') {
|
|
||||||
this.dialogVideoVisible = true
|
|
||||||
} else if(this.objData.type === 'music') {
|
|
||||||
this.dialogThumbVisible = true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
closeMaterial() {
|
|
||||||
this.dialogNewsVisible = false
|
|
||||||
this.dialogImageVisible = false
|
|
||||||
this.dialogVoiceVisible = false
|
|
||||||
this.dialogVideoVisible = false
|
|
||||||
this.dialogThumbVisible = false
|
|
||||||
},
|
|
||||||
deleteObj() {
|
|
||||||
if (this.objData.type === 'news') {
|
|
||||||
this.$delete(this.objData, 'articles');
|
|
||||||
} else if(this.objData.type === 'image') {
|
|
||||||
this.objData.mediaId = null
|
|
||||||
this.objData.url = null
|
|
||||||
this.objData.name = null
|
|
||||||
} else if(this.objData.type === 'voice') {
|
|
||||||
this.objData.mediaId = null
|
|
||||||
this.objData.url = null
|
|
||||||
this.objData.name = null
|
|
||||||
} else if(this.objData.type === 'video') {
|
|
||||||
this.objData.mediaId = null
|
|
||||||
this.objData.url = null
|
|
||||||
this.objData.name = null
|
|
||||||
this.objData.title = null
|
|
||||||
this.objData.description = null
|
|
||||||
} else if(this.objData.type === 'music') {
|
|
||||||
this.objData.thumbMediaId = null
|
|
||||||
this.objData.thumbMediaUrl = null
|
|
||||||
this.objData.title = null
|
|
||||||
this.objData.description = null
|
|
||||||
this.objData.musicUrl = null
|
|
||||||
this.objData.hqMusicUrl = null
|
|
||||||
} else if(this.objData.type === 'text') {
|
|
||||||
this.objData.content = null
|
|
||||||
}
|
|
||||||
// 覆盖缓存
|
|
||||||
this.tempObj.set(this.objData.type, Object.assign({}, this.objData));
|
|
||||||
},
|
|
||||||
getPage(page, params) {
|
|
||||||
this.tableLoading = true
|
|
||||||
// getPage(Object.assign({
|
|
||||||
// current: page.currentPage,
|
|
||||||
// size: page.pageSize,
|
|
||||||
// type:this.objData.type
|
|
||||||
// }, params)).then(response => {
|
|
||||||
// this.tableData = response.data.items
|
|
||||||
// this.page.total = response.data.totalCount
|
|
||||||
// this.page.currentPage = page.currentPage
|
|
||||||
// this.page.pageSize = page.pageSize
|
|
||||||
// this.tableLoading = false
|
|
||||||
// })
|
|
||||||
},
|
|
||||||
sizeChange(val) {
|
|
||||||
this.page.currentPage = 1
|
|
||||||
this.page.pageSize = val
|
|
||||||
this.getPage(this.page)
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 输入时,缓存每次 objData 到 tempObj 中
|
|
||||||
*
|
|
||||||
* why?不确定为什么 v-model="objData.content" 不能自动缓存,所以通过这样的方式
|
|
||||||
*/
|
|
||||||
inputContent(str) {
|
|
||||||
// 覆盖缓存
|
|
||||||
this.tempObj.set(this.objData.type, Object.assign({}, this.objData));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
},
|
||||||
|
methods:{
|
||||||
|
beforeThumbImageUpload(file){
|
||||||
|
const isType = file.type === 'image/jpeg'
|
||||||
|
|| file.type === 'image/png'
|
||||||
|
|| file.type === 'image/gif'
|
||||||
|
|| file.type === 'image/bmp'
|
||||||
|
|| file.type === 'image/jpg';
|
||||||
|
if (!isType) {
|
||||||
|
this.$message.error('上传图片格式不对!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const isLt = file.size / 1024 / 1024 < 2;
|
||||||
|
if (!isLt) {
|
||||||
|
this.$message.error('上传图片大小不能超过 2M!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.uploadData.accountId = this.objData.accountId;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
beforeVoiceUpload(file){
|
||||||
|
// 校验格式
|
||||||
|
const isType = file.type === 'audio/mp3'
|
||||||
|
|| file.type === 'audio/mpeg'
|
||||||
|
|| file.type === 'audio/wma'
|
||||||
|
|| file.type === 'audio/wav'
|
||||||
|
|| file.type === 'audio/amr';
|
||||||
|
if (!isType) {
|
||||||
|
this.$message.error('上传语音格式不对!' + file.type);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 校验大小
|
||||||
|
const isLt = file.size / 1024 / 1024 < 2;
|
||||||
|
if (!isLt) {
|
||||||
|
this.$message.error('上传语音大小不能超过 2M!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.uploadData.accountId = this.objData.accountId;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
beforeImageUpload(file) {
|
||||||
|
// 校验格式
|
||||||
|
const isType = file.type === 'image/jpeg'
|
||||||
|
|| file.type === 'image/png'
|
||||||
|
|| file.type === 'image/gif'
|
||||||
|
|| file.type === 'image/bmp'
|
||||||
|
|| file.type === 'image/jpg';
|
||||||
|
if (!isType) {
|
||||||
|
this.$message.error('上传图片格式不对!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 校验大小
|
||||||
|
const isLt = file.size / 1024 / 1024 < 2;
|
||||||
|
if (!isLt) {
|
||||||
|
this.$message.error('上传图片大小不能超过 2M!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.uploadData.accountId = this.objData.accountId;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
beforeVideoUpload(file){
|
||||||
|
// 校验格式
|
||||||
|
const isType = file.type === 'video/mp4';
|
||||||
|
if (!isType) {
|
||||||
|
this.$message.error('上传视频格式不对!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 校验大小
|
||||||
|
const isLt = file.size / 1024 / 1024 < 10;
|
||||||
|
if (!isLt) {
|
||||||
|
this.$message.error('上传视频大小不能超过 10M!');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.uploadData.accountId = this.objData.accountId;
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
handleUploadSuccess(response, file, fileList) {
|
||||||
|
if (response.code !== 0) {
|
||||||
|
this.$message.error('上传出错:' + response.msg)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 清空上传时的各种数据
|
||||||
|
this.fileList = []
|
||||||
|
this.uploadData.title = ''
|
||||||
|
this.uploadData.introduction = ''
|
||||||
|
|
||||||
|
// 上传好的文件,本质是个素材,所以可以进行选中
|
||||||
|
let item = response.data
|
||||||
|
this.selectMaterial(item)
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 切换消息类型的 tab
|
||||||
|
*
|
||||||
|
* @param tab tab
|
||||||
|
*/
|
||||||
|
handleClick(tab) {
|
||||||
|
// 设置后续文件上传的文件类型
|
||||||
|
this.uploadData.type = this.objData.type;
|
||||||
|
if (this.uploadData.type === 'music') { // 【音乐】上传的是缩略图
|
||||||
|
this.uploadData.type = 'thumb';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 从 tempObj 临时缓存中,获取对应的数据,并设置回 objData
|
||||||
|
let tempObjItem = this.tempObj.get(this.objData.type)
|
||||||
|
if (tempObjItem) {
|
||||||
|
this.objData.content = tempObjItem.content ? tempObjItem.content : null
|
||||||
|
this.objData.mediaId = tempObjItem.mediaId ? tempObjItem.mediaId : null
|
||||||
|
this.objData.url = tempObjItem.url ? tempObjItem.url : null
|
||||||
|
this.objData.name = tempObjItem.url ? tempObjItem.name : null
|
||||||
|
this.objData.title = tempObjItem.title ? tempObjItem.title : null
|
||||||
|
this.objData.description = tempObjItem.description ? tempObjItem.description : null
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 如果获取不到,需要把 objData 复原
|
||||||
|
// 必须使用 $set 赋值,不然 input 无法输入内容
|
||||||
|
this.$set(this.objData, 'content', '');
|
||||||
|
this.$set(this.objData, 'title', '');
|
||||||
|
this.$set(this.objData, 'description', '');
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 选择素材,将设置设置到 objData 变量
|
||||||
|
*
|
||||||
|
* @param item 素材
|
||||||
|
*/
|
||||||
|
selectMaterial(item) {
|
||||||
|
// 选择好素材,所以隐藏弹窗
|
||||||
|
this.closeMaterial();
|
||||||
|
|
||||||
|
// 创建 tempObjItem 对象,并设置对应的值
|
||||||
|
let tempObjItem = {}
|
||||||
|
tempObjItem.type = this.objData.type;
|
||||||
|
if (this.objData.type === 'news') {
|
||||||
|
tempObjItem.articles = item.content.newsItem
|
||||||
|
this.objData.articles = item.content.newsItem
|
||||||
|
} else if (this.objData.type === 'music') { // 音乐需要特殊处理,因为选择的是图片的缩略图
|
||||||
|
tempObjItem.thumbMediaId = item.mediaId
|
||||||
|
this.objData.thumbMediaId = item.mediaId
|
||||||
|
tempObjItem.thumbMediaUrl = item.url
|
||||||
|
this.objData.thumbMediaUrl = item.url
|
||||||
|
// title、introduction、musicUrl、hqMusicUrl:从 objData 到 tempObjItem,避免上传素材后,被覆盖掉
|
||||||
|
tempObjItem.title = this.objData.title || ''
|
||||||
|
tempObjItem.introduction = this.objData.introduction || ''
|
||||||
|
tempObjItem.musicUrl = this.objData.musicUrl || ''
|
||||||
|
tempObjItem.hqMusicUrl = this.objData.hqMusicUrl || ''
|
||||||
|
} else if (this.objData.type === 'image'
|
||||||
|
|| this.objData.type === 'voice') {
|
||||||
|
tempObjItem.mediaId = item.mediaId
|
||||||
|
this.objData.mediaId = item.mediaId
|
||||||
|
tempObjItem.url = item.url;
|
||||||
|
this.objData.url = item.url;
|
||||||
|
tempObjItem.name = item.name
|
||||||
|
this.objData.name = item.name
|
||||||
|
} else if (this.objData.type === 'video') {
|
||||||
|
tempObjItem.mediaId = item.mediaId
|
||||||
|
this.objData.mediaId = item.mediaId
|
||||||
|
tempObjItem.url = item.url;
|
||||||
|
this.objData.url = item.url;
|
||||||
|
tempObjItem.name = item.name
|
||||||
|
this.objData.name = item.name
|
||||||
|
// title、introduction:从 item 到 tempObjItem,因为素材里有 title、introduction
|
||||||
|
if (item.title) {
|
||||||
|
this.objData.title = item.title || ''
|
||||||
|
tempObjItem.title = item.title || ''
|
||||||
|
}
|
||||||
|
if (item.introduction) {
|
||||||
|
this.objData.description = item.introduction || '' // 消息使用的是 description,素材使用的是 introduction,所以转换下
|
||||||
|
tempObjItem.description = item.introduction || ''
|
||||||
|
}
|
||||||
|
} else if (this.objData.type === 'text') {
|
||||||
|
this.objData.content = item.content || ''
|
||||||
|
}
|
||||||
|
// 最终设置到临时缓存
|
||||||
|
this.tempObj.set(this.objData.type, tempObjItem)
|
||||||
|
},
|
||||||
|
openMaterial() {
|
||||||
|
if (this.objData.type === 'news') {
|
||||||
|
this.dialogNewsVisible = true
|
||||||
|
} else if(this.objData.type === 'image') {
|
||||||
|
this.dialogImageVisible = true
|
||||||
|
} else if(this.objData.type === 'voice') {
|
||||||
|
this.dialogVoiceVisible = true
|
||||||
|
} else if(this.objData.type === 'video') {
|
||||||
|
this.dialogVideoVisible = true
|
||||||
|
} else if(this.objData.type === 'music') {
|
||||||
|
this.dialogThumbVisible = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
closeMaterial() {
|
||||||
|
this.dialogNewsVisible = false
|
||||||
|
this.dialogImageVisible = false
|
||||||
|
this.dialogVoiceVisible = false
|
||||||
|
this.dialogVideoVisible = false
|
||||||
|
this.dialogThumbVisible = false
|
||||||
|
},
|
||||||
|
deleteObj() {
|
||||||
|
if (this.objData.type === 'news') {
|
||||||
|
this.$delete(this.objData, 'articles');
|
||||||
|
} else if(this.objData.type === 'image') {
|
||||||
|
this.objData.mediaId = null
|
||||||
|
this.objData.url = null
|
||||||
|
this.objData.name = null
|
||||||
|
} else if(this.objData.type === 'voice') {
|
||||||
|
this.objData.mediaId = null
|
||||||
|
this.objData.url = null
|
||||||
|
this.objData.name = null
|
||||||
|
} else if(this.objData.type === 'video') {
|
||||||
|
this.objData.mediaId = null
|
||||||
|
this.objData.url = null
|
||||||
|
this.objData.name = null
|
||||||
|
this.objData.title = null
|
||||||
|
this.objData.description = null
|
||||||
|
} else if(this.objData.type === 'music') {
|
||||||
|
this.objData.thumbMediaId = null
|
||||||
|
this.objData.thumbMediaUrl = null
|
||||||
|
this.objData.title = null
|
||||||
|
this.objData.description = null
|
||||||
|
this.objData.musicUrl = null
|
||||||
|
this.objData.hqMusicUrl = null
|
||||||
|
} else if(this.objData.type === 'text') {
|
||||||
|
this.objData.content = null
|
||||||
|
}
|
||||||
|
// 覆盖缓存
|
||||||
|
this.tempObj.set(this.objData.type, Object.assign({}, this.objData));
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 输入时,缓存每次 objData 到 tempObj 中
|
||||||
|
*
|
||||||
|
* why?不确定为什么 v-model="objData.content" 不能自动缓存,所以通过这样的方式
|
||||||
|
*/
|
||||||
|
inputContent(str) {
|
||||||
|
// 覆盖缓存
|
||||||
|
this.tempObj.set(this.objData.type, Object.assign({}, this.objData));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.public-account-management{
|
.public-account-management{
|
||||||
.el-input{
|
.el-input{
|
||||||
width: 70%;
|
width: 70%;
|
||||||
margin-right: 2%;
|
margin-right: 2%;
|
||||||
}
|
|
||||||
}
|
|
||||||
.pagination{
|
|
||||||
text-align: right;
|
|
||||||
margin-right: 25px;
|
|
||||||
}
|
|
||||||
.select-item{
|
|
||||||
width: 280px;
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 auto 10px auto;
|
|
||||||
border: 1px solid #eaeaea;
|
|
||||||
}
|
|
||||||
.select-item2{
|
|
||||||
padding: 10px;
|
|
||||||
margin: 0 auto 10px auto;
|
|
||||||
border: 1px solid #eaeaea;
|
|
||||||
}
|
|
||||||
.ope-row{
|
|
||||||
padding-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.item-name{
|
|
||||||
font-size: 12px;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow:ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.el-form-item__content{
|
|
||||||
line-height:unset!important;
|
|
||||||
}
|
|
||||||
.col-select{
|
|
||||||
border: 1px solid rgb(234, 234, 234);
|
|
||||||
padding: 50px 0px;
|
|
||||||
height: 160px;
|
|
||||||
width: 49.5%;
|
|
||||||
}
|
|
||||||
.col-select2{
|
|
||||||
border: 1px solid rgb(234, 234, 234);
|
|
||||||
padding: 50px 0px;
|
|
||||||
height: 160px;
|
|
||||||
}
|
|
||||||
.col-add{
|
|
||||||
border: 1px solid rgb(234, 234, 234);
|
|
||||||
padding: 50px 0px;
|
|
||||||
height: 160px;
|
|
||||||
width: 49.5%;
|
|
||||||
float: right
|
|
||||||
}
|
|
||||||
.avatar-uploader-icon {
|
|
||||||
border: 1px solid #d9d9d9;
|
|
||||||
font-size: 28px;
|
|
||||||
color: #8c939d;
|
|
||||||
width: 100px!important;
|
|
||||||
height: 100px!important;
|
|
||||||
line-height: 100px!important;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.material-img {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.thumb-div{
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.item-infos{
|
|
||||||
width: 30%;
|
|
||||||
margin: auto
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
.pagination{
|
||||||
|
text-align: right;
|
||||||
|
margin-right: 25px;
|
||||||
|
}
|
||||||
|
.select-item{
|
||||||
|
width: 280px;
|
||||||
|
padding: 10px;
|
||||||
|
margin: 0 auto 10px auto;
|
||||||
|
border: 1px solid #eaeaea;
|
||||||
|
}
|
||||||
|
.select-item2{
|
||||||
|
padding: 10px;
|
||||||
|
margin: 0 auto 10px auto;
|
||||||
|
border: 1px solid #eaeaea;
|
||||||
|
}
|
||||||
|
.ope-row{
|
||||||
|
padding-top: 10px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.item-name{
|
||||||
|
font-size: 12px;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow:ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.el-form-item__content{
|
||||||
|
line-height:unset!important;
|
||||||
|
}
|
||||||
|
.col-select{
|
||||||
|
border: 1px solid rgb(234, 234, 234);
|
||||||
|
padding: 50px 0px;
|
||||||
|
height: 160px;
|
||||||
|
width: 49.5%;
|
||||||
|
}
|
||||||
|
.col-select2{
|
||||||
|
border: 1px solid rgb(234, 234, 234);
|
||||||
|
padding: 50px 0px;
|
||||||
|
height: 160px;
|
||||||
|
}
|
||||||
|
.col-add{
|
||||||
|
border: 1px solid rgb(234, 234, 234);
|
||||||
|
padding: 50px 0px;
|
||||||
|
height: 160px;
|
||||||
|
width: 49.5%;
|
||||||
|
float: right
|
||||||
|
}
|
||||||
|
.avatar-uploader-icon {
|
||||||
|
border: 1px solid #d9d9d9;
|
||||||
|
font-size: 28px;
|
||||||
|
color: #8c939d;
|
||||||
|
width: 100px!important;
|
||||||
|
height: 100px!important;
|
||||||
|
line-height: 100px!important;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.material-img {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.thumb-div{
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.item-infos{
|
||||||
|
width: 30%;
|
||||||
|
margin: auto
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -73,68 +73,68 @@ SOFTWARE.
|
|||||||
<!--右边配置-->
|
<!--右边配置-->
|
||||||
<div v-if="showRightFlag" class="right">
|
<div v-if="showRightFlag" class="right">
|
||||||
<div class="configure_page">
|
<div class="configure_page">
|
||||||
<div class="delete_btn">
|
<div class="delete_btn">
|
||||||
<el-button size="mini" type="danger" icon="el-icon-delete" @click="deleteMenu(tempObj)">删除当前菜单</el-button>
|
<el-button size="mini" type="danger" icon="el-icon-delete" @click="deleteMenu(tempObj)">删除当前菜单</el-button>
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<span>菜单名称:</span>
|
|
||||||
<el-input class="input_width" v-model="tempObj.name" placeholder="请输入菜单名称" :maxlength="nameMaxLength" clearable />
|
|
||||||
</div>
|
|
||||||
<div v-if="showConfigureContent">
|
|
||||||
<div class="menu_content">
|
|
||||||
<span>菜单标识:</span>
|
|
||||||
<el-input class="input_width" v-model="tempObj.menuKey" placeholder="请输入菜单 KEY" clearable />
|
|
||||||
</div>
|
|
||||||
<div class="menu_content">
|
|
||||||
<span>菜单内容:</span>
|
|
||||||
<el-select v-model="tempObj.type" clearable placeholder="请选择" class="menu_option">
|
|
||||||
<el-option v-for="item in menuOptions" :label="item.label" :value="item.value" :key="item.value" />
|
|
||||||
</el-select>
|
|
||||||
</div>
|
|
||||||
<div class="configur_content" v-if="tempObj.type === 'view'">
|
|
||||||
<span>跳转链接:</span>
|
|
||||||
<el-input class="input_width" v-model="tempObj.url" placeholder="请输入链接" clearable />
|
|
||||||
</div>
|
|
||||||
<div class="configur_content" v-if="tempObj.type === 'miniprogram'">
|
|
||||||
<div class="applet">
|
|
||||||
<span>小程序的 appid :</span>
|
|
||||||
<el-input class="input_width" v-model="tempObj.miniProgramAppId" placeholder="请输入小程序的appid" clearable />
|
|
||||||
</div>
|
|
||||||
<div class="applet">
|
|
||||||
<span>小程序的页面路径:</span>
|
|
||||||
<el-input class="input_width" v-model="tempObj.miniProgramPagePath"
|
|
||||||
placeholder="请输入小程序的页面路径,如:pages/index" clearable />
|
|
||||||
</div>
|
|
||||||
<div class="applet">
|
|
||||||
<span>小程序的备用网页:</span>
|
|
||||||
<el-input class="input_width" v-model="tempObj.url" placeholder="不支持小程序的老版本客户端将打开本网页" clearable />
|
|
||||||
</div>
|
|
||||||
<p class="blue">tips:需要和公众号进行关联才可以把小程序绑定带微信菜单上哟!</p>
|
|
||||||
</div>
|
|
||||||
<div class="configur_content" v-if="tempObj.type === 'article_view_limited'">
|
|
||||||
<el-row>
|
|
||||||
<div class="select-item" v-if="tempObj && tempObj.content && tempObj.content.articles">
|
|
||||||
<WxNews :objData="tempObj.content.articles"></WxNews>
|
|
||||||
<el-row class="ope-row">
|
|
||||||
<el-button type="danger" icon="el-icon-delete" circle @click="deleteTempObj"></el-button>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
<div v-if="!tempObj.content || !tempObj.content.articles">
|
|
||||||
<el-row>
|
|
||||||
<el-col :span="24" style="text-align: center">
|
|
||||||
<el-button type="success" @click="openMaterial">素材库选择<i class="el-icon-circle-check el-icon--right"></i></el-button>
|
|
||||||
</el-col>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
<el-dialog title="选择图文" :visible.sync="dialogNewsVisible" width="90%">
|
|
||||||
<WxMaterialSelect :objData="{repType:'news'}" @selectMaterial="selectMaterial"></WxMaterialSelect>
|
|
||||||
</el-dialog>
|
|
||||||
</el-row>
|
|
||||||
</div>
|
|
||||||
<div class="configur_content" v-if="tempObj.type === 'click' || tempObj.type === 'scancode_waitmsg'">
|
|
||||||
<wx-reply-select :objData="tempObj.reply" v-if="hackResetWxReplySelect" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<span>菜单名称:</span>
|
||||||
|
<el-input class="input_width" v-model="tempObj.name" placeholder="请输入菜单名称" :maxlength="nameMaxLength" clearable />
|
||||||
|
</div>
|
||||||
|
<div v-if="showConfigureContent">
|
||||||
|
<div class="menu_content">
|
||||||
|
<span>菜单标识:</span>
|
||||||
|
<el-input class="input_width" v-model="tempObj.menuKey" placeholder="请输入菜单 KEY" clearable />
|
||||||
|
</div>
|
||||||
|
<div class="menu_content">
|
||||||
|
<span>菜单内容:</span>
|
||||||
|
<el-select v-model="tempObj.type" clearable placeholder="请选择" class="menu_option">
|
||||||
|
<el-option v-for="item in menuOptions" :label="item.label" :value="item.value" :key="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</div>
|
||||||
|
<div class="configur_content" v-if="tempObj.type === 'view'">
|
||||||
|
<span>跳转链接:</span>
|
||||||
|
<el-input class="input_width" v-model="tempObj.url" placeholder="请输入链接" clearable />
|
||||||
|
</div>
|
||||||
|
<div class="configur_content" v-if="tempObj.type === 'miniprogram'">
|
||||||
|
<div class="applet">
|
||||||
|
<span>小程序的 appid :</span>
|
||||||
|
<el-input class="input_width" v-model="tempObj.miniProgramAppId" placeholder="请输入小程序的appid" clearable />
|
||||||
|
</div>
|
||||||
|
<div class="applet">
|
||||||
|
<span>小程序的页面路径:</span>
|
||||||
|
<el-input class="input_width" v-model="tempObj.miniProgramPagePath"
|
||||||
|
placeholder="请输入小程序的页面路径,如:pages/index" clearable />
|
||||||
|
</div>
|
||||||
|
<div class="applet">
|
||||||
|
<span>小程序的备用网页:</span>
|
||||||
|
<el-input class="input_width" v-model="tempObj.url" placeholder="不支持小程序的老版本客户端将打开本网页" clearable />
|
||||||
|
</div>
|
||||||
|
<p class="blue">tips:需要和公众号进行关联才可以把小程序绑定带微信菜单上哟!</p>
|
||||||
|
</div>
|
||||||
|
<div class="configur_content" v-if="tempObj.type === 'article_view_limited'">
|
||||||
|
<el-row>
|
||||||
|
<div class="select-item" v-if="tempObj && tempObj.content && tempObj.content.articles">
|
||||||
|
<WxNews :objData="tempObj.content.articles"></WxNews>
|
||||||
|
<el-row class="ope-row">
|
||||||
|
<el-button type="danger" icon="el-icon-delete" circle @click="deleteTempObj" />
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
<div v-if="!tempObj.content || !tempObj.content.articles">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: center">
|
||||||
|
<el-button type="success" @click="openMaterial">素材库选择<i class="el-icon-circle-check el-icon--right"></i></el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
<el-dialog title="选择图文" :visible.sync="dialogNewsVisible" width="90%">
|
||||||
|
<WxMaterialSelect :objData="{repType:'news'}" @selectMaterial="selectMaterial"></WxMaterialSelect>
|
||||||
|
</el-dialog>
|
||||||
|
</el-row>
|
||||||
|
</div>
|
||||||
|
<div class="configur_content" v-if="tempObj.type === 'click' || tempObj.type === 'scancode_waitmsg'">
|
||||||
|
<wx-reply-select :objData="tempObj.reply" v-if="hackResetWxReplySelect" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- 一进页面就显示的默认页面,当点击左边按钮的时候,就不显示了-->
|
<!-- 一进页面就显示的默认页面,当点击左边按钮的时候,就不显示了-->
|
||||||
@ -183,12 +183,10 @@ export default {
|
|||||||
nameMaxLength: 0, // 菜单名称最大长度;1 级是 4 字符;2 级是 7 字符;
|
nameMaxLength: 0, // 菜单名称最大长度;1 级是 4 字符;2 级是 7 字符;
|
||||||
showConfigureContent: true, // 是否展示配置内容;如果有子菜单,就不显示配置内容
|
showConfigureContent: true, // 是否展示配置内容;如果有子菜单,就不显示配置内容
|
||||||
hackResetWxReplySelect: false, // 重置 WxReplySelect 组件
|
hackResetWxReplySelect: false, // 重置 WxReplySelect 组件
|
||||||
|
|
||||||
tempObj: {}, // 右边临时变量,作为中间值牵引关系
|
tempObj: {}, // 右边临时变量,作为中间值牵引关系
|
||||||
tempSelfObj: { // 一些临时值放在这里进行判断,如果放在 tempObj,由于引用关系,menu 也会多了多余的参数
|
tempSelfObj: { // 一些临时值放在这里进行判断,如果放在 tempObj,由于引用关系,menu 也会多了多余的参数
|
||||||
},
|
},
|
||||||
visible2: false, //素材内容 "选择素材"按钮弹框显示隐藏
|
dialogNewsVisible: false, // 跳转图文时的素材选择弹窗
|
||||||
tableData:[], //素材内容弹框数据,
|
|
||||||
menuOptions: [{
|
menuOptions: [{
|
||||||
value: 'view',
|
value: 'view',
|
||||||
label: '跳转网页'
|
label: '跳转网页'
|
||||||
@ -220,7 +218,6 @@ export default {
|
|||||||
value: 'location_select',
|
value: 'location_select',
|
||||||
label: '选择地理位置'
|
label: '选择地理位置'
|
||||||
}],
|
}],
|
||||||
dialogNewsVisible: false,
|
|
||||||
|
|
||||||
// 公众号账号列表
|
// 公众号账号列表
|
||||||
accounts: [],
|
accounts: [],
|
||||||
@ -357,13 +354,13 @@ export default {
|
|||||||
if (!item.children || item.children.length <= 0) {
|
if (!item.children || item.children.length <= 0) {
|
||||||
this.$set( item, 'children',[])
|
this.$set( item, 'children',[])
|
||||||
this.$delete( item, 'type')
|
this.$delete( item, 'type')
|
||||||
|
this.$delete( item, 'menuKey')
|
||||||
this.$delete( item, 'miniProgramAppId')
|
this.$delete( item, 'miniProgramAppId')
|
||||||
this.$delete( item, 'miniProgramPagePath')
|
this.$delete( item, 'miniProgramPagePath')
|
||||||
this.$delete( item, 'url')
|
this.$delete( item, 'url')
|
||||||
this.$delete( item, 'reply')
|
this.$delete( item, 'reply')
|
||||||
// TODO 芋艿:需要搞的属性弄下
|
// TODO 芋艿:需要搞的属性弄下
|
||||||
|
|
||||||
this.$delete( item, 'key')
|
|
||||||
this.$delete( item, 'article_id')
|
this.$delete( item, 'article_id')
|
||||||
this.$delete( item, 'textContent')
|
this.$delete( item, 'textContent')
|
||||||
this.showConfigureContent = false
|
this.showConfigureContent = false
|
||||||
@ -470,31 +467,29 @@ export default {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
},
|
},
|
||||||
|
// ======================== 菜单编辑(素材选择) ========================
|
||||||
// TODO 芋艿:未归类
|
openMaterial() {
|
||||||
|
this.dialogNewsVisible = true
|
||||||
deleteTempObj(){
|
},
|
||||||
|
selectMaterial(item){
|
||||||
|
if(item.content.articles.length>1){
|
||||||
|
this.$alert('您选择的是多图文,将默认跳转第一篇', '提示', {
|
||||||
|
confirmButtonText: '确定'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
this.dialogNewsVisible = false
|
||||||
|
this.tempObj.article_id = item.articleId
|
||||||
|
this.tempObj.mediaName = item.name
|
||||||
|
this.tempObj.url = item.url
|
||||||
|
item.mediaType = this.tempObj.mediaType
|
||||||
|
item.content.articles = item.content.articles.slice(0,1)
|
||||||
|
this.tempObj.content = item.content
|
||||||
|
},
|
||||||
|
deleteTempObj() {
|
||||||
this.$delete(this.tempObj,'repName')
|
this.$delete(this.tempObj,'repName')
|
||||||
this.$delete(this.tempObj,'repUrl')
|
this.$delete(this.tempObj,'repUrl')
|
||||||
this.$delete(this.tempObj,'content')
|
this.$delete(this.tempObj,'content')
|
||||||
},
|
},
|
||||||
openMaterial(){
|
|
||||||
this.dialogNewsVisible = true
|
|
||||||
},
|
|
||||||
selectMaterial(item){
|
|
||||||
if(item.content.articles.length>1){
|
|
||||||
this.$alert('您选择的是多图文,将默认跳转第一篇', '提示', {
|
|
||||||
confirmButtonText: '确定'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
this.dialogNewsVisible = false
|
|
||||||
this.tempObj.article_id = item.articleId
|
|
||||||
this.tempObj.mediaName = item.name
|
|
||||||
this.tempObj.url = item.url
|
|
||||||
item.mediaType = this.tempObj.mediaType
|
|
||||||
item.content.articles = item.content.articles.slice(0,1)
|
|
||||||
this.tempObj.content = item.content
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user