mui.init(); var scroller1 = null, page = 0, pagesize = 10; var type = null; //医生收藏过来为1,全部为0 var isAdmin; //判断是否是新的接口 var patient = null; var patientName = ""; var isSent, firstCatId, pCodes, referrer; mui.plusReady(function() { self = plus.webview.currentWebview(); isAdmin = self.isAdmin; type = self.type; patient = self.patient; patientName = self.patientName; isSent = self.isSent; firstCatId = self.firstCatId; pCodes = self.pCodes, referrer = self.referrer; loaded(); initKeyboardAndroid(); openSoftKeyboard(); $('#searchPut').focus(); initLatestSearch(); initHotSearch(); bindEvents(); }); function bindEvents() { $('#cancel').on('click', function() { plus.webview.currentWebview().close(); mui.later(function() { $('#wrapper').hide(); $('#no_result_wrap').hide(); $('#searchValWrap').hide(); $('#searchPut').val(""); }, 500) }); $('#searchPut').on('input', function() { var html = $(this).val(); var reg = new RegExp("<" + "(?!>)", "gi"); html = html.replace(reg, '<'); var reg = new RegExp(">" + "(?!>)", "gi"); html = html.replace(reg, '>'); $('#searchVal').html(html); $(".searchbar-clear").toggle($(this).val() != ""); $('#searchValWrap').toggle($(this).val() != ""); $("#preSearchPanel").hide(); $('#wrapper').hide(); $("#no_result_wrap").hide(); }); $('#searchValWrap').on('tap', function() { $(this).hide(); var val = $('#searchPut').val(); searchArticle(true, val); }); $(".searchbar-clear").on('click', function() { $('#searchPut').val(""); $('#searchVal').html(""); $('#searchValWrap').hide(); $('#wrapper').hide(); $("#preSearchPanel").show(); return false; }); $('#articleList').on('tap', 'li', function() { var code = $(this).attr("data-code"); if(isAdmin){ openWebviewExtras("../../home/html/jianjiaotuisong-xiangqing.html",{articleId:code}); }else{ openWebview("article-info.html", { articleId:code, patient: patient, patientName: patientName, pCodes: pCodes, showHandleBar: true, referrer: referrer }); } }); $("#preSearchPanel").on('tap', 'span', function() { var searchValue = $(this).html(); $('#searchVal').html(searchValue); $('#searchPut').val(searchValue); searchArticle(true, searchValue); }); template.helper("setKeyword", function(str, kw){ var reg = new RegExp(kw + "(?!>)", "gi"); str = str.replace(reg, '' + kw + ''); return str; }); template.helper("setContent", function(str){ var reg=/<[^<>]+>/g; str = str.replace(reg, ''); return str; }); template.helper("formatDate", function(str){ if(str){ return str.substr(0,19) }else{ return ""; } }) } function searchArticle(isInit, filter) { if(isInit){ page = 0; } var docInfo = JSON.parse(plus.storage.getItem('docInfo')); var url = '/doctor/jkEdu/article/PC/queryArticlePcList' params = { articleTitle: filter, currentUserRole: docInfo.hospital, currentUserRoleLevel: 4, iDisplayStart: page * pagesize, iDisplayLength: pagesize, isAuthentication: 1, //已认证过的文章 roleType: isAdmin ? 2 : 1 //1、普通医生,2、管理员 }; if(isSent){ url = 'doctor/jkEdu/article/PC/pushArticleList'; params.sendType = isAdmin ? 2 : 1 //1、普通医生,2、管理员 params.currentRoleCode = docInfo.hospital; }else{ params.firstLevelCategoryId = firstCatId; } if(patient){ params.patient = patient; } if(isAdmin){ var selectedRole = JSON.parse(plus.storage.getItem("selectedRole")); params.currentUserRole = selectedRole.code; params.currentUserRoleLevel = selectedRole.level; } sendGet(url, params, queryFails, function(res) { if(res.status == 200) { var list = res.data.aaData; updatePullUpText(scroller1, list); if(isSent){ var html = template("articleLi2", {list: list, kw: filter}); }else{ var html = template("articleLi", {list: list, kw: filter}); } var $articleList = $("#articleList"); if(isInit) { $articleList.empty().append(html); if(list.length == 0) { $("#no_result_wrap").show(); } } else { $articleList.append(html); } // ellipsisText($articleList.find('.c-content-warp'), filter); page += 1; $('#wrapper').show(); $("#preSearchPanel").hide(); scroller1.refresh(); } else { queryFails(res); } }, true) } function queryFails(res) { if(res.msg) { plus.nativeUI.toast(res.msg); } else { plus.nativeUI.toast("搜索历史加载失败!"); } } function querySuccess(res) { if(res.status == 200) { } else { queryFails(res); } } function loaded() { scroller1 = $("#wrapper").initScroll({ pullDownAction: function() { page = 0, pagesize = 10; var val = $('#searchPut').val(); searchArticle(true, val); }, pullUpAction: function() { var val = $('#searchPut').val(); searchArticle(false, val); } }); } document.addEventListener('touchmove', function(e) { e.preventDefault(); }, false); function initLatestSearch() { plus.nativeUI.showWaiting(); var params = {}; params.type = 2; params.page = 0; params.pagesize = 10; sendPost("/doctor/health/edu/listLabel", params, function(res) { initLableFail(res); }, function(res) { plus.nativeUI.closeWaiting(); if(res.status == 200) { var html = ""; for(var j in res.list) { var data = res.list[j]; html += "" + data.keyword + "" } $("#latestSearch").html(html); } else { initLableFail(res); } }) } function initHotSearch() { plus.nativeUI.showWaiting(); var params = {}; params.type = 1; params.page = 0; params.pagesize = 30; sendPost("/doctor/health/edu/listLabel", params, function(res) { initLableFail(res); }, function(res) { plus.nativeUI.closeWaiting(); if(res.status == 200) { var html = ""; for(var j in res.list) { var data = res.list[j]; html += "" + data.keyword + "" } $("#hotSearch").html(html); } else { initLableFail(res); } }) } function initLableFail(res) { plus.nativeUI.closeWaiting(); if(res.msg) { plus.nativeUI.toast(res.msg); } else { plus.nativeUI.toast("搜索历史加载失败!"); } } var updatePullUpText = function(scroller, list) { var $wrap = $(scroller.wrapper), $pullupLabel = $wrap.find('.pullUpLabel'); $(".pullUp").removeClass("loading"); if(!list) { $pullupLabel.text('没有更多'); } else if(list.length < 10) { $(".pullUp").hide(); } else { $pullupLabel.text('上拉加载更多'); } scroller.on('refresh', function() { if(!list) { $pullupLabel.text('没有更多'); } else if(list.length < 10) { $(".pullUp").hide(); } else { $pullupLabel.text('上拉加载更多'); } }); }, 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) }); };