// TODO 临时构造plus对象,使得能够在浏览器中进行调试 //var plus = null; // 登录者相关信息(包括userAgent) var loginerInfo = null, // 基础环境信息(包括当前webview) baseEnv = null, keyword = null; // 搜索框 var $searchbar = $('.searchbar'), // 搜索输入框 $searchbarInput = $('.searchbar input'), // 搜索取消按钮 $searchCancelBtn = $('.searchbar-cancel'), // 搜索框下面悬浮的搜索提示 $searchSuggest = $('#search_suggest_text'), // 搜索结果展示容器 $searchtResult = $('#search_result'), // 搜索无结果时显示 $noResultWrap = $('#no_result_wrap'), $mingyiWrapper = $('#mingyi_wrapper'), $mingyiList = $('#mingyi_list'), $selectedNum = $('#selected_num'); // 分页查询最后一页 var lastId = 1, // iscroll 滚动条实例 iscroller; // 获取登录相关信息 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.floor($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.floor($target.height() / rowHeight) <= rowNum) && (preFidx < length)) { preFidx++; $target.html(preChar+replaceAll(text.slice(diff,preFidx+1), kws)+"..."); } if(preFidx == length && (Math.floor($target.height() / rowHeight) <= rowNum)) { diff = diff>0?(diff - 1):0; $target.html(preChar+replaceAll(text.slice(diff,preFidx), kws)); } else if((Math.floor($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) }); }, // 初始化“名医”视图列表 initMingYiViewList = function(data,keyword,isAppend) { var html = template("yisheng_li_tmpl", {list: data.list}), searchText = $searchbarInput.val().trim(); if(isAppend === true) { $mingyiList.append(html) } else { $mingyiList.html(html); } ellipsisText($mingyiList.find('.c-list-info'),searchText); }, // 分页查询列表 searchByPaging = function () { var kw = $searchbarInput.val(); // TODO 示例示例搜索参数 // id: 上次搜索结果列表最后一条记录id,type:6(进行中),query:搜素关键字,pageSize:每页条数 var url = "doctor/findFamousDoctor", params = { page:1, key: kw,pagesize:15,type:1,level: 1}; getReqPromise(url,params).then(function(res){ // TODO 为了测试先注释 var data = res; lastId = lastId+1; if(!iscroller) { iscroller = initScroller($searchtResult,url, function() { // 传递分页参数 return $.extend({},params,{page:lastId}); },function(data) { // TODO 示例数据 lastId = lastId+1; var kw = $searchbarInput.val(); initMingYiViewList(data,kw,true); iscroller.refresh(); }); } // TODO 示例数据data if(!data.list || !data.list.length) { $searchtResult.hide(); $noResultWrap.show(); } else { $noResultWrap.hide(); // TODO 示例数据data initMingYiViewList(data,kw); } iscroller.refresh(); }).catch(function(e) { console && console.error(e) }); }, // 滚动条分页实例初始化 initScroller = function($el,url,getData,pullUpAction) { var scroller = $el.initScroll({pullDown: false,pullUpAction: function() { var data = getData(); getReqPromise(url,data).then(function(data) { if(pullUpAction && $.isFunction(pullUpAction)) { pullUpAction(data); updatePullUpText(scroller,data.list); } }) }}); return scroller; }, // 获取分页搜索返回的最后一条记录的id getLastId = function(data) { var lastObj = data.list && data.list.length && data.list[data.list.length-1]; // 最后一条记录 if(lastObj) { return lastObj.id; } else { return null } }, // 更新分页上拉加载的提示文本 updatePullUpText= function(scroller,list) { var $wrap = $(scroller.wrapper), $pullupLabel = $wrap.find('.pullUpLabel'); if(!list || !list.length) { $pullupLabel.text('没有更多'); } else { $pullupLabel.text('上拉加载更多'); } scroller.on('refresh',function() { if(!list || !list.length) { $pullupLabel.text('没有更多'); } else { $pullupLabel.text('上拉加载更多'); } }); }, // 显示选中的人数 showSelectedNum = function() { var num = $searchtResult.find('input[type="checkbox"]:checked').length; if(num) { $selectedNum.text('('+num+'人)') } else { $selectedNum.text(''); } }, // 点击“确定”按钮处理方法 submit = function() { // TODO 这里需要补充处理逻辑 var checklength = $searchtResult.find('input[type="checkbox"]:checked'); if(checklength.length<=0){ mui.toast("请至少选择一名医生!"); return false; } var consultCode = localStorage.getItem("consult"); var doctors = new Array(); $searchtResult.find('input[type="checkbox"]:checked').each(function(){ doctors.push($(this).val()); }) sendPost("doctor/consult/transfer", { consult: consultCode, doctor: doctors.join(","), type: 1 //无用 }, null, function(res) { if(res.status == 200) { mui.toast("邀请成功"); setTimeout(function(){ plus.webview.currentWebview().close(); openWebview("../../zdzx/html/jiankangzixunxiangqing.html"); }, 1000); } }); }, // 绑定页面事件 bindEvents = function () { $searchtResult.on('click','li',function(e) { var $el = $(e.target); setTimeout(function() { showSelectedNum(); },0); if($el.attr('type')=="checkbox") { return ; } var checkbox = $(this).find('input[type="checkbox"]')[0]; if(checkbox.checked) { checkbox.checked = false; } else { checkbox.checked = true; } }); $searchbar.bind("click",function(){ var oldback = mui.back; mui.back=function(){ var wobj = plus.webview.getWebviewById("sousuoyisheng");//获取前一个页面ID if(wobj) { mui.fire(wobj, "focusAction"); } plus.webview.currentWebview().close(); oldback(); } mui.back(); }) }; // 页面业务处理流程开始 new Promise(function(resolve, reject) { // TODO 临时放开 // resolve(true); mui.plusReady(function() { // plus已经准备好,可以往下执行 resolve(true); }); }).then(function() { // 获取基础环境信息 return getBaseEnvPromise().then(function(env) { baseEnv = env; }).then(function() { // 获取登录医生信息 loginerInfo = getLoginerInfo(); $searchbar.searchBar(); self = plus.webview.currentWebview(); keyword = self.kw; console.log(keyword); if(keyword) { $searchbarInput.val(keyword); searchByPaging(); $searchtResult.show(); } else { $searchtResult.hide(); } // 绑定页面事件 bindEvents(); }) }).catch(function(e) { plus.nativeUI.closeWaiting(); console && console.error(e); });