| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 | 	// 基本信息(包括userAgent)var baseInfo = null,	// 基础环境信息(包括当前webview、encry相关)	baseEnv = null;	// 咨询医生var $yishengInput = $("#zixun_yisheng").find("input"),	// 咨询问题	$wentiInput = $("#zixun_wenti").find("textarea"),	// 添加附件图标按钮	$imgArea = $('.add-img'),	// 提交咨询	$sumit = $('#sumit');		// 关闭重新登录检查(防止一个ajax error导致所有请求成功无法回调)var checkReload = false;		// 获取登录相关信息var getBaseInfo = function() {		// 登录的相关信息	var userAgent = JSON.parse(plus.storage.getItem("userAgent"));	return {		userAgent: userAgent,		accessData: $.extend({},baseEnv.webview.accessData)	}},// 获取基础环境信息getBaseEnvPromise = function () {		var env = {		webview: plus.webview.currentWebview()	};		// 因为有异步请求,需要等待数据返回之后进行处理,所以返回Promise	return Promise.resolve().then(function(res) {		return env;	});},// 获取表单数据getInputs = function() {	var data = {		docName: $yishengInput.val().trim(), // 姓名		question: $wentiInput.val().trim(),		images: null// 附件	};	return data;},// 必输验证validRequired =  function(data) {	var fieldsStr = "question",		fieldMap = {			question: "咨询问题"		},		fields = fieldsStr.split(","),		invalidField;	// 某个字段为""、null、undefined,则该字段不能通过必输校验	invalidField = _.find(fields,function(key) {		return !data[key]&&data[key]!==0;	});	if(invalidField) {		mui.toast(fieldMap[invalidField]+'不能为空');		return false;	} else {		return true;	}},// 所有输入验证validInputsPromise = function() {	// 表单数据	var data = getInputs();	return Promise.resolve()	.then(function() {		if(!validRequired(data)) throw new Error("必输校验失败");	})	.then(function() {		return data;	});},// 图片缩放scaleRefresh = function (dom) {	ImagesZoom.init({		"elem": dom,		"delBack": function(index) {			$(".pic-count").text($(".pic-count").text() - 1); //删除图片后的回调			$(dom).find("li").eq(index).remove();		}	});},//获取压缩图片路径uploadCompressImg = function (cb) {	var imgs = document.querySelectorAll(".add-img li img");	if(imgs.length > 0) {		plus.nativeUI.showWaiting();		var path, prepath = "_doc/press_img/";		for(var i = 0; i < imgs.length; i++) {			path = imgs[i].getAttribute("src");			var aImg = path.split("/");			var imgName = aImg[aImg.length - 1];			compressImg(path, prepath + imgName, cb);		}		return imgs.length;	}	return 0;},//压缩图片compressImg = function (path, dstpath, cb) {	plus.zip.compressImage({		src: path,		dst: dstpath,		quality: 20,		overwrite: true	}, function(succ) {		var url = succ.target;		var size = succ.size;		var width = succ.width;		var height = succ.height;				if(cb && $.isFunction(cb)) {			cb(url);		}	}, function(err) {		console.error("压缩失败:" + err.message);		if(err.message == "文件不存在") {			mui.toast(err.message);			plus.nativeUI.closeWaiting();			plus.webview.currentWebview().reload();		}	});},// 上传并获取图片url地址(多张图片以“,”分割)getImagesPromise = function() {	return new Promise(function(resolve, reject) {		var uploadImgUrl = getCompressImg();		if(uploadImgUrl) {			resolve({urls:uploadImgUrl});		} else {			// 没有附件			resolve({urls: null})		}	});},toP2pPage = function(sessionId) {	mui.openWindow({		url: "../../message/html/p2p.html",		id:"p2p",		// 跳转页面传参		extras: {			sessionId: sessionId,			sessionName: baseInfo.accessData.name		}	});},bindEvents = function() {	// 添加附件	$imgArea.on('tap', '.add', function() {		showActionSheet($imgArea[0], this);	});	// 提交咨询	$sumit.on('tap', function() {		plus.nativeUI.showWaiting();		var url = server+"/doctor/work_scheduling/is_doctor_working";		var data={doctor:baseInfo.accessData.doctor};		getReqPromise(url,data).then(function(res) {			if(res.status == 200) {				return res.data;			} else {				mui.toast(res.msg);				return null;			}		}).then(function(data) {			var status = data.status;			if(status) {//0:医生不接受咨询 1:医生接受咨询 2:医生当前不在工作时间				if(status=="0"){										plus.nativeUI.closeWaiting();					dialog({					    content: '对不起,该医生已暂停接受咨询,您可选择其他医生进行咨询',					    cancelValue: '我知道了',					    cancel: function () {							return;					    }					}).showModal();					return false;				}else if(status=="1"){										validInputsPromise().then(function(data) {						return data;					}).then(function(data) {						var msgSended = false;												var images = [];						var imageNum = uploadCompressImg(function(imgUrl) {							var task = plus.uploader.createUpload(server + "upload/chat", {								method: "post"							}, function(t, sta) {												if(sta == 200) {									var msg = t.responseText;									var oImg = JSON.parse(msg);									var imgUrl = oImg.urls;									var re = new RegExp("\\\\", "g");									imgUrl = imgUrl.replace(re, "/");									images.push(imgUrl);								}							});							task.addFile(imgUrl, {});							task.start();						});												if(imageNum) {							var count = 1000;							var timer = window.setInterval(function() {								count--;								if(count==0 || imageNum == images.length) {									window.clearInterval(timer);									timer = null;									var param = {doctorCode: baseInfo.accessData.doctor, images:images.join(",")}									if(data.question) {										param.symptoms = data.question									}									getReqPromise("doctor/consult/famousAdd",param)									.then(function(res) {										plus.nativeUI.closeWaiting();										if(res.status == 200) {											toP2pPage(res.data.session_id);										} else {											console && console.error(res.msg);										}									});								}							},500)						} else {							data.question && getReqPromise("doctor/consult/famousAdd",{doctorCode: baseInfo.accessData.doctor, symptoms: data.question})							.then(function(res) {								plus.nativeUI.closeWaiting();								if(res.status == 200) {									toP2pPage(res.data.session_id)								} else {									console && console.error(res.msg);								}							});						}											}).catch(function(e) {						plus.nativeUI.closeWaiting();						console && console.error(e);					});									}else if(data=="2"){										plus.nativeUI.closeWaiting();					dialog({					    content: '医生不在工作时间内哦,请在医生咨询计划时间段内咨询',					    cancelValue: '我知道了',					    cancel: function () {							return;					    }					}).showModal();				}			}		}).catch(function(e) {			console && console.error(e);		});								});		// 删除图片	mui(".add-img").on("tap", ".icon-del", function() {		var oli = this.parentElement;		var oul = this.parentElement.parentElement;		oul.removeChild(oli);	});	};// 页面业务处理流程开始new Promise(function(resolve, reject) {	mui.init({		beforeback: function() {			if($('.imgzoom-pack').css("display")!=="none"){				$('.imgzoom-x').trigger('click');				return false;			}		}	});	mui.plusReady(function() {		// plus已经准备好,可以往下执行		resolve(true);	});}).then(function() {	// TODO 防止因为其它ajax error导致存在isLoginOut标识,所有请求回调无法执行的问题	window.localStorage.removeItem("isLoginOut");		// 获取基础环境信息	return getBaseEnvPromise().then(function(env) {		baseEnv = env;	}).then(function() {		// 获取登录医生信息		baseInfo = getBaseInfo();		$yishengInput.val(baseInfo.accessData.name||"");		//图片缩放		scaleRefresh(".upload-img");		// 绑定页面事件		bindEvents();	})}).catch(function(e) {	plus.nativeUI.closeWaiting();	console && console.error(e);});
 |