messenger.js 5.79 KB
var _messenger = (function(){
	
	//线路托管状态
	var tgStateMap;
	
	//定时将托管状态下的信使清理掉(不包含80)
	!function(){
		var f = arguments.callee
			,ct = Date.parse(new Date()) / 1000
			,list, time;
		
		for(var code in tgStateMap){
			if(tgStateMap[code] == 1)
				continue;
			
			list = $('#messengerList' + code).find('.log-item.fache,.log-item.zhongdian');
			$.each(list, function(){
				time = parseInt($(this).data('time'));
				if(ct - time >= 30)
					removeLogItem($(this));
			});
			//更新未处理的消息数量
			setUntreatedNum(code);
		}
		
		setTimeout(f, 3000);
	}();
	
	//未处理消息数量
	function setUntreatedNum(lineCode){
		var len = $('#messengerList' + lineCode).find('.log-item').length;
		var $e = $('#top-tabs-wrap .top-nav li a[data-id='+lineCode+'] span zz:eq(0)');
		$e.text(len);
	}
	
	//应发未发 班次数量
	function setYFWFNum(lineCode){
		var size = _data.getYfwfNumByLine(lineCode);
		var $e = $('#top-tabs-wrap .top-nav li a[data-id='+lineCode+'] span zz:eq(1)');
		$e.text(size);
	}
	
	/** 信使操作 */
	$('.portlet-fullscreen').on('click', '.log-item-handle a.log-close', function(){
		removeLogItem($(this).parents('.log-item'));
	});
	
	//80上报事件处理
	//同意
	$('.portlet-fullscreen').on('click','.log-item-handle .confirm', function(){
		send80Reply(this, 0);
	});
	
	//不同意
	$('.portlet-fullscreen').on('click','.log-item-handle .dissent', function(){
		send80Reply(this, -1);
	});
	
	function send80Reply(that, reply){
		var $handle = $(that).parents('.log-item.handle');
		var id = $handle.data('id');
		var $run = $handle.find('.log-item-runing');
		$run.show();
		
		$.post('/directive/reply80', {id: id, reply: reply}, function(rs){
			if(rs.status == 'ERROR')
				$run.hide();
			
			if(rs.msg)
				layer.alert(rs.msg, {icon: 0});
		});
	}
	
	
	var messengerObj = {
		init: function(){
			//初始化信使和驾驶员上报数据
			initMessenger(lineCodes);
			$.get('/directive/findNoCofm80', {lineCodes: lineCodes}
				, function(rs){
				//填充未确认的80数据
				for(var lineCode in rs){
					$.each(rs[lineCode], function(){
						this.dateStr = moment(this.timestamp).format('HH:mm.ss');
						this.text = reqCodeMap[this.data.requestCode];
					});
					
					rs[lineCode].sort(function(a, b){
						return b.timestamp - a.timestamp;
					});
					
					var htmlStr = template('console_80_temp', {list: rs[lineCode]});
					$('#messengerList' + lineCode).html(htmlStr);
				}
			});

			//消息框滚动条
			$('.console-log .log-item-list').slimscroll({
				height: '100%'
			});
		},
		setUntreatedNum: setUntreatedNum,
		setYFWFNum: setYFWFNum
	}
	
	
	$('.portlet-fullscreen').on('click', '.tg_tools', changeTGStatus);
	var tgHtml = ['托管状态,计算机自动处理&nbsp;<i class="fa fa-question-circle tgQuestion" style="cursor: pointer;"></i>', '非托管状态,手动处理!'];
	
	var tgDescHtml = '<table class="tg-question-table"> '+ 
					'	<tr>'+ 
					'		<td>出场请求</td>'+ 
					'		<td class="font-blue">同意(切换营运状态)</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>恢复运营</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>申请调档</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>进场请求</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>加油请求</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>车辆故障</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>路阻报告</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>事故报告</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>扣证纠纷 </td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	<tr>'+ 
					'		<td>报警</td>'+ 
					'		<td>不处理</td>'+ 
					'	</tr>'+ 
					'	</table>';
	var tgPopoverOps = {content: tgDescHtml,html: true,placement: 'left',trigger: 'hover',container: '.portlet-fullscreen'};
	function initMessenger(lineCodes){
		//查询线路托管状态
		$.get('/realSchedule/trustStatus', {lineCodes: lineCodes},function(rs){
			tgStateMap = rs;
			for(var line in rs)
				changeTgHtml(line, rs[line]);
		});
	}
	
	function changeTgHtml(line, status){
		var tgTools = $('#tgTools_' + line);
		
		tgTools.html(tgHtml[status]).data('status', status);
		var array = $('#top-tabs-wrap a[data-id='+line+'] span zz');
		
		if(status == 0){
			//托管Question
			$('.tgQuestion', tgTools).popover(tgPopoverOps);
			tgTools.removeClass('hand');
			
			$(array[2]).text('托管');
		}
		else{
			tgTools.addClass('hand');
			$(array[2]).text('');
		}
		
		//tab 头改变
		
	}
	
	//切换托管状态
	var runing;
	function changeTGStatus(){
		if(runing)
			return;
		runing = true;
		
		var status = $(this).data('status');
		if(status == 0)
			status = 1;
		else
			status = 0;
		
		$(this).data('status', status);
		
		var lineCode = $(this).data('linecode');
		
		$.post('/realSchedule/trustStatus/change', {lineCode: lineCode, status: status}
			,function(rs){
				if(rs == 200){
					tgStateMap[lineCode] = status;
					layer.msg('切换成功!');
					changeTgHtml(lineCode, status);
					runing = false;
					
					//console.log(tgStateMap);
				}
		});
	}
	
	
	function removeLogItem($that){
		var lineCode = $that.parents('.log-item-list').data('code');
		console.log('removeLogItem', lineCode);
		$that.fadeOut('normal', function(){
			$that.remove();
			//重新计算信使数量
			setUntreatedNum(lineCode);
		});
	}
	
	countDown('messenger.js');
	return messengerObj;
})();