306 lines
15 KiB
HTML
306 lines
15 KiB
HTML
{{template "header" }}
|
||
|
||
<div id="deployBox" style="width:100%;height: 100%;">
|
||
<template>
|
||
<el-tabs v-model="tabActive" type="border-card" >
|
||
<el-tab-pane :label="flyLang.normalModel" name="normalModel">
|
||
<el-descriptions style="margin-bottom: 10px;" direction="vertical" :column="1" border>
|
||
<el-descriptions-item label="通用聊天链接">
|
||
<a v-on:click="window.open(host+'/chatIndex?kefu_id='+kefuName+'&ent_id='+entId)" style="margin-right: 10px"><{host}>/chatIndex?kefu_id=<{kefuName}>&ent_id=<{entId}></a>
|
||
<el-button size="mini" type="primary" v-on:click="window.open(host+'/chatIndex?kefu_id='+kefuName+'&ent_id='+entId)">测试对话</el-button>
|
||
<el-button size="mini" type="primary" v-on:click="window.open(host+'/kefu/downloadDeploy?token='+localStorage.getItem('token'))">落地页部署</el-button>
|
||
<div>
|
||
<p style="margin-bottom: 10px;">直连链接在微信中打开会展示提示遮罩,请下载落地页,部署在自己域名和服务器下</p>
|
||
<p style="margin-bottom: 10px;"><{flyLang.visitorLinkQrcode}></p>
|
||
<div style="position: relative;">
|
||
<img :src="avator" id="qrcodeLogo2" style="top:90px;margin-top:-20px;left:90px;margin-left:-20px;position:absolute;border:2px solid #fff;display: none;width: 40px;height:40px;border-radius: 8px;">
|
||
<div id="dynicQrImg2">
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</el-descriptions-item>
|
||
|
||
<el-descriptions-item label="微信授权聊天链接">
|
||
<a style="margin-right: 10px" ><{host}>/wechatIndex?kefu_id=<{kefuName}>&ent_id=<{entId}></a>
|
||
<el-button size="mini" type="primary" v-on:click="copyText(host+'/wechatIndex?kefu_id='+kefuName+'&ent_id='+entId)"><{flyLang.copy}></el-button>
|
||
<br/>
|
||
<{flyLang.wechatLinkDesc}><br/>
|
||
<div>
|
||
<p style="margin-bottom: 10px;"><{flyLang.wechatLinkQrcode}></p>
|
||
<div style="position: relative;">
|
||
<img :src="avator" id="qrcodeLogo3" style="top:90px;margin-top:-20px;left:90px;margin-left:-20px;position:absolute;border:2px solid #fff;display: none;width: 40px;height:40px;border-radius: 8px;">
|
||
<div id="dynicQrImg3">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</el-descriptions-item>
|
||
<el-descriptions-item label="API调用">
|
||
<table>
|
||
<tr>
|
||
<td width="100px" align="right"><el-tag>POST</el-tag></td>
|
||
<td style="height: 50px;padding-left: 20px"><{host}>/api/v1/<{entId}>/<{kefuName}>/robot/chat
|
||
<el-button size="mini" type="primary" v-on:click="copyText(host+'/api/v1/'+entId+'/'+kefuName+'/robot/chat')"><{flyLang.copy}></el-button>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width="100px" align="right"><el-tag>Content-Type</el-tag></td>
|
||
<td style="height: 50px;padding-left: 20px">application/json</td>
|
||
</tr>
|
||
<tr>
|
||
<td width="100px" align="right"><el-tag>body</el-tag></td>
|
||
<td style="height: 50px;padding-left: 20px">
|
||
<pre>
|
||
{
|
||
"visitor_id": "1",
|
||
"content": "你好",
|
||
"visitor_name": "测试访客"
|
||
}
|
||
</pre>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
|
||
|
||
|
||
</el-descriptions-item>
|
||
<el-descriptions-item :label="flyLang.paramIntro">
|
||
<div v-html="flyLang.paramsDesc"></div>
|
||
<div v-html="flyLang.visitorLinkDesc"></div>
|
||
</el-descriptions-item>
|
||
|
||
</el-descriptions>
|
||
</el-tab-pane>
|
||
<el-tab-pane :label="flyLang.dialogModel" name="dialogModel">
|
||
|
||
<el-descriptions style="margin-bottom: 10px;" direction="vertical" :column="1" border>
|
||
<el-descriptions-item :label="flyLang.dialogModel">
|
||
<{flyLang.delogDeployDesc}><a target="_blank" :href="'/deploy?siteUrl='+host+'&kefuName='+kefuName+'&entId='+entId">demo</a>
|
||
</el-descriptions-item>
|
||
<el-descriptions-item label="code">
|
||
<textarea class="deployLink" style="height: 360px;">
|
||
<script type='text/javascript'>
|
||
(function(a, b, c, d) {
|
||
let h = b.getElementsByTagName('head')[0];let s = b.createElement('script');
|
||
s.type = 'text/javascript';s.src = c+"/static/js/kefu-front.js";s.onload = s.onreadystatechange = function () {
|
||
if (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") d(c);
|
||
};h.appendChild(s);
|
||
})(window, document,"<{host}>",function(u){
|
||
KEFU.init({
|
||
KEFU_URL:u,
|
||
KEFU_KEFU_ID: "<{kefuName}>",
|
||
KEFU_ENT: "<{entId}>",
|
||
})
|
||
});
|
||
</script>
|
||
</textarea>
|
||
</el-descriptions-item>
|
||
<el-descriptions-item :label="flyLang.paramIntro">
|
||
KEFU_KEFU_ID: 客服账号用户名<br>
|
||
KEFU_ENT: 客服的商户ID<br>
|
||
KEFU_LANG: cn 中文 , en英文,jp日文,ru俄文,kr韩文<br>
|
||
KEFU_SHOW_TYPES: 展示样式,0:不展示,1:普通右下角,2:圆形icon<br>
|
||
KEFU_AUTO_OPEN: true 自动展开,false 不自动<br>
|
||
VISITOR_ID:访客id<br>
|
||
VISITOR_NAME:访客昵称<br>
|
||
VISITOR_AVATOR:访客头像<br>
|
||
</el-descriptions-item>
|
||
</el-descriptions>
|
||
|
||
|
||
</el-tab-pane>
|
||
|
||
<el-tab-pane label="微信提醒" >
|
||
<el-descriptions direction="vertical" :column="2" border>
|
||
<el-descriptions-item label="客服绑定微信提醒">
|
||
<div style="display: flex;margin-bottom: 10px;">
|
||
<img src="/static/images/wechat.png" style="width: 60px;height:60px;margin-right: 10px;"/>
|
||
<div>
|
||
<h4 style="margin-bottom: 5px;"><{flyLang.wechatNoticeDesc}></h4>
|
||
<el-button @click="window.open('/wechatNotice')" size="small" type="success"><{flyLang.bind}></el-button>
|
||
<el-button icon="el-icon-refresh" @click="getWechatOpenidList()" size="small" type="success"></el-button>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
|
||
<el-table
|
||
:empty-text="flyLang.nodata"
|
||
:data="openidList"
|
||
border
|
||
style="width: 100%">
|
||
<el-table-column
|
||
prop="oauth_id"
|
||
:label="flyLang.wechat">
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
prop="created_at"
|
||
:label="flyLang.createTime">
|
||
</el-table-column>
|
||
|
||
<el-table-column
|
||
prop="id"
|
||
:label="flyLang.doIt">
|
||
<template slot-scope="scope">
|
||
<el-button @click="deleteOauth(scope.row.oauth_id)" type="primary" size="small"><{flyLang.delete}></el-button>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-descriptions-item>
|
||
|
||
</el-descriptions>
|
||
</el-tab-pane>
|
||
|
||
</el-tabs>
|
||
</template>
|
||
|
||
</div>
|
||
</body>
|
||
<script src="/static/js/chat-lang.js?v=1.0.0"></script>
|
||
<script src="/static/js/jquery.qrcode.js"></script>
|
||
<script>
|
||
var LANG=checkLang();
|
||
new Vue({
|
||
el: '#deployBox',
|
||
delimiters:["<{","}>"],
|
||
data: {
|
||
flyLang:KEFU_LANG[LANG],
|
||
window:window,
|
||
host:getBaseUrl(),
|
||
kefuId:"",
|
||
entId:"",
|
||
nickname:"",
|
||
avator:"",
|
||
kefuName:"",
|
||
versionName:"",
|
||
visitorQrcode:"",
|
||
visitorUrl:"",
|
||
wechatVisitorUrl:"",
|
||
wechatVisitorQrcode:"",
|
||
wechatKefuQrcode:"",
|
||
wechatMenuUrl:"",
|
||
systemWechatKefuQrcode:"",
|
||
systemBussinesId:"{{.systemBussinesId}}",
|
||
siteHost:"",
|
||
siteName:"",
|
||
siteDesc:"",
|
||
contact:"",
|
||
tel:"",
|
||
openidList:[],
|
||
tabActive:"normalModel",
|
||
},
|
||
methods: {
|
||
|
||
kefuInfo() {
|
||
var _this = this;
|
||
sendAjax("/kefu/kefuinfo","get",{},function (data) {
|
||
if (data.code != 200) {
|
||
window.location.href = "/ironMan/signInx";
|
||
} else {
|
||
var result = data.result;
|
||
_this.kefuId = result.id;
|
||
_this.entId = result.ent_id;
|
||
_this.kefuName = result.name;
|
||
_this.nickname = result.nickname;
|
||
_this.avator = result.avator;
|
||
_this.visitorUrl=_this.host+'/chatIndex?kefu_id='+result.name+'&ent_id='+result.ent_id;
|
||
var visitorUrlTxt=_this.host+'/chatIndex?kefu_id='+result.name+'%26ent_id='+result.ent_id;
|
||
_this.visitorQrcode=_this.host+"/kefu/qrcode?str="+visitorUrlTxt+"&token="+localStorage.getItem("token");
|
||
_this.wechatMenuUrl=_this.host+'/wechatIndex?ent_id='+result.ent_id+'%26kefu_id='+result.name;
|
||
_this.wechatVisitorQrcode=_this.host+"/kefu/qrcode?str="+_this.wechatMenuUrl+"&token="+localStorage.getItem("token");
|
||
_this.getWechatKefuQrcode();
|
||
|
||
|
||
$("#qrcodeLogo2").show();
|
||
var info=_this.host+'/chatIndex?kefu_id='+_this.kefuName+'&ent_id='+_this.entId;
|
||
$('#dynicQrImg2').empty().qrcode({
|
||
text: info, // 二维码的内容
|
||
render: "canvas", // 设置渲染方式
|
||
width: 180, // 设置宽度: 默认256
|
||
height: 180, // 设置高度: 默认256
|
||
background: "#ffffff", // 背景颜色
|
||
foreground: "#000000", // 前景颜色
|
||
});
|
||
|
||
var info=_this.host+'/wechatIndex?kefu_id='+_this.kefuName+'&ent_id='+_this.entId;
|
||
$("#qrcodeLogo3").show();
|
||
$('#dynicQrImg3').empty().qrcode({
|
||
text: info, // 二维码的内容
|
||
render: "canvas", // 设置渲染方式
|
||
width: 180, // 设置宽度: 默认256
|
||
height: 180, // 设置高度: 默认256
|
||
background: "#ffffff", // 背景颜色
|
||
foreground: "#000000", // 前景颜色
|
||
});
|
||
}
|
||
});
|
||
|
||
|
||
},
|
||
getWechatKefuQrcode(){
|
||
var _this=this;
|
||
sendAjax("/wechat/showQrcode","get",{entId:this.entId,sceneName:"kf_"+this.kefuName},function(result){
|
||
if(result.code==200){
|
||
_this.wechatKefuQrcode=result.result.url
|
||
}
|
||
});
|
||
sendAjax("/wechat/showQrcode","get",{entId:this.systemBussinesId,sceneName:"kf_"+this.kefuName},function(result){
|
||
if(result.code==200){
|
||
_this.systemWechatKefuQrcode=result.result.url
|
||
}
|
||
});
|
||
},
|
||
getWechatOpenidList(){
|
||
var _this=this;
|
||
sendAjax("/kefu/wechatOpenidList","get",{},function(result){
|
||
_this.openidList=result.result
|
||
});
|
||
},
|
||
deleteOauth(oauthId){
|
||
var _this=this;
|
||
sendAjax("/kefu/delWechatOpenid","get",{"oauth_id":oauthId},function(result){
|
||
_this.getWechatOpenidList();
|
||
});
|
||
},
|
||
handleTabClick(tab, event){
|
||
let _this=this;
|
||
if(tab.name=="wechat"){
|
||
|
||
}
|
||
},
|
||
reqAuthcode(){
|
||
this.$message({
|
||
message: "开发中",
|
||
type: 'error'
|
||
});
|
||
},
|
||
copyText(text){
|
||
copyText(text);
|
||
this.$message({
|
||
message: "success",
|
||
type: 'success'
|
||
});
|
||
},
|
||
},
|
||
mounted:function(){
|
||
let _this=this;
|
||
//监听页面显示隐藏
|
||
document.addEventListener('visibilitychange', function(){
|
||
var visibility = document.visibilityState;
|
||
if(visibility == 'visible'){
|
||
_this.getWechatOpenidList();
|
||
}else if(visibility == 'hidden'){
|
||
}
|
||
});
|
||
},
|
||
created: function () {
|
||
this.kefuInfo();
|
||
this.getWechatOpenidList();
|
||
let tabActive=getQuery("tab");
|
||
if (tabActive!="") this.tabActive=tabActive;
|
||
}
|
||
})
|
||
</script>
|
||
{{template "setting_bottom" .}}
|