Authored by 周少峰

Merge branch 'feature/cusService-codeRules' into hotfix/listGlobal

... ... @@ -65,7 +65,7 @@ processInfo.encryptedUid = encryptedUid;
originConf = JSON.parse(JSON.stringify(socketConf));
// 页面初始化
var _loadPage = function() {
function _loadPage() {
// 客服评价
var evalView = new view.Evaluate();
... ... @@ -632,7 +632,8 @@ var _loadPage = function() {
$.getJSON('//www.yohobuy.com/common/passport/?callback=?', param, function(jsonData) {
if (jsonData.code !== 200) {
return location.href = '//www.yohobuy.com/signin.html?refer=' + encodeURIComponent(location.href);
location.href = '//www.yohobuy.com/signin.html?refer=' + encodeURIComponent(location.href);
return;
}
// 点击刷新提示
... ... @@ -915,7 +916,7 @@ var _loadPage = function() {
processInfo.hasMore &&
fetchHistoryMsg();
});
};
}
// 检查支持性
if (util.isSupport()) {
... ...
... ... @@ -46,14 +46,70 @@ function Paste(sl, cb) {
this.input = '';
}
function _upload() {
var path;
var self = this;
if (self.isSending) {
return;
}
self.isSending = true;
$.ajax({
type: 'POST',
url: gDomains.imCs + '/fileManage/uploadFile',
data: self.formData,
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false
})
.done(function(res) {
if (res.code === 200) {
path = res.data.filePath;
self.uploadCb(path);
self.close();
}
})
.always(function() {
self.isSending = false;
});
}
function _drawPreview(url) {
var html;
var self = this;
var $prev = $('.preview-dialog');
var $img = $prev.find('.clip-img');
var len = $img.length;
if (len) {
$img.attr('src', url);
self.$preview = $prev;
return;
}
html = $viewHbs({src: url});
$('body').append(html);
$('.preview-dialog').css('z-index', 1090);
self.$preview = $('.preview-dialog');
// 绑定预览内事件
self.$preview.on('click', '.head-close, .cancel-btn', self.close.bind(self))
.on('click', '.confirm-btn', _upload.bind(self));
}
Paste.prototype = {
bindEvents: function() {
var self = this;
this.$el.addEventListener('paste', function(e) {
self.input = $('.text.msg-area').val();
var cbd = e.clipboardData;
var ua = window.navigator.userAgent;
var i;
var item;
var reader;
var file;
self.input = $('.text.msg-area').val();
// 如果是 Safari 直接 return
if (!(e.clipboardData && e.clipboardData.items)) {
... ... @@ -67,76 +123,27 @@ Paste.prototype = {
return;
}
for (var i = 0; i < cbd.items.length; i++) {
var item = cbd.items[i];
if (item.kind == 'file') {
var file = item.getAsFile();
if (file.size === 0) { return; }
for (i = 0; i < cbd.items.length; i++) {
item = cbd.items[i];
if (item.kind === 'file') {
file = item.getAsFile();
if (file.size === 0) {
return;
}
self.formData = new FormData();
self.formData.append('files[]', file, 'clip.jpg');
var _upload = function() {
if (self.isSending) return;
self.isSending = true;
$.ajax({
type: 'POST',
url: gDomains.imCs + '/fileManage/uploadFile',
data: self.formData,
processData: false, // 告诉jQuery不要去处理发送的数据
contentType: false
})
.done(function(res) {
if (res.code === 200) {
var path = res.data.filePath;
self.uploadCb(path);
self.close();
}
})
.fail(function() {
alert('图片发送失败、点击发送重试!');
})
.always(function() {
self.isSending = false;
});
};
var _bindPrevEvents = function() {
var $prev = self.$preview;
$prev.on('click', '.head-close, .cancel-btn', self.close.bind(self))
.on('click', '.confirm-btn', _upload);
};
var _drawPreview = function(url) {
var $prev = $('.preview-dialog');
var $img = $prev.find('.clip-img');
var len = $img.length;
if (len) {
$img.attr('src', url);
self.$preview = $prev;
return;
}
var html = $viewHbs({src: url});
$('body').append(html);
$('.preview-dialog').css('z-index', 1090);
self.$preview = $('.preview-dialog');
// 绑定预览内事件
_bindPrevEvents();
};
var reader = new FileReader();
reader.onload = function(e) {
reader = new FileReader();
reader.onload = function(e) { // eslint-disable-line
var base64 = e.target.result;
var image = new Image();
image.src = base64;
image.onload = function() {
$('.text.msg-area').val(self.input);
_drawPreview(base64);
_drawPreview.bind(self)(base64);
self.open();
};
};
... ... @@ -152,7 +159,7 @@ Paste.prototype = {
var $main = $('.preview-dialog .dialog-main');
// 机器人不支持
if(!view.processInfo.manual) {
if (!view.processInfo.manual) {
return;
}
... ...
... ... @@ -16,14 +16,16 @@ var cursor = {
$.fn.extend({
recordCursor: function() {
var pos = 0;
var $sel;
var $selLength;
var $el = $(this).get(0);
if ('selectionStart' in $el) {
pos = $el.selectionStart;
} else if ('selection' in document) {
$el.focus();
var $sel = document.selection.createRange();
var $selLength = document.selection.createRange().text.length;
$sel = document.selection.createRange();
$selLength = document.selection.createRange().text.length;
$sel.moveStart('character', -$el.value.length);
pos = $sel.text.length - $selLength;
... ... @@ -39,13 +41,15 @@ $.extend(cursor, {
* @param pos
*/
setCursor: function($el, pos) {
var range;
if ($el.setSelectionRange) {
// chrome and firefox support
$el.setSelectionRange(pos, pos);
$el.focus();
} else if ($el.createTextRange) {
// IE support
var range = $el.createTextRange();
range = $el.createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
... ... @@ -58,27 +62,32 @@ $.extend(cursor, {
* @param text 文本
*/
insertAtRecordCorsor: function(text) {
var $el;
var pos;
var start;
var end;
var newVal;
var self = cursor;
var $area = $('.msg-area');
var val = $area.val();
var record = self.posRecord;
if (record || record === 0) {
var start = val.substring(0, record);
var end = val.substring(record);
var newVal = [start, text, end].join('');
start = val.substring(0, record);
end = val.substring(record);
newVal = [start, text, end].join('');
} else {
var newVal = [val, text].join('');
newVal = [val, text].join('');
}
$area.val(newVal);
self.posRecord += text.length;
var $el = $area[0];
var pos = self.posRecord ? self.posRecord : newVal.length;
$el = $area[0];
pos = self.posRecord ? self.posRecord : newVal.length;
this.setCursor($el, pos);
}
})
});
module.exports = cursor;
... ...
... ... @@ -18,10 +18,7 @@ var _ajax = function(method, reqUrl, params) {
type: method || 'GET',
url: reqUrl,
data: params
})
.fail(function() {
alert('服务器开小差了,请稍后重试。');
});
});
};
/**
... ...
... ... @@ -60,6 +60,9 @@ function Evaluate() {
* 星评
*/
function _starChange(e) {
var i;
var len;
var $el;
var self = this,
$ct = $(e.currentTarget),
index = $ct.index(),
... ... @@ -75,8 +78,8 @@ function _starChange(e) {
4: '非常满意'
};
for (var i = 0, len = $list.length; i < len; i++) {
var $el = $($list[i]);
for (i = 0, len = $list.length; i < len; i++) {
$el = $($list[i]);
$el.index() <= index && $el.addClass('positive');
$el.index() > index && $el.removeClass('positive');
}
... ... @@ -89,8 +92,11 @@ function _starChange(e) {
/**
* 评价提交
*/
var _evalSubmit = function() {
var self = this,
function _evalSubmit() {
var data,
reasonIds,
idArray = [],
self = this,
$btnEval = $('.icon.evaluate'),
$modal = $('#makeEvaluation'),
reason = $modal.find('textarea').val().trim(),
... ... @@ -103,16 +109,13 @@ var _evalSubmit = function() {
self.submitting = true;
var data = {
data = {
conversationId: conMsg.conversationId,
encryptedUid: processSign.encryptedUid,
promoter: processSign.promoter,
stars: star
};
var reasonIds,
idArray = [];
if (star < 4) {
$.each(reasonTypes, function(index, item) {
idArray.push($(item).data('id'));
... ... @@ -142,7 +145,7 @@ var _evalSubmit = function() {
.always(function() {
self.submitting = false;
});
};
}
Evaluate.prototype = {
bindEvents: function() {
... ... @@ -160,14 +163,18 @@ Evaluate.prototype = {
open: function(close) {
var self = this;
var _resetEval;
var _show;
if (self.isOpen) return;
if (self.isOpen) {
return;
}
processSign.completeClose = close;
if (!processSign.manual) {
return;
}
var _resetEval = function() {
_resetEval = function() {
var btnText = close ? '提交并关闭' : '提交';
self.$view.find('.star-text').html('非常满意');
... ... @@ -177,13 +184,17 @@ Evaluate.prototype = {
self.$view.find('.submit').html(btnText);
};
var _show = function(data) {
_show = function(data) {
var i;
var len;
var dom = '';
_resetEval();
self.isOpen = true;
if (!data || !data.length) return self.$view.modal('show');
for (var i = 0, len = data.length; i < len; i = i + 2) {
if (!data || !data.length) {
return self.$view.modal('show');
}
for (i = 0, len = data.length; i < len; i = i + 2) {
dom += self.disTpl({
id1: data[i].id,
id1Content: data[i].content,
... ...