// 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); })