lulihong 6 years ago
parent
commit
24d63df4a8

+ 2 - 2
html/home/css/home2.css

@ -42,7 +42,7 @@
.list-fuwu2 li {
	box-sizing: border-box;
	height: 3.8rem;
	width: 25%;
	width: 33.3%;
	float: left;
	border-bottom: 1px solid #e1e1e1;
	border-right: 1px solid #e1e1e1;
@ -295,4 +295,4 @@ img.banner-font {
.list-fuwu2{
	
}
.list-fuwu2 li:nth-child(4n){border-right: none;}
.list-fuwu2 li:nth-child(3n){border-right: none;}

+ 0 - 220
html/home/html/home2.html

@ -1,220 +0,0 @@
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="utf-8"> 
		<title>全科医生</title> 
		<meta name="author" content="yihu.com" /> 
		<meta name="format-detection" content="telephone=no" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black" />
		<link rel="stylesheet" href="../../../common/iconfont/iconfont.css" />
		<link rel="stylesheet" href="../../../common/cross/css/cross.min.css" />
		<link rel="stylesheet" href="../../../common/cross/css/ui.all.min.css" />
		<link rel="stylesheet" type="text/css" href="../../../common/css/cyc.css">
		<link rel="stylesheet" type="text/css" href="../../../common/css/ss-doctor.css">
		<link rel="stylesheet" type="text/css" href="../../../css/mui-pull.css"/>
		<link rel="stylesheet" type="text/css" href="../css/home2.css">
	</head>
	<body>
		<div id="wrapper" class="mui-scroll-wrapper">  
            <div class="mui-scroll">
            	<div class="doc-header">
            		<div class="nav-head">
            			<div class="pic"><img id="doc_photo" src="" alt="医生头像" /></div>
            			<div class="name ui-col-1">
            				<span id="doc_name" class="tit1"></span>
							<span id="doc_type" class="tit2"></span>
            			</div>
            			<!--<div class="ui-col-0" style="max-width: 50%;">
            			    <span class="c-fff" style="font-size: 14px;" id="hospital"></span>
            			</div>-->
            		</div>
            		<ul class="nav-list" id="sign_amount">
            			<li class="one" data-type='1'>
            				<div class="num" id="waitNum">0</div>
            				<div class="name">关注人数</div>
            			</li>
            			<li class="one" data-type='2'>
            				<div class="num" id="signNum">0</div> 
            				<div class="name">咨询量</div>
            			</li>
            			<li class="one" data-type='5'>
            				<div class="num" id="fullNum">0</div>
            				<div class="name">我的评价</div>
            			</li>
            		</ul>
            		
            		<div id='div-saoma' style="display: none;">
						<img style="width: 35px;" src='../images/saomiao_icon.png'> 
					</div>
            		<div class="nav-icon" id='qiehuan'>
						<img style="width: 35px;" src='../images/qiehuan_btn.png'> 
					</div>
            	</div>
				<!--<div class="no-read-msg" >
					<div>您有<span id="msg_count">0</span>条未读信息</div>
				</div>--> 
				<div class="mod mod-juming mt10">
					<div class="mod-hd">
						<span class="circle-22 bgc-4bb7be"><i class="iconfont icon-wodejumin"></i></span> 关注居民
					</div>
					<div class="mod-bd">
						<div class="left fl">
							<div class="middle patient-type" data-type="4"> 
								<p class="title">高血压</p>
								<p id="hypertension_amount">(0人)</p>
							</div>
							<div class="bottom patient-type" data-type="5">
								<p class="title">糖尿病</p>
								<p id="diabetes_amount">(0人)</p>
							</div>
						</div>
						<div class="right fr">
							<div class="bottom patient-type" data-type="14">
								<p>普通人群</p>
								<p id="other_amount">(0人)</p>
							</div>
						</div>
					</div>
				</div>
				<div class="mod mod-fuwu mt10">
					<div class="mod-hd" style="border-top: 1px solid #e1e1e1;">
						<!--bgc-62d0f3-->
						<i class="icon-cyc book"></i> 我的工作
					</div>
					<div class="mod-bd clearfix">
						<ul class="list-fuwu2">
							<li data-href="../../qygl/html/follow_manage.html">
								<div class="circle-40">
									<i class="iconfont icon-bg-qianyueguanli"></i>
								</div>
								<p>关注管理</p>
							</li>
							<li data-href="../../xiaoxi/html/jiankangzixun.html">  
								<div class="circle-40">  
									<i class="iconfont icon-bg-jiankangzixun"></i>
								</div>
								<p>健康咨询</p>
							</li>
							<li data-href="../../jkjy/html/article-store.html">
							    <div class="circle-40">
							        <i class="iconfont icon-bg-suifangjihua"></i>
							    </div>
							    <p>健康指导</p>
							</li>
							<li data-href="../../jkjy/html/article-store.html">
							    <div class="circle-40">
							        <i class="iconfont icon-jiankangjiaoyu"></i>
							    </div>
							    <p>健康教育</p>
							</li>
                            <li data-href="../../wdsb/html/scan2.html" id="sbbd_li">
                                <div class="circle-40">
                                    <i class="iconfont icon-shebeidengji"></i>
                                </div>
                                <p >设备绑定</p>
                            </li>
							<li id="work_resport" data-id="gongzuo" data-href="">
								<div class="circle-40">
									<i class="iconfont icon-gongzuobaogao"></i>
								</div>
								<p >工作报告</p>
							</li>
							<li data-href="../../mine/html/erweima.html" id="erweima_li">
                                <div class="circle-40">
                                    <i class="iconfont icon-wodemingpian"></i>
                                </div>
                                <p >我的名片</p>
                            </li>
                            <!--
                            <li data-href1="../../suifang/html/index.html">
                                <div class="circle-40">
                                    <i class="iconfont icon-zhuanzhenxiezuo"></i>
                                </div>
                                <p class="c-ccc">转诊协作</p> 
                            </li>
                            <li data-href1="">
                                <div class="circle-40">
                                    <i class="iconfont icon-bg-manbing2"></i>
                                </div>
                                <p class="c-ccc">慢病管理</p> 
                            </li>
							<li data-href1="../../suifang/html/index.html">
		                        <div class="circle-40">
		                            <i class="iconfont icon-bg-suifangjihua2"></i>
		                        </div>
		                        <p class="c-ccc">随访计划</p> 
		                    </li>
							<li data-href1="">
                                <div class="circle-40">
                                    <i class="iconfont icon-gongzuobaogao2"></i>
                                </div>
                                <p class="c-ccc">工作报告</p> 
                            </li>
                            <li data-href1="../../prescription/html/xufangguanli.html">
                                <div class="circle-40">
                                    <i class="iconfont icon-bg-xufangguanli2"></i>
                                </div>
                                <p class="c-ccc">续方管理</p> 
                            </li>
                            <li data-href1="../../mygl/html/mingyizixunliebiao.html">
                                <div class="circle-40">
                                    <i class="iconfont icon-mingyizixun2"></i>
                                </div>
                                <p class="c-ccc">名医咨询</p> 
                            </li>
                            -->
						</ul>
					</div>
				</div>
				<div id="zixun_link" style="display: none;">
					<img class="banner-doctor" src="../images/banner-doctor.png"/>
					<img class="banner-font" src="../images/banner-font.png"/>
				</div>
				<div class="mod mod-team mt10 c-hide">
					<div class="mod-bd clearfix">
						<div class="c-mor-hold">
							<ul class="c-lab-mor c-f15">
								<li class="curr">
									<a href="javascript:;" id="doc_type_tab">我的团队</a>
								</li>
								<li>
									<a href="javascript:;">专科医生</a>
								</li>
							</ul>
						</div>
						<ul class="my-team">
							<li>
								<ul class="c-list list-doctor" id="doc_list">
									
								</ul>
								<div class="view-more"><a id="load_doc_more" data-page="1">点击加载更多</a></div>
							</li>
							<li class="c-hide">
								<ul class="c-list list-doctor" id="pro_doc_list">
									
								</ul>
								<div class="view-more"><a id="load_pro_more"  data-page="1">点击加载更多</a></div>
							</li>
						</ul>
					</div>
				</div>
			</div>
        </div>
		
		<script src="../../../js/jquery/2.1.3/jquery.js"></script>
		<script src="../../../js/mui.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/common_http.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/app.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/template.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../js/common.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/mui.pullToRefresh.js" type="text/javascript" charset="UTF-8"></script>
    	<script src="../../../js/mui.pullToRefresh.material.js" type="text/javascript" charset="utf-8"></script>
    	<link rel="stylesheet" type="text/css" href="../../../widget/artDialog/6.0.5/css/ui-dialog.min.css" />
    	<script src="../../../widget/artDialog/6.0.5/js/dialog-plus.min.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/home2.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/im.client.js" type="text/javascript" charset="utf-8"></script>
	</body>
</html>

+ 4 - 4
html/home/html/huanzhe.html

@ -18,9 +18,9 @@
			<div class="demo-comtop">
				<a class="mui-action-back" style="display: none;"></a>
				<h1>我的居民</h1>
				<div class="header-link">
				<!--<div class="header-link">
				    <img src="../../huanzhe/images/shezi_icon.png" width="20" style="vertical-align: middle;">
				</div>
				</div>-->
			</div>
		</div>
		<div id="patient_list_wrap">
@ -34,8 +34,8 @@
					</div>
					<div id="group_label_list">
						 <ul class="c-blocks-4">
					        <li class="group-item" data-type="3" style="width:20%"><img src="../images/jibingleixing_icon.png"></img><div class="item-label">疾病类型</div></li>
					        <li class="group-item" data-type="4" style="width:20%"><img src="../images/icon_tuanduibiaoqian.png"></img><div class="item-label">自定义标签</div></li>
					        <li class="group-item" data-type="3" style="width:50%"><img src="../images/jibingleixing_icon.png"></img><div class="item-label">按疾病分组</div></li>
					        <li class="group-item" data-type="4" style="width:50%"><img src="../images/icon_tuanduibiaoqian.png"></img><div class="item-label">按自定义分组</div></li>
					    </ul>
					</div>
					<!--<ul class="n-list" id="pati_list">

+ 3 - 7
html/home/js/huanzhe.js

@ -186,18 +186,14 @@ bindEvents = function () {
	});
	
	$groupLabelList.on('tap',"li.group-item",function() {
		if($(this).attr("data-type")=="3"){
			 openWebview("../../huanzhe/html/biaoqianguanli.html",{
	            teamCode: docInfo.adminTeamCode
	        });
		}
		openWebview("../../huanzhe/html/huanzhe-by-type.html",{
			type: self.type,
			accessData: {
				labelType: $(this).attr("data-type"),
				typeName: $(this).find(".item-label").text()
				typeName: $(this).find(".item-label").text(),
				teamCode: docInfo.adminTeamCode
			},
			message: baseEnv.webview.message});
		});
	})
	
	$searchbarInput.on('tap',function() {

+ 0 - 1
html/huanzhe/html/bq-xinzengchengyuan.html

@ -91,7 +91,6 @@
					<div class="name text-ellipsis">{{v.name}}<label class="p2">({{v.sex | setSex}} {{v.age | setAge}}岁)</label></div>
					<label class="qyzs text-ellipsis">{{v.disease,1 | setDiseases}}</label>
				</div>
				
			</div>
			<div class="list-del-box" >
				<div>删除</div>

+ 1 - 1
html/huanzhe/js/bq-xinzengchengyuan.js

@ -83,7 +83,7 @@
			p.labelType = "4";
		}
		
		sendPost("/doctor/patient_label_info/patients_by_team", 
		sendPost("/doctor/patient_label_info/patient_search", 
			p , null,
			function(res){
				$('.loading').hide();

+ 3 - 3
html/huanzhe/js/huanzhe-by-type.js

@ -135,7 +135,7 @@ showSheZhi = function() {
},
refreshPage = function(){
	baseInfo = getBaseInfo();
	lastTeamId = plus.storage.getItem("selectedTeamId");
	lastTeamId = baseInfo.accessData.teamCode;
	$selectedTypeName.text(baseInfo.accessData.typeName);
	showSheZhi();
	initPatientGroupsList();
@ -202,7 +202,7 @@ bindEvents = function () {
	
	$shezhiBtn.on('click',function() {
		openWebview("../../huanzhe/html/biaoqianguanli.html",{
			teamCode: plus.storage.getItem("selectedTeamId")
			teamCode: baseInfo.accessData.teamCode
		});
	});
	
@ -284,7 +284,7 @@ new Promise(function(resolve, reject) {
	}).then(function() {
		// 获取登录基本信息
		baseInfo = getBaseInfo();
		lastTeamId = plus.storage.getItem("selectedTeamId");
		lastTeamId = baseInfo.accessData.teamCode;
		$selectedTypeName.text(baseInfo.accessData.typeName);
		//如果是签约过期居民,显示“提醒续签”按钮
		if(baseInfo.accessData.labelType == "9"){

+ 0 - 1
html/huanzhe/js/tianjiabiaoqian.js

@ -5,7 +5,6 @@
		type = self.type;
		tagInfo = self.tagInfo;
		teamCode = self.teamCode;
		
		init();
		initScroller();
	})

+ 1 - 1
html/message/html/p2p.html

@ -49,7 +49,7 @@
				<a class="mui-action-back"></a>
				<h1 id='title'></h1>
				<div class="header-group">
					<a id="qun_detail" class="group">
					<a id="qun_detail" class="group" style="display: none;">
						<img style="width: 35px; height: 35px; position: relative; top: -9px" src="../images/gerenxinxi_pre.png" /> </a>
					
					<span id="cancel" class="btn-cancel">取消</span>

+ 0 - 2015
html/message/js/chatRoom.js

@ -1,2015 +0,0 @@
var winHeight=window.innerHeight;//窗体高度
var winWidth=window.innerWidth;//窗体高度
var self;
var docInfo;
var teamInfo;
var members; //{"37906b9986f211e6b394fa163e424525": {"jobName":"","code":"37906b9986f211e6b394fa163e424525","level":0,"sex":2,"name":"叶亚娟","photo":"","id":3317,"hospital":"3502120800"}}
var pageSize = 10;
var myScroll;
var chatCache = {};
var firstMsg;
var offTop = 16, offBot = 52;
var winHei;
var otherCode, isPatient;
var observer = false;
var imMsg = '';
var isSend = true;
var andriodVideoUrl = "";//andriod录像文件地址
var urlRegex =  new RegExp('((https|http|ftp|rtsp|mms)?://)' 
				+ '?(([0-9a-zA-Z_!~*\'().&=+$%-]+: )?[0-9a-zA-Z_!~*\'().&=+$%-]+@)?' //ftp的user@ 
				+ '(([0-9]{1,3}\\.){3}[0-9]{1,3}' // IP形式的URL- 199.194.52.184 
				+ '|' // 允许IP和DOMAIN(域名) 
				+ '([0-9a-zA-Z_!~*\'()-]+\\.)*' // 域名- www. 
				+ '([0-9a-zA-Z][0-9a-zA-Z-]{0,61})?[0-9a-zA-Z]\\.' // 二级域名 
				+ '(gov|edu|int|com|cn|cx|cn|wang|cc|xin|net|org|top|tech|red|pub|ink|info|xyz|win))' // first level domain- .com or .museum 
				+ '(:[0-9]{1,4})?' // 端口- :80 
				+ '((/[0-9a-zA-Z_!~*\'().;?:@&=+$,%#-]+)+/?)?'
				+ '((\\?[0-9a-zA-Z_!~*\'().;:@&=+$,%#-]+)+/?)?');
				
mui.init({
	gestureConfig:{
		doubletap: true, 
		longtap: true,
		hold: true, 
		release: true
	}
});
var UIPasteboard;
var AndroidClip;
var AndroidContext;
var AndroidMain;
//开启websql数据库
sqlite.open('MyData','1.0','My Database', 128);
var networkStatus = "";//当前网络状态
mui.plusReady(function(){
	self = plus.webview.currentWebview();
	var opener = self.opener();
	if(opener && (opener.id=="jumingim.html" || opener.id=="yishengim.html")){
		mui.fire(self.opener(), "xiaoxiUpdate");
	}
	
	winHei = $('body').height();
	
	self.setStyle({
	    softinputMode: "adjustResize"
	});
	
	if(plus.os.name == "Android"){
		$(".andriod-video-li").show();
		AndroidContext = plus.android.importClass("android.content.Context");
		AndroidMain = plus.android.runtimeMainActivity();
		AndroidClip = AndroidMain.getSystemService(AndroidContext.CLIPBOARD_SERVICE);
	} else{
		$(".ios-video-li").show();
		UIPasteboard  = plus.ios.importClass("UIPasteboard");
	}
		
	//观察者模式隐藏输入框
//  var userAgent = JSON.parse(plus.storage.getItem("userAgent"));
//  if(userAgent.observer == "1"){
//      observer = true;
//      $("#input_div").hide();
//      $('#wrapper1').css({top:'16px', bottom: '0px'});//也不能发送指导和教育
//  }
     document.addEventListener("netchange",onNetChange,false);
     onNetChange();
     bindEvents();
})
function onNetChange(){
    var nt = plus.networkinfo.getCurrentType();
    switch(nt){
      case plus.networkinfo.CONNECTION_ETHERNET:
     case plus.networkinfo.CONNECTION_WIFI:
       networkStatus = "wifi";
       break;
    case plus.networkinfo.CONNECTION_CELL2G:
			networkStatus = "2g";
			break;
      case plus.networkinfo.CONNECTION_CELL3G:
 			networkStatus = "3g";
			break;
     case plus.networkinfo.CONNECTION_CELL4G:
 			networkStatus = "4g";
			break;
     default:
      mui.toast("当前没有网络");
       break;
   }
 }
/**
 * 获取成员信息
 */
function getMembers(callBack){
//	if(members) {
//		callBack? callBack() : getNewMsgs(true);
//	} else { 
	console.log(sessionId)
		imClient.Sessions.getParticipants(sessionId, function(rs){
			members = {};
			var patientCode;
			$.each( rs , function(i, v) {
				if(v.id!=docInfo.code)
					otherCode = v.id;
				if(v.is_patient==1){
					isPatient = true;
					patientCode = v.id;
				}
				members[v.id] = {
					code: v.id,
					name: v.name,
					sex: v.sex,
					photo: v.avatar,
					role: v.role,
	        		is_patient: v.is_patient,//0 医生,1 患者
	        		last_fetch_time:v.last_fetch_time
				};
			});
			otherCode = patientCode||otherCode;
			callBack? callBack() : getFirstMsgs();
	//		getNewMsgs(true); //读取对话消息,
		}, function(msg){
			console.log("e:"+JSON.stringify(msg))
			mui.toast("获取成员列表失败!");
		})
//	}
}
/*
 * 医生缓存信息 姓名和头像
 */
function getMineInfo(){
	myScroll = $('#contain').lscroll({
		type: 2, pullDownMsg1: "下拉加载更多", pullDownMsg2: "松手开始加载",
		pullDownAction: function(g){
			getMsgList(g.options.page, false, true);
	}, style: "top: "+ offTop +"px; bottom: "+ offBot +"px"});
	var infoStr = plus.storage.getItem("docInfo");
	if(infoStr) {
		docInfo = JSON.parse(infoStr);
		console.log(docInfo.code)
		docName = docInfo.name;
		docPhoto = docInfo.photo || (docInfo.sex==1 ? "../../../images/d-male.png" : "../../../images/d-female.png");
	}
}
function getUserId(){
	return docInfo.code;
}
/*
 * 回复消息
 */
function clickReply() {
	var text = $("#input_content").text().trim(); 
//	$("#input_content").focus()
	if(text.length == 0) {
		mui.toast("发送内容不能为空,请重新输入");
		return;
	}
	$("#input_content").text("");
	isSend = false;
	showSendBtn(false);
	uploadMsg(1, text);
}
/**
 * 插入预浏览图片
 * @param {Object} imgs
 */
function appendPrevImgs(imgs){
	if(imgs){
		var html = "";
		$.each(imgs, function(i, v) {
			html += '<img class="l-previmg" style="display: none;" data-code="'+ v.id +'" data-preview-src="'+ v.content +'" data-preview-group="1">';
		});
		$('body').prepend(html);
	}
}
/**
 * 获取未读消息成功处理(初始化获取消息)
 * @param {Object} data
 */
function getNewMsgHandle(data, isInit) {
//	debugger
	console.log("newdata:" + JSON.stringify(data));
	if(!isInit){
//		addMsgToCache(data, true);
		showMsg(data, false, false, true);
//		refreshBadge();
	}else {
		var len = data.length;
		if(len == 0){
//			if(isCached){
//				//取缓存数据,并展示信息
//				getCacheMsg(undefined, pageSize, function(tx, rs){
//					showMsg(rs, false, false, true);
//				});
//			} else {
				//从服务端加载数据, 并插入缓存, 展示信息
				getMsgs(1, pageSize, "", "", function(res){
					showMsg(res, false, false, true);
//					addMsgToCache(res, true);
				});
//			}
		} else {
			if(len < pageSize) {
//				if(isCached){
//					addMsgToCache(data, true);
//					//从缓存中取剩余数据
//					getCacheMsg(undefined, pageSize-len, function(tx, rs){
//						rs = rs.concat(data);
//						showMsg(rs, false, false, true);
//					})
//				} else {
					//从服务端加载剩余数据
					getMsgs( 1, pageSize-len, "", data[0].id, 
						function(res){
							data = data.concat(res);
							showMsg(data, false, false, true);
//							addMsgToCache(data, true);
						} , null, 1);
//				}
			} else {
				//将消息插入缓存, 并展示信息
//				addMsgToCache(data, true);
				showMsg(data, false, false, true);
			}
//			refreshBadge();
		}
	}
}
/**
 * 定位聊天记录位置
 * @param {Object} id
 */
function locationLog(id){
	var $logdom = $('.chat-log[data-code="'+ id +'"]');
	if($logdom.length){
		myScroll.scrollToElement( $logdom[0], 0, 0, -20 );
		plus.nativeUI.closeWaiting();
	} else {
		getCacheMsgById(id, function(tx, data){
			if(data.length>0){
				getCacheMsg("", "", function(tx, ls){
					showMsg(ls, false, true, false, true);
				}, data[0].timestamp, true )
			} else {
				
				getLastCacheMsg(function(tx, msg){
					var startmsg = msg.length>0? msg[msg.length-1] : undefined;
					
					getMsgs(1, 1000, startmsg? startmsg.id : "", id, function(ls){
						if(ls.length>0 && (!firstMsg || (firstMsg.timestamp<ls[0].timestamp) ))
							firstMsg = ls[0];
//						addMsgToCache(ls);
						showMsg(msg.concat(ls), false, true, false, true);
					}, function(res){
						console.error("e:"+JSON.stringify(res))
					})
					
				}, lastTimestamp);
				
			}
		})
	}
}
/**
 * 定位图片位置
 * @param {Object} id
 */
function locationImg(id){
	
	var $logdom = $('.chat-log[data-code="'+ id +'"]');
	if($logdom.length){
		myScroll.scrollToElement( $logdom[0], 0, 0, -20 );
		plus.nativeUI.closeWaiting();
	} else {
		getCacheMsgById(id, function(tx, data){
			if(data.length>0){
				getCacheMsg("", "", function(tx, ls){
					showMsg(ls, false, true, false, true);
				}, data[0].timestamp, true )
			} else {
				
				getLastCacheMsg(function(tx, msg){
					var startmsg = msg.length>0? msg[msg.length-1] : undefined;
					
					getMsgs(1, 1000, startmsg? startmsg.id : "", id, function(ls){
						if(ls.length>0 && (!firstMsg || (firstMsg.timestamp<ls[0].timestamp) ))
							firstMsg = ls[0];
						addMsgToCache(ls);
						showMsg(msg.concat(ls), false, true, false, true);
					}, function(res){
						console.error("e:"+JSON.stringify(res))
					})
					
				}, lastTimestamp);
				
			}
		})
	}
}
	
/**
 * 设置获取到的最后一条消息
 */
function setLastMsg(msg){
	if(!lastTimestamp || lastTimestamp>msg.timestamp){
		lastTimestamp = msg.timestamp;
		lastSeq = msg.seq;
		lastId = msg.id.indexOf("loc")==0? lastId : msg.id;
	}
}
	
/**
 * 显示消息
 */
function showMsg(msgList, isClear, isPre, appendImg, scrollToTop) {
	if(msgList.length == 0) {
		plus.nativeUI.closeWaiting();
		myScroll.refresh(msgList.length==0);
		return;
	}
	var html = "";
	var preTime = 0;
	var typeMsg = 1;
	var doctor_img ;
	var doctor_name = "";
	var msg;
	var sender;
	//设置对方已读标志
	var lastFetchTime = members[otherCode]?members[otherCode].last_fetch_time:new Date("1970-01-01");//对聊医生最后读取消息时间或对聊患者最后读取消息时间
	for(var i = msgList.length - 1; i >= 0; i--) {
		msg = msgList[i];
		setLastMsg(msg);
		typeMsg = parseInt(msg.content_type);
		var contentMsg = msg.content;
		if(typeMsg == 7 || typeMsg==10 || typeMsg==13 || typeMsg==14){
		    if(typeMsg == 7 && msg.sender_id == 'system'){
		        contentMsg = "居民24小时内未回复,系统自动结束咨询";
		    }
		    if(typeMsg != 14){ //14标记患者进入咨询
		        html += '<div class="time-tips"><div>'+ contentMsg +' </div></div>';
		    }
			
			continue;
		} else if(typeMsg == 5){
			var con = JSON.parse(msg.content);
			if(msg.sender_id == docInfo.code){
				console.log(msg.content)
				html += '<div class="time-tips"><div>已向'+ con.doctor_name +'医生求助<a data-name="'+ con.doctor_name +'" data-code="'+ con.doctor +'" class="qiuzhu5" href="javascript:void(0)">立即查看</a> </div></div>';
			} 
			continue;
		}
		sender = members[msg.sender_id];
		if(!sender){
			sendPostNoAsync("doctor/baseinfo", {code:msg.sender_id}, null, function(res) {
				if(res.status == 200) {
					var dtemp = res.data;
					doctor_name = dtemp.name;
					doctor_img = getImgUrl(dtemp.photo);
					
					members[dtemp.code] = {
						code: dtemp.code,
						name: dtemp.name,
						sex: dtemp.sex,
						photo: getImgUrl(dtemp.photo),
						role: 1,//角色不再此讨论组中
		        		is_patient: 0 //不是患者
					};
					sender = members[msg.sender_id];
				}
			});
		}else{
			doctor_name = sender.name;
//			doctor_img = sender.photo ? sender.photo : (sender.avatar || "../../../images/p-default.png");
		    doctor_img = getImgUrl(sender.photo);
		}
		
		
		if(msg.sender_id == docInfo.code) {
            doctor_img = getImgUrl(docInfo.photo);
		}
		var _class = ["chat-log"];
		if(docInfo.code != msg.sender_id) {
			_class.push("chat-left");
		} else {
			_class.push("chat-right");
		}
		if(inMoreOpera) _class.push("checkbox");//更多操作模式下
		
		if(msg.timestamp - preTime > 60 * 1000) {
			preTime = msg.timestamp;
			var date = new Date();
			date.setTime(msg.timestamp);
			var time = date.format('yyyy-MM-dd hh:mm:ss');
			html += '<div class="time-tips"><span>' + time + '</span></div>';
		}
		
		//type:1.文字 2.图片 3.音频
		var temp = '<dl data-type="'+ typeMsg +'" data-code="'+ msg.id +'" class="' + _class.join(" ") + '">'+
					'<dt style="height: auto; text-align: center;"><a><img src="' + doctor_img + '" class="c-images-cycle" /></a></dt>' +
					'<div class="c-content"><span class="c-f12 name">' + doctor_name + '</span>';
		var sendErrDom = "";
		if(!msg.beforeSend && msg.id && msg.id.indexOf('loc')==0){
			sendErrDom = "<i data-info='"+ JSON.stringify(msg) +"' class='c-tips'></i>";
		}
		
		//设置已读标志
		var yiduHtml1 = '<span class="yidu"></span>';
		var yiduHtml2 = '<span class="yidu yidu1"></span>';
		var yiduHtml3 = '<span class="yidu yidu2"></span>';
		if(self.id=="p2dzixun" || self.id=="p2p" && !(!msg.beforeSend && msg.id && msg.id.indexOf('loc')==0)){//医生和患者对聊、医生和医生对聊,显示是否已读
			//var ydText = "居民已读";
			// TODO "居民已读" 临时改为 "已读"
			var ydText = "已读";
			if(!isPatient){//医生对聊
				ydText = "已读";
			}
			if (!isSend) {
				ydText = '';
			}
			if(docInfo.code == msg.sender_id) {
				if(msg.timestamp<=lastFetchTime){
					 yiduHtml1 = '<span class="yidu">'+ydText+'</span>';//除了视频,文章
					 yiduHtml2 = '<span class="yidu yidu1">'+ydText+'</span>';//视频、文章
					 yiduHtml3 = '<span class="yidu yidu2">'+ydText+'</span>';//图片
				}
			}
		}else{//团队群聊、求助群聊不显示是否已读
			yiduHtml1 = '';
			yiduHtml2 = '';
			yiduHtml3 = '';
		}
		
		switch(typeMsg) {
			case 0: 
			case 1://普通文本
			case 6://开始咨询文本
			case 8://求助文本
				temp += '<div class="c-msg">'+ sendErrDom + yiduHtml1+'<dd class="word-bread" data-is-doctor="' + sender.is_patient + '" data-type="1"><span>' + matchUrl(contentMsg) + '</span></dd></div>';
				break;
			case 2://图片
			case 9://求助图片
				if(msg.local_src=="data:,")
					contentMsg = msg.content;
				else if(msg.local_src)
					contentMsg = msg.local_src.indexOf('data:')==0? msg.local_src: plus.io.convertLocalFileSystemURL(msg.local_src);
				else 
					contentMsg = msg.content;
				
				var imgUrl = contentMsg;
				if(imgUrl.indexOf("/storage") > -1){
				    //本地图片
				    imgUrl = imgUrl;
				}else{
				    imgUrl = getImgUrl(contentMsg);
				}
				temp += '<div class="c-msg">'+ sendErrDom + '<dd class="word-bread word-bread-img" data-type="2">'+yiduHtml3+'<img onload="imgLoad(this)" data-src="'+ imgUrl +'" data-code="'+ msg.id +'" data-preview-src="" data-preview-group="1" width="100" height="100" src="'+ imgUrl +'" /></dd></div>';
				$('img.l-previmg[data-code="'+ msg.id +'"]').remove();
				break;
			case 3://语音
				var rec = msg.local_src?  JSON.parse(msg.local_src) : contentMsg? JSON.parse(contentMsg) : undefined;
				if(rec){
					var path = msg.local_src?msg.local_src:msg.content;
					temp += "<div class='c-msg'>"+ sendErrDom + yiduHtml1+"<dd class='word-bread audio' data-type='3' data-code='"+ msg.id +"' data-audio='" + contentMsg + "' data-loc-audio='" + path +"'>"+
							"<div style='width:"+ (rec.times*1.5+30) +"px' class='soundWav'>" +
		   						"<span class='soundWavT'>"+(rec? rec.times: "") +"\'\'</span>"+
							"</div>"+
						"</dd></div>";
				}
				break;
			case 4: //文章
				temp +=  formatJyzd(contentMsg, sendErrDom,yiduHtml2, msg.timestamp);
//				temp += '<dd class="word-bread" data-type="1"><span>' + matchUrl(contentMsg) + '</span></dd>';
				break;
			case 12: //视频
				var videoInfo = msg.content.split(",");
				var shichang = formatSeconds(videoInfo[2]);//时长
				if(docInfo.code != msg.sender_id) {
					temp += '<div class="c-msg"><dd data-content="'+msg.content+'" class="preview-video" data-type="12" data-video="'+getImgUrl(videoInfo[1])+'">'+yiduHtml2+
								'<img class="video-img-left" src="'+getImgUrl(videoInfo[0])+'">'+
								'<img class="bofang-icon-left" src="../images/bofang_icon.png">'+
								'<img class="jianjiao-icon-left" src="../images/zuoshanjiao_bg.png">'+
								'<span class="shichang-time-left">'+shichang+'</span>'+
						    '</dd></div>';
				}else{
					temp += '<div class="c-msg"><dd data-content="'+msg.content+'" class="preview-video" data-type="12" data-video="'+getImgUrl(videoInfo[1])+'">'+yiduHtml2+
							'<img class="video-img-right" src="'+getImgUrl(videoInfo[0])+'">'+
							'<img class="bofang-icon-right" src="../images/bofang_icon.png">'+
							'<img class="jianjiao-icon-right" src="../images/youshanjiao_bg.png">'+
							'<span class="shichang-time-right">'+shichang+'</span>'+
						'</dd></div>';
				}
				break;
		}
		html += temp + '</div></dl>';
	}
	if(isPre)
		lastId = msgList[msgList.length - 1].id;
	
	if(typeMsg != null && typeMsg != 1) {
		$(".tw-add-detail").hide(200);
	}
	
	if(isClear){
		$("#input_content").text("");
		showSendBtn(false);
		$("#contain").html(html);
	}else{
		if(isPre){
			$("#contain").prepend(html);
			if(scrollToTop)
				myScroll.refreshToTop();
			else
				myScroll.refresh(msgList.length==0);
			return;
		} else {
			$("#contain").append(html);
		}
	}
	isSend = true;
	myScroll.refreshToEnd();
	plus.nativeUI.closeWaiting();
}
//毫秒转换成时分秒
function formatSeconds(value) {
    var theTime = parseInt(value/1000);// 秒
    var theTime1 = 0;// 分
    var theTime2 = 0;// 小时
    if(theTime > 60) {
        theTime1 = parseInt(theTime/60);
        theTime = parseInt(theTime%60);
            if(theTime1 > 60) {
	            theTime2 = parseInt(theTime1/60);
	            theTime1 = parseInt(theTime1%60);
            }
    }
    var result = ""+parseInt(theTime);//秒
    if(parseInt(theTime)<=9){
    	result = "0"+parseInt(theTime);//秒
    }
    if(theTime1 > 0) {//分
    	if(parseInt(theTime1)>9){
    		result = ""+parseInt(theTime1)+":"+result;
    	}else{
    		result = "0"+parseInt(theTime1)+":"+result;
    	}
    }
    if(theTime2 > 0) {//小时
    	if(parseInt(theTime2)>9){
    		result = ""+parseInt(theTime2)+":"+result;
    	}else{
    		result = "0"+parseInt(theTime2)+":"+result;
    	}
    }
    var resResult = "";
    if(result.split(":").length==1){//秒
    	resResult = "00:"+result;
    }else if(result.split(":").length==2){//分
    	resResult = "00:"+result;
    }else{//时
    	resResult = result;
    }
    return resResult;
}
function formatJyzd(msg, sendErrDom,yiduHtml, timestamp){
//	{"title":"2016年春节放假调休门诊安排通知","id":"ff1b39cfdf6a482c958140ba768474cc","img":"http://f1.yihuimg.com/TFS/upfile/WBJ/111/2016-02-05/160294_1454633481085_fullsize.png","content":"为了您的健康,我给您发送了一篇文章,请咨询查阅,如有问题,可随时与我沟通"}
	if(msg){
	    //针对\n,\r等特殊字符,在json转换时会报错
        msg = msg.replace(/\n/g, "\\n");  
        msg = msg.replace(/\r/g, "\\r"); 
		msg = JSON.parse(msg);
//		msg.img = msg.type==1? "../../../images/jkjl_share.png" : msg.img;
        var imgHtml = '';
        if(msg.type == 1){ //健康记录
            msg.img = "../../../images/jkjl_share.png";
            imgHtml = '<img src="'+msg.img+'">';
        }else if(msg.type == 2){ //健康指导
            var img = msg.img.split(",");
            if(img[0] && img[0] != "null"){
                msg.img = getImgUrl(img[0]);
            }else{
                msg.img = "../../../images/default_share_blue.png";
            }
            imgHtml = '<img src="'+msg.img+'">';
        }else{ //健康教育
            if(msg.img && msg.img!="null"){
                msg.img = getImgUrl(msg.img);
                imgHtml = '<img src="'+msg.img+'">';
            }
        }
		var temp = 
			'<div class="c-msg">'+ sendErrDom +'<dd class="word-bread word-article" data-code="'+ msg.id+'" data-inner-type="'+ msg.type +'" data-type="4" data-time="'+timestamp+'">' 
			+ yiduHtml
			+ '<h4 class="text-ellipsis c-f18">'+ msg.title +'</h4>'
			+ '<div class="article-content">'+imgHtml
			+ 	'<div>'+ msg.content+'</div>'
			+ '</div>'
			+ '</dd></div>';
		return temp;
	}
	return "";
}
/**
 * 缓存消息
 * @param {Object} data
 */
function addMsgToCache(list, appendImg) {
	
//	id TEXT, sender_id TEXT, sender_name TEXT, content_type TEXT, 
//			content TEXT, timestamp TEXT, local_src TEXT, seq
	isCached = true;
	var tmp ; 
	sqlite.db.transaction(function(tx){
	 	for(var i=0; i<list.length; i++){
	 		tmp = list[i];
	 		
	 		tx.executeSql( 
	 			'INSERT INTO '+ tableName +
	 			' (id, sender_id, sender_name, content_type, content, timestamp, local_src) '+
	 			' VALUES(?,?,?,?,?,?,?)',
	 			[
	 				tmp.id, tmp.sender_id, tmp.sender_name, tmp.content_type, 
	 				tmp.content, tmp.timestamp, tmp.local_src || ""
	 			],
	 			function(tx, rs){
	 				console.log(rs)
		 		}, function(tx, rs){
		 			console.log(rs)
		 		});
	 	}
	 }, function(rs){
	 	console.error(JSON.stringify(rs));
	 })
}
/*
 * 刷新数字角标
 */
function refreshBadge(){
	var userId = plus.storage.getItem('im_userid');
	imClient.Application.getBadgeNo(userId, function(result) {
		console.log(JSON.stringify(result));
		try {
			if (result && result.badge != null) {
				plus.runtime.setBadgeNumber(result.badge);
			}
		} catch (e) {
			
		}
	});
}
/*
 * 附加功能
 */
$(".tw-add").click(function() {
	$(".tw-add-detail").toggle(200);
});
var recordCancel = false;
var recorder = null;
var audio_tips = document.getElementById("audio_tips");
var startTimestamp = null;
var stopTimestamp = null;
var stopTimer = null;
var timer = null;
var MIN_SOUND_TIME = 800;
var isEnded = false;
var ui = {
	body: document.querySelector('body'),
	btnMsgType: document.querySelector('#msg-type'),
	boxMsgText: document.querySelector('#msg-text'),
	boxMsgSound: document.querySelector('#msg-sound'),
	btnMsgImage: document.querySelector('#msg-image'),
	areaMsgList: document.querySelector('#msg-list'),
	boxSoundAlert: document.querySelector('#sound-alert')
};
ui.boxMsgSound.addEventListener('hold', function(){
	$(this).addClass('yy-hold');
	$(".audio").removeClass("active");
	recordCancel = false;
	if(stopTimer)clearTimeout(stopTimer);
	audio_tips.innerHTML = "手指上划,取消发送";
	ui.boxSoundAlert.classList.remove('rprogress-sigh');
	setSoundAlertVisable(true);
	recorder = plus.audio.getRecorder();
	if (recorder == null) {
		plus.nativeUI.toast("不能获取录音对象");
		return;
	}
	startTimestamp = (new Date()).getTime();
	timer = setInterval(function(){
		var t = (new Date()).getTime();
		if( Math.round( (t-startTimestamp)/1000 ) >=60){
			clearInterval(timer);
			recordEnd();
			mui.toast("最多录制60秒");
			isEnded = true;
		}
	}, 1000)
	recorder.record({
		filename: "_doc/audio/",
		format: "amr"
	}, function(path) {
		if (recordCancel) return;
		var recTime = Math.round((stopTimestamp - startTimestamp)/1000) ;
		var p = JSON.stringify(plus.io.convertLocalFileSystemURL( path ));
		uploadMsg(3, "", {path: path, times: recTime>60? 60 : recTime}, true, function(data){
			uploadImg(data)
		});
	}, function(e) {
		plus.nativeUI.toast("录音时出现异常: " + e.message);
	});
})
function recordEnd(event) {
	if(isEnded){
		isEnded = false;
		return;
	}
	clearInterval(timer);
	$(ui.boxMsgSound).removeClass('yy-hold');
	if (audio_tips.classList.contains("cancel")) {
		audio_tips.classList.remove("cancel");
		audio_tips.innerHTML = "手指上划,取消发送";
	}
	
	stopTimestamp = (new Date()).getTime();
	if (stopTimestamp - startTimestamp < MIN_SOUND_TIME) {
		audio_tips.innerHTML = "录音时间太短";
		ui.boxSoundAlert.classList.add('rprogress-sigh');
		recordCancel = true;
		stopTimer=setTimeout(function(){
			setSoundAlertVisable(false);
		},800);
	}else{
		setSoundAlertVisable(false);
	}
	recorder.stop();
}
ui.boxMsgSound.addEventListener('release', recordEnd, false);
					
ui.body.addEventListener('drag', function(event) {
	if (Math.abs(event.detail.deltaY) > 50) {
		if (!recordCancel) {
			recordCancel = true;
			if (!audio_tips.classList.contains("cancel")) {
				audio_tips.classList.add("cancel");
			}
			audio_tips.innerHTML = "松开手指,取消发送";
		}
	} else {
		if (recordCancel) {
			recordCancel = false;
			if (audio_tips.classList.contains("cancel")) {
				audio_tips.classList.remove("cancel");
			}
			audio_tips.innerHTML = "手指上划,取消发送";
		}
	}
}, false);
var setSoundAlertVisable=function(show){
	if(show){
		ui.boxSoundAlert.style.display = 'block';
		ui.boxSoundAlert.style.opacity = 1;
	}else{
		ui.boxSoundAlert.style.opacity = 0;
		//fadeOut 完成再真正隐藏
		setTimeout(function(){
			ui.boxSoundAlert.style.display = 'none';
		},200);
	}
};
					
$(".yy-add").click(function() {
	if($('#msg-sound:visible').length){
		$ipt_content.show();
		ui.boxMsgSound.style.display = 'none';
		$(this).find('img:eq(0)').show().next().hide();
	} else {
		$ipt_content.hide();
		ui.boxMsgSound.style.display = 'block';
		$(this).find('img:eq(0)').hide().next().show();
	}
	
});
var inMoreOpera = false;
var $logOper = $('.log-oper');
var $curChatLog;
$('#contain').on('longtap', '.word-bread[data-type!="4"][data-type!="3"],.preview-video[data-type="12"]', function(e){
	//弹出操作菜单 复制、转发、更多
	if(!inMoreOpera){
		var w = 264;//264
		if($(this).attr('data-type') != 1){
			w = 114; 
			$logOper.find('.fz').hide();
			$logOper.find('.kjhf').hide();
		} else {
			$logOper.find('.fz').show();
			$logOper.find('.kjhf').show();
		}
		if ($(this).attr('data-type') == 1 && $(this).attr('data-is-doctor') == 0) {
			w = 378;
			imMsg = $(this).find('span').html();
			$('.zdmb').show();
		} else {
			$('.zdmb').hide();
		}
		
//		alert(w);
		var sx = e.originalEvent.detail.touches[0].screenX;
		var left = 0;
		if(sx-(w/2)<0){
			left = 0;
		} else if(sx+(w/2)>winWidth) {
			left = winWidth - w;
		} else {
			left = sx - (w/2);
		}
		
		
		var top = e.originalEvent.detail.touches[0].screenY - 56;
		$logOper.find('div').css('left', (sx-left)+ 'px');
		$logOper.css({'top': top +'px', 'left': left + 'px', 'display': '-webkit-box'});
		$curChatLog = $(this).parent().parent();
		
		if (w == 378) {
			var wW = $(window).width(),
				c = wW - w,
				ol = $logOper[0].offsetLeft;
			if ((ol + w) > wW) {
				left = c;
				$logOper.css({'top': top +'px', 'left': left + 'px', 'display': '-webkit-box'});
			}
		}
		
		
		return false;
	}
}).on('tap', '.chat-log', function(){
	//选择聊天记录
	if(inMoreOpera){
		$(this).toggleClass('checked');
		return false;
	}
}).on('tap', '.c-tips', function(){
	var tips = $(this);
	if(tips.length==0) return false;
	dialog({
		content:'重发该消息?',
		okValue:'重发',
		ok: function() {
			var data = JSON.parse(tips.attr('data-info'));
			if(data.content_type==2){
				uploadImg(data);
			} else if(data.content_type==3){
				
			} else {
				sendMsg(data);
			}
			tips.remove();
		},
		cancelValue: '取消',
		cancel: function () {
			return;
        }
	}).showModal();
		
	return false;
}).on('tap', '.word-bread[data-type="3"]', function(){
	$('#contain').find('.word-bread[data-type="3"]').removeClass("active");
	var $dom = $(this);
	var loc = $(this).attr('data-loc-audio');
	$dom.addClass('active');
	if(!loc){
		var ser = $(this).attr('data-audio');
		if(ser){
			ser = JSON.parse(ser);
			//下载
			var path = "_doc/audio/"+new Date().getTime()+".wav";
			var dtask = plus.downloader.createDownload( ser.path, {
					filename: path
				},
				function ( d, status ) {
					if ( status == 200 ) { 
						//更新数据,播放语音
						playRecord(path, $dom);
					} else {
						$dom.removeClass('active');
						mui.toast("下载语音失败!");
					}  
				});
			dtask.start(); 
		} else{
			$dom.removeClass('active');
			mui.toast("语音数据丢失!");
		}
	} else {
		loc = JSON.parse(loc);
		var filename = "_doc/audio/",
		    path = "";
		if(loc.path.indexOf(filename) > -1){
		    path = loc.path;
		}else{
		    path = getImgUrl(loc.path);
		}
		//播放语音
		playRecord(path, $dom);
	}
}).on('tap', '.preview-video[data-type="12"]', function(){//播放视频
	var url = $(this).attr('data-video');
	if(plus.os.name=="iOS"){//ios
		$(document.body).find('video').remove();
		var html = '<video controls style="display:none;" preload="auto" width="1" height="1" src="'+url+'" ></video>';
		$(document.body).append(html);
		var video = $(document.body).find('video')[0];
		video.play();
	}else{//andriod
		var Intent = plus.android.importClass("android.content.Intent");
	    var Uri = plus.android.importClass("android.net.Uri");
	    var main = plus.android.runtimeMainActivity();
	    var intent=new Intent(Intent.ACTION_VIEW);
	    var uri=Uri.parse(url);
	    intent.setDataAndType(uri,"video/*");
	    main.startActivity(intent);
	}
	
})	
var player;
var $playDom = false;
function playRecord(path, dom){
	var isPlayBenDi = path.indexOf('.amr')>=0;
	if($playDom){
		if(player){
			if(plus.os.name=="iOS" && !isPlayBenDi){//ios
				player.pause();
			}else{
				player.stop();
			}
			$playDom.removeClass('active');
			if($playDom.attr('data-code') == dom.attr('data-code')){
				$playDom = false;
				return;
			}
		}
		
	}
	$playDom = dom;
	if(plus.os.name=="iOS" && !isPlayBenDi){//ios
		$(document.body).find('audio').remove();
		var html = '<audio preload="auto" src="'+path+'"></audio>';
		$(document.body).append(html);
		player = $(document.body).find('audio')[0];
		player.play();
		player.addEventListener('ended', function () {  
		    $playDom.removeClass('active');
			$playDom = false;
		}, false);
	}else{//andriod
		player = plus.audio.createPlayer(path);
		player.play(function() {
			$playDom.removeClass('active');
			$playDom = false;
		}, function(e) {
			$playDom.removeClass('active');
			$playDom = false;
		});
	}
	
	
	
}
/**
 * 批量操作按钮事件
 */
$logOper.on('touchstart', '.pl', function(){
	inMoreOpera = true;
	$logOper.hide();
	$curChatLog.addClass('checked');
	$('.chat-log[data-type!=4][data-type!=3]').addClass('checkbox');
	$('#input_div').addClass('c-hide');
	$('.footer-bar').removeClass('c-hide');
	
	$('#qun_detail').hide();
	$('#cancel').show();
	myScroll.refresh();
})
/**
 * 复制操作按钮事件
 */
$logOper.on('touchstart', '.fz', function(){
	$logOper.hide();
	copy($curChatLog.find('.word-bread span').text(), 1);
	return false;
})
/**
 * 转发操作按钮事件
 */
$logOper.on('touchstart', '.zf', function(){
	$logOper.hide();
	var type = $curChatLog.find('.word-bread').attr("data-type");
	var text = "";
	if(type=="1"){//文本
		var $d = $curChatLog.find('.word-bread span');
		text = $d.text();
	}else {
		if($curChatLog.closest("dl").attr("data-type")=="12"){//视频
			text = $curChatLog.find(".c-msg dd").attr("data-content");
			type = 12;
		}else{//图片
			var $d = $curChatLog.find('.word-bread img');
			text = $d.attr('data-src');
			type = 2;
		}
	}
	toZf([{content: text, type: type}]);
	return false;
})
/**
 * 快捷回复操作按钮事件
 */
$logOper.on('touchstart', '.kjhf', function(){
	$logOper.hide();
	var $d = $curChatLog.find('.word-bread span');
	var text = "";
	if($d.length > 0){
		text = $d.text();
        service.replyAdd(text);
	}
	return false;
})
/**
 * 添加指导模板操作按钮事件
 */
$logOper.on('touchstart', '.zdmb', function(){
	$logOper.hide();
    dialog({
        content: "是否确认将内容添加到指导模板?",
        okValue: "立即添加",
        ok: function(){
    		openWebview('../../hzzd/html/edit_guidance.html',{action: "add",reference: 'mine', pageid:self.id, msg: imMsg});
        },
        cancelValue: "不了,谢谢",
        cancel: function(){}
    }).showModal();
//	return false;
})
/**
 * 转发操作按钮事件
 */
$('#plzf').on('touchstart', function(){
	var msgs = [];
	var text = "";
	var $d;
	var type;
	$.each($('.chat-log.checked'), function(i, v) {
		type = $(v).find('.word-bread').attr("data-type");
		if(type=="1"){//文本
			$d = $(v).find('.word-bread span');
			text = $d.text();
		}else {
			if($(v).attr("data-type")=="12"){//视频
				text = $(v).find(".c-msg dd").attr("data-content");
				type = 12;
			}else{
				$d = $(v).find('.word-bread img');
				text = $d.attr('src');
				type = 2;
			}
		}
		msgs.push({content: text, type: type});
	});
	toZf(msgs);
	return false;
})
/**
 * 跳转转发界面
 * @param {Object} texts
 */
function toZf(texts){
	mui.openWindow({
		url: "zhuanfa.html",
		id: "zhuanfa.html",
		extras: {
			imMessages: texts
		}
	})
}
/**
 * 复制
 * @param {Object} content
 * @param {Object} type
 */
function copy(content, type){
	
	if(plus.os.name == "Android"){
		if(type == 1)
			plus.android.invoke(AndroidClip, "setText", content);
		else{
//			ClipData clip = ClipData.newUri(AndroidMain.getContentResolver(), "URI", copyUri);
//			plus.android.invoke(AndroidClip, "setPrimaryClip", clip);
		}	
	} else {
	    var generalPasteboard = UIPasteboard.generalPasteboard();
	    // 设置/获取文本内容:
	    if(type == 1)
	    	generalPasteboard.setValueforPasteboardType(content, "public.utf8-plain-text");
	    else
	    	generalPasteboard.setDataforPasteboardType(content, "public.png");
//	    UIPasteboard.generalPasteboard().setData(fileData, forPasteboardType: "public.png")
	}
	
}
/**
 * 还原批量操作状态
 */
function revertPl(){
	if(inMoreOpera){
		inMoreOpera = false;
		$('.chat-log').removeClass('checkbox checked');
		$('#input_div').removeClass('c-hide');
		$('.footer-bar').addClass('c-hide');
		$('#qun_detail').show();
		$('#cancel').hide();
		myScroll.refresh();
	}
}
/**
 * 取消按钮事件
 */
$('#cancel').on('tap', function(){
	revertPl();
})
var touchLogOper = false;
//	$('.log-oper').on('touchstart', function(){
//		touchLogOper = true;
//	})
/**
 * 点击任意地方 关闭操作菜单
 */
$('body').on('touchstart', function(){
	if($('.log-oper:visible').length){
		$logOper.hide();
		return false;
	}
})
/**
 * 显示发送按钮的事件
 */
var valLen = 0;
var $ipt_content = $('#input_content');
$ipt_content.on('input', function(e){
	showSendBtn($(this).text())
})
.on('tap', function(){
	$(".tw-add-detail").hide();
	$ipt_content.focus();
	mui.later(scrollToEnd, 300);
})
function scrollToEnd(){
	if(winHei-$('body').height() > 0){
		myScroll.scrollToEnd(500);
		$ipt_content.focus();
	}
	else {
		mui.later(scrollToEnd, 100);
	}
}
function showSendBtn(isShow){
	if(isShow){
		$('.tw-add').hide();
		$('#reply').fadeIn('fast', 'swing');
	} else if(valLen == 1 || isShow==false){
		$('#reply').fadeOut('fast', 'swing', function(){
			$('.tw-add').show();
		});
	}
	valLen = isShow ? isShow.length : 0;
}
/*
 * 发送照片
 */
function clickGallery() {
	plus.gallery.pick(function(path) {
		var lastIdx = path.lastIndexOf("/"),
			imgName = path;
		if(lastIdx>-1) {
			imgName = path.slice(lastIdx+1);
		}
		var locSrc= "_doc/chat/gallery/" + imgName;
		plus.zip.compressImage({
			src: path,
			dst: locSrc,
			quality: 20,
			overwrite: true
		}, function(e) {
			console.log(e.target)
			uploadMsg(2, "", locSrc, true, function(data){
				uploadImg(data);
			});
				
		}, function(err) {
			console.error("压缩失败:" + err.message);
		});
	}, function(err) {});
};
function uploadImg(data){
	var task = plus.uploader.createUpload(server + "upload/chat?type="+data.content_type, {
		method: "post"
	}, function(t, sta) {
		if(sta == 200) {
			var msg = t.responseText;
			var oImg = JSON.parse(msg);
			if(oImg.status==200){
				var imgUrl = oImg.urls;
				var re = new RegExp("\\\\", "g");
				imgUrl = imgUrl.replace(re, "/");
				if(data.content_type==3){
					var loc = JSON.parse(data.local_src);
					data.content = JSON.stringify({path: imgUrl, times: loc.times});
				} else {
					if($("#contain").find("dl:last").attr("data-code").substring(0,3)=="loc"){//上传图片成功后,更新图片url
						$("#contain").find("dl:last").find("dd img").attr("src",getImgUrl(imgUrl)).attr("data-src",getImgUrl(imgUrl));
					}
					data.content = imgUrl;
				}
				sendMsg(data);
			} else {
				mui.toast("发送失败,请重试!");
				showResend(data);
			}
		} else {
			mui.toast("发送失败,请重试!");
			showResend(data);
		}
	});
	if(data.content_type==3){
		var loc = JSON.parse(data.local_src);
		task.addFile(loc.path, {});
	} else {
		task.addFile(data.local_src, {});
	}
	task.start();
}
/*
 * 拍照
 */
function clickCamera() {
	var cmr = plus.camera.getCamera();
	var res = cmr.supportedImageResolutions[0];
	var fmt = cmr.supportedImageFormats[0];
	cmr.captureImage(function(path) {
		plus.io.resolveLocalFileSystemURL(path, function(entry) {
			var localUrl = entry.toLocalURL();
			var lastIdx = localUrl.lastIndexOf("/"),
				imgName = localUrl;
			if(lastIdx>-1) {
				imgName = localUrl.slice(lastIdx+1);
			}
			var locSrc= "_doc/chat/camera/" + imgName;
			plus.zip.compressImage({
				src: localUrl,
				dst: locSrc,
				quality: 20,
				overwrite: true
			}, function(e) {
				uploadMsg(2, "", locSrc, true, function(data){
					uploadImg(data);
				});
				
			}, function(err) {
				console.log("压缩失败:  " + err.message);
			});
		});
	}, function(err) {
		if(err.code==11 && err.message == "null") {
			plus.nativeUI.toast("您尚未授权拍照权限,无法使用拍照功能。");
		}
		console.error("拍照失败:" + err.message);
	}, {
		index: 1
	});
};
/**
 * 更新信息事件
 */
window.addEventListener("update", function() {
    console.log("update");
	getNewMsgs(false);
});
/**
 * 后台返回应用时获取消息
 */
document.addEventListener("resume", function() {
	console.log("运行环境从后台切换到前台事件")
	getNewMsgs(false);
	connectSocket();
}, false);
//运行环境从前台切换到后台事件
document.addEventListener("pause", function() {
	console.log("运行环境从前台切换到后台事件")
	logoutSocketConnect();
}, false);
	
/**
 * 还原转发状态
 */
document.addEventListener("revertZf", function() {
	$logOper.hide();
	revertPl();
	hideMenu();
	prevImage.close();
//	getNewMsgs();
});
function backToParent(){
//	var old_back = mui.back;
	mui.back = function() {
		var wv = self.opener();
		if(wv){
			mui.fire(wv, "xiaoxiUpdate");
		}
		self.close();
//		old_back();
	}
}
function matchUrl(content){
	var a = urlRegex.exec(content);
	if(a){
		var ah = '<a class="urlMatch" href="javascript:void(0)">'+ a[0] +'</a>';
		var str = "";
		var s = content.split(a[0]);
//		var i = content.indexOf(a[0]);
		for(var i=0; i<s.length; i++){
			if(i==s.length-1)
				str += s[i];
			else 
				str += s[i] + ah;
		}
		return str;
	}
	return content;
}
$('body').on('tap', '.urlMatch', function(){
	mui.openWindow("../../browser/html/browser.html", "browser", {
		extras: {
			url: $(this).html()
		}
	})
})
$('body')
//隐藏打开的附加功能
.on('touchstart', '#wrapper1', function(){
	$('.tw-add-detail').hide();
	$ipt_content.blur();
})
//点击健康教育文章连接
.on('tap', '.word-article', function(){
	var type = $(this).attr('data-inner-type');
	var code = $(this).attr('data-code');
	if(type==1){
		mui.openWindow('../../jkjl/html/health-record.html', 'health-record', {
			extras: {
				patientCode: code,
				qyRelation: 0
			}
		});
	}else if(type == 2){
	    mui.openWindow('../../hzzd/html/guidance_info.html', 'guidance_info', {
	        extras:{
	            guideId: code
	        }
	    })
	} else{
	    //判断发送时间是否超过"2017-12-29 00:00:00",超过后发送的文章为新的文章
	    var sendTime = $(this).attr("data-time"),
	        d = new Date("2017-12-29 00:00:00"),
	        dTime = d.getTime();
	    if(parseInt(sendTime) < dTime){
	        mui.openWindow("../../jkjy/html/article.html", "article", {
                extras: {
                    article: code
                }
            })
	    }else{
	        mui.openWindow("../../jkjy/html/article-info.html", "article", {
                extras: {
                    articleId: code
                }
            })
	    }
		
	}
		
})
//点击预约挂号查看详情
.on('tap', '.word-bread a[name="guahao"]', function(){
	mui.openWindow("../../wdyy/html/detail-appointment.html", "detail-appointment", {
		extras: {
			dataId: $(this).attr('data-id')
		}
	})
})
//添加快捷回复
function kjhf(){
    openWebview("../../kjhf/html/list.html");
}
window.addEventListener('fillText', function(e){
    $(".tw-add-detail").hide();
    var content = e.detail.content;
    $("#input_content").show();
    ui.boxMsgSound.style.display = 'none';
    $(".yy-add").find('img:eq(0)').show().next().hide();
    $("#input_content").text(content);
    showSendBtn(true);
});
/**
 * 显示重新发送按钮
 * @param {Object} d 数据
 */
function showResend(d){
	$('#contain dl[data-code="'+ d.id +'"]').find('.c-msg').prepend("<i data-info='"+ JSON.stringify(d) +"' class='c-tips'></i>");
}
/**
 * 创建聊天会话
 */
var sessionId;
function createSession(type, callBack){
	if(self.sessionId){
		sessionId = self.sessionId;
		$('#title').html(self.sessionName);
		createTable(callBack);
	} else {
		if(type==2)
			imClient.Sessions.createP2pSession(docInfo.code, self.otherCode, self.otherName,function(res){
				if(res.status==200){
					sessionId = res.data.id;
					$('#title').html(res.data.name || self.otherName);
					createTable(callBack);
				} else {
					alert("创建聊天会话失败!");
				}
			}, function(res){
				alert("创建聊天会话失败!");
				console.error("fail:"+JSON.stringify(res))
			})
		else if(type == 1)
			createTable(callBack);
		else if(type==3){
			imClient.Sessions.createGroupSession(teamInfo.code, teamInfo.teamName, members,
			function(res){
				if(res.status == 200){
					sessionId = res.data.id;
					$('#title').html(res.data.name || teamInfo.teamName);
					createTable(callBack);
				} else 
					alert("创建聊天会话失败!");
			}, function(res){
				alert("创建聊天会话失败!");
				console.error("fail:"+JSON.stringify(res))
			})
		}
	}
}
var tableName = "";
var isCached = false;
/**
 * 获取新消息
 * @param {Object} isInit
 */
function getNewMsgs(isInit){
	if(isInit && self.msgId){
		//带msgId定位参数的,
		locationLog(self.msgId);
	} else  
		getMsgs(1, pageSize, "", firstMsg? firstMsg.id : "", function(data){
				if(data.length>0 && (!firstMsg || (firstMsg.timestamp<data[0].timestamp) ))
					firstMsg = data[0];
				getNewMsgHandle( data, isInit );
			}, function(res){
				console.error("e:"+JSON.stringify(res))
			})
}
/**
 * 从后台获取最前面的消息
 * 
 */
function getFirstMsgs(){
	getMsgs(1, pageSize, "", "", function(data){
		if(data.length>0 && (!firstMsg || (firstMsg.timestamp<data[0].timestamp) ))
			firstMsg = data[0];
		getNewMsgHandle(data, true );
	}, function(res){
		console.error("e:"+JSON.stringify(res))
	})
		
}
/**
 * 获取消息
 */
function getMsgs(page, size, startMsg, endMsg, sucHandle, errHandle, isoffset){
	imClient.Sessions.getMessagesBySession(sessionId, docInfo.code, page || 1, size || paeSize, startMsg, endMsg, 
		function(res){
			sucHandle( parseMsg(res) );
		}, function(res){
			mui.toast("获取消息记录失败!");
			console.error("e:"+JSON.stringify(res))
		}, "", isoffset || (endMsg? 1 : ""))
}
/**
 * 创建表结构
 */
function createTable(callBack){
	tableName = "msgLog_"+ sessionId.replace(/-/g, "_") +"_"+ docInfo.code.replace(/-/g, "_");
	/*sqlite.executeSql("DROP TABLE IF EXISTS "+tableName, [], function(){});
	return;*/
	
	sqlite.executeSql("create table if not exists "+ tableName +
		" (id TEXT  UNIQUE, sender_id TEXT, sender_name TEXT, content_type INTEGER, " +
		"	content TEXT, timestamp INTEGER, local_src BLOB, seq INTEGER  PRIMARY KEY  AUTOINCREMENT)", [],
		function(tx, rs){
			
			sqlite.executeSql("select * from "+tableName+" where id not like 'loc%' order by timestamp desc limit 0,1", [], 
				function(tx, rs){
					isCached = rs.rows.length>0;
					if(!isCached){
						sqlite.executeSql("select * from "+tableName+" limit 0,1", [], function(tx, rs){
							isCached = rs.rows.length>0;
							callBack ? callBack() : "";
						}, function(tx, rs){
							alert("获取聊天缓存失败!");
						})
					} else {
						firstMsg = rs.rows.item(0);
						callBack ? callBack() : "";
					}
				}, function(tx, rs){
					console.error(JSON.stringify(rs))
					alert("获取聊天缓存失败!");
				})
			
			
			
		}, 
		function(tx, rs){
			console.error(tableName)
			alert("创建缓存空间失败!");
		})
}
var lastSeq = 0;
var lastTimestamp;
/**
 * 获取缓存消息
 * @param {Object} seq
 * @param {Object} size
 * @param {Object} callBack
 * @param {Object} timestamp
 * @param {Object} isNext
 */
function getCacheMsg(seq, size, callBack, timestamp, isNext){
	var p = [];
	var sql = 'SELECT * FROM '+ tableName;
	var where = [];
	if(seq){
		where.push(" seq<>? ");
		p.push(seq);
	}
	if(timestamp){
		where.push(" timestamp"+ (isNext? ">=" : "<") +"? ");
		p.push(timestamp);
	}
	sql += where.length>0? " where "+ where.join(" and ") : "";
	sql += " order by timestamp desc ";
	sql += size? " limit 0,"+size : "";
	sqlite.executeSql(sql, p, function(tx, rs){
		var data = [];
		var tmp;
		for(var i=0; i<rs.rows.length; i++){
			tmp = rs.rows.item(i);
			data.push( tmp );
			/*if(lastTimestamp>tmp.timestamp){
				lastTimestamp = tmp.timestamp;
				lastSeq = tmp.seq;
				lastId = tmp.id.indexOf("loc")==0? lastId : tmp.id;
			}*/
		}
		
		callBack(tx, data);
	}, function(tx, errmsg){
		mui.toast('获取缓存数据失败!');
		console.log(JSON.stringify(errmsg))
	})
}
/**
 * 获取缓存消息
 * @param {Object} startTime
 * @param {Object} endTime
 * @param {Object} callBack
 */
function getCacheMsgByRange(startTime, endTime, callBack){
	var p = [];
	var sql = 'SELECT * FROM '+ tableName +' where timestamp>='+ startTime +' and timestamp<'+ endTime;
	sql += " order by timestamp desc ";
	sqlite.executeSql(sql, p, function(tx, rs){
		var data = [];
		var tmp;
		for(var i=0; i<rs.rows.length; i++){
			tmp = rs.rows.item(i);
			data.push( tmp );
			/*if(lastTimestamp>tmp.timestamp){
				lastTimestamp = tmp.timestamp;
				lastSeq = tmp.seq;
				lastId = tmp.id.indexOf("loc")==0? lastId : tmp.id;
			}*/
		}
		
		callBack(tx, data);
	}, function(tx, errmsg){
		mui.toast('获取缓存数据失败!');
		console.log(JSON.stringify(errmsg))
	})
}
/**
 * 获取缓存消息
 * @param {Object} id
 * @param {Object} callBack
 */
function getCacheMsgById(id, callBack){
	var sql = 'SELECT * FROM '+ tableName + ' where id=?';
	sqlite.executeSql(sql, [id], function(tx, rs){
		var data = [];
		for(var i=0; i<rs.rows.length; i++){
			data.push( rs.rows.item(i) );
		}
		callBack(tx, data);
	}, function(tx, errmsg){
		mui.toast('获取缓存数据失败!');
		console.log(JSON.stringify(errmsg))
	})
}
/**
 * 获取最后一条缓存消息
 * @param {Object} callBack
 * @param {Object} lastTimestamp
 */
function getLastCacheMsg(callBack, lastTimestamp){
	var sql = 'SELECT * FROM '+ tableName + ' where id not like "loc%" ';
	sql += lastTimestamp? " and timestamp<"+lastTimestamp : "";
	sql += " order by timestamp desc ";
	sqlite.executeSql(sql, [], function(tx, rs){
		var data = [];
		for(var i=0; i<rs.rows.length; i++){
			data.push( rs.rows.item(i) );
		}
		callBack(tx, data);
	}, function(tx, errmsg){
		mui.toast('获取缓存数据失败!');
		console.log(JSON.stringify(errmsg))
	})
}
/**
 * 发送消息
 * @param {Object} content
 * @param {Object} type
 * @param {Object} oldId
 */
function sendMsg(d){
	imClient.Sessions.sendMessage(sessionId, docInfo.code, docInfo.name, d.content, d.content_type, 
		function(data) {
			console.log(JSON.stringify(data))
			var msg = data.messages[0];
			if( !firstMsg || firstMsg.timestamp<msg.timestamp )
				firstMsg = msg;
			setLastMsg(msg);
//			updateCacheMsgById(d.id, msg.timestamp, msg.id, msg.content);
		}, function(data){
		    if(data.status == 406){
		        mui.toast("观察者模式无法进行增删改操作");
		    }
		    showResend(d);
			console.log("sendFail"+ JSON.stringify(data));
		})
}
/**
 * 将字符串转为对象
 * @param {Object} data
 */
function parseMsg(data){
	var d = [];
	for(var i=0; i<data.length; i++){
		d.push(JSON.parse(data[i]));
	}
	return d;
}
/**
 * 更新缓存数据
 * @param {Object} oldId 旧id
 * @param {Object} timestamp 更新时间
 * @param {Object} newId 更新id
 * @param {Object} content 内容
 * @param {Object} localSrc 更新本地路径
 */
function updateCacheMsgById(oldId, timestamp, newId, content, localSrc){
	var sql = "update "+ tableName +" set ";
	var u = [];
	var p = [];
	if(timestamp){
		u.push(" timestamp=? ");
		p.push(timestamp);
	}
	
	if(newId){
		u.push(" id=? ");
		p.push(newId);
	}
	
	if(localSrc){
		u.push(" local_src=? ");
		p.push(localSrc);
	}
	
	if(content){
		u.push(" content=? ");
		p.push(content);
	}
	
	sql += u.join(",")+ " where id=?";
	p.push(oldId);
	sqlite.executeSql( sql, p, function(tx, rs){
		debugger
	}, function(tx, msg){
		alert("更新缓存失败!")
		console.error(JSON.stringify(msg))
	})
}
function imgLoad(img){
	if(img.src.indexOf('data:')==0)
    	return;
    	
	var canvas = document.createElement('CANVAS'),
		ctx = canvas.getContext('2d'),
		newImg = new Image();
	newImg.src = img.src;
	
	canvas.height = newImg.height;
    canvas.width = newImg.width;
    ctx.drawImage(newImg, 0, 0);
    var src = newImg.src;
    var outputFormat = src.substring(src.lastIndexOf('.')+1);
    outputFormat = outputFormat.toLowerCase()=="jpg"? "jpeg" : outputFormat;
    var dataURL = canvas.toDataURL('image/' + outputFormat);
//  updateCacheMsgById($(img).attr('data-code'), "", "", "", dataURL);
    canvas = null; 
}
/**
 * 获取消息(下拉刷新)
 */
function getMsgList(pageIndex, isClear, isPre) {
	getMsgs(pageIndex, pageSize, "", "", function(data){
		showMsg(data, isClear, isPre);
	})
	
	//下面代码缓存机制有问题
//	getCacheMsg(lastSeq, pageSize, function(tx, list){
//		if(list.length<pageSize){
//			getMsgs(1, pageSize-list.length, lastId, "", function(data){
//				if(data.length>0){
//					addMsgToCache(data);
//				} 
//				showMsg(list.concat(data), isClear, isPre);
//			})
//		} else {
//			showMsg(list, isClear, isPre);
//		}
//	}, lastTimestamp);
	
}
function uploadMsgBase(type, content, locSrc, isNotSend, callBack){
	var tim = new Date().getTime();
	var id = "loc"+tim;
	locSrc = type==3? JSON.stringify(locSrc): locSrc;
	var d = [{
			"sender_id": docInfo.code,"sender_name": docInfo.name,
			"content_type": type, "content": content,
			"timestamp": tim,"id": id, local_src: locSrc, beforeSend: true}]
	showMsg(d, false, false, true);
//	addMsgToCache(d, true);
	
	isNotSend? "" : sendMsg(d[0]);
	if (callBack) callBack(d[0]);
//	return d[0];
}
//录像
function clickVideo(){
		if(plus.os.name == "Android"){
			plus.nativeUI.toast("请录制10秒左右的短视频,以防录制完成后无法发送",{duration:"long"});
			var File = plus.android.importClass("java.io.File");
	        var MediaStore = plus.android.importClass("android.provider.MediaStore");
	        var Intent = plus.android.importClass("android.content.Intent");
	        var intent = new Intent("android.media.action.VIDEO_CAPTURE");
	        var outPutPath = plus.io.convertLocalFileSystemURL("http://localhost:13131/_doc/camera/test.mp4");
	        var Uri = plus.android.importClass("android.net.Uri");
	        var file = new File(outPutPath);
	        var outPutUri = Uri.fromFile(file);
	        intent.putExtra("android.intent.extra.videoQuality", 1);//0 最低质量, 1高质量
	        intent.putExtra("android.provider.MediaStore.EXTRA_OUTPUT", outPutUri);//录像输出位置
//	        intent.putExtra("android.intent.extra.durationLimit", 10);//控制录制时间单位秒
	        var main = plus.android.runtimeMainActivity();
	        main.startActivityForResult(intent,200);
	        main.onActivityResult = function(request, code, data) {
	        	var context = main;
                plus.android.importClass(data);
                var contactData = data.getData();
                var resolver = context.getContentResolver();
                plus.android.importClass(resolver);
                var cursor = resolver.query(contactData, null, null, null, null);
                plus.android.importClass(cursor);
                cursor.moveToFirst();
                var column = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA);
                //获取录制的视频路径
                andriodVideoUrl = cursor.getString(column);
                //解析视频文件的属性
                plus.io.resolveLocalFileSystemURL(andriodVideoUrl,function( entry ) {
                // 可通过entry对象操作test.html文件 
                    entry.file( function(file){
                    	console.log("size=="+file.size+" name=="+file.name);
                    	var fileSize = (file.size/1024/1024).toFixed(2);//字节转换成M
                    	fileSizeJudge(fileSize);//文件大小判断
                    } );
                }, function ( e ) {
                    plus.nativeUI.toast( "Resolve file URL failed: " + e.message );
                });
           };
		}
}
function bindEvents(){
	//录制视频
	$(".lz-video-img").click(function(){
		plus.nativeUI.toast("请录制10秒左右的短视频,以防录制完成后无法发送",{duration:"long"});
		$("#upload_input").click();
		return false;
	})
	
	//立即发送
	$("#lijifasong").on("tap", function(){
	    uploadVideo();
	    mui('#sheet1').popover('toggle');
	    return false;
	 });
	 //不再提醒
	 $("#buzaitixing").on("tap", function(){
	    plus.storage.setItem("isTiXingVideoFaSong","1");
	    uploadVideo();
	    mui('#sheet1').popover('toggle');
	    return false;
	 });
}
//ios录像回调事件
function videoFileChange(target) { 
	var fileSize = (target.files[0].size/1024/1024).toFixed(2);//字节转换成M
	fileSizeJudge(fileSize);
}
//文件大小判断
function fileSizeJudge(fileSize){
	if(parseInt(fileSize)>30){
		dialog({
			content:'对不起,视频超过30Mb,无法发送,请录制10秒左右的短视频',
			okValue:'我知道了',
			ok: function() {
				return;
			}
		}).showModal();
	}else{
		if(networkStatus=="wifi" || (plus.storage.getItem("isTiXingVideoFaSong") && plus.storage.getItem("isTiXingVideoFaSong")=="1")){//wifi环境或用户点击移动网络弹框中的”不再提醒“按钮
			uploadVideo();
		}else{
			$("#mui-content").html('您正在使用移动网络,继续发送将消耗'+fileSize+'Mb流量,是否继续发送?');
			mui('#sheet1').popover('toggle');
		}
	}
}
//上传视频
function uploadVideo(){
	plus.nativeUI.showWaiting();
	if(plus.os.name == "Android"){//andriod上传视频
		var task = plus.uploader.createUpload(server + "upload/chat?type=4", {method: "post"}, function(t, sta) {
			if(t.responseText){
				var msg = t.responseText;
				var oImg = JSON.parse(msg);
				if(oImg.status==200){
					uploadMsg(12, oImg.urls);
				}else if(oImg.status==-1){
					mui.toast(oImg.msg);
				}else{
					mui.toast("发送失败,请重试!");
				}
			}else{
				mui.toast("发送失败,请重试!");
			}
			plus.nativeUI.closeWaiting();
			
		});  
		task.addFile(andriodVideoUrl, {});
		task.start();
	}else{//ios上传视频
		var fd=new FormData();
	    fd.append('file',document.getElementById("upload_input").files[0]);
	    $.ajax(server+"/upload/chat?type=4", {
	            data: fd,
	            contentType: false,
	            cache: false,
	            processData: false,
	            type: 'post',
	            success: function(resData) {
	            	if(resData.status==200){
						uploadMsg(12, resData.urls);
					}else if(resData.status==-1){
						mui.toast(oImg.msg);
					}else{
						mui.toast("发送失败,请重试!");
					}
					plus.nativeUI.closeWaiting();
	            },
	            error:function (XMLHttpRequest, textStatus, errorThrown) {
	            	console.log(XMLHttpRequest.status);
	                console.log(XMLHttpRequest.readyState);
	                console.log(textStatus)
	            }
		});
	}
	
}

+ 26 - 13
html/mine/html/zuyuanziliao.html

@ -40,11 +40,11 @@
				
				<div style="display: -webkit-box; -webkit-box-orient: vertical; -webkit-box-align: stretch; -webkit-box-flex: 1; padding: 10px 0px;">
					<div style="-webkit-box-flex: 1;display: -webkit-box;-webkit-box-align: center;-webkit-box-orient: horizontal;">
						{{name}}<label style="color: #909090; margin-left: 10px;">({{level | setLevel}})</label>
						{{name}}<label style="color: #909090; margin-left: 10px;">({{jobName}})</label>
						{{if sex>0}}<img style="width: 20px;margin-top: 2px;margin-left: 5px;" src="{{if sex==1}}../images/man.png{{else}}../images/woman.png{{/if}}" />{{/if}}
					</div>
					
					<div style="-webkit-box-flex: 1; color: #909090;">{{deptName}}&nbsp;&nbsp;&nbsp;{{jobName}}</div>
					<div style="-webkit-box-flex: 1; color: #909090;">{{deptName}}</div>
					<div style="-webkit-box-flex: 1; color: #909090;">{{hospitalName}}</div>
				</div>
			</li>
@ -59,6 +59,16 @@
				</div>
			</li>
			
			<li style="height: 16px; background: #f3f3f3; margin: 0;">
			<li class="c-list-text c-list-link">
				<div class="c-list-info">
					<h4 class="c-nowrap">关注居民</h4>
				</div>
				<div class="c-list-value c-f16">
					{{concernNum}}人
				</div>
			</li>
			
			{{if signCount}}
			<li style="height: 16px; background: #f3f3f3; margin: 0;">
			<li id="signPatient" class="c-list-text c-list-link ">
@ -103,17 +113,19 @@
		<script type="text/javascript" src="../../../js/mui.min.js"></script>
		<script src="../../../js/template.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript" src="../../../js/common_http.js"></script>
		<script src="../../../js/app.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../js/common.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../js/templateHelp.js" type="text/javascript" charset="utf-8"></script>
		
		<script type="text/javascript">
			var docCode, docInfo, curDoc, self;
			var docCode,docName, docInfo, curDoc, self;
			//获取医生信息
			mui.plusReady(function() {
				curDoc = JSON.parse(plus.storage.getItem("docInfo"));
				self = plus.webview.currentWebview();
				
				docCode = self.docCode;
				docName = self.docName;
				plus.nativeUI.showWaiting();
				var p = {doctor: docCode}
				if(self.teamCode)
@ -161,16 +173,17 @@
			})
			
			$('.send-c').on('tap', function(){
				mui.openWindow({
					id: "p2p",
					url: "../../message/html/p2p.html",
					extras: {
						otherCode: docCode,
						otherName: docInfo.name,
						otherPhoto: docInfo.photo,
						otherSex: docInfo.sex
					}
				})
				openWebview("../../message/html/p2p.html",{sessionId: "", sessionName: docName,otherCode:docCode,otherName: docName});
//				mui.openWindow({ 
//					id: "p2p",
//					url: "../../message/html/p2p.html",
//					extras: {
//						otherCode: docCode,
//						otherName: docName,
//						otherPhoto: docInfo.photo,
//						otherSex: docInfo.sex
//					}
//				})
			})
		</script>
	</body>

+ 59 - 136
html/tuandui/html/tuandui.html

@ -2,158 +2,81 @@
<html>
	<head>
		<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
		<meta charset="utf-8">
		<title>团队</title>
		<meta name="author" content="yihu.com" />
		<meta name="format-detection" content="telephone=no" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0" />
		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black" />
		<title>联系人</title>
		<link rel="stylesheet" type="text/css" href="../../../common/iconfont/iconfont.css">
		<link rel="stylesheet" type="text/css" href="../../../common/cross/css/cross.css">
		<link rel="stylesheet" href="../../../common/cross/css/cross.ui.css" type="text/css" />
		<link rel="stylesheet" type="text/css" href="../../../common/css/jy-style.css">
		<link rel="stylesheet" type="text/css" href="../../../css/mui-pull.css"/>
		<link rel="stylesheet" href="../css/tuandui.css" type="text/css" />
		<style type="text/css">
			.mui-plus-pullrefresh .mui-scroll{
                position: absolute;
                width: 100%;
            }
            #gzbg{
            	position: absolute;
            	right: 0;
            	top: 0;
            	bottom: 0;
            	padding: 0 10px;
            	color: #fff;
            	font-size: 16px;z-index: 999;
            }
		</style>
		<link rel="stylesheet" type="text/css" href="../css/huanzhe.css"/>
	</head>
	<body>
		<!--
        	作者:lcl0338@126.com
        	时间:2016-09-18
        	描述:团队选择
        -->
		<div class="lin-mask"></div>
		<ul class="lin-sel-group">
			
		</ul>
			
		<!--
        	作者:lcl0338@126.com
        	时间:2016-09-18
        	描述:头部
        -->
		<div class="h45">
			<div class="demo-comtop">
				<a class="mui-action-back" style="display: none;"></a>
				<a class="lin-conf c-hide">
					<div></div>
				</a>
				<h1></h1>
				<a class="lin-gp-add c-hide">
					<div></div>
				</a>
				<div id="gzbg" style="display: none;">工作报告</div>
				<h1>联系人</h1>
			</div>
		</div>
		
		<!--
        	作者:lcl0338@126.com
        	时间:2016-09-18
        	描述:列表内容
       -->
		<div id="content">
			<div class="lin-search">
				<div>
					<img src="../../../images/sousuo_icon.png" />
					搜索成员
		<div id="patient_list_wrap">
			<div class="mui-scroll-wrapper" style="top:45px;">
				<div class="list-wrap mui-scroll">
					<div class="lin-search searchbar">
						<div class="c-f12 search-input">
							<img src="../../../images/sousuo_icon.png" />
							搜索
						</div>
					</div>
					<div id="groupList" class="mt10"></div>
				</div>
			</div>
			
			
			<div id="wrapper" class="mui-scroll-wrapper">
                <div class="mui-scroll">
                    <div class="lin-group-chat">
                        <div class="title">团队群聊</div>
                        <div class="lin-arrow"></div>
                    </div>
    			<ul class="doc-list" style="display: block;">
    			
    			</ul>
    			<div style="height:50px; width:100%;">
    			    
    			</div>
    			</div>
            </div>
		</div>
			
		<div id="no_result_wrap" class="c-hide">
			<img class="no-result-img" src="../../../images/shujuweikong_img.png" />
			<div class="f-fs14 c-323232 c-t-center">抱歉,暂未找到符合条件的结果。</div>
		</div>
		<script type="text/html" id="pati_group_tmpl">
            {{each list as val i}}
            <div class="group-item">
                <div class="patient-type">
                    <h3 class="t c-f16">{{i}}</h3>
                    <div class="arrow "> <i class="ui-arrow ui-arrow-b"></i></div>
                </div>
                <div class="c-hide group-info">
                    <ul class="n-list">
                    	{{each val as value j}}
						<li class="n-list-link list-arrow-r n-list-cover" data-code="{{value.code}}" data-name="{{value.name}}">
							<div class="patient-face patient-face-new">
								<img src="{{value.photo | getPhoto}}"> 
							</div>
							<div class="n-list-info">
								<h4 class="c-nowrap c-f16 mt5">{{value.name}}
									<em class="mb-em">{{value.job_name}}</em>
								</h4>
							</div>
						</li>
						{{/each}}
                    </ul>
                    <!--<div class="load-more c-hide" data-group="{{val.labelCode}}">点击加载更多</div>-->
                </div>
            </div>
            {{/each}}
        </script>
		
		<script type="text/javascript" src="../../../js/jquery/2.1.3/jquery.js"></script>
		<script type="text/javascript" src="../../../js/mui.min.js"></script>
		<script src="../../../js/es6-promise.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/underscore.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/common_http.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/template.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../js/common.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/app.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../js/templateHelp.js" type="text/javascript" charset="utf-8"></script>
		<script src="../../../js/mui.pullToRefresh.js" type="text/javascript" charset="UTF-8"></script>
    	<script src="../../../js/mui.pullToRefresh.material.js" type="text/javascript" charset="utf-8"></script>
		<script src="../js/tuandui.js" type="text/javascript" charset="utf-8"></script>
	</body>
	
	<script type="text/html" id="teams_tmpl">
		{{each data as v i}}
		<li class="{{v.id,i | setChecked}}" data-code="{{v.id}}" data-name="{{v.name}}" data-leaderCode="{{v.leaderCode}}"><img src="../images/checked_blue.png"><label>{{v.name}}</label></li>
		{{/each}}
	</script>
	<script type="text/html" id="doc_list_tmpl">
		{{each data as v i}}
		<li>
			<div class="doc-item" data-code="{{v.code}}" data-name="{{v.name}}" data-sex="{{v.sex}}" data-info="{{v | setInfo}}">
				<img src="{{v.photo,v.sex | setDocPic}}">
				<div class="content">
					<div class="name">{{v.name}}</div>
					<label class="qyzs">{{v.level | setLevel}}</label>
				</div>
				{{if isTeamOwner}}
					<div class="operate">
						{{if v.level==3 || v.level==2}}
						<div class="zyjm">转移<br>居民</div>
						{{/if}}
						<!--<div class="sccy">删除<br>成员</div>-->
					</div>
				{{/if}}
			</div>
		</li>
		{{/each}}
	</script>
	
	<script type="text/html" id="doc_tmpl">
		<li>
			<div class="doc-item" data-code="{{v.code}}" data-name="{{v.name}}" data-sex="{{v.sex}}" data-info="{{v | setInfo}}">
				<img src="{{v.photo,v.sex | setDocPic}}">
				<div class="content">
					<div class="name">{{v.name}}</div>
					<label class="qyzs">{{v.level | setLevel}}</label>
				</div>
				{{if isTeamOwner}}
				<div class="operate">
					{{if v.level==3}}
					<div class="zyjm">转移<br>居民</div>
					{{/if}}
					<!--<div class="sccy">删除<br>成员</div>-->
				</div>
				{{/if}}
			</div>
		</li>
	</script>
	
	<script src="../../../js/jquery/2.1.3/jquery.js"></script>
	<script src="../../../js/underscore.js"></script>
	<script src="../../../js/es6-promise.js"></script>
	<!--<script src="../../../widget/iscroll/5.1.3/js/iscroll.js"></script>-->
	<!--<script src="../../js/l-scroll.js" type="text/javascript" charset="utf-8"></script>-->
	<!--<link rel="stylesheet" href="../../js/l-scroll.css" type="text/css" />-->
	<script src="../../../js/mui.min.js" type="text/javascript"></script>
	<script src="../../../js/common_http.js" type="text/javascript" charset="utf-8"></script>
	<script src="../../../js/template.js" type="text/javascript" charset="utf-8"></script>
	<script src="../../js/common.js" type="text/javascript" charset="utf-8"></script>
	<script src="../../js/templateHelp.js" type="text/javascript" charset="utf-8"></script>
	<script src="../../../js/mui.pullToRefresh.js" type="text/javascript" charset="UTF-8"></script>
    <script src="../../../js/mui.pullToRefresh.material.js" type="text/javascript" charset="utf-8"></script>
	<script src="../js/tuandui.js" type="text/javascript" charset="utf-8"></script>
	<script src="../../../js/im.client.js" type="text/javascript" charset="utf-8"></script>
</html>

+ 168 - 498
html/tuandui/js/tuandui.js

@ -1,512 +1,182 @@
	var myScroll,
		startScrollX,
	    scrollX,
	    $scrollDom,
	    searchPage,
	    lastTeamId,
	    isTeamOwner,
	    message,
	    curDocCode,
	    self,
	    docInfo,
	    members,
	    teams,
	    isL = false,
	    thisTeamsId = 0,
	    thisTeamCode;//当前账户团队code
	var xScroll = 0;
	var yOff = 0, xOff = 0;
	
	var $gzbg = $('#gzbg');
// TODO 临时构造plus对象,使得能够在浏览器中进行调试
// var plus = null;
	// 基本信息(包括userAgent、上个页面传递的数据)
var baseInfo = null,
	// 基础环境信息(包括当前webview)
	baseEnv = null,
	pages = {}, //记录个分组内数据页数
	docInfo;
var $searchbarInput = $('.searchbar .search-input'),
	// 搜索无结果时显示
	$noResultWrap = $('#no_result_wrap'),
	// 页面顶部分类标签列表(四个列表项)
	$groupLabelList = $('#group_label_list'),
	patientInfo = null;
// 获取基本信息(包括userAgent、上个页面传递的数据)
var getBaseInfoPromise = function() {
		// 登录的相关信息
	var userAgent = plus && JSON.parse(plus.storage.getItem("userAgent"))
	return {
		userAgent: userAgent
	}
},
// 获取基础环境信息
getBaseEnvPromise = function () {
	
	mui.plusReady(function() {
		self = plus.webview.currentWebview();
		message = self.message;
		if(message){//“转发给”功能,需要返回按钮
			$(".mui-action-back").show();
			$(".lin-group-chat .lin-arrow").hide();
		}
		docInfo = JSON.parse(plus.storage.getItem("docInfo"));
		curDocCode = docInfo.code;
		// 修复bug#2321 团队选择显示有两个团队被选中状态
		// lastTeamId = plus.storage.getItem("teamId");
		
//		myScroll = $('#content').lscroll({pullDownAction: pullDownAction, top: 16,
//			scrollCallBack: function(s){
//				yOff += Math.abs(s.distY>>0);
//				xOff += Math.abs(s.distX>>0);
//				if(xScroll==0 && yOff<20 && xOff>yOff)
//					xScroll = true;
//			}, scrollEndCallBack: function(s){
//				xScroll = 0;
//				yOff = 0;
//				xOff = 0;
//			}
//		});
		teams = JSON.parse(plus.storage.getItem("teamInfo"));
		initTeams(teams);
		
		/**
		 * 预加载查询页面
		 */
		searchPage = mui.preload({
		    url: 'search.html',
		    id: 'search.html' + self.message
	var env = {
		webview: plus&&plus.webview.currentWebview()
	};
	return Promise.resolve().then(function(res) {
		return env;
	});
},
//获取分组信息
getGroupData = function(){
    docInfo = JSON.parse(plus.storage.getItem("docInfo"));
    var url = "doctor/dept_group_list",
        params = {};
    plus.nativeUI.showWaiting();
    sendGet(url, params, null,function(res){
        if(res.status == 200){
            var html = template("pati_group_tmpl", {list: res.data});
            $("#groupList").empty().append(html);
            plus.nativeUI.closeWaiting();
        }else{
            plus.nativeUI.closeWaiting();
            mui.toast(res.msg);
        }
    });
},
// 滚动条分页实例初始化
initScroller = function() {
    //阻尼系数
    var deceleration = mui.os.ios?0.003:0.0009;
    mui('.mui-scroll-wrapper').scroll({
        bounce: false,
        indicators: true, //是否显示滚动条
        deceleration:deceleration
    });
    
    mui(".mui-scroll").pullToRefresh({
        down: {
            callback: function() {
                var self = this;
                setTimeout(function() {
                    getGroupData();
                    self.endPullDownToRefresh();
                }, 1000);
            }
        }
    });
},
// 绑定页面事件
bindEvents = function () {
	$("#groupList").on('tap','.group-info li[data-code]',function(e) {
		var code = $(this).attr("data-code");
		var name = $(this).attr("data-name");
		mui.openWindow('../../mine/html/zuyuanziliao.html', 'zuyuanziliao', {
			extras: {
				docCode: code,
				docName:name,
				teamCode: docInfo.adminTeamCode,
//				isTeamOwner: isTeamOwner
			}
		});
		
		initScroller();
		return false;
	});
	
	function initScroller(){
	    //阻尼系数
        var deceleration = mui.os.ios?0.003:0.0009;
        mui('.mui-scroll-wrapper').scroll({
            scrollX: true,
            bounce: false,
            indicators: true, //是否显示滚动条
            deceleration:deceleration
        });
        
        myScroll = mui(".mui-scroll").pullToRefresh({
            down: {
                callback: function() {
                    var self = this;
                    setTimeout(function() {
                        initMembers(lastTeamId, true);
                        self.endPullDownToRefresh();
                    }, 1000);
                }
            },
            scrollLeft: function(){
                xScroll = true;
	$("#groupList").on('tap', ".group-item", function(){
	    var $el = $(this),
	        code = $.trim($el.attr("data-group")),
	        isOpen = $el.hasClass("current"),
            $groupInfo = $el.find('.group-info');
            
        if(isOpen) {
            $el.removeClass("current");
            $el.find(".ui-arrow").removeClass("ui-arrow-t");
            $el.find(".ui-arrow").addClass("ui-arrow-b");
            $groupInfo.hide();
        }else{
            var $opened = $(".group-item.current");
            $el.addClass("current");
            $el.find(".ui-arrow").removeClass("ui-arrow-b");
            $el.find(".ui-arrow").addClass("ui-arrow-t");
            
            if($opened.length > 0){
                $opened.removeClass('current').find(".group-info").hide();
                $opened.find(".ui-arrow").removeClass("ui-arrow-t");
                $opened.find(".ui-arrow").addClass("ui-arrow-b");
            }
        });
	}
	
//	function pullDownAction(){
//		initMembers(lastTeamId, true);
//	}
	
	template.helper("setQyzs", function(level, qyzs) {
		if(level==1)
			return "";
		return "签约总数: "+ (qyzs? qyzs : '0');
             $groupInfo.show();
        }
	});
	
	template.helper("setInfo", function(info) {
		return JSON.stringify(info);
	$searchbarInput.on('tap',function() {
		mui.openWindow({
			id: "searchhuanzhe2",
			url: "../../tuandui/html/searchdoctor.html",
			extras: {}
		})	
	});
	
	var qkys = [], zkys = [], jgs= [];
	/**
	 * 初始化成员
	 * @param {Object} teamId
	 */
	function initMembers(teamId, isRefresh){
//		plus.nativeUI.showWaiting();
		getReqPromises(
			[
				{url: "/doctor/admin-teams/"+ teamId +"/members", reqType: "GET"}
			],true
		).then(function(datas) {
			if(datas[0].status==200){
				appendMembers(datas[0].data, isRefresh);
			} else
				mui.toast("获取成员数据失败!");
//			plus.nativeUI.closeWaiting();
		}).then(function () {
			//判断是否是团队长
			getReqPromises([{url: '/statistics/checkDoctorIsTeamLeder' ,reqType: 'GET'}]).then(function (res) {
				if (res[0].status == 200) {
					if ( res[0].data && res[0].data != null) {
						thisTeamCode = res[0].data.id;
						if (thisTeamsId == docInfo.adminTeamCode) {
							$gzbg.show();
						} else {
							$gzbg.hide();
						}
						isL = true;
					}
				} else {
					mui.toast(res[0].msg);
				}
			});
		})
		.catch(function(e){
			mui.toast(e.msg);
		});
	}
	
	/**
	 * 初始化选择团队
	 */
	function initTeams(data){
		var isCheck = false;
		template.helper("setChecked", function(id, i) {
			if(lastTeamId && lastTeamId==id)
				return "checked";
			return "";
		});
		thisTeamsId = data.data[0].id;
		$('.lin-sel-group').html(template('teams_tmpl', data));
		if(!isCheck){
			var $dom = $('.lin-sel-group li').eq(0).addClass("checked");
	/*刷新事件*/
	window.addEventListener("refresh", function group(e) {
		getGroupData();
	});
};
// 页面业务处理流程开始
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() {
		// 获取登录医生信息
		baseInfo = getBaseInfoPromise();
		initScroller();
        getGroupData();
		// 绑定页面事件
		bindEvents();
		if(baseEnv.webview.origin){//“随访”功能,需要返回按钮
			$(".mui-action-back").show();
		}
		setCurTeamName();
		setTeamId();
		if(lastTeamId)
			initMembers(lastTeamId, true);
	}
	
	function setCurTeamName(name){
		$('.demo-comtop h1').html((name || $('.lin-sel-group li.checked').attr('data-name')) + '<label class="lin-down-arrow"></label>');
	}
	
	function setTeamId(){
		var $cTeam = $('.lin-sel-group li.checked');
		lastTeamId = $cTeam.attr('data-code');
		isTeamOwner = $cTeam.attr('data-leaderCode')==curDocCode;
		console.log("isTeamOwner = "+isTeamOwner);
		// 修复bug#2321 团队选择显示有两个团队被选中状态
		// plus.storage.setItem('teamId', lastTeamId);
	}
	
	/**
	 * 删除成员
	 */
	function removeMember(code, $dom){
		mui.confirm("删除医生后,该医生将不能进行代理签约等团队内的工作,是否确认继续删除?", "提示", ["不了", "继续删除"], function(e){
			if(e.index == 1){
				plus.nativeUI.showWaiting();
				sendPost("/doctor/admin-teams/"+ lastTeamId +"/members/"+ code +"/remove", {}, null, 
					function(res){
						if(res.status==200){
							$dom.parent().parent().parent().remove();
							plus.nativeUI.closeWaiting();
							mui.toast('删除成功!');
						} else{
							plus.nativeUI.closeWaiting();
							mui.confirm(res.msg, "提示", ["我知道了"], function(e){});
						}
					},'POST','',true);
			}
		})
		
	}
	
	/**
	 * 列表点击事件
	 */
	var initListEvent = function(){
		$('.doc-list')
		.on('tap', 'div.zyjm', function(){ // 转移居民按钮
			var info = JSON.parse($(this).parent().parent().attr('data-info'));
			if(info.level == 3){
				mui.openWindow({
					id: "zhuanyijumin",
					url: "../../search/html/zhuanyijumin.html",
					extras: {
						level: info.level,
						teamCode: lastTeamId,
						docCode: info.code,
						type:'转移'
					}
				});
			} else {
				mui.openWindow({
					id: "zyjm-layer.html",
					url: "zyjm-layer.html",
					styles: {
						background: 'transparent'
					},
					show:{aniShow: "none"},
				    waiting:{autoShow: false},
					extras: {
						teamCode: lastTeamId,
						docCode: info.code,
						type:'转移'
					}
				})
			}
				
			
			/*var docCode = $(this).parent().parent().attr('data-code');
			mui.openWindow({
				id: "xuanzezhuanyijumin.html",
				url: "xuanzezhuanyijumin.html",
				extras: {
					teamCode: lastTeamId,
					docCode: docCode
				}
			});*/
			return false;
		})
		.on('tap', 'div.sccy', function(){ // 删除成员按钮
			removeMember($(this).parent().parent().attr('data-code'), $(this));
			return false;
		})
		.on('touchstart', '.doc-item', function(e){ //左滑动作开始
			e.preventDefault();
			startScrollX = e.originalEvent.targetTouches[0].screenX;
		})
		.on('touchmove', '.doc-item', function(e){ //左滑动作移动
			if(!isTeamOwner) return;
			if(xScroll != true) return;
			e.preventDefault();
			scrollX = e.originalEvent.targetTouches[0].screenX - startScrollX;
			debugger
			var offLeft = $(e.currentTarget).find('div.operate').children('div').length * (-65);
			if(scrollX<0 && scrollX >= offLeft)
				$(e.currentTarget).css('left', scrollX + 'px');
		})
		.on('touchend', '.doc-item', function(e){ //左滑动作结束
			e.preventDefault();
			if(scrollX<-50){
				$scrollDom = $(e.currentTarget);
				var offLeft = $(e.currentTarget).find('div.operate').children('div').length * (-65);
				$scrollDom.animate({left: offLeft}, "fast");
			} else{
				startScrollX = undefined;
				$scrollDom = undefined;
				$(e.currentTarget).animate({left: '0px'}, "fast");
			}
			scrollX = undefined;
			xScroll = false;
			myScroll.options.isLeftScroll = false;
		})
		.on('tap', '.doc-item', function(){
			var oCode = $(this).attr("data-code");
			if(self.message){
				zf(1, oCode, $(this).attr("data-name"));
			} else {
				
				mui.openWindow('../../mine/html/zuyuanziliao.html', 'zuyuanziliao', {
					extras: {
						docCode: oCode,
						teamCode: lastTeamId,
						isTeamOwner: isTeamOwner
					}
				});
			}
		})
	}();
	
	function zf(type, code, name){
		
		mui.confirm("是否确认将消息逐条转发给"+name+"?", "提示", ["不了,谢谢", "确认转发"], function(e) {
			if(e.index == 0) {
				
			} else {
				Promise.all(_.map(self.imMessages,function(msg){
					return new Promise(function(resolve, reject) {
						if(type==1){
							imClient.Sessions.createP2pSession(curDocCode, code, name, function(res){
								if(res.status==200){
									imClient.Sessions.sendMessage(res.data.id, curDocCode, docInfo.name, msg.content, msg.type, function(){
										resolve(true);
									}, function(){
										console.log(JSON.stringify(msg))
										resolve(true);
									})
								}else{
									console.log(JSON.stringify(res))
									resolve(true);
								}
							}, function(msg){
								console.log(JSON.stringify(msg))
								resolve(true);
							})
						} else {
							imClient.Sessions.createGroupSession(code, name, members, function(res){
								if(res.status==200){
									imClient.Sessions.sendMessage(res.data.id, curDocCode, docInfo.name, msg.content, msg.type, function(){
										resolve(true);
									}, function(){
										console.log(JSON.stringify(msg))
										resolve(true);
									})
								}else{
									console.log(JSON.stringify(res))
									resolve(true);
								}
							}, function(msg){
								console.log(JSON.stringify(msg))
								resolve(true);
							})
						}
						
					})
				})).then(function() {
					mui.toast("转发成功");
					mui.fire(self.opener().opener(), "revertZf");
					self.opener().close();
					self.close();
				}).catch(function(e){
					console.log(e)
				})
			}
		})
		
	}
	
	/**
	 * 搜索按钮点击
	 */
	$('.lin-search').on('tap', function() {
		mui.fire(searchPage, "initSearch", {html: $('.doc-list').html(),message:self.message,imMessages:self.imMessages});
		searchPage.show();
	})
	
	/**
	 * 取消左移块的事件
	 */
	$('body').on('touchstart', function(e){
		if($scrollDom)
			$scrollDom.animate({left: '0px'}, "fast");
	}).on('touchmove', function(e){
//	    if(!e.target.parentElement.classList.contains("lin-sel-group")){
//	        e.preventDefault();
//	    }else{
//	        $("body").scrollTop(0);
//	        mui('.mui-scroll').pullRefresh().setStopped(true); 
//	    }
	})
	
	
	$gzbg.on( 'tap', function () {
}).catch(function(e) {
	plus.nativeUI.closeWaiting();
	console && console.error(e);
});
		var href = '../html/gongzuobaogao.html',
			hrefId = "gongzuobaogao"
		if(plus.os.name == "Android") {
            var wv = plus.webview.create( href, hrefId, {hardwareAccelerated:false}, {
                  teamCode: thisTeamCode
            } );
            wv.show("slide-in-right",250);
        } else {
            mui.openWindow({
                url:href,
                id:hrefId,
                extras:{
                  teamCode: thisTeamCode
                },
             })
        }
	});
	
	/**
	 * 初始化头部点击事件
	 */
	var initHeaderEvent = function(){
		/**
		 * 显示团队选择
		 */
		var showGroupSel = function(e, isShow){
			isShow = isShow || $('.lin-mask:hidden').length != 0;
			$('.lin-mask').toggle(isShow);
			$('.lin-sel-group').toggle(isShow);
		}
		
		$('.lin-mask').on('tap', showGroupSel);
		$('.demo-comtop h1').on('tap', showGroupSel);
	
		$('.lin-conf').on('tap', function(){
			mui.openWindow({
				url: "tuanduishezhi.html",
				extras: getTeamInfo()
			})
		})
		
		$('.lin-gp-add').on('tap', function(){
			mui.openWindow({
				url: "tianjiachengyuan.html",
				extras: getTeamInfo()
			})
		})
		
		$('.lin-sel-group').on('tap', 'li', function(){
			thisTeamsId = $(this).attr('data-code');
			showGroupSel(undefined, false);
			if(!$(this).hasClass('checked')){
				$(this).addClass('checked').siblings().removeClass('checked');
				setCurTeamName();
				setTeamId();
				initMembers(lastTeamId, true);
			}
		})
		
		$('.lin-group-chat').on('tap', function(){
			if(!self.message){
				var members = [];
				$.each($('.doc-item'), function(i, v) {
					members.push( JSON.parse($(v).attr('data-info')) );
				});
				var info = getTeamInfo();
				info.code = info.teamCode;
				info.members = members;
				mui.openWindow({
					url: "../../message/html/tuanduiqunliao.html",
					id: "tuanduiqunliao.html",
					extras: {
						info: info
					}
				})
			} else {
				zf(2, lastTeamId, $('.lin-sel-group li.checked').attr('data-name'));
			}
			
		})
	}();
function setAge(age) {
	if(age == 0) {
		return "<1";
	} 
	if(age == -1)
		return "未知";
	return age;
}
template.helper("setAge", setAge);
	function getTeamInfo(){
		var $team = $('.lin-sel-group li.checked');
		return {teamName: $team.attr('data-name'), teamCode: $team.attr('data-code')}
	}
	
	function appendMembers(data, isRefresh){
		var resData = [];
		for(var i=0;i<data.length;i++){
			if(!(message && curDocCode==data[i].code)){//转发消息时,过滤掉当前登录者
				resData.push(data[i]);
			}
		}
		var html = template('doc_list_tmpl', {data: resData, isTeamOwner: isTeamOwner, curDocCode: curDocCode,imMessages:self.message});
		if(isRefresh){
			members = {}
			$.each(resData, function(i, v) {
				members[v.code] = v;
			});
			$('.doc-list').html(html);
		} else{
			$('.doc-list').append(html);
		}
//		myScroll.refresh(true);
function setSex(s) {
	if(s == 1) {
		return "男";
	} else if(s == 2) {
		return "女";
	}
	/**
	 * 更新团队名称
	 */
	window.addEventListener("updateTeamName", function(e){
		var $cur = $('.lin-sel-group li[data-code="'+ e.detail.teamCode +'"]');
		var name = e.detail.teamName;
		$cur.attr('data-name', name).find('label').html(name);
		if($cur.hasClass('checked')){
			setCurTeamName(name);
		}
	})	
	
	/**
	 * 新增成员
	 */
	window.addEventListener("updateTeamMember", function(e){
		var data = e.detail.data;
		var tmp = [];
		for(var k in data){
			tmp.push(data[k]);
		}
		appendMembers(tmp);
	})
	
	/*刷新事件*/
	window.addEventListener("refresh", function refresh(e) {
		$('.lin-mask').hide();
		$('.lin-sel-group').hide();
	});
}
template.helper("setSex", setSex);
template.helper("getPhoto", function(str){
    return getImgUrl(str);
})

+ 4 - 4
js/common_http.js

@ -1,5 +1,5 @@
//切换发布版本 true:正式版,连接生产环境;false:测试版,连接测试环境。
var publish_version = true;
var publish_version = false;
//var publish_version = false;
var curr_app_version = 5; //app当前内定版本号
@ -35,8 +35,8 @@ if(publish_version == true) {
	
	//接口服务器
	server = "http://172.19.103.72:9096/wlyy/";
//  server = "http://192.168.131.24:8082/";//仕杰
//	server = "http://192.168.131.102:8080/";//伟达
    server = "http://192.168.131.24:8082/";//仕杰
//	server = "http://192.168.131.250:8081/";//伟达
//  server = "http://192.168.131.133:8080/";//文杰
//  server = "http://192.168.131.131:8080/";//文彬
//	server = "http://192.168.131.127:8060/";//逸祥
@ -128,7 +128,7 @@ function sendPost(url, params, custError, custSuccess,dataType, timeOut, newWay)
		timeout: timeOut || 60000, 
		error: function(xht, type, throwErr) {
			console.log(type + " : " + throwErr);
			console.log(reqUrl+"    "+type + " : " + throwErr);
//			var random = Math.random();
//			isLoginOut = window.localStorage.isLoginOut;
//			if(isLoginOut) {