kefu/public/static/customer/js/mylink-kfchat.js

1067 lines
42 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 客服的id
var kf_id = 0;
var kf_name = '';
// 是否点击显示表情的标志
var flag = 1;
// 发送锁标识
var sendLock = 0;
// 是否显示默认的聊天记录
var commChat = 1;
// 两个时间段的消息相隔时间
var msg_time = 2;
var lockReconnect = false; //避免重复连接
var socket;
// 连接服务器
if (config != undefined && config.socket != undefined) {
// var loading = layer.load(1, {
// shade: [0.1, '#fff'] //0.1透明度的白色背景
// });
showloading(true);
// 创建一个Socket实例
// // 1console.log(config);
var url = config.socket + ':' + config.port;
createWebSocket(url);
// var socket = new WebSocket('ws://' + config.socket + ":" + config.port);
// 加锁
lockInput();
//showSystem({content: '连接中...'});
// document.getElementById('title').innerText = '连接中...';
// document.getElementById('title').innerText = showloading(true);
//
}
/**
* 创建一个socket对象
* @param {[type]} url [description]
* @return {[type]} [description]
*/
function createWebSocket(url) {
try {
socket = new WebSocket(url);
eventHandle();
} catch (e) {
reconnect(url);
}
}
/**
* socke操作
* @param {[type]} config [description]
* @return {[type]} [description]
*/
function eventHandle() {
socket.onclose = function () {
reconnect(url);
};
// 监听错误
socket.onerror = function (err) {
// showSystem({
// content: '连接失败'
// });
// document.getElementById('title').innerText = '连接失败';
layer.msg('连接失败,正在尝试重连...', { icon: 2, title: '错误提示' });
reconnect(url);
};
// 打开Socket
socket.onopen = function (res) {
showloading(false);
// 1console.log('握手成功');
// 登录
var login_data = '{"path":"api/userInit","param":{"type":"user", "kf_id" : "'
+ config.uid + '","user_id":"' + JSON.parse(config.token).user.user_id + '","user_name":"'
+ JSON.parse(config.token).user.user_name + '","avatar_url":"'
+ JSON.parse(config.token).user.avatar_url + '","group_id":"'
+ config.group + '","kf_type":"' + config.kf_type + '","data":"" },"access_token":"123456"}';
console.log(login_data);
// // 1console.log(login_data);
socket.send(login_data);
// 解锁
unlockInput();
};
// 监听消息
socket.onmessage = function (res) {
var data = eval("(" + res.data + ")");
// // 1console.log(data['message_type'], data);
switch (data['message_type']) {
// 服务端ping客户端
case 'ping':
ws.send('{"type":"ping"}');
break;
// 已经被分配了客服
case 'connect':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
if (chekc_msg) return;
// // 1console.log(data.data.common_words_map);return;
kf_id = data.data.kf_id;
kf_name = data.data.kf_name;
var is_online = data.data.is_online == 2 ? "<font style='font-size:8px'>(离线)</font>" : "<font style='font-size:8px; display: none;'>(离线)</font>";
// // 1console.log(is_online);
// var is_online = data.data.is_online == 2 ? showloading(true)+"<font style='font-size:8px'>(离线)</font>" : ''
showSystem({
content: '客服 ' + data.data.kf_name + ' 为您服务'
});
document.getElementById('title').innerHTML = '与 ' + kf_name + ' 交流中' + is_online;
if (1 == commChat) {
showChatLog();
}
unlockInput();
// 显示kf支付方式
showKfPayWay(data.data.common_words_map);
if (data.data.is_online == 1) {
$('#recharge').show();
}
break;
// 排队等待
case 'wait':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
if (chekc_msg) return;
lockInput();
document.getElementById('title').innerHTML = '请稍后再来';
showSystem(data.data);
break;
// 监测聊天数据
case 'chatMessage':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
if (chekc_msg) return;
showMsg(data.data);
break;
case 'text':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
// 1console.log(chekc_msg);
if (chekc_msg) return;
showMsg(data.data, data.data.content);
break;
case 'img':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
if (chekc_msg) return;
var payment_type = data.data.img_type
if (payment_type != '' && payment_type != null && payment_type == 'wexin') {
sessionStorage.setItem("payment_wexin", JSON.stringify(data.data));
} else if (payment_type != '' && payment_type != null && payment_type == 'alipay') {
sessionStorage.setItem("payment_alipay", JSON.stringify(data.data));
} else if (payment_type != '' && payment_type != null && payment_type == 'huabei') {
sessionStorage.setItem("payment_huabei", JSON.stringify(data.data));
} else if (payment_type != '' && payment_type != null && payment_type == 'credit') {
sessionStorage.setItem("payment_credit", JSON.stringify(data.data));
} else if (payment_type != '' && payment_type != null && payment_type == 'bank') {
sessionStorage.setItem("payment_bank", JSON.stringify(data.data));
}
var content = data.data.content
showMsg(data.data, content, 'img');
break;
// 问候语
case 'helloMessage':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
if (chekc_msg) return;
showMsg(data.data, 1);
break;
// 转接
case 'relinkMessage':
var chekc_msg = checkMsgIsRepeat(data.data.msg_id);
if (chekc_msg) return;
commChat = 2;
document.getElementById('title').innerHTML = '正在转接中...';
break;
// kf下线
case 'kf_offline':
$('#recharge').hide();
$('#title').children('font').show();
break;
// 客服上线
case 'kf_online':
// // 1console.log(data.data);
var kf_id = data.data.kf_id;
showKfPayWay(data.data.common_words_map);
$('#recharge').show();
// 添加离线
$('#title').children('font').hide();
break;
}
};
}
/**
* 重新连接
* @param {[type]} url [description]
* @return {[type]} [description]
*/
function reconnect(url) {
if (lockReconnect) return;
lockReconnect = true;
//没连接上会一直重连,设置延迟避免请求过多
setTimeout(function () {
createWebSocket(url);
lockReconnect = false;
}, 2000);
}
/**
* 获取kf支付类型
* @param {[type]} id [description]
* @return {[type]} [description]
*/
function showKfPayWay(data) {
var str = '';
$.each(data, function (i, v) {
str += "<div class='btn' onclick='getPayWay(this)'>" + v.type_name + "</div>";
});
str += "<div class='btn' onclick='getPayWay(this)'>我充好了</div>";
$('#recharge').html(str);
}
// 图片 文件上传
layui.use(['upload'], function () {
var upload = layui.upload;
// 执行实例
var uploadInstImg = upload.render({
elem: '#up-image' // 绑定元素
,
accept: 'images',
exts: 'jpg|jpeg|png|gif',
url: '/index/upload/uploadImg' // 上传接口
,
done: function (res) {
let url = res.data.src;
console.log(url);
let image = new Image();
image.src = url;
image.onload = function(){
let base64 = getBase64Image(image);
sendMsg(base64, 1, url);
}
},
error: function () {
// 请求异常回调
}
});
$('.layui-upload-file').hide();
});
$(function () {
// 监听输入改变发送按钮
$("#msg").bind('input porpertychange', function () {
if ($("#msg").val().length > 0) {
$(".layim-send").removeClass('layui-disabled');
} else {
$(".layim-send").addClass('layui-disabled');
}
});
// 点击发送
$("#send").click(function () {
sendMsg();
});
// 点击表情
$('#up-face').click(function (e) {
e.stopPropagation();
if (1 == flag) {
showFaces();
$('#face-box').show();
flag = 2;
} else {
$('#face-box').hide();
flag = 1;
}
});
// 监听点击旁边关闭表情
document.addEventListener("click", function () {
if (2 == flag) {
document.getElementById('face-box').style.display = 'none';
flag = 1;
}
});
});
// 发送消息
function sendMsg(sendMsg, is_img = 0, url = '') {
if (1 == sendLock) {
return false;
}
let content_type = '';
if (is_img === 1) {
content_type = 'img';
}
var msg = (typeof (sendMsg) == 'undefined') ? $('#msg').val() : sendMsg;
if ('' == msg) {
return false;
}
var msg_id = uuid();
var _html = $("#chat-list").html();
var time = getTime();
var content = is_img === 1 ? replaceContent('img[' + location.origin + url + ']') : replaceContent(msg);
// 检测是否显示时间
var next_time = $("#chat-list").find('span').last().text();
var check_time = checkMegTime(next_time, time, msg_time);
// // 1console.log(next_time, time);
// // 1console.log(check_time);
if (check_time) {
_html += '<li class="layim-chat-system"><span>' + time + '</span></li>';
}
_html += '<li class="layim-chat-li layim-chat-mine">';
_html += '<div class="layim-chat-user">';
_html += '<img src="' + JSON.parse(config.token).user.avatar_url + '"><cite>我</cite></div>';
_html += '<div class="layim-chat-text">' + content + ' </div></li>';
$('#chat-list').html(_html);
// 发送消息
socket.send(JSON.stringify({
path: "api/chat",
param: {
"type": "user",
"to_id": config.uid,
"to_name": config.name,
"group_id": "2",
"content": msg,
"content_type": content_type,
"msg_id": msg_id,
"from_name": JSON.parse(config.token).user.user_name,
"from_id": JSON.parse(config.token).user.user_id,
"from_avatar": JSON.parse(config.token).user.avatar_url,
"data": ""
},
"access_token": "123456",
}));
// 储存我发出的信息
var key = kf_id + '-' + config.uid;
// 1console.log(key);
// if (typeof (Storage) !== "undefined") {
var localMsg = getCache(key);
if (localMsg == null || localMsg.length == 0) {
localMsg = [];
}
localMsg.push({
type: 'mine',
name: '我',
time: time,
msg_id: msg_id,
content: content,
avatar: JSON.parse(config.token).user.avatar_url,
payment: '',
data: '',
message_type: ''
});
cacheChat({
key: key,
data: localMsg
});
// }
$('#msg').val('');
$(".layim-send").addClass('layui-disabled');
// 滚动条自动定位到最底端
wordBottom();
}
function getBase64Image(img) {
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();
var dataURL = canvas.toDataURL("image/"+ext);
return dataURL;
}
// 展示发送来的消息
function showMsg(info, content, img, flag) {
// 返回确定接收到消息
// return;
var msg_id = uuid();
socket.send(JSON.stringify({
path: 'api\/sendReceiptMsg',
param: { type: 'user', msg_id: info.msg_id },
access_token: '123456'
}));
var time = getTime();
var _html = $("#chat-list").html();
var content = $.trim(content);
var reg = /\[([^\s\[\]]+?)\]/g
if (reg.test(content)) {
content = 'face' + content
var content = replaceContent(content);
}
// var img = /img\[([^\s]+?)\]/g
// var connect_img = content.substring(0,4)
// 检测是否显示时间
var next_time = $("#chat-list").find('span').last().text();
var check_time = checkMegTime(next_time, info.time, msg_time);
if (check_time) {
_html += `<li class="layim-chat-system" id='${info.msg_id}'><span>` + info.time + `</span></li>`;
}
_html += `<li class="layim-chat-li" id='${info.msg_id}'>`;
_html += '<div class="layim-chat-user">';
_html += '<img src="' + info.avatar + '"><cite>' + info.name + '</cite></div>';
if (img == 'img') {
var type = 'img'
var payment = info.img_type
switch (payment) {
case 'wexin':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment1.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'alipay':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'huabei':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment34.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'credit':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment6.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'bank':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment2.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case '':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-photos" src="' + content + '" payment=' + payment + ' width="230px" height="100px"></div></li>';
default:
break;
}
} else {
var type = 'text'
_html += `<div class="layim-chat-text">` + content + `</div></li>`;
}
$('#chat-list').html(_html);
// 滚动条自动定位到最底端
wordBottom();
// 储存我收到的信息
var key = kf_id + '-' + config.uid;
// 1console.log(key);
if (typeof (Storage) !== "undefined" && typeof (flag) == "undefined") {
var localMsg = getCache(key);
if (localMsg == null || localMsg.length == 0) {
localMsg = [];
}
localMsg.push({
type: 'other',
name: info.name,
time: time,
content: content,
payment: info.img_type,
avatar: info.avatar,
message_type: type,
data: info.data
});
cacheChat({
key: key,
data: localMsg
});
}
}
// 缓存聊天数据 [本地存储策略]
function cacheChat(obj) {
if (typeof (Storage) !== "undefined") {
localStorage.setItem(obj.key, JSON.stringify(obj.data));
}
}
// 从本地缓存中,拿出数据
function getCache(key) {
return JSON.parse(localStorage.getItem(key));
}
// 对话框定位到最底端
function wordBottom() {
// 滚动条自动定位到最底端
var box = $(".layim-chat-main");
box.scrollTop(box[0].scrollHeight);
}
// 锁住输入框
function lockInput() {
sendLock = 1;
document.getElementById('msg').setAttribute('readonly', 'readonly');
}
// 解锁输入框
function unlockInput() {
sendLock = 0;
document.getElementById('msg').removeAttribute('readonly');
}
// 展示表情数据
function showFaces() {
var alt = getFacesIcon();
// // 1console.log(alt);
var _html = '<ul class="layui-layim-face" style="position: absolute;bottom: 0;height: 100px;background-color: white;">'
var len = alt.length;
for (var index = 0; index < len; index++) {
_html += '<li title="' + alt[index] + '" onclick="checkFace(this)"><img src="/static/customer/images/face/' + index + '.png" /></li>';
}
_html += '</ul>';
document.getElementById('face-box').innerHTML = _html;
}
// 选择表情
function checkFace(obj) {
var msg = document.getElementById('msg').value;
// // 1console.log(obj, msg);
document.getElementById('msg').value = msg + 'face' + obj.title + ' ';
document.getElementById('face-box').style.display = 'none';
$(".layim-send").removeClass('layui-disabled');
flag = 1;
}
// 系统消息
function showSystem(info) {
$("#chat-list").append('<li class="layim-chat-system"><span>' + info.content + '</span></li>');
}
// 展示本地聊天缓存
function showChatLog() {
var chatLog = getCache(kf_id + '-' + config.uid);
if (chatLog == null || chatLog.length == 0) {
return;
}
var _html = '';
var len = chatLog.length;
for (var i = 0; i < len; i++) {
var item = chatLog[i];
if ('mine' == item.type) {
// 检测上次聊天时间
var check_time = false;
if (i > 1) {
var check_time = checkMegTime(chatLog[i - 1].time, item.time, msg_time);
}
if (check_time) {
_html += '<li class="layim-chat-system"><span>' + item.time + '</span></li>';
}
_html += '<li class="layim-chat-li layim-chat-mine">';
_html += '<div class="layim-chat-user">';
_html += '<img src="' + item.avatar + '"><cite>' + item.name + '</cite></div>';
_html += '<div class="layim-chat-text">' + item.content + ' </div></li>';
} else if ('other' == item.type) {
_html += '<li class="layim-chat-system"><span>' + item.time + '</span></li>';
_html += '<li class="layim-chat-li">';
_html += '<div class="layim-chat-user">';
_html += '<img src="' + item.avatar + '"><cite>' + item.name + '</cite></div>';
if (item.message_type == 'img') {
var payment = item.payment
if (payment == undefined) {
payment = ''
}
switch (payment) {
case 'wexin':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment1.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'alipay':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'huabei':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment34.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'credit':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment6.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case 'bank':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-payment" src="/static/service/images/payment/ic_bg_payment2.png" payment=' + payment + ' width="230px" height="100px"></div></li>';
break;
case '':
_html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-photos" src="' + item.content + '" payment="" width="100px" height="100px"></div></li>';
// _html += '<div class="layim-chat-img" style="padding-top: 26px;background-color: transparent;min-height: 22px;line-height: 22px;margin-top: 25px;"><img class="layui-mylink-photos" src="data:image/png;base64,' + item.content + '" payment="" width="100px" height="100px"></div></li>';
default:
break;
}
} else {
_html += '<div class="layim-chat-text">' + item.content + '</div></li>';
}
}
}
document.getElementById('chat-list').innerHTML = _html;
// 滚动条自动定位到最底端
wordBottom();
}
//图片编码base64
function getBase64(imgUrl) {
window.URL = window.URL || window.webkitURL;
var xhr = new XMLHttpRequest();
xhr.open("get", imgUrl, true);
// 至关重要
xhr.responseType = "blob";
xhr.onload = function () {
if (this.status == 200) {
//得到一个blob对象
var blob = this.response;
// 1console.log("blob", blob)
// 至关重要
let oFileReader = new FileReader();
oFileReader.onloadend = function (e) {
let base64 = e.target.result;
sendMsg(base64)
};
oFileReader.readAsDataURL(blob);
}
}
xhr.send();
}
// 退出
function loginOut() {
window.history.go(-1);
}
function closeOut(index) {
layer.close(layer.index);
}
// $("#recharge").on("touchstart", function(e) {
// // 判断默认行为是否可以被禁用
// if (e.cancelable) {
// // 判断默认行为是否已经被禁用
// if (!e.defaultPrevented) {
// e.preventDefault();
// }
// }
// startX = e.originalEvent.changedTouches[0].pageX,
// startY = e.originalEvent.changedTouches[0].pageY;
// });
// $("#recharge").on("touchmove", function(e) {
// // 判断默认行为是否可以被禁用
// if (e.cancelable) {
// // 判断默认行为是否已经被禁用
// if (!e.defaultPrevented) {
// e.preventDefault();
// }
// }
// moveEndX = e.originalEvent.changedTouches[0].pageX,
// moveEndY = e.originalEvent.changedTouches[0].pageY,
// X = moveEndX - startX,
// Y = moveEndY - startY;
// // // 1console.log(X)
// //左滑
// if ( X > 0 ) {
// var num = parseInt($("#recharge").css('margin-left'));
// // // 1console.log(num + X);
// if(num + X < 0){
// $("#recharge").css('margin-left', num + X + 'px');
// }else{
// $("#recharge").css('margin-left', '0px');
// }
// }
// //右滑
// else if ( X < 0 ) {
// var num = parseInt($("#recharge").css('margin-left'));
// if(num + X > -185){
// $("#recharge").css('margin-left', num + X + 'px');
// }else{
// $("#recharge").css('margin-left', '-185px');
// }
// }else{
// // 1console.log('单击');
// }
// });
// 点击发送要获取的支付方式
// $(document).on('click','.btn',function(){
// // 1console.log(12312)
// var payment = $(this).text();
// sendMsg(payment)
// })
function getPayWay(_this) {
// 1console.log(_this);
var payment = $(_this).text();
sendMsg(payment);
}
//点击获取支付方式
$(document).on('click', '.layui-mylink-payment', function () {
var payment = $(this).attr('payment')
var alipay_data = sessionStorage.payment_alipay;
if (alipay_data) {
var src_alipay_origin = JSON.parse(alipay_data).content
var src_alipay = "data:image/jpg;base64," + src_alipay_origin
var alipay = JSON.parse(alipay_data).payment
var a_name = JSON.parse(alipay_data).data.name
var account_num = JSON.parse(alipay_data).data.account_num
var surname = a_name.substr(0, 1);
var uname = a_name.substr(1);
} else {
var alipay = ''
}
var wexin = sessionStorage.payment_wexin;
if (wexin) {
var src_wexin_origin = JSON.parse(wexin).content;
var src_wexin = "data:image/jpg;base64," + src_wexin_origin
} else {
var src_wexin = ''
}
var huabei = sessionStorage.payment_huabei;
if (huabei) {
var src_huabei_origin = JSON.parse(huabei).content;
var src_huabei = "data:image/jpg;base64," + src_huabei_origin
} else {
var src_huabei = ''
}
var credit = sessionStorage.payment_credit;
if (credit) {
var src_credit_origin = JSON.parse(credit).content;
var src_credit = "data:image/jpg;base64," + src_credit_origin
} else {
var src_credit = ''
}
var bank_data = sessionStorage.payment_bank;
if (bank_data) {
var bank = JSON.parse(bank_data).payment
var bank_name = JSON.parse(bank_data).data.name
var account_num_bank = JSON.parse(bank_data).data.account_num
var branch_bank = JSON.parse(bank_data).data.branch_bank
var open_bank = JSON.parse(bank_data).data.open_bank
} else {
var bank = ''
}
switch (payment) {
case 'wexin':
var _html = "";
_html += "<div style='width:100%;height:60%;background:white;border-radius: 3px;margin-top: -13px;'>"
_html += "<div style='text-align: center;'><img id='img_tp' src='" + src_wexin_origin + "' style='width: 130px;height: 130px;'><br /><font><small>微信扫一扫<small></font></div>"
_html += "</div><br />"
_html += `<div style='text-align: center;'><button style='color: white;background: #f14f2b;border-color: #f14f2b;border-radius: 3px;width: 100px;height: 34px;border: 0px;' onclick="saveFile('` + src_wexin_origin + `','` + new Date().getTime() + '.png' + `')">保存二维码</button></div>`
// _html += "<div style='text-align: center;'><button id='baocun' style='color: white;background: #f14f2b;border-color: #f14f2b;border-radius: 3px;width: 100px;height: 34px;border: 0px;' >保存二维码</button></div>"
layer.open({
title: ['提示', 'text-align: center;background-color: black;color: white;border-top-left-radius: 13px;border-top-right-radius: 13px;', '12312'],
type: 0,
content: _html,
anim: 5,
skin: "alipay",
btn: false,
closeBtn: 2,
tips: [1, '#c00']
});
break;
case 'alipay':
var _html = "";
_html += "<div align='center' style='width:100%;height:60%;background:white;border-radius: 3px;margin-top: 10px'>"
_html += "<div style='margin-top: -31px;background-color: #e4e2e2;'>复制支付宝账号,支付宝<font color='blue'>【转账】</font>付钱</div>"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>支付宝账号</font><font style='float: right'>" + account_num + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div><br />"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>支付宝姓</font><font style='float: right'>" + surname + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div><br />"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>支付宝名</font><font style='float: right'>" + uname + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div><br />"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>支付宝姓名</font><font style='float: right'>" + a_name + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div>"
if (src_alipay_origin) {
// var img_base = getBase64(src_alipay_origin);
// // 1console.log(src_alipay_origin);return;
_html += "<div style='width:100%;height:60%;background:white;border-radius: 3px;margin-top: 40px;'>"
_html += "<div style='float: left;text-align: center;'><img src='" + src_alipay_origin + "' style='width: 130px;height: 130px;'><br /><font size='3'><small>可直接扫码支付<small></font></div>"
_html += "<div style=''><br /><font style='font-size: 12px;'>打开支付宝使用扫一扫选择相册中的二维码</font></div>"
_html += "</div><br />"
_html += `<div style='text-align: center;'><button style='color: white;background: #f14f2b;border-color: #f14f2b;border-radius: 3px;width: 100px;height: 34px;border: 0px;' onclick="saveFile('` + src_alipay_origin + `','` + new Date().getTime() + '.png' + `')">保存二维码</button></div>`
}
_html += "</div>"
layer.open({
title: ['<img src="/static/customer/images/cz/zfb.png" style="width: 28px;height: 28px;margin-bottom: 6px;">&nbsp;&nbsp;' + '支付宝账号转账', 'text-align: center;background-color: black;color: white;border-top-left-radius: 13px;border-top-right-radius: 13px;', '12312'],
type: 0,
content: _html,
anim: 5,
skin: "alipay",
btn: false,
closeBtn: 2,
tips: [1, '#c00']
});
break;
case 'huabei':
var _html = "";
_html += "<div style='width:100%;height:60%;background:white;border-radius: 3px;margin-top: -13px;'>"
_html += "<div style='float: left;text-align: center;'><img src='" + src_huabei_origin + "' style='width: 130px;height: 130px;'><br /><font size='3'><small>可直接扫码支付<small></font></div>"
_html += "<div style=''><font><img src='/static/customer/images/cz/ic_huabei_cz.png' style='width: 28px;height: 28px;'>当前使用花呗支付</font><br /><font>请与充值客服确定金额</font><br /><font style='font-size: 12px;'>打开支付宝使用扫一扫选择相册中的二维码</font></div>"
_html += "</div><br />"
_html += `<div style='text-align: center;'><button style='color: white;background: #f14f2b;border-color: #f14f2b;border-radius: 3px;width: 100px;height: 34px;border: 0px;' onclick="saveFile('` + src_huabei_origin + `','` + new Date().getTime() + '.png' + `')">保存二维码</button></div>`
layer.open({
title: ['提示', 'text-align: center;background-color: black;color: white;border-top-left-radius: 13px;border-top-right-radius: 13px;', '12312'],
type: 0,
content: _html,
anim: 5,
skin: "alipay",
btn: false,
closeBtn: 2,
tips: [1, '#c00']
});
break;
case 'credit':
var _html = "";
_html += "<div style='width:100%;height:60%;background:white;border-radius: 3px;margin-top: -13px;'>"
_html += "<div style='text-align: center;'><img src='" + src_credit_origin + "' style='width: 130px;height: 130px;'><br /><font><small>支付宝|微信扫一扫<small></font></div>"
_html += "</div><br />"
_html += `<div style='text-align: center;'><button style='color: white;background: #f14f2b;border-color: #f14f2b;border-radius: 3px;width: 100px;height: 34px;border: 0px;' onclick="saveFile('` + src_credit_origin + `','` + new Date().getTime() + '.png' + `')">保存二维码</button></div>`
layer.open({
title: ['提示', 'text-align: center;background-color: black;color: white;border-top-left-radius: 13px;border-top-right-radius: 13px;', '12312'],
type: 0,
content: _html,
anim: 5,
skin: "alipay",
btn: false,
closeBtn: 2,
tips: [1, '#c00']
});
break;
case 'bank':
var _html = "";
_html += "<div align='center' style='width:100%;height:60%;background:white;border-radius: 3px;margin-top: -13px;'>"
// _html += "<div style='margin-top: -31px;background-color: #e4e2e2;'>复制支付宝账号,支付宝<font color='blue'>【转账】</font>付钱</div>"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>银行卡姓名</font><font style='float: right'>" + bank_name + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div><br />"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>银行卡号</font><font style='float: right'>" + account_num_bank + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div><br />"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>开户银行</font><font style='float: right'>" + branch_bank + "<i class='layui-icon' style='margin-left: 5px; float: right;' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div><br />"
_html += "<div style='width:100%;height:100%;'><font style='float: left;color: #504f4f;'>开户支行</font><font style='float: right'>" + open_bank + "<i class='layui-icon' style='margin-left: 5px; float: right; ' onclick='copyText(this)' title='复制'>&#xe655;</i></font></div>"
_html += "</div>"
layer.open({
title: ['<img src="/static/customer/images/cz/zfb.png" style="width: 28px;height: 28px;margin-bottom: 6px;">&nbsp;&nbsp;' + '银行卡账号转账', 'text-align: center;background-color: black;color: white;border-top-left-radius: 13px;border-top-right-radius: 13px;', '12312'],
type: 0,
content: _html,
anim: 5,
skin: "alipay",
btn: false,
closeBtn: 2,
tips: [1, '#c00']
});
break;
case '':
showBigPic()
default:
break;
}
})
/**
* 图片路径转base64
* @param {*} img
*/
function getBase64(img) { //传入图片路径返回base64
function getBase64Image(img, width, height) { //width、height调用时传入具体像素值控制大小 ,不传则默认图像大小
var canvas = document.createElement("canvas");
canvas.width = width ? width : img.width;
canvas.height = height ? height : img.height;
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
var dataURL = canvas.toDataURL();
return dataURL;
}
var image = new Image();
image.crossOrigin = '';
image.src = img;
var deferred = $.Deferred();
if (img) {
image.onload = function () {
deferred.resolve(getBase64Image(image)); //将base64传给done上传处理
}
var tmp_img = deferred.promise(); //问题要让onload完成后再return sessionStorage['imgTest']
// 获取base64
tmp_img.then(function (base64) {
return base64;
}, function (err) {
// 1console.log(err);
});
}
}
/**
* 在本地进行文件保存
* @param {String} data 要保存到本地的图片数据
* @param {String} filename 文件名
*/
function saveFile(data, filename) {
// // 1console.log(filename);
// return;
const save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
save_link.href = data;
save_link.download = filename;
const event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
save_link.dispatchEvent(event);
}
//显示大图
function showBigPic(src) {
layer.photos({
photos: {
data: [{
"alt": "大图模式",
"src": src
}]
},
shade: 0.5,
closeBtn: 2,
anim: 0,
resize: false,
success: function (layero, index) {
}
});
}
$(document).on('click', '.layui-mylink-photos', function () {
// 1console.log(src)
var src = $(this).attr('src')
layer.photos({
photos: {
data: [{
"alt": "大图模式",
"src": src
}]
},
shade: 0.5,
closeBtn: 2,
anim: 0,
resize: false,
success: function (layero, index) {
}
});
});
// 加载loading
function showloading(t) {
if (t) { //如果是true则显示loading
// 1console.log(t);
loading = layer.load(1, {
shade: [0.1, '#fff'] //0.1透明度的白色背景
});
} else { //如果是false则关闭loading
// 1console.log("关闭loading层:" + t);
layer.closeAll('loading');
}
}
$(document).on('click', '#baocun', function () {
// alert(123);
var src = $('#img_tp').attr('src');
SaveAs5(src)
// 1console.log(src)
})
function SaveAs5(imgURL) {
var oPop = window.open(imgURL, "", "width=1, height=1, top=5000, left=5000");
// 1console.log(oPop)
for (; oPop.document.readyState != "complete";) {
if (oPop.document.readyState == "complete") break;
}
oPop.document.execCommand("SaveAs");
oPop.close();
}
// 聊天框获取焦点时聊天列表弹到最下方
$("#msg").focus(function () {
wordBottom();
// setTimeout(function () {
// wordBottom();
// }, 1000);
});
// 当手机虚拟键盘弹起时聊天界面上弹
var wHeight = window.innerHeight; //获取初始可视窗口高度
window.addEventListener('resize', function () { //监测窗口大小的变化事件
var hh = window.innerHeight; //当前可视窗口高度
var viewTop = $('.layim-chat-main'); //可视窗口高度顶部距离网页顶部的距离
if (wHeight > hh) { //可以作为虚拟键盘弹出事件
viewTop.animate({
scrollTop: viewTop[0].scrollHeight
}); //调整可视页面的位置
} else { //可以作为虚拟键盘关闭事件
viewTop.animate({
scrollTop: viewTop[0].scrollHeight
});
}
wHeight = hh;
});
/**
* 复制文本到粘贴板
* @param {*} _this 当前元素
*/
function copyText(_this) {
// 获取父级元素文本内容
var tmp_text = $(_this).parent().text();
var text = tmp_text.substring(0, tmp_text.length - 1);
// 添加临时元素
$('body').append("<div style='display: block;' id='tmp-copy'>" + text + "</div>");
var copy_e = document.getElementById('tmp-copy');
if (document.body.createTextRange) { // 该属性只有IE支持
var range = document.body.createTextRange();
range.moveToElementText(copy_e);
range.select();
var copy = document.execCommand('Copy');
if (copy) {
layer.msg('复制成功');
} else {
layer.msg('复制失败');
}
} else if (window.getSelection) {
var selection = window.getSelection();
selection.removeAllRanges();
var range = document.createRange();
range.selectNodeContents(copy_e);
selection.addRange(range);
// 1console.log(selection);
var copy = document.execCommand('Copy');
selection.removeAllRanges();
if (copy) {
layer.msg('复制成功');
} else {
layer.msg('复制失败');
}
}
// 移除临时元素
$('#tmp-copy').remove();
// // 1console.log($('#tmp-copy').text());
}
/**
* 检测消息是否重复
* @param {*} uid 用户id
* @param {*} msg_id 消息id
*/
function checkMsgIsRepeat(msg_id) {
if (!msg_id) return false;
var dom = $('chat-list').find('#' + msg_id);
// 1console.log(dom.length);
if (!dom || dom.length == 0) return false;
return true;
}