Commit ad2ed79a authored by 王's avatar

公众号完善

parent 5a8a6516
......@@ -12,8 +12,8 @@ module.exports = {
//本地代理设置
proxyTable: {
'/api': {
target: 'http://local.base-api.sing.com', // 接口的域名
// target: 'http://wechat.test.singsingenglish.com/',
// target: 'http://local.base-api.sing.com', // 接口的域名
target: 'http://wechat.test.singsingenglish.com/',
changeOrigin: true, // 如果接口跨域,需要进行这个参数配置
}
},
......
......@@ -8,11 +8,11 @@
<div class="content">
<div class="inner" v-loading="loading">
<ul class="weui-desktop-msg-sender__tabs">
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_appmsg" :class="type === 'news' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="type = 'news'">图文</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_text" :class="type === 'text' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="type = 'text'">文字</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_img" :class="type === 'image' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="type = 'image'">图片</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_audio" :class="type === 'voice' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="type = 'voice'">语音</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_video" :class="type === 'video' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="type = 'video'">视频</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_appmsg" :class="type === 'news' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onChangeType('news')">图文</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_text" :class="type === 'text' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onChangeType('text')">文字</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_img" :class="type === 'image' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onChangeType('image')">图片</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_audio" :class="type === 'voice' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onChangeType('voice')">语音</li>
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_video" :class="type === 'video' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onChangeType('video')">视频</li>
</ul>
<div class="inner-bottom">
<div class="img-action" v-if="type === 'image'">
......@@ -129,7 +129,7 @@
</template>
</el-table-column>
</el-table>
<page :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange"/>
<page2 :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange"/>
</div>
</div>
<div class="img-action" v-if="type === 'video'" style="text-align: left">
......@@ -165,7 +165,7 @@
</template>
</el-table-column>
</el-table>
<page :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange"/>
<page3 :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange"/>
</div>
</div>
<div class="img-action" v-if="type === 'voice'" style="text-align: left">
......@@ -196,7 +196,7 @@
</template>
</el-table-column>
</el-table>
<page :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange"/>
<page4 :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange"/>
</div>
</div>
<div class="inner-emotion_editor" v-else-if="type === 'text'">
......@@ -240,6 +240,9 @@
<script>
import {updateConfigApi,saveConfigApi,getMediaListApi,getConfigListApi,getTeacherListApi} from "../../service/api";
import page from '../framework/page'
import page2 from '../framework/page'
import page3 from '../framework/page'
import page4 from '../framework/page'
import emotion from '../framework/Emotion/index'
export default {
name: "focusReplyDialog",
......@@ -291,6 +294,9 @@
},
components:{
page,
page2,
page3,
page4,
emotion
},
mounted(){
......@@ -308,6 +314,12 @@
handleEmotion (i) {
this.content += i
},
onChangeType(type){
this.type = type;
this.mediaList = [];
this.showMedia = false;
this.nowPage = 1;
},
initDialog(){
if (this.dialogObj.id) {
this.id = this.dialogObj.id;
......
......@@ -149,6 +149,31 @@
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_video" :class="buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.type === 'video' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onClickSendMsg('video')">视频</li>
</ul>
<div class="inner-bottom">
<div class="img-action" v-if="buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.type === 'text'">
<div class="inner-edit_area">
<el-input
type="textarea"
:autosize="{ minRows: 4, maxRows: 8}"
v-model="content"
placeholder="请输入内容">
</el-input>
</div>
<div style="float: right">
<el-popover
placement="bottom-end"
width="400"
:offset="10"
trigger="manual"
v-model="showEmotion">
<div>
<emotion @emotion="handleEmotion" :height="200" ></emotion>
</div>
<el-button @click="showEmotion = !showEmotion" slot="reference" type="text">
<span class="icon_emotion emotion_switch"></span>
</el-button>
</el-popover>
</div>
</div>
<div class="img-action" v-if="buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.type === 'image'">
<template v-if="selectedIndex > -1 && buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.url">
<img style="max-width: 30%" :src="buttonList[selectedIndex].media_info.url"/>
......@@ -257,6 +282,70 @@
</el-table>
</div>
</div>
<div class="img-action" v-if="buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.type === 'voice'">
<template v-if="selectedIndex > -1 && buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.url">
<i class="el-icon-delete" @click="deleteMedia()" style="display: inline-block"></i>
</template>
<div class="display-b" v-else>
<div class="img-create-access" v-if="!showMedia">
<a href="javascript:;" class="img-create-access__link" @click="getMediaList('voice')">从素材库中选择</a>
</div>
</div>
<div v-if="showMedia && mediaList.length > 0">
<el-table
:data="mediaList"
@row-click="onChooseMedia"
style="width: 100%">
<el-table-column
prop="name"
label="名称">
</el-table-column>
<el-table-column
prop="media_id"
label="mediaId">
</el-table-column>
<el-table-column
label="URL">
<template slot-scope="scope">
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="img-action" style="text-align: left" v-if="buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.type === 'video'">
<template v-if="selectedIndex > -1 && buttonList[selectedIndex].media_info && buttonList[selectedIndex].media_info.down_url">
<a :href="buttonList[selectedIndex].media_info.down_url">{{buttonList[selectedIndex].media_info.title}}</a>
<i class="el-icon-delete" @click="deleteMedia()" style="display: inline-block"></i>
</template>
<div class="display-b" v-else>
<div class="img-create-access" v-if="!showMedia">
<a href="javascript:;" class="img-create-access__link" @click="getMediaList('video')">从素材库中选择</a>
</div>
</div>
<div v-if="showMedia && mediaList.length > 0">
<el-table
:data="mediaList"
@row-click="onChooseMedia"
style="width: 100%">
<el-table-column
prop="name"
label="名称">
</el-table-column>
<el-table-column
prop="media_id"
label="mediaId">
</el-table-column>
<el-table-column
label="URL">
<template slot-scope="scope">
<a :href="scope.row.info.down_url" target="_blank" v-if="scope.row.info && scope.row.info.down_url">
{{scope.row.info.title}}
</a>
</template>
</el-table-column>
</el-table>
</div>
</div>
<page :total="total" v-model="nowPage" :limit="limit" @pageChange="onPageChange" v-if="showMedia && mediaList.length > 0"/>
</div>
</div>
......@@ -295,6 +384,31 @@
<li class="weui-desktop-msg-sender__tab weui-desktop-msg-sender__tab_video" :class="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'video' ? 'weui-desktop-msg-sender__tab_selected' : ''" @click="onClickSubSendMsg('video')">视频</li>
</ul>
<div class="inner-bottom">
<div class="img-action" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'text'">
<div class="inner-edit_area">
<el-input
type="textarea"
:autosize="{ minRows: 4, maxRows: 8}"
v-model="content"
placeholder="请输入内容">
</el-input>
</div>
<div style="float: right">
<el-popover
placement="bottom-end"
width="400"
:offset="10"
trigger="manual"
v-model="showEmotion">
<div>
<emotion @emotion="handleEmotion" :height="200" ></emotion>
</div>
<el-button @click="showEmotion = !showEmotion" slot="reference" type="text">
<span class="icon_emotion emotion_switch"></span>
</el-button>
</el-popover>
</div>
</div>
<div class="img-action" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'image'">
<template v-if="selectedIndex && selectedChildIndex > -1 && buttonList[selectedIndex].sub_button[selectedChildIndex] && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url">
<img style="max-width: 30%" :src="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url"/>
......@@ -403,6 +517,74 @@
</el-table>
</div>
</div>
<div class="img-action" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'voice'">
<template v-if="selectedIndex && selectedChildIndex > -1 && buttonList[selectedIndex].sub_button[selectedChildIndex] && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url">
<a :href="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url">{{buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.title}}</a>
<i class="el-icon-delete" @click="deleteSubMedia()" style="display: inline-block"></i>
</template>
<div class="display-b" v-else>
<div class="img-create-access" v-if="!showMedia">
<a href="javascript:;" class="img-create-access__link" @click="getMediaList('voice')">从素材库中选择</a>
</div>
</div>
<div v-if="showMedia && mediaList.length > 0">
<el-table
:data="mediaList"
@row-click="onChooseSubMedia"
style="width: 100%">
<el-table-column
prop="name"
label="名称">
</el-table-column>
<el-table-column
prop="media_id"
label="mediaId">
</el-table-column>
<el-table-column
label="URL">
<template slot-scope="scope">
<a :href="scope.row.info.down_url" target="_blank" v-if="scope.row.info && scope.row.info.down_url">
{{scope.row.info.title}}
</a>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="img-action" style="text-align: left" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'video'">
<template v-if="selectedIndex && selectedChildIndex > -1 && buttonList[selectedIndex].sub_button[selectedChildIndex] && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info && buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.down_url">
<a :href="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url" v-if="buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.down_url">{{buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.title}}</a>
<i class="el-icon-delete" @click="deleteSubMedia()" style="display: inline-block"></i>
</template>
<div class="display-b" v-else>
<div class="img-create-access" v-if="!showMedia">
<a href="javascript:;" class="img-create-access__link" @click="getMediaList('video')">从素材库中选择</a>
</div>
</div>
<div v-if="showMedia && mediaList.length > 0">
<el-table
:data="mediaList"
@row-click="onChooseSubMedia"
style="width: 100%">
<el-table-column
prop="name"
label="名称">
</el-table-column>
<el-table-column
prop="media_id"
label="mediaId">
</el-table-column>
<el-table-column
label="URL">
<template slot-scope="scope">
<a :href="scope.row.info.down_url" target="_blank" v-if="scope.row.info && scope.row.info.down_url">
{{scope.row.info.title}}
</a>
</template>
</el-table-column>
</el-table>
</div>
</div>
<page2 :total="total" v-model="nowPage" :limit="limit" @pageChange="onSubPageChange" v-if="showMedia && mediaList.length > 0"/>
</div>
</div>
......@@ -450,12 +632,14 @@
import { MessageBox } from 'element-ui';
import page from '../framework/page'
import page2 from '../framework/page'
import emotion from '../framework/Emotion/index'
export default {
name: "index",
components: {
draggable,
page,
page2
page2,
emotion
},
data(){
return {
......@@ -474,7 +658,9 @@
nowPage:1,
limit: 3,
showMedia: false,
mediaList: []
mediaList: [],
showEmotion: false,
content: ''
}
},
mounted(){
......@@ -495,7 +681,7 @@
this.selectedIndex = 0
this.selectedChildIndex = -1
this.showOrder = false;
this.searchMenu();
// this.searchMenu();
}
})
......@@ -659,14 +845,19 @@
},
onChooseMedia(val){
let selectedIndex = this.selectedIndex;
if(this.buttonList[selectedIndex].media_info.type === 'image') {
let _type = this.buttonList[selectedIndex].media_info.type;
if(_type === 'image') {
this.buttonList[selectedIndex].media_id = val.media_id;
this.buttonList[selectedIndex].media_info.url = val.url;
this.buttonList[selectedIndex].key = 'image'
}else if (this.buttonList[selectedIndex].media_info.type === 'news'){
}else if (_type === 'news'){
this.buttonList[selectedIndex].media_id = val.media_id;
this.buttonList[selectedIndex].media_info = val.content;
this.buttonList[selectedIndex].media_info.type = 'news';
}else if (_type === 'video'){
this.buttonList[selectedIndex].media_id = val.media_id;
this.buttonList[selectedIndex].media_info = val.info;
this.buttonList[selectedIndex].media_info.type = 'video';
}
this.showMedia = false;
this.$forceUpdate();
......@@ -674,24 +865,35 @@
onChooseSubMedia(val){
let selectedIndex = this.selectedIndex;
let selectedChildIndex = this.selectedChildIndex;
if(this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'image') {
let _type = this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type;
if(_type === 'image') {
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_id = val.media_id;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url = val.url;
}else if (this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type === 'news'){
}else if (_type === 'news'){
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_id = val.media_id;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info = val.content;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type = 'news';
}else if (_type === 'video'){
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_id = val.media_id;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info = val.info;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type = 'video';
}
this.showMedia = false;
this.$forceUpdate();
},
onClickSendMsg(type){
this.mediaList = [];
this.showMedia = false;
this.nowPage = 1;
this.buttonList[this.selectedIndex].media_info = {
type: type
}
this.$forceUpdate();
},
onClickSubSendMsg(type){
this.mediaList = [];
this.showMedia = false;
this.nowPage = 1;
let selectedIndex = this.selectedIndex;
let selectedChildIndex = this.selectedChildIndex;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info = {
......@@ -700,17 +902,39 @@
this.$forceUpdate();
},
deleteMedia(){
let _type = this.buttonList[selectedIndex].media_info.type;
this.buttonList[this.selectedIndex].media_id = '';
this.buttonList[this.selectedIndex].media_info.url = '';
if (_type === 'image') {
this.buttonList[this.selectedIndex].media_info.url = '';
} else if (_type === 'text'){
} else {
this.buttonList[this.selectedIndex].media_info = {
type: _type
}
}
this.$forceUpdate();
},
deleteSubMedia(){
let _type = this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.type;
let selectedIndex = this.selectedIndex;
let selectedChildIndex = this.selectedChildIndex;
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_id = '';
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url = '';
if (_type === 'image') {
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info.url = '';
} else if (_type === 'text'){
} else {
this.buttonList[selectedIndex].sub_button[selectedChildIndex].media_info = {
type: _type
}
}
this.$forceUpdate();
}
},
handleEmotion (i) {
this.content += i
},
}
}
......@@ -3019,5 +3243,15 @@
background-color: rgba(0,0,0,0.5);
text-decoration: none;
}
.emotion_switch {
float: left;
height: 28px;
line-height: 999em;
overflow: hidden;
background: transparent url(https://res.wx.qq.com/mpres/en_US/htmledition/pages/modules/reply/images/icon_emotion_switch.png) no-repeat 0 0;
width: 20px;
height: 20px;
vertical-align: middle;
display: inline-block;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment