// TODO 临时构造plus对象,使得能够在浏览器中进行调试
//var plus = null;
// 登录者相关信息(包括userAgent)
var loginerInfo = null,
// 基础环境信息(包括当前webview)
baseEnv = null,
self = null,
imMessages = null,
docInfo = null;
// 搜索框
var $searchbar = $('.searchbar'),
// 搜索输入框
$searchbarInput = $('.lin-search-ipt input'),
// 搜索取消按钮
$searchCancelBtn = $('.searchbar-cancel'),
// 搜索框下面悬浮的搜索提示
$searchSuggest = $('#search_suggest_text'),
// 搜索结果展示容器
$searchtResult = $('#search_result'),
// 搜索无结果时显示
$noResultWrap = $('#no_result_wrap'),
$doingWrapper = $('#doing_wrapper'),
$endWrapper = $('#end_wrapper'),
$qlWrapper = $('#ql_wrapper'),
$doingList = $('#doing_list'),
$endList = $('#end_list'),
$qlList = $('#ql_list'),
searchPage1,
searchPage2,
searchPage3,
searchPage4,
$moreResult1 = $('#doing_wrapper .more-result'),
$moreResult2 = $('#ql_wrapper .more-result');
$moreResult3 = $('#end_wrapper .more-result');
mui.plusReady(function() {
initKeyboardAndroid();
self = plus.webview.currentWebview();
docInfo = JSON.parse(plus.storage.getItem("docInfo"));
/**
* 预加载查询页面
*/
/*searchPage1 = mui.preload({
id:"sousuojuminoryisheng"+new Date().getTime(),
url: 'sousuojuminoryisheng.html'
});*/
/*searchPage2 = mui.preload({
id:"sousuoliaotianjilu"+new Date().getTime(),
url: 'sousuoliaotianjilu.html'
});*/
/*searchPage3 = mui.preload({
id:"sousuosimpleliaotianjilu-ys"+new Date().getTime(),
url: 'sousuosimpleliaotianjilu-ys.html'
});*/
/*searchPage4 = mui.preload({
id:"sousuoqunliao"+new Date().getTime(),
url: 'sousuoqunliao.html'
});*/
});
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
window.addEventListener("initSearch", function(e){
imMessages = e.detail.imMessages;
openSoftKeyboard();
setTimeout(function(){
$("#searchPut").focus();
},500)
})
// 获取登录相关信息
var getLoginerInfo = function() {
// 登录的相关信息
var userAgent = plus && JSON.parse(plus.storage.getItem("userAgent"))
return {
userAgent: userAgent
}
},
// 获取基础环境信息
getBaseEnvPromise = function () {
var env = {
webview: plus&&plus.webview.currentWebview()
};
return Promise.resolve().then(function(res) {
return env;
});
},
// $el: $('.c-content-warp')
getRowProps = function ($el) {
var $textEllipsis = $el.find('.j-text-ellipsis'),
$text = $textEllipsis.eq(0),
$chart = $text.text('a'),
enWidth = $chart.width(),
$chart = $text.text('中'),
zhWidth = $chart.width(),
lineHeight = parseFloat($chart.css("lineHeight"), 10),
rowHeight = $chart.height();
$chart.text('');
return {
chartWidth: {
zh: zhWidth,
en: enWidth
},
rowHeight: Math.max(rowHeight, lineHeight),
rowWidth: $el.width()
};
},
replaceAll = function (text, arr) {
var html = text;
_.each(arr,function(kw) {
var reg = new RegExp(kw+"(?!>)","gi");
html = html.replace(reg,''+kw+'');
});
return html;
},
highlineKeyword = function ($el,searchText) {
var props = getRowProps($el),
chartWidth = props.chartWidth,
rowHeight = props.rowHeight,
rowWidth = props.rowWidth,
// 每行显示字符数(以中文字符为标准计算)
chartNum = Math.floor(rowWidth / chartWidth.zh),
// 排除“咨询问题:”字符及前后“...”所占宽度
exceptNum = 0,
// 行数
rowNum = 1,
// 预计显示总字符数
expectedNum = chartNum * rowNum - exceptNum,
$target = $el.find('.j-text-ellipsis'),
// 目标文本
text = $target.attr('data-text').trim(),
length = text.length,
// 关键字数组
kws = searchText.trim().replace(/\s+/g," ").split(" ");
var fidx = 0,preFidx,diff = 0;
$target.html(replaceAll(text, kws));
if(Math.ceil($target.height() / rowHeight) <= rowNum) {
return ;
}
if(text.length > expectedNum) {
fidx = text.indexOf(kws[0])+kws[0].length-1;
diff = fidx - expectedNum + 1;
preFidx = fidx;
diff = (diff<0)?0:diff;
var preChar = (diff>0)?"...":"";
$target.html(preChar+replaceAll(text.slice(diff,preFidx+1), kws)+"...");
while((Math.ceil($target.height() / rowHeight) <= rowNum) && (preFidx < length)) {
preFidx++;
$target.html(preChar+replaceAll(text.slice(diff,preFidx+1), kws)+"...");
}
if(preFidx == length && (Math.ceil($target.height() / rowHeight) <= rowNum)) {
diff = diff>0?(diff - 1):0;
$target.html(preChar+replaceAll(text.slice(diff,preFidx), kws));
} else if((Math.ceil($target.height() / rowHeight) > rowNum)) {
$target.html(preChar+replaceAll(text.slice(diff,preFidx), kws)+"...");
}
}
},
ellipsisText = function ($elements, searchText) {
//$el.ellipsis({ row: 2});
_.each($elements,function(el) {
highlineKeyword($(el),searchText)
});
},
// 控制搜索关键字悬浮提示的显示
showSearchSuggest = function(text) {
var suggestText = '搜索“'+text+'”';
// 如果text不为空,则显示;否则隐藏
if(text&&text.trim().length) {
$searchSuggest.text(suggestText);
$searchSuggest.show();
} else {
$searchSuggest.text('');
$searchSuggest.hide();
}
},
// 初始化视图列表
initDoingViewList = function(list) {
var searchText = $searchbarInput.val().trim();
template.helper("setAge", function(timestamp) {
return calcAge(timestamp);
});
$doingWrapper.hide();
$endWrapper.hide();
$qlWrapper.hide();
if(list.users.length>0){//医生
var html = template("yis_li_tmpl", {list: list.users.slice(0,3) || []});
$doingList.html(html);
$doingWrapper.show();
if(list.users.length>3){
$doingWrapper.find('.more-result').css("display","block");
}else{
$doingWrapper.find('.more-result').css("display","none");
}
ellipsisText($doingList.find('.c-content-warp'),searchText);
}
if(list.sessions.length>0){//群聊
var groupList = _.map(list.sessions, function(o){
if(o.members.length > 0){
var member = [];
for(i=0; i3){
$qlWrapper.find('.more-result').css("display","block");
}else{
$qlWrapper.find('.more-result').css("display","none");
}
ellipsisText($qlList.find('.c-content-warp'),searchText);
}
// if(list.messages.length>0){//聊天记录
// var chatList = _.map(list.messages, function(o){
// o.amount = o.messages.length;
// o.content = o.messages[0].content;
// o.msgId = o.messages[0].id;
// return o;
// });
// var html = template("ltjl_li_tmpl", {list: chatList});
// $endList.html(html);
// $endWrapper.show();
// if(list.messages.length>3){
// $endWrapper.find('.more-result').css("display","block");
// }else{
// $endWrapper.find('.more-result').css("display","none");
// }
// ellipsisText($endList.find('.c-content-warp'),searchText);
// }
plus.nativeUI.closeWaiting();
loadPhoto();
},
loadPhoto = function(type){
$.each($('#search_result li[data-load=1]'), function(i, v) {
imClient.Sessions.getParticipantsAvatars($(v).attr('data-code'), function(rs){
if(rs.length>0){
var $photo = $(v).find('.c-avatar-m');
if($(v).attr('data-type')==2){
for(var k in rs){
if(docInfo.code != rs[k].id){
$photo.html('');
break;
}
}
} else {
$photo.html(setPhoto(rs));
}
}
}, function(){
})
});
},
setPhoto = function(groupPhoto){
var images = '';
var cssArr=null;
if(groupPhoto.length>=5){
cssArr = ["top: 0;left: 50%;margin-left: -8px;","top: 12px;left: 2px;","top: 12px;left: 28px;","top: 27px;left: 5px;","top: 27px;left: 24px;"];
}else if(groupPhoto.length==4){
cssArr = ["top: 5px;left: 3px;","top: 5px;left: 25px;","top: 27px;left: 3px;"," top: 27px;left: 25px;"];
}else if(groupPhoto.length==3){
cssArr = ["top: 5px;left: 50%;margin-left: -10px;","top: 20px;left: 3px;","top: 20px;left: 25px;"];
}else if(groupPhoto.length==2){
cssArr = ["top: 5px;left: 50%;margin-left: -10px;"," top: 19px;left: 24px;"];
}else if(groupPhoto.length==1 || groupPhoto.length==0){
cssArr = ["position: absolute;width: 50px;height: 50px;border-radius: 50px;background-size: 50px;overflow: hidden;"];
}
for(var i in groupPhoto){
if(i>4) break;
if(groupPhoto[i].avatar){
images+=''+
'
'+
'
';
}else{
if(groupPhoto[i].role=="doctor"){
images+=''+
'
'+
'
';
}else{
images+=''+
'
'+
'
';
}
}
}
return images;
},
// 搜索框搜索执行方法
search = function () {
plus.nativeUI.showWaiting();
var kw = $searchbarInput.val().trim();
// imMessages有值表示转发中的搜索
var excludeTopicEndedSessions = imMessages?false:"";//excludeTopicEndedSessions:(空值表示查询所有,false表示查询咨询中的居民,true表示查询咨询已结束的居民)
imClient.Search.Doctor.searchAll(docInfo.code, kw, excludeTopicEndedSessions, function(res){
if((res && res.users.length==0 && res.sessions.length==0))
{
$noResultWrap.show();
$searchtResult.hide();
plus.nativeUI.closeWaiting();
} else {
$noResultWrap.hide();
$searchtResult.show();
$doingWrapper.show();
initDoingViewList(res);
}
}, function(res){
console.error(res);
mui.toast("搜索失败!");
})
},
calcAge = function(timestamp){
var date = new Date(timestamp);
Y = date.getFullYear() + '-';
M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
D = date.getDate() < 10 ?'0'+date.getDate():date.getDate();
var birthday = Y+M+D;
var r = birthday.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null)return false;
var d= new Date(r[1], r[3]-1, r[4]);
if(d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]){
var Y = new Date().getFullYear();
return (Y-r[1]);
}
}
// 绑定页面事件
bindEvents = function () {
$searchbarInput.on('input', function() {
var text = $(this).val().trim();
$searchtResult.hide();
$('#no_result_wrap').hide();
showSearchSuggest(text);
}).on('keydown',function(e) {
if (e.which === 13) {
search();
}
});
$('.lin-search-ipt a').on('tap', function(){
plus.webview.currentWebview().hide();
mui.later(function(){
$('#search_result').hide();
$('#no_result_wrap').hide();
$('#searchPut').val("");
$("#search_suggest_text").html("").hide();
$("#searchPut").blur();
}, 50)
})
$searchSuggest.on('click',function() {
$searchSuggest.hide();
search();
$searchtResult.show();
});
$moreResult1.on('click',function() {
var kw = $searchbarInput.val().trim();
mui.openWindow({
id:"sousuojuminoryisheng"+new Date().getTime(),
url: 'sousuojuminoryisheng.html',
extras: {kw:kw,pageType:"2",imMessages:imMessages}
});
});
$moreResult2.on('click',function() {
var kw = $searchbarInput.val().trim();
mui.openWindow({
id:"sousuoqunliao"+new Date().getTime(),
url: 'sousuoqunliao.html',
extras: {kw:kw,pageType:"2",imMessages:imMessages}
});
});
$moreResult3.on('click',function() {
var kw = $searchbarInput.val().trim();
mui.openWindow({
id:"sousuoliaotianjilu"+new Date().getTime(),
url: 'sousuoliaotianjilu.html',
extras: {kw:kw,pageType:"2",imMessages:imMessages}
});
});
$searchtResult.on('tap','li',function() {
if(imMessages){//转发消息
var oCode = $(this).attr("data-code");
mui.confirm("是否确认将消息逐条转发给"+$(this).attr("data-name")+"?", "提示", ["不了,谢谢", "确认转发"], function(e) {
if(e.index == 0) {
} else {
Promise.all(_.map(imMessages,function(msg){
return new Promise(function(resolve, reject) {
imClient.Sessions.sendMessage(oCode, docInfo.code, docInfo.name, msg.content,msg.type, function(res){
resolve(true);
}, function(msg){
resolve(true);
})
})
})).then(function() {
mui.toast("转发成功");
mui.fire(self.opener().opener(), "revertZf");
self.opener().close();
self.close();
}).catch(function(e){
console.log(e)
})
}
})
}else{
var $this = $(this),
code = $this.attr('data-code'),
name = $this.attr('data-name'),
photo = $this.attr('data-photo'),
sex = $this.attr('data-sex'),
groupType = $this.attr('data-groupType'),
msgId = $this.attr('data-msgId'),
type = $this.attr('data-type');
if(type=="yisheng"){//医生和医生间会话
openWebview("../../message/html/p2p.html",{sessionId: code, sessionName: name, type:"doctor-to-doctor"});
}else if(type=="sessions"){//团队群聊
openWebview("../../message/html/tuanduiqunliao.html",{sessionId: code, sessionName: name});
}
}
});
};
$(function(){
// $searchbarInput.val('').focus();
$searchtResult.hide();
})
// 页面业务处理流程开始
new Promise(function(resolve, reject) {
// TODO 临时放开
// resolve(true);
mui.plusReady(function() {
// hrefhrefplus已经准备好,可以往下执行
resolve(true);
});
}).then(function() {
// 获取基础环境信息
return getBaseEnvPromise().then(function(env) {
baseEnv = env;
}).then(function() {
// 获取登录医生信息
loginerInfo = getLoginerInfo();
// $searchbar.searchBar();
// 绑定页面事件
bindEvents();
})
}).catch(function(e) {
plus.nativeUI.closeWaiting();
console && console.error(e);
});
template.helper('getImgUrl', function(str){
return getImgUrl(str);
})