var Request = GetRequest()
new Vue({
  el: '#main',
  data: {
  		sessionId:null,
		sessionType:2,//1对1会话
		curDoctorCode:JSON.parse(window.localStorage.getItem('wlyyAgent')).uid,
		curDoctorName:"",
		otherCode: Request["otherCode"],//对方医生code
		otherName: decodeURIComponent(Request["otherName"]) || "",//对方医生姓名
		planDetailId:Request["planDetailId"],//项目id
		members:[],
		otherInfo:null,//对方的医生信息
		firstMsg:null,
		page:1,
		pagesize:10,
		count:0
	},
	mounted: function() {
		this.createSession();
		this.bindEvents();
	},
	methods:{
		createSession:function(){
			var vm = this;
			var p = {}
			p[vm.curDoctorCode] = 0;
			p[vm.otherCode] = 0;
			var data = {
				session_type: vm.sessionType, session_name: vm.otherName, participants: JSON.stringify(p) 
			}
			consultingAPI.createSession(data).then(function(res){
				if(res.status==200){
					vm.sessionId = res.data.id;
					vm.connectSocket();//创建socket连接
					vm.getMembers();//获取成员列表
				}else{
					layer.msg(res.msg, {icon: 5})
				}
			});
		},
		getMembers:function(){
			var vm = this;
			consultingAPI.getParticipants(vm.sessionId).then(function(rs){
				var members = {};
				var isSTF=false;//是否是专科对家医聊天，需要隐藏发送名片入口
				$.each( rs , function(i, v) {
					if(v.level==1) isSTF=true;
					if(v.id!=vm.curDoctorCode){
						vm.otherInfo = v;
						vm.otherCode = v.id;
					}else {
						vm.curDoctorName = v.name;
					}
					vm.members.push({
						id:v.id,
						code: v.id,
						name: v.name,
						sex: v.sex,
						avatar: v.avatar,
						role: v.role,
        		is_patient: v.is_patient,//0 医生，1 患者
        		last_fetch_time:v.last_fetch_time
					});
				});
				
				//获取消息
				vm.getMessage(true);
			});
		},
		getMessage:function(isInit){
			var vm = this;
			var params = {
		        page: vm.page,
		        pagesize: vm.pagesize,
		        end_msg_id: '',
		        start_msg_id: '',
		        user: vm.curDoctorCode,
		        session_id: vm.sessionId,
		        content_type: '',
		        isoffset: ''
		    }
		    consultingAPI.getMessages(params).then(function(res){
		        var list = res;
		        if (list && list.length > 0) {
		            id = list[list.length - 1].id;
		            var html = '',
		                length = list.length;
		            
		            for (var j = list.length-1; j >= 0; j--) {
		                var reply = list[j];
		                html += vm.formatMsg(reply);
		            }
		            if(isInit){
		                $("#talkBox").append(html);
		                $("#talkBox").slimScroll({
		                    height: '100%',
		                    width: '100%',
		                    alwaysVisible: true,
		                    start : 'bottom',
		                }).bind('slimscroll', function(e, pos) {
		                    if(pos == 'top'){
		                        if(length == 10){
		                            vm.page++;
		                            vm.getMessage();
		                        }
		                    }
		                });
		            }else{
		                $("#talkBox").prepend(html);
		                $("#talkBox").slimScroll({
		                    scrollTo: 'bottom'
		                });
		            }
		            
		            $(".fancybox").fancybox({openEffect:"none",closeEffect:"none"});
		            plyr.setup();
		        }
		    });
		},
		bindEvents:function(){
			var vm = this;
			
			template.helper('getSourceUrl', function(str){
		        return httpRequest.getImgUrl(str);
		    });
		    
		    //发送图片
		    $("#file_head").on('change', function(){
		        var file = this.files[0];
		        //先上传图片去服务器，然后再发送消息
		        var fd=new FormData();
		        fd.append("action", "UploadVMKImagePath");  
		        fd.append("file", file); //加入文件对象
		        fd.append("type", '2');
		        var ajaxObj = {
		            data: fd,
		            cache: false,
		            processData: false,
		            contentType: false 
		        }
		        consultingAPI.uploadImage(ajaxObj).then(function(res){
		            if(res.status == 200){
		                vm.sendMessage(2, res.urls);
		                var obj = {
		                    content: res.urls,
		                    content_type: '2',
		                    sender_id: vm.curDoctorCode,
		                    timestamp: new Date().getTime()
		                }
		                var html = vm.formatMsg(obj);
		                
		                $("#talkBox").append(html);
		                $("#talkBox").slimscroll({
		                    scrollTo: 'bottom'
		                });
		            }else{
										layer.msg(res.msg, {icon: 5})
		            }
		        });
		    });
		},
		sendClick:function(){
			var vm = this;
			var $this = $(this);
	        var text = $.trim($("#input_content").text());
            if(text.length == 0){
                vm.showWarningMsg('发送内容不能为空');
                return false;
            }else{
                vm.sendMessage(1, text);
                $("#input_content").text('');
                var obj = {
                    content: text,
                    content_type: '1',
                    sender_id: vm.curDoctorCode,
                    timestamp: new Date().getTime()
                }
                var html = vm.formatMsg(obj);
                
                $("#talkBox").append(html);
                $("#talkBox").slimscroll({
                    scrollTo: 'bottom'
                });
            }
		},
		sendMessage:function(contentType, content){
			var vm = this;
			var params = {
		        sender_id: vm.curDoctorCode,
		        sender_name: vm.curDoctorName,
		        content_type: contentType,
		        content: content,
		        view: 0
		    };
		    consultingAPI.sendMessage(vm.sessionId, {data: params}).then(function(res){
		        console.log(res);
		        vm.count++;
		        if(vm.count==1 && JSON.parse(window.localStorage.getItem('wlyyAgent')).doctorType==1 && vm.planDetailId && vm.planDetailId!="undefined"){//level:1 专科医生 （只记录第一条数据）
			        var messages = res.messages[0];
			        var guidanceParams = {
			        	messageId:messages.id,//消息id
			        	content:messages.content,//聊天内容
			        	planDetailId:vm.planDetailId,//服务项目id
			        	contentType:messages.content_type//消息类型
			        }
			        consultingAPI.saveGuidanceMessage(guidanceParams).then(function(rs){
				        	if(rs.status==200){
				        		
				        	}else{
										layer.msg(rs.msg, {icon: 5})
			            }
			        })
		        }
		    });
		},
		connectSocket:function(){
			var vm = this;
			jQuery.getScript(httpRequest.socketUrl+"/socket.io/socket.io.js").done(function() {
		        var socket = io.connect(httpRequest.socketUrl );
		        socket.emit('login', {
		            userId: vm.curDoctorCode, 
		            password: vm.curDoctorCode, 
		            sessionId: vm.sessionId,
		            clientType: "pc_doctor"
		        });
		        socket.on('message', function (data) {
		            console.log(data);
		            if(data.read && (data.read == "all" || data.read == "one") ){
		                return ;
		            }
		            var html = vm.formatMsg(data);
		            $("#talkBox").append(html);
		            $("#talkBox").slimscroll({
		                scrollTo: 'bottom'
		            });
		        });
		        socket.on('error', function (data) {
		            console.log(data)
		        });
		        socket.on('ack', function (data) {
		        });
		    }).fail(function() {
		        // dialog({contentType:'tipsbox', skin:'bk-popup' ,bottom:true, content:"医生实时对话连接失败！"}).show();     
		    });
		},
		formatMsg:function(reply){
			 var vm = this;
			 try{
		        reply = JSON.parse(reply);
		    }catch(e){
		    }
		    var isSelf = (reply.sender_id==vm.curDoctorCode) ? true : false;
		    var isSystem = reply.sender_id == 'system';
		    var html = '';
		    if(reply.content_type == 7 || reply.content_type == 10 || reply.content_type == 13 || reply.content_type == 14){
		        var content = reply.content;
		        if(isSystem){
		            content = '居民24小时内未回复，系统自动结束咨询';
		        }
		        html = template('sys_msg_tmp', {content: content});
		    }else{
		        var member;
		        for(var i=0; i<vm.members.length; i++){
		            if(reply.sender_id == vm.members[i].id){
		                member = vm.members[i];
		                break;
		            }
		        }
		        var img = httpRequest.getImgUrl(member.avatar);
		        if((img.indexOf('http') == -1) && (img.indexOf("https") == -1)){
		            img = '../../../images/d-male.png';
		        }
		        var content = '';
		        try{
		        	  if(reply.content_type == 18 || reply.content_type == 19){//居民名片、聊天记录
		            	content = "暂不支持此类信息";
		            }else if(reply.content_type == 3){ //语音
		                content = {};
		                content.path = JSON.parse(reply.content).path;
		            }else if(reply.content_type == 12){ //视频文件
		                var arr = reply.content.split(",");
		                content = {};
		                content.img = arr[0];
		                content.path = arr[1];
		                content.time = arr[2];
		            }else{
		            	if(vm.isString(reply.content)){
		            		content = reply.content;
		            	}else{
		            		content = JSON.parse(reply.content);
		            	}
		        	}
		        }catch(e){
		            
		        }
		        var obj = {
		            isSelf: isSelf,
		            time: new Date(reply.timestamp).format('yyyy-MM-dd HH:mm:ss'),
		            type: reply.content_type,
		            name: member.name,
		            img: img,
		            content: content
		        };
		        html = template('msg_tmp', obj);
		    }
		    return html;
		},
		isString:function(str){
			return (typeof str=='string')&&str.constructor==String; 
		},
		showWarningMsg:function(msg){
			toastr.warning(msg)
		}
	}
})
