lixin-web
Version:
vue and bootstrap
1,183 lines (1,147 loc) • 39.4 kB
JavaScript
var WebQQ = function() {
var qqHtml = '<div class="webqq-mini-window noselect default-cursor hidden-xs"><div class="head-portrait">'+
'</div>'+
'<div class="status">'+
'<i class="imonline"></i>我的在线'+
'</div>'+
'<div class="msg">'+
'<i>0</i>'+
'</div>'+
'</div>'+
'<div class="webqq-main-window">'+
'<div class="top-action-bar">'+
'<a class="btn btn-close" title="关闭"></a>'+
'</div>'+
'<div class="my-profile">'+
'<div class="head-portrait">'+
'</div>'+
'<div class="infos">'+
'<div class="name">潇洒哥~</div>'+
'<div class="sign">编辑个性签名</div>'+
'</div>'+
'</div>'+
'<div class="search-all">'+
'<input type="text" placeholder="搜索:联系人" />'+
'</div>'+
'<div class="chats">'+
'<div class="tabs">'+
'<a data-href="last" class="last">'+
'<span class="arrow"></span>'+
'</a>'+
'<a data-href="contacts" class="contacts">'+
'<span class="arrow"></span>'+
'</a>'+
'<a data-href="group" class="group">'+
'<span class="arrow"></span>'+
'</a>'+
'</div>'+
'<div class="panels">'+
'<div class="item-panel last">'+
'<div class="scroller" data-height="264">'+
'<div class="tips">暂时没有会话</div>'+
'</div>'+
'</div>'+
'<div class="item-panel contacts">'+
'<div class="scroller" data-height="264">'+
'<div class="tips">您没有任何好友</div>'+
'</div>'+
'</div>'+
'<div class="item-panel group">'+
'<div class="scroller" data-height="264">'+
'<div class="tips">您没有加入任何群组</div>'+
'</div>'+
'</div>'+
'</div>'+
'</div>'+
'</div>'+
'<div class="webqq-chat-window draggable">'+
'<div class="dragarea"></div>'+
'<div class="top-action-bar">'+
'<a class="btn btn-close" title="关闭"></a>'+
'</div>'+
'<div class="my-profile">'+
'<div class="head-portrait">'+
'</div>'+
'<div class="infos">'+
'<div class="name"></div>'+
'<div class="sign"></div>'+
'</div>'+
'</div>'+
'<div class="chats">'+
'<div class="tips">'+
'<div class="msg info">对方“离线或隐身”,可能无法立即回复。</div>'+
'<a class="close"></a>'+
'</div>'+
'<div class="msg-list">'+
'<div class="scroller" data-height="280">'+
'</div>'+
'</div>'+
'<div class="facelist">'+
'<div class="wrapper">'+
'<div class="scroller" data-height="192" data-always-visible="1"></div>'+
'</div>'+
'</div>'+
'<div class="toolbar">'+
'<a class="tools face" title="表情"></a>'+
'<a class="tools shakes" title="抖动"></a>'+
'<a class="tools picture" title="发送图片"></a>'+
'<a class="tools screenshot" title="截图"></a>'+
'<a class="tools clean" title="清除聊天记录"></a>'+
'<a class="tools history">聊天记录</a>'+
'</div>'+
'<div class="send-msg">'+
'<div class="textarea">'+
'<div class="scroller" data-height="72">'+
'<div class="content" contenteditable="true" _moz_resizing="false"></div>'+
'</div>'+
'</div>'+
'<div class="actions">'+
'<a class="btn close">关闭(C)</a>'+
'<a class="btn send">发送(S)</a>'+
'</div>'+
'</div>'+
'</div>'+
'<div class="sidebar"></div>'+
'</div>'+
'<div class="webqq-plan-window">'+
'<div class="header">'+
'<div class="header_box">'+
'<i><img src="/plugins/custom/webqq/img/header_text.png"></i>'+
'<span>高水准的彩票计划方案,尽在其中!</span>'+
'</div>'+
'<div class="top-action-bar">'+
'<a class="btn btn-close" title="关闭"></a>'+
'</div>'+
'<div class="header_select">'+
'<ul>'+
'<li class="li_padding">彩种选择</li>'+
'<li><select data-select="lotterySelect"><</select></li>'+
'<li class="li_padding left_50">玩法选择</li>'+
'<li>'+
'<select data-select="lotteryMethodSelect">'+
'<option value="">所有玩法</option>'+
'</select>'+
'</li>'+
'</ul>'+
'</div>'+
'</div>'+
'<div class="box_div">'+
'<div class="f_left">'+
'</div>'+
'<div class="f_right">'+
'</div>'+
'</div>';
$('body').append(qqHtml);
var ProjectPath = '/plugins/custom/webqq/'; // 项目路径
var AvatarPath = '/img/avatar/'; // 头像路径
var MainWindow = $('.webqq-main-window');
var ChatWindow = $('.webqq-chat-window');
var MiniWindow = $('.webqq-mini-window');
var PlanWindow = $('.webqq-plan-window');
/**
* 数据接口
*/
var DataHandle = {
scoket: {
},
ajax: {
last: {
url: '' // 最近联系人接口
},
contacts: {
url: '/api/chat/get-contact-group', // 联系人接口
interval: 60*1000 // 拉取数据间隔
},
//groupUrl: '', // 讨论群组接口
profile: {
url: '', // 个人信息接口
interval: 60*1000 // 拉取数据间隔
},
sendMsg: {
url: '/api/chat/send-message', // 发送消息接口
},
loadMsg: {
url: '/api/chat/get-message', // 加载信息接口
interval: 10*1000 // 拉取数据间隔
},
setMsgRead:{
url: '/api/chat/deal-receive-message', // 发送消息接口
},
historyUrl: '', // 历史记录接口
post: function(url, data, success, error) {
$.ajax({
type : 'post',
url : url,
data : data,
timeout: 10000,
dataType : 'json',
success : function(data) {
if(data.error){
if(data.error == 0) {
if($.isFunction(success)) success(data);
}
if(data.error == 1 || data.error == 2) {
if($.isFunction(error)) error(data);
}
}else{
if($.isFunction(success)) success(data);
}
},
error : function() {
if($.isFunction(error)) error();
}
});
}
},
method: 'ajax'
};
/**
* 声音
*/
var Sound = function() {
var sounds = {
audio: ProjectPath + 'res/sound/audio.wav',
global: ProjectPath + 'res/sound/global.wav',
msg: ProjectPath + 'res/sound/msg.wav',
shake: ProjectPath + 'res/sound/shake.wav',
system: ProjectPath + 'res/sound/system.wav',
tweet: ProjectPath + 'res/sound/tweet.wav'
};
// 播放声音
var play = function(name) {
$('audio#WebQQ').remove();
var audio = $('<audio id="WebQQ" autoplay="autoplay">');
audio.attr('src', sounds[name]);
$('body').append(audio);
};
return {
play: play
};
}();
/**
* 表情
*/
var Face = function() {
var faceList = ['惊讶', '撇嘴', '色', '发呆', '得意', '大哭', '害羞', '闭嘴', '睡觉', '伤心', '尴尬', '发怒', '调皮', '贱笑', '微笑', '难过', '酷', '大嘴眨眼', '抓狂', '呕吐', '偷笑', '可爱', '白眼', '傲慢', '饥饿', '好困', '惊恐', '流汗', '憨笑', '大兵', '奋斗', '咒骂', '疑问', '安静', '晕', '很抓狂', '衰', '骷髅', '欠打', '再见', '企鹅','发抖','爱情','欢乐','睁大眼','企鹅妹纸','猪头','猫头','马头','抱抱','金钱','灯泡','酒杯','蛋糕','闪电','炸弹','匕首','足球','音符','大便','咖啡','米饭','药','玫瑰','弯玫瑰','唇印','爱心','心碎了','桌椅','礼物','电话','时钟','短信','电视机','太阳','月亮','赞','不赞','握手','胜利','两只东西','美女','光头帅哥','小帅哥','帅哥企鹅','飞吻','尖叫','红酒','可乐','西瓜','下雨','晴天','雪人','五角星','又一美女','又一帅哥','逗逼汗','鄙视汗','挖鼻孔','鼓掌','糗大了','坏笑','左哼哼','右哼哼','哈欠','鄙视','委屈','要哭了','阴笑','亲亲','惊吓','可怜','菜刀','啤酒','篮球','乒乓球','动嘴唇','七星瓢虫','握拳'];
var decode = function(str) {
for (var i = 0; i < faceList.length; i++) {
if('[' + faceList[i] + ']' == str) {
return i;
}
}
return -1;
}
var encode = function(idx) {
if(idx >= 0 && idx <= faceList.length - 1) {
return '[' + faceList[idx] + ']';
}
return '';
}
return {
encode: encode,
decode: decode
};
}();
/**
* 聊天
*/
var Chat = function() {
var ChatUser, Users = [], Logs = [],wState = 0;
// 窗口特效
var initWindowEffect = function() {
ChatWindow.find('.top-action-bar .btn-close').click(function() {
wState = 0;
ChatWindow.hide();
});
};
var getChatUser = function(){
return ChatUser;
};
// 看看有没有该用户的聊天记录
var getLogsIndex = function(id) {
for (var i = 0; i < Logs.length; i++) {
if(Logs[i].id == id) return i;
}
return -1;
};
// 增加聊天记录
var addLogs = function(id, logs) {
var idx = getLogsIndex(id);
if(idx == -1) {
Logs.push({
id: id,
logs: logs
});
} else {
for (var i = 0; i < logs.length; i++) {
Logs[idx].logs.push(logs[i]);
}
}
};
// 清除聊天记录
var cleanLogs = function(id) {
var idx = getLogsIndex(id);
if(idx != -1) {
Logs[getLogsIndex(id)].logs = [];
}
};
// 加载聊天记录
var loadLogs = function(id, callback) {
if(DataHandle.method == 'ajax') {
var data = {status: 0, id: id};
DataHandle.ajax.post(DataHandle.ajax.loadMsg.url, data, function(data) {
if($.isFunction(callback)) callback(data.data);
}, function(data) {
//alert('加载聊天记录失败!');
});
}
};
// 判断是否存在该用户
var hasUser = function(id) {
for (var i = 0; i < Users.length; i++) {
if(Users[i].id == id) return true;
}
return false;
};
// 设置个人信息
var setProfile = function(data) {
var profile = ChatWindow.find('.my-profile');
var chats = ChatWindow.find('.chats');
if(data.online) {
profile.removeClass('offline').addClass('online');
chats.find('.tips').hide().empty();
} else {
profile.removeClass('online').addClass('offline');
chats.find('.tips').show().html('<div class="msg info">对方“离线或隐身”,可能无法立即回复。</div><a class="close"></a>');
chats.find('.tips .close').click(function() {
$(this).parent().hide();
});
}
profile.find('.head-portrait').html('<img src="' + AvatarPath + data.face + '.jpg">');
profile.find('.infos .name').html(data.nickname);
profile.find('.infos .sign').html(data.sign);
};
// 显示聊天记录
var lastDate, lastMins;
var setMessage = function(data, reload) {
var msglist = ChatWindow.find('.chats .msg-list .scroller');
var msgIds = [];
if(reload) {
msglist.empty();
msglist.append('<div class="clear"></div>');
}
if(data && data.length > 0) {
$.each(data, function(idx, thisMessage) {
msgIds.push(thisMessage.id);
var time = thisMessage.time;
var thisDate = moment(time).format('YYYY-MM-DD');
var thisTime = moment(time).format('HH:mm:ss');
var thisMins = moment(time).format('HH:mm');
var isDate = false, isMins = false;
if(!lastDate || lastDate != thisDate) {
lastDate = thisDate;
isDate = true;
}
if(!lastMins || lastMins != thisMins) {
lastMins = thisMins;
isMins = true;
}
if(isDate || (isDate && isMins)) {
msglist.append('<div class="item-time">' + moment(time).format('YYYY-MM-DD HH:mm:ss') + '</div>');
} else if (isMins) {
msglist.append('<div class="item-time">' + thisTime + '</div>');
}
var content = thisMessage.message;
var testFace = Face.decode(content);
if(testFace != -1) {
content = '<img src="' + ProjectPath + 'res/face/' + testFace + '.gif">';
}
var message =
'<div class="item-msg ' + (thisMessage.type == 0 ? 'friend' : 'user') + '">'+
'<div class="img">'+
'<img src="' + AvatarPath + (thisMessage.type == 0 ? ChatUser.face : Main.User.face) + '.jpg">'+
'</div>'+
'<div class="message">'+
'<div class="msg"><i class="nor"></i>' + content + '</div>'+
'</div>'+
'</div>';
msglist.append(message);
});
msglist.slimScroll({ scrollTo: msglist[0].scrollHeight });
setMessageRead(msgIds.join(','));
}
};
// 显示用户信息
var setUp = function(logs, data) {
ChatUser = data; // 设置当前聊天的用户
setProfile(data);
wState = 1;
ChatWindow.show();
setMessage(logs, true);
clearShakeUser(data.id);
};
// 添加聊天对象
var add = function(data) {
// 如果是同一个聊天对象,直接显示就可以了
if(!hasUser(data.id)) {
Users.push(data);
Logs.push({
id: data.id,
logs: []
});
loadLogs(data.id, function(logs) {
addLogs(data.id, logs);
setUp(logs, data);
});
} else {
loadLogs(data.id, function(logs) {
addLogs(data.id, logs);
setUp(Logs[getLogsIndex(data.id)].logs, data);
});
}
};
// 发送消息
var sendMessage = function(message, callback) {
if(DataHandle.method == 'ajax') {
var data = {id: ChatUser.id, message: message};
DataHandle.ajax.post(DataHandle.ajax.sendMsg.url, data, function(data) {
if($.isFunction(callback)) callback();
}, function(data) {
alert('发送聊天信息失败!');
});
}
};
//将消息设置成已读
var setMessageRead = function(messageIds){
if(DataHandle.method == 'ajax') {
var data = {messageIds: messageIds};
DataHandle.ajax.post(DataHandle.ajax.setMsgRead.url, data, function(data) {
});
}
};
// 初始化表情
var initFace = function() {
var facelist = ChatWindow.find('.facelist .scroller');
for (var i = 0; i <= 118; i++) {
facelist.append('<a class="face" data-id="' + i + '"><img src="' + ProjectPath + 'res/face/' + i + '.gif"></a>');
}
facelist.find('.face').click(function() {
var id = $(this).attr('data-id');
var message = Face.encode(id);
console.log('mess:'+message)
sendMessage(message, function() {
var time = moment().format('YYYY-MM-DD HH:mm:ss');
var msg = {
'type': 1,
'message': '<img class="face" src="' + ProjectPath + 'res/face/' + id + '.gif">',
'time': time
};
setMessage([msg], false);
addLogs(ChatUser.id, [msg]);
});
ChatWindow.find('.facelist').toggle();
});
};
// 初始化工具栏
var initToolbar = function() {
initFace();
var toolbar = ChatWindow.find('.toolbar');
toolbar.find('.face').click(function() {
ChatWindow.find('.facelist').toggle();
});
toolbar.find('.shakes').click(function() {
Sound.play('shake');
ChatWindow.addClass('shake shake-constant shake-hard');
setTimeout(function() {
ChatWindow.removeClass('shake shake-constant shake-hard');
}, 500);
});
toolbar.find('.clean').click(function() {
cleanLogs(ChatUser.id);
setMessage([], true);
});
};
// 初始化按钮
var initSendMsg = function() {
this.document.designMode = 'off';
var send = ChatWindow.find('.send-msg');
var content = send.find('.textarea .content');
// 发送
var doSend = function() {
// 替换掉末尾的<br>
var message = content.html();
var sendData = content.text().replace(/<br\s*\/?>$/g, '').replace(/\r\n\g\s/g, '');
if(sendData == ''){
content.empty(); // 清空输入框
return;
}
sendMessage(sendData, function() {
var time = moment().format('YYYY-MM-DD HH:mm:ss');
var msg = {
'type': 1,
'message': message,
'time': time
};
setMessage([msg], false);
content.empty(); // 清空输入框
addLogs(ChatUser.id, [msg]);
});
};
// 回车发送
content.keyup(function(e) {
if(e.keyCode == 13) {
doSend();
}
});
// 发送
send.find('.actions .send').click(function() {
doSend();
});
// 关闭
send.find('.actions .close').click(function() {
wState = 0;
ChatWindow.hide();
});
};
var setShakeUser = function(id) {
var chats = MainWindow.find('.chats');
var contacts = chats.find('.panels .item-panel.contacts');
var targetUser = contacts.find('.item-contact[data-id="' + id + '"]');
var targetItem = targetUser.parents('.g-item');
targetUser.find('.img').addClass('shake shake-qq');
targetItem.find('.g-infos span').addClass('shake shake-qq-opacity');
}
var clearShakeUser = function(id) {
var chats = MainWindow.find('.chats');
var contacts = chats.find('.panels .item-panel.contacts');
var targetUser = contacts.find('.item-contact[data-id="' + id + '"]');
var targetItem = targetUser.parents('.g-item');
targetUser.find('.img').removeClass('shake shake-qq');
if(targetItem.find('.img.shake.shake-qq').length == 0) {
targetItem.find('.g-infos span').removeClass('shake shake-qq-opacity');
}
}
// 接受消息
var receive = function(msg) {
if(wState == 0) {
setShakeUser(msg.fromId);
MiniWindow.find('.head-portrait').addClass('shake shake-qq');
}
if(wState == 1) {
if(msg.fromId == ChatUser.id) {
setMessage([msg], false);
} else {
setShakeUser(msg.fromId);
}
}
addLogs(msg.fromUser, [msg]);
};
// 初始化
var init = function() {
initWindowEffect();
initToolbar();
initSendMsg();
};
return {
init: init,
add: add,
receive:receive,
clearShakeUser:clearShakeUser
};
}();
var Plan = function(){
var planUrl = {
listUrl:'/api/chat/get-lottery-plan-list',
lotteryListUrl:'/api/game-lottery/static-info',
methodListUrl:'/api/game-lottery/static-method',
dealMessageUrl:'/api/chat/deal-chat-lottery-plan-message',
getPlanDetailUrl:'/api/chat/get-chat-lottery-plan-detail'
};
var initWindowEffect = function() {
PlanWindow.find('.top-action-bar .btn-close').click(function() {
PlanWindow.hide();
});
PlanWindow.find('[data-select="lotterySelect"]').change(function(){
var type = $(this).find("option:selected").attr('data-data');
var lotteryId = $(this).val();
getMethodList(type);
getPlanList({lotteryId:lotteryId});
});
PlanWindow.find('[data-select="lotteryMethodSelect"]').change(function(){
var methodName = $(this).val();
var lotteryId = PlanWindow.find('[data-select="lotterySelect"]').val();
var planName = PlanWindow.find('.box_div .f_left .activation').attr('data-data');
var data = {
lotteryId: lotteryId,
planName: planName,
methodName: methodName
};
getPlanList(data);
});
};
var initWindowPlanEvent = function(){
PlanWindow.find('.box_div .f_left li').click(function(){
var planName = $(this).attr('data-data');
var lotteryId = PlanWindow.find('[data-select="lotterySelect"]').val();
var methodName = PlanWindow.find('[data-select="lotteryMethodSelect"]').val();
var data = {
lotteryId: lotteryId,
planName: planName,
methodName: methodName
};
getPlanList(data);
});
};
var show = function(data){
PlanWindow.show();
getLotteryList(data);
getPlanList(data);
dealMessage(-data.lotteryId);
Chat.clearShakeUser(-data.lotteryId);
};
var getLotteryList = function(param){
DataHandle.ajax.post(planUrl.lotteryListUrl, {}, function(data) {
var lotterySelect = PlanWindow.find('[data-select="lotterySelect"]');
var selectLotteryType = 0;
var optionHtml = '';
$.each(data,function(index,thislottery){
if(param.lotteryId == thislottery.id){
optionHtml += '<option value="' + thislottery.id + '" data-data="' + thislottery.type +'" selected="selected">' + thislottery.showName + '</option>';
selectLotteryType = thislottery.type;
}else{
optionHtml += '<option value="' + thislottery.id + '" data-data="' + thislottery.type +'">' + thislottery.showName + '</option>';
}
});
lotterySelect.html(optionHtml);
getMethodList(selectLotteryType);
});
};
var getMethodList = function(type){
DataHandle.ajax.post(planUrl.methodListUrl, {type:type}, function(data) {
var lotteryMethodSelect = PlanWindow.find('[data-select="lotteryMethodSelect"]');
var optionHtml = '<option value="" >所有玩法</option>';
$.each(data,function(index,thislotteryMethod){
optionHtml += '<option value="' + thislotteryMethod.methodName +'">' + thislotteryMethod.group + '_' + thislotteryMethod.name + '</option>';
});
lotteryMethodSelect.html(optionHtml);
});
};
var buildTbody = function(thisPlan) {
var tr = $('<tr>');
tr.append('<td>' + thisPlan.planName + '</td>');
tr.append('<td class="w_12"></td>');
tr.append('<td>' + thisPlan.lotteryShowName + '</td>');
tr.append('<td class="w_12"></td>');
tr.append('<td>' + thisPlan.issue + '</td>');
tr.append('<td class="w_12"></td>');
tr.append('<td>' + thisPlan.methodNameShowName + '</td>');
tr.append('<td class="w_12"></td>');
tr.append('<td title="'+thisPlan.code+'"><span class="tab-wid">' + thisPlan.code + '</span></td>');
tr.append('<td class="w_30"></td>');
tr.append('<td colspan="2"><span class="Betting" data-command="bet">投注</span></td>');
tr.append('<td class="w_12"></td>');
tr.append('<td><span class="Betting" data-command="detail">详情</span></td>');
return tr;
}
var getPlanList = function(postData){
DataHandle.ajax.post(planUrl.listUrl, postData, function(data) {
//左侧面板
var leftDiv = PlanWindow.find('.box_div .f_left');
var planNameList = data.data.planNameList;
var liHtml = '<ul data-data=""><li>最新15个计划</li>';
$.each(planNameList,function(index, thisPlanName){
liHtml += '<li data-data="'+thisPlanName + '"><span>' + thisPlanName + '</span></li>';
});
liHtml += '</ul>';
leftDiv.html(liHtml);
if(postData.planName){
leftDiv.find('[data-data="'+postData.planName+'"]').addClass('activation');
}else {
leftDiv.find('li').eq(0).addClass('activation');
}
//详细内容
var rightDiv = PlanWindow.find('.box_div .f_right');
var planList = data.data.planList;
rightDiv.html('<table></table>');
$.each(planList,function(index, thisPlan){
var tr = buildTbody(thisPlan);
rightDiv.find('table').append(tr);
tr.find('[data-command="bet"]').click(function() {
var lottery = thisPlan.lotteryShortName;
var method = thisPlan.methodName;
var content = thisPlan.code;
var betStr = '[{"lottery":"'+lottery+'","issue":"","method":"'+method+'","content":"'+content +'","model":"yuan","multiple":1,"code":'+AppData.getLotteryAccount().code +',"compress":false}]';
betDialog(betStr,thisPlan);
});
tr.find('[data-command="detail"]').click(function() {
getPlanDetail(thisPlan.id);
});
});
initWindowPlanEvent();
});
};
var betDialog = function(betStr,thisPlan){
var betObj = eval(betStr)[0];
betObj.point = 10;
betObj.total=111;
betObj.method=thisPlan.lotteryShowName+'-'+thisPlan.methodNameShowName;
var betData = LotteryMain.bList();
betData.length=0;
betData.push(eval(betStr)[0]);
var $html = $('<div ><table data-injection="CaiPiaoJiHua"></table></div>')
initGouCaiChe($html);
$html.find('table').bootstrapTable('append', betObj);
BootstrapDialog.show({
cssClass:'CaiPiaoJiHuaDialog',
title: '<i class="icon lock"></i>确认投注信息',
message: $html,
height:500,
buttons: [{
label: '立即投注',
action: function(dialog) {
$('[data-command="submit"]').click();
dialog.close();
}
}, Will.cancelButton]
});
}
var getPlanDetail = function(id){
DataHandle.ajax.post(planUrl.getPlanDetailUrl, {id:id}, function(data) {
//详细内容
var rightDiv = PlanWindow.find('.box_div .f_right');
var tableHtml = '<div class="detail"><table>';
tableHtml += '<tr><td class="text-right w_100">彩票种类:</td>';
tableHtml += '<td class="text-left">' + data.data.lotteryShowName + '</td></tr>';
tableHtml += '<tr><td class="text-right w_100">玩法:</td>';
tableHtml += '<td class="text-left" >' + data.data.methodNameShowName + '</td></tr>';
tableHtml += '<tr><td class="text-right w_100">计划名称:</td>';
tableHtml += '<td class="text-left">' + data.data.planName + '</td></tr>';
tableHtml += '<tr><td class="text-right w_100">期号:</td>';
tableHtml += '<td class="text-left">' + data.data.issue + '</td></tr>';
tableHtml += '<tr><td class="text-right w_100" style="height:150px;">内容:</td>';
tableHtml += '<td class="text-left">' + data.data.code + '</td></tr>';
tableHtml += '<tr class="text-center"><td colspan="2"><span class="btn" data-command="bet" style="width:100px;">投注</span><span class="btn" data-command="back" style="width:100px;">返回</span></td>';
tableHtml += '</tr>';
tableHtml += '</table></div>';
rightDiv.html(tableHtml);
rightDiv.find('[data-command="bet"]').click(function() {
//todo
var lottery = data.data.lotteryShortName;
var method = data.data.methodName;
var content = data.data.code;
var betStr = '[{"lottery":"'+lottery+'","issue":"","method":"'+method+'","content":"'+content +'","model":"yuan","multiple":1,"code":'+AppData.getLotteryAccount().code +',"compress":false}]';
// alert(betStr);
betDialog(betStr,data.data);
});
rightDiv.find('[data-command="back"]').click(function() {
var planName = PlanWindow.find('.box_div .f_left .activation').attr('data-data');
var lotteryId = PlanWindow.find('[data-select="lotterySelect"]').val();
var methodName = PlanWindow.find('[data-select="lotteryMethodSelect"]').val();
var data = {
lotteryId: lotteryId,
planName: planName,
methodName: methodName
};
getPlanList(data);
});
});
};
var dealMessage = function(fromId){
DataHandle.ajax.post(planUrl.dealMessageUrl, {fromId:fromId}, function(data) {
});
};
var init = function() {
initWindowEffect();
};
return {
init: init,
show: show
};
}();
/**
* 主要界面
*/
var Main = function() {
var User, Contacts = [], Groups = [];
User = {
"id": AppData.getMainAccount().id,
"nickname": AppData.getMainAccount().nickname,
"face": AppData.getInfo()? AppData.getInfo().avatar : "1",
"sign": "",
"online": true
};
// 获取联系人数据
var getContacts = function(id) {
for (var i = 0; i < Contacts.length; i++) {
if(Contacts[i].id == id) {
return Contacts[i];
}
}
return;
};
// 窗口效果
var initWindowEffect = function() {
MainWindow.find('.top-action-bar .btn-close').click(function() {
MainWindow.hide();
MiniWindow.find('.head-portrait').removeClass('shake shake-qq');
Mini.clear();
Mini.show();
});
/*MainWindow.find('.top-action-bar .btn-min').click(function() {
var target = MainWindow;
var left = parseInt(target.css('left')), top = parseInt(target.css('top'));
target.stop().animate({height: 30}, 100, 'easeOutCubic');
});*/
};
// 聊天选项卡特效
var initChatTabsEffect = function() {
var chats = MainWindow.find('.chats');
var tabs = chats.find('.tabs > a');
var panels = chats.find('.panels');
tabs.each(function(idx, val) {
$(this).click(function() {
if(!$(this).hasClass('selected')) {
tabs.removeClass('selected');
$(this).addClass('selected');
panels.stop().animate({marginLeft: -idx * 280}, 200, 'easeInOutQuint');
}
});
});
tabs.eq(1).trigger('click');
};
// 联系人特效
var initContactsEffect = function() {
var chats = MainWindow.find('.chats');
var contacts = chats.find('.panels .item-panel.contacts');
contacts.find('.g-item').each(function() {
var gItem = $(this);
gItem.find('.g-infos').click(function() {
var animateTo = 0;
if(gItem.find('.u-list').is(':hidden')) {
animateTo = 90;
}
$(this).find('i.arrow').rotate({animateTo: animateTo, duration: 200});
gItem.find('.u-list').toggle();
});
});
contacts.find('.u-list .item-contact').click(function() {
if(!$(this).hasClass('selected')) {
contacts.find('.u-list .item-contact.selected').removeClass('selected');
$(this).addClass('selected');
}
});
};
// 设置最近联系人
var setLastData = function(data) {
var thisPanel = MainWindow.find('.chats .panels .item-panel.last .scroller');
if(data && data.length > 0) {
thisPanel.empty();
$.each(data, function(idx, thisContact) {
var innerHtml =
'<a data-id="' + thisContact.id + '" class="item-chat">'+
'<div class="img shake shake-qq">'+
'<img src="' + AvatarPath + thisContact.face + '.jpg">'+
'</div>'+
'<div class="infos">'+
'<div class="name">' + thisContact.nickname + '</div>'+
'<div class="msg">' + thisContact.msg + '</div>'+
'</div>'+
'</a>';
thisPanel.append(innerHtml);
});
// bind action
thisPanel.find('.item-chat').dblclick(function() {
Chat.add(getContacts($(this).attr('data-id')));
});
} else {
thisPanel.html('<div class="tips">暂时没有会话</div>');
}
};
// 设置联系人
var setContactsData = function(data) {
var thisPanel = MainWindow.find('.chats .panels .item-panel.contacts .scroller');
if(data && data.length > 0) {
thisPanel.empty();
thisPanel.append('<div class="clear h2"></div>');
$.each(data, function(idx, thisGroup) {
var group = $(
'<div class="g-item">'+
'<a class="g-infos">'+
'<i class="arrow"></i>'+
'<span>' + thisGroup.name + ' <span class="status">' + thisGroup.online + '/' + thisGroup.total + '</span></span>'+
'</a>'+
'<div class="u-list"></div>'+
'</div>'
);
if(thisGroup.friends && thisGroup.friends.length > 0) {
$.each(thisGroup.friends, function(jdx, thisContact) {
Contacts.push(thisContact); // 保存到内存中
var contact =
'<a data-id="' + thisContact.id + '" class="item-contact ' + (thisContact.online ? 'online' : 'offline') + '">'+
'<div class="img">'+
'<img src="' + AvatarPath + thisContact.face + '.jpg">'+
'</div>'+
'<div class="infos">'+
'<div class="name">' + thisContact.nickname + (thisContact.online ? '' : ' [离线]') + '</div>'+
'<div class="msg" title="' + thisContact.sign + '">' + thisContact.sign + '</div>'+
'</div>'+
'</a>';
group.find('.u-list').append(contact);
});
}
thisPanel.append(group);
});
thisPanel.append('<div class="clear h2"></div>');
// bind action
thisPanel.find('.u-list .item-contact').dblclick(function() {
var contactId = $(this).attr('data-id');
if(contactId == 0){
var href = '/game-service.html?username=' + AppData.getMainAccount().username;
$(this).attr('href', href).attr('target', new Date().getTime());
}else if(contactId < 0){
Plan.show({lotteryId: -contactId});
}else{
Chat.add(getContacts(contactId));
$('a.history').attr('data-id',$(this).attr('data-id'));
}
});
// 重新渲染特效
initContactsEffect();
} else {
thisPanel.html('<div class="tips">您没有任何好友</div>');
}
};
// 加载最近联系人数据
var loadLast = function() {
if(DataHandle.method == 'ajax') {
DataHandle.ajax.post(DataHandle.ajax.last.url, {}, function(data) {
setLastData(data.data);
}, function(data) {
//alert('加载联系人失败,你可能未登录!');
});
}
};
// 加载联系人数据
var loadContacts = function() {
if(DataHandle.method == 'ajax') {
DataHandle.ajax.post(DataHandle.ajax.contacts.url, {}, function(data) {
setContactsData(data.data);
}, function(data) {
//alert('请求失败!');
});
}
};
// 加载消息
var loadMessage = function(data) {
if(DataHandle.method == 'ajax') {
DataHandle.ajax.post(DataHandle.ajax.loadMsg.url, data, function(backData) {
Mini.msg(backData.data.length);
$.each(backData.data, function(jdx, thisMessage) {
Chat.receive(thisMessage);
});
}, function(data) {
//alert('请求失败!');
});
}
};
// 加载未读消息
var loadUnread = function(data) {
loadMessage({status:0});
};
// 初始化
var init = function() {
//MainWindow.hide();
if(!User.face){
User.face = "0";
}
MainWindow.find('.my-profile .head-portrait').html('<img src="' + AvatarPath +User.face+'.jpg">');
MiniWindow.find('.head-portrait').html('<img src="' + AvatarPath +User.face+'.jpg">');
MainWindow.find('.infos .name').html(User.nickname);
MainWindow.find('.infos .sign').html('');
initWindowEffect();
initChatTabsEffect();
/*loadLast();
if(DataHandle.method == 'ajax') {
setInterval(loadLast, DataHandle.ajax.last.interval);
};*/
loadContacts();
if(DataHandle.method == 'ajax') {
setInterval(loadContacts, DataHandle.ajax.contacts.interval);
setInterval(loadUnread, DataHandle.ajax.loadMsg.interval);
};
};
return {
init: init,
loadLast: loadLast,
loadContacts: loadContacts,
loadUnread: loadUnread,
User: User
};
}();
/**
* 最小化窗口
*/
var Mini = function() {
var count = 0, state = 1;
var show = function() {
state = 1;
MiniWindow.show();
}
var hide = function() {
state = 0;
MiniWindow.hide();
}
var init = function() {
MiniWindow.click(function() {
hide();
clear();
MainWindow.show();
});
}
var msg = function(amount) {
count = amount;
if(count == 0){
return;
}
if(state == 1) {
MiniWindow.find('.msg > i').html(count);
MiniWindow.find('.msg').show();
}
}
var clear = function() {
count = 0;
MiniWindow.find('.msg > i').html(count);
MiniWindow.find('.msg').hide();
}
return {
init: init,
show: show,
hide: hide,
msg: msg,
clear: clear
};
}();
/**
* 滚动
*/
var initScroll = function() {
$('.scroller').each(function () {
if ($(this).attr("data-initialized")) {
return; // exit
}
var height;
if ($(this).attr("data-height")) {
height = $(this).attr("data-height");
} else {
height = $(this).css('height');
}
$(this).slimScroll({
allowPageScroll: false, // allow page scroll when the element scroll is ended
size: '6px',
borderRadius: '2px',
railBorderRadius: '2px',
color: ($(this).attr("data-handle-color") ? $(this).attr("data-handle-color") : '#bbb'),
wrapperClass: ($(this).attr("data-wrapper-class") ? $(this).attr("data-wrapper-class") : 'slimScrollDiv'),
railColor: ($(this).attr("data-rail-color") ? $(this).attr("data-rail-color") : '#eaeaea'),
position: 'right',
height: height,
alwaysVisible: ($(this).attr("data-always-visible") == "1" ? true : false),
railVisible: ($(this).attr("data-rail-visible") == "1" ? true : false),
disableFadeOut: true
});
$(this).attr("data-initialized", "1");
});
};
/**
* 拖动
*/
var initDrag = function() {
$('.draggable').each(function() {
var target = $(this);
target.find('.dragarea').mousedown(function(a) {
var left = parseInt(target.css('left')), top = parseInt(target.css('top'));
var tWidth = target.width(), tHeight = target.height();
var mLeft = parseInt(target.css('margin-left')), mTop = parseInt(target.css('margin-top'));
var wWidth = $(window).width(), wHeight = $(window).height();
var aX = a.pageX, aY = a.pageY;
$(document).bind('mousemove', function(b) {
var bX = b.pageX, bY = b.pageY;
var newLeft = left + bX - aX, newTop = top + bY - aY;
if(newLeft + mLeft <= 0) newLeft = -mLeft;
if(newTop + mTop <= 0) newTop = -mTop;
if(newLeft + mLeft >= wWidth - tWidth) newLeft = wWidth - tWidth - mLeft;
if(newTop + mTop >= wHeight - tHeight) newTop = wHeight - tHeight - mTop;
target.css({left: newLeft, top: newTop});
}).bind('mouseup', function(b) {
$(document).unbind('mousemove').unbind('mouseup');
});
});
});
};
//搜索联系人(下级)
var Contactssearch = function(){
var inputpeoplename = $('.webqq-main-window').find('.search-all input').val();
var peoplename = $('.webqq-main-window .g-item').eq(2).find('.u-list a .name');
var findname = 0;
for(var i=0;i<peoplename.length;i++){
var name = peoplename.eq(i).html().split(' ')[0];
if(inputpeoplename == name){
peoplename.eq(i).dblclick();
findname = 1;
return;
}
}
if(findname !== 1){
Will.warning('未找到该联系人');
}
}
$('.webqq-main-window').keydown(function(e) {
if(e.keyCode == 13) {
Contactssearch()
}
})
//聊天记录
var historymessage = function(id,sDate,eDate){
Will.ajax({},'/api/chat/get-history-message?fromId='+id+'&sDate='+sDate+'&eDate='+eDate+'',function(data){
for(i=data.length-1;i>=0;i--){
var message = data[i].message;
var time = moment(data[i].time).format("YYYY-MM-DD");
var $html = $('<div class="history"><div class="item-time">'+time+'</div><div class="item-msg user">\
<div class="img"><img src=""></div>\
<div class="message">\
<div class="msg"><i class="nor"></i>'+message+'<div>\
</div>\
</div></div>');
if(data[i].fromId==id){
$html.find('.item-msg').removeClass('user');
$html.find('.item-msg').addClass('friend');
$html.find('.img img').attr('src',$('.webqq-chat-window .my-profile .head-portrait img').attr('src'));
}else{
$html.find('.img img').attr('src',$('.webqq-main-window .my-profile .head-portrait img').attr('src'));
}
$('.msg-list .scroller').prepend($html)
}
})
}
$('.webqq-chat-window .chats .history').click(function(){
var eDate = moment().add(1, 'days').format("YYYY-MM-DD");
var sDate = moment().subtract(7, 'days').format("YYYY-MM-DD");
$('.msg-list .scroller .history').remove();
var id = $('a.history').attr('data-id');
historymessage(id,sDate,eDate);
})
/**
* 初始化方法
*/
var init = function() {
Main.init();
Chat.init();
Mini.init();
Plan.init();
initScroll();
initDrag();
};
return {
init: init
};
}();