// 基本信息(包括userAgent) var baseInfo = null, // 基础环境信息(包括当前webview) baseEnv = null; // 搜索框 var $searchbar = $('.searchbar'), // 搜索输入框 $searchbarInput = $('.lin-search-ipt input'), // 搜索取消按钮 $searchCancelBtn = $('.searchbar-cancel'), // 搜索框下面悬浮的搜索提示 $searchSuggest = $('#search_suggest_text'), // 搜索结果展示容器 $searchtResult = $('#search_result'), // 搜索无结果时显示 $noResultWrap = $('#no_result_wrap'), $patiList = $('#pati_list'), // 分页查询最后一页 $history = $('#history_search'),//历史搜索 $hisSearList = $('#his_sear_list'); var page = 0, search_keyword = "", //记录搜索框的内容 lastTeamId,// 从缓存取出所选团队 pagesize = 15, historyData=[],//历史数据 historyStr, content, //要发送的模板参数 modelCode, images; var self; mui.plusReady(function() { // initKeyboardAndroid(); docInfo = JSON.parse(plus.storage.getItem("docInfo")); historyStr = plus.storage.getItem("juminSearchHis"+docInfo.code); if(historyStr){ historyStr = JSON.parse(historyStr).join(','); historyData = historyStr.split(','); }else{ historyData = []; } }) window.addEventListener("initSearch", function(e){ // openSoftKeyboard(); baseInfo = getBaseInfo(); $("#searchAll").show(); setTimeout(function(){ $("#searchPut").focus(); },100) if(historyData.length){ $history.show(); } lastTeamId = plus.storage.getItem("selectedTeamId"); }) // 获取登录相关信息 var getBaseInfo = function() { // 登录的相关信息 var userAgent = JSON.parse(plus.storage.getItem("userAgent")) return { userAgent: userAgent } }, // 获取基础环境信息 getBaseEnvPromise = function () { var env = { webview: plus.webview.currentWebview() } return Promise.resolve().then(function(res) { return env; }) }, historyList = function(){ historyStr = plus.storage.getItem("juminSearchHis"+docInfo.code); if(historyStr){ historyStr = JSON.parse(historyStr).join(','); historyData = historyStr.split(','); }else{ historyData = []; } var html = template('his_list_tmpl',{list:historyData}); $hisSearList.html(''); $hisSearList.append(html); }, // 初始化“患者”视图列表 initPatientViewList = function(data,keyword,isAppend) { data = _.map(data,function(item){ item.photo = getImgUrl(item.photo); return item; }) var html = template("pati_list_tmpl", {list: data}); searchText = $searchbarInput.val().trim(); if(isAppend == true){ $patiList.append(html) }else{ mui('#jumin_wrapper').pullRefresh().scrollTo(0,0) $patiList.empty().append(html) mui('#jumin_wrapper').pullRefresh().refresh(true);//重置 } ellipsisText($patiList.find('li'),searchText); }, // $el: $('.c-content-warp') getRowProps = function ($el) { var $textEllipsis = $el, $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, // 目标文本 text = $.trim($target.attr('data-text')), length = text.length, // 关键字数组 kws = $.trim(searchText).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) { _.each($elements,function(el) { var $textEl = $(el).find(".j-text-ellipsis"); _.each($textEl, function(t){ highlineKeyword($(t),searchText) }) }); }, // 控制搜索关键字悬浮提示的显示 showSearchSuggest = function(text) { var suggestText = '搜索“'+text+'”'; // 如果text不为空,则显示;否则隐藏 if(text&&text.trim().length) { $searchSuggest.text(suggestText); $searchSuggest.show(); } else { $searchSuggest.text(''); $searchSuggest.hide(); } }, // 分页查询列表 searchByPaging = function (isAppend,fun) { $history.hide(); $("#searchPut").blur(); search_keyword = $searchbarInput.val(); if(!$.trim(search_keyword)) { return ; } plus.nativeUI.showWaiting(); var url = "/doctor/concern/getConcernPatients", params = { page:page,pageSize:pagesize,patientName:search_keyword}; getReqPromise(url,params, "GET").then(function(res){ if(res.status == 200) { if((page==0 && !res.data) || (page==0 && !res.data.length)) { $searchtResult.hide(); $noResultWrap.show(); } else { $noResultWrap.hide(); $searchtResult.show(); initPatientViewList(res.data,search_keyword,isAppend); if(res.data.length < pagesize){ fun&&fun.call(this,true) }else{ fun&&fun.call(this,false) } } }else{ mui.toast("搜索失败"); } plus.nativeUI.closeWaiting(); }).catch(function(e) { plus.nativeUI.closeWaiting(); console && console.error(e) }) }, // 绑定页面事件 bindEvents = function (){ mui.init({ pullRefresh : { container:'#jumin_wrapper', up : { height:50, contentinit: '', contentdown: '', contentrefresh : "正在加载...", contentnomore:'没有更多数据了', callback: function() { var self = this; page++; searchByPaging(true,function(value){ setTimeout(function(){ self.endPullupToRefresh(value); },500) }) } } } }) $('#his_scroll').css({ 'height':$(window).height()-158 }) mui('#his_scroll').scroll({ bounce: true, //是否启用回弹 }) $searchbarInput.on('input', function() { var text = $(this).val().trim(); $searchtResult.hide(); $('#no_result_wrap').hide(); if(text.length > 0){ $("#searchAll").hide(); $history.hide(); }else{ $("#searchAll").show(); $history.show(); } showSearchSuggest(text); }).on('keydown',function(e) { if (e.which === 13) { page = 0; $searchSuggest.hide(); searchByPaging(false); //保存历史数据20个 saveHisData(); } }); $('#clear_his_data').on('tap', function(){ plus.storage.removeItem("juminSearchHis"+docInfo.code); historyList(); $history.hide(); }) $hisSearList.on('click','.his-list',function(){ var $that = $(this); page = 0; $("#searchAll").hide(); $searchSuggest.hide(); $history.hide(); $searchbarInput.val($that.text()) searchByPaging(false); }) $('.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() { page = 0; $searchSuggest.hide(); searchByPaging(false); //保存历史数据20个 saveHisData() }); var acTiveId='activeId';//选中的ID $patiList.on('tap','li[data-patient-code]',function(e) { var code = $(this).attr("data-patient-code"); var mobile = $(this).attr("data-patient-phone"); var address = $(this).attr("data-patient-address"); var isCheck = $(this).attr("check"); var id = $(this).attr('id'); if(id != acTiveId ){ //如果点击的不是之前选中的 $('#'+acTiveId).find('.checboxImg').find('img').attr('src','../images/checbox-false.png'); $('#'+acTiveId).removeAttr('id'); $(this).find('.checboxImg').find('img').attr('src','../images/checbox-true.png'); $(this).attr('check','yes'); $(this).attr('id',acTiveId); } else { //如果点击的是自己的话 if(isCheck == 'no'){ $(this).find('.checboxImg').find('img').attr('src','../images/checbox-true.png'); $(this).attr('check','yes'); } else { $(this).find('.checboxImg').find('img').attr('src','../images/checbox-false.png'); $(this).attr('check','no'); $(this).removeAttr('id',acTiveId); } } // if(baseEnv.webview.origin=="suifang") {//“随访”功能 // if(baseEnv.webview.follow_type == 1){ // openWebview("../../suifang/html/add_plan.html",{patientInfo: {code:code,mobile:mobile,address:address},chooseDate:baseEnv.webview.chooseDate}); // return false; // } // if(baseEnv.webview.follow_type == 2){ // openWebview("../../suifang/html/follow_way.html",{patientInfo: {code:code,mobile:mobile,address:address}}); // return false; // } // }else{ // openWebview("../../huanzhe/html/huanzhexinxi.html",{ // patiCode: code // }); // } return false; }) $(".send_btn").on('tap', function(){ var patiCode =$('#'+acTiveId).attr('data-patient-code'); if(!patiCode) {mui.toast("请选择居民再进行发送");return}; dialog({ content: "发出后无法变更,是否确认发送给居民?", okValue: "继续发送", ok: function(){ var url = "doctor/health/guidance/add", params = { patient: patiCode, content: content, modelCode: modelCode, images: images }; console.log(params) plus.nativeUI.showWaiting(); sendPost(url, params, null, function(res){ if (res.status == 200) { mui.toast("发送成功!"); var main =plus.webview.getWebviewById('guidance_list'); mui.fire(main,'refresh'); var self = plus.webview.currentWebview(), opener = self.opener(), pre_opener = self.opener().opener(); if(opener.id == "jkzd"){ //自己的模板详情 if(pre_opener.id == "guidance_info"){ mui.fire(pre_opener.opener(), "update"); pre_opener.opener().show(); mui.later(function(){ pre_opener.close('none'); opener.close('none'); self.close('none'); }, 300); }else{ mui.fire(pre_opener, "update"); pre_opener.show(); mui.later(function(){ opener.close('none'); self.close('none'); }, 300); } }else{ //系统模板详情 var pre_pre_opener = pre_opener.opener(); if(pre_pre_opener.id == "guidance_info"){ mui.fire(pre_pre_opener.opener(), "update"); pre_pre_opener.opener().show(); mui.later(function(){ pre_pre_opener.close('none'); opener.close('none'); pre_opener.close('none'); self.close('none'); }, 300); }else{ mui.fire(pre_pre_opener, "update"); pre_pre_opener.show(); mui.later(function(){ opener.close('none'); pre_opener.close('none'); self.close('none'); }, 300); } } }else{ mui.toast(res.msg) } plus.nativeUI.closeWaiting(); }, 'POST', '', true); }, cancelValue: "不了,谢谢", cancel: function(){} }).showModal(); }); function saveHisData(){ //保存历史数据20个 var value = $searchbarInput.val().trim(); if(value){ if(historyData.length>19){ historyData.pop(); } if(historyData.indexOf(value)>-1){ historyData = _.filter(historyData, function(o){ return o != value; }); } historyData.unshift(value); var str = JSON.stringify(historyData) plus.storage.setItem("juminSearchHis"+docInfo.code,str); historyList(); } } $searchCancelBtn.on('click',function() { mui.back() }) //搜索全部居民的绑定事件 $("#searchAll").on('click', function(){ openWebview("search_all.html"); }); }; // 页面业务处理流程开始 new Promise(function(resolve, reject) { mui.plusReady(function() { resolve(true); }) }).then(function() { // 获取基础环境信息 return getBaseEnvPromise().then(function(env) { baseEnv = env; }).then(function() { // 获取登录基本信息 baseInfo = getBaseInfo(); lastTeamId = plus.storage.getItem("selectedTeamId"); self = plus.webview.currentWebview(); content =self.content; modelCode =self.modelCode; images =self.images; $searchbar.searchBar(); // openSoftKeyboard(); $searchbarInput.focus(); historyList(); if(historyData.length){ $history.show(); } // 绑定页面事件 bindEvents(); }) }).catch(function(e) { plus.nativeUI.closeWaiting(); console && console.error(e); });