|
@ -0,0 +1,501 @@
|
|
|
// 基本信息(包括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,'<em>'+kw+'</em>');
|
|
|
});
|
|
|
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);
|
|
|
});
|