lixin-web
Version:
vue and bootstrap
1,363 lines (1,284 loc) • 45.2 kB
JavaScript
//彩票父类
var LotteryBaBa = function(){
var that=this;
this.$Lottery; // 彩票
this.$LotteryType; // 彩票类型
this.$DownCode; // 降点
this.$FenDownCode; // 分模式降点
this.$LiDownCode; // 厘模式讲点
this.$Method; // 彩票玩法
this.$SysCode; // 系统号级别
this.$SysUnitMoney; // 单注金额
this.$UserCode; // 用户号级别
this.$UserLp; // 用户定位返点
this.$UserMaxCode; // 用户最高号
this.$UserMinCode; // 用户最低号
this.$bData = {};
this.$bList = [];
this.getSelectPlace = function(playArea) {
var places = [];
var sp = playArea.find('.places');
if(sp && sp.length > 0) {
$.each(sp, function() {
var place = [];
var as = $(this).find('ul > li input[type="checkbox"]');
$.each(as, function() {
if($(this).is(':checked')) {
place.push('√');
} else {
place.push('-');
}
});
places.push(place);
});
}
return places;
}
// 得到用户选择的号码,格式化后的数据
this.getSelectBall = function(playArea) {
var datasel = [];
var sb = playArea.find('.balls');
if(sb && sb.length > 0) {
$.each(sb, function() {
var ball = [];
var as = $(this).find('ul > li > a.selected');
$.each(as, function() {
var val = $(this).attr('data-val');
ball.push(val);
});
datasel.push(ball);
});
}
return datasel;
}
// 得到用户输入的号码,格式化后的数据
this.getTextareaBall = function(playArea) {
var datasel = [];
var textarea = playArea.find('.textarea > textarea');
if(textarea && textarea.length > 0) {
var format = textarea.val().replace(/\,|\;|\n|\t/g, ' ');
var as = format.split(' ');
$.each(as, function(idx, val) {
datasel.push(val);
});
}
return datasel;
}
// 构造选号区域
this.buildSelectPlace = function(playArea, select) {
$.each(select.layout, function(i, val) {
var row = $('<div class="row">');
if(val.title) {
row.append('<div class="label">' + val.title + '</div>');
}
if(val.cls) {
row.addClass(val.cls);
}
// 球
var balls = $('<div class="balls">').append('<ul>');
$.each(val.balls, function(j, ball) {
balls.find('ul').append('<li><a data-val="' + ball + '">' + ball + '</a></li>');
});
balls.find('ul > li > a').click(function() {
if($(this).hasClass('selected')) {
$(this).removeClass('selected');
} else {
$(this).addClass('selected');
}
that.PlayOptions.update();
});
row.append(balls);
// 工具
if(val.tools) {
that.buildBallTools(row, balls);
}
playArea.append(row);
});
}
// 构造选号工具
this.buildBallTools = function(row, balls) {
var blist = balls.find('ul > li > a');
var tools = $('<div class="tools">').append('<ul><li><a data-command="all">全</a></li><li><a data-command="big">大</a></li><li><a data-command="small">小</a></li><li><a data-command="single">单</a></li><li><a data-command="double">双</a></li><li><a data-command="clean">清</a></li></ul>');
var setSelected = function(els, selected) {
if(selected) {
if(!els.hasClass('selected')) {
els.trigger('click');
}
} else {
if(els.hasClass('selected')) {
els.trigger('click');
}
}
}
tools.find('a[data-command="all"]').click(function() {
$.each(blist, function() {
setSelected($(this), true);
});
});
tools.find('a[data-command="big"]').click(function() {
$.each(blist, function(idx) {
if(idx < Math.round(blist.length/2)) {
setSelected($(this), false);
} else {
setSelected($(this), true);
}
});
});
tools.find('a[data-command="small"]').click(function() {
$.each(blist, function(idx) {
if(idx < Math.round(blist.length/2)) {
setSelected($(this), true);
} else {
setSelected($(this), false);
}
});
});
tools.find('a[data-command="single"]').click(function() {
var arr = [1,3,5,7,9,11];
$.each(blist, function() {
var val = parseInt($(this).attr('data-val'));
if($.inArray(val, arr) != -1) {
setSelected($(this), true);
} else {
setSelected($(this), false);
}
});
});
tools.find('a[data-command="double"]').click(function() {
var arr = [0,2,4,6,8,10];
$.each(blist, function() {
var val = parseInt($(this).attr('data-val'));
if($.inArray(val, arr) != -1) {
setSelected($(this), true);
} else {
setSelected($(this), false);
}
});
});
tools.find('a[data-command="clean"]').click(function() {
$.each(blist, function() {
setSelected($(this), false);
});
});
row.append(tools);
}
// 构造手动输入框
this.buildTextareaPlace = function(playArea) {
var textarea = $('<div class="textarea">').append('<textarea>');
var help = $('<div class="help">').html('每注号码之间请用一个空格或英文逗号或英文分号隔开(输入的号码会自动排序并去除不合格号码)。');
textarea.find('textarea').keyup(function() {
$(this).val($(this).val().replace(/\,|\,|\;|\;|\n/g, ' '));
that.PlayOptions.update();
});
playArea.append(textarea);
playArea.append(help);
}
// 构造位置
this.buildCheckboxPlace = function(playArea, checkbox) {
$.each(checkbox.layout, function(i, val) {
var row = $('<div class="row">');
if(val.title) {
row.append('<div class="label">' + val.title + '</div>');
}
// 位置
var places = $('<div class="places">').append('<ul>');
$.each(val.value, function(j, value) {
places.find('ul').append('<li><label><input type="checkbox">' + value + '</label></li>');
});
places.find('ul > li input[type="checkbox"]').change(function() {
that.PlayOptions.update();
});
row.append(places);
playArea.append(row);
});
}
this.PlayArea = function() {
var data = function() {
var playArea = $('.lottery-betting > .play-area');
var datasel = [];
var places = that.getSelectPlace(playArea);
var balls = that.getSelectBall(playArea);
var textarea = that.getTextareaBall(playArea);
var sb = datasel.concat(places).concat(balls).concat(textarea);
return sb;
}
var reset = function() {
$('.play-area').find('textarea').val('');
if($('.play-area').find('.selected[data-val="123"],.selected[data-val="111"]').length){
$('.play-area').find('.selected').eq(0).click()
}else{
$('.play-area').find('.selected').click();
}
}
return {data: data, reset: reset};
}();
// 构造选项栏
this.buildPlayOptions = function(playOptions) {
playOptions.append('<div class="label">您共选择了 <span class="text-money" data-field="num">0</span> 注,倍数</div>');
playOptions.append('<div class="multiple"><input name="multiple" type="text" value="1"></div>');
playOptions.append('<div class="label">模式</div>');
playOptions.append('<div class="model"><a data-val="yuan">元</a><a data-val="jiao">角</a><a data-val="fen">分</a><a data-val="li">厘</a></div>');
playOptions.append('<div class="label">共计 <span class="text-money" data-field="total">0.000</span> 元</div>');
playOptions.append('<div class="button"><a data-command="add">添加号码</a></div>');
// GET Cookie Model Value
var bDataModel = 'yuan';
if($.cookie('USER_BDATA_MODEL')) {
bDataModel = $.cookie('USER_BDATA_MODEL')
}
playOptions.find('.model > a[data-val="' + bDataModel + '"]').addClass('selected');
// 倍数输入框
var multiple = playOptions.find('.multiple > input');
multiple.keyup(function() {
if($(this).val() == '') return;
var val = $(this).val();
if(/^[0-9]*$/.test(val)) {
val = Number(val);
if(val > 10000) $(this).val(10000);
if(val < 1) $(this).val(1);
that.PlayOptions.update();
} else {
$(this).val(1);
that.PlayOptions.update();
}
});
multiple.keydown(function(e) {
if(e.keyCode == 38 || e.keyCode == 40) {
if($(this).val() == '') return;
var val = Number($(this).val());
if(!isNaN(val)) {
if(e.keyCode == 38) val++;
if(e.keyCode == 40) val--;
if(val > 10000) val = 10000;
if(val < 1) val = 1;
$(this).val(val);
}
}
});
multiple.blur(function() {
if($(this).val() == '') {
$(this).val(1);
PlayOptions.update();
}
});
// 分模式
var fenModel = function() {
if(that.$FenDownCode > 0) {
var thisCode = that.$SysCode - that.$FenDownCode;
if(that.$UserCode > thisCode) {
that.$UserMaxCode = thisCode - that.$DownCode;
Will.info('分模式最高为' + that.$UserMaxCode + '。', 3000);
}
}
}
// 厘模式
var liModel = function() {
if(that.$LiDownCode > 0) {
var thisCode = that.$SysCode - that.$LiDownCode;
if(that.$UserCode > thisCode) {
that.$UserMaxCode = thisCode - that.$DownCode;
Will.info('厘模式最高为' + that.$UserMaxCode + '。', 3000);
}
}
}
// 默认模式
var defaultModel = function() {
that.$UserMaxCode = that.$UserCode - that.$DownCode;
that.$UserMinCode = that.$UserMaxCode - that.$UserLp * 20;
}
// 更新默认
var update = function(model) {
if(model == 'fen') {
fenModel();
} else if(model == 'li') {
liModel();
} else {
defaultModel();
}
}
// 模式选择
var models = playOptions.find('.model > a');
models.click(function() {
if(!$(this).hasClass('selected')) {
models.removeClass('selected');
$(this).addClass('selected');
var model = $(this).attr('data-val');
update(model);
that.AdjustPrize.slider();
that.AdjustPrize.update();
that.PlayOptions.update();
// SET Cookie Model Value
var expires = new Date(moment().startOf('year').add(1, 'years'));
$.cookie('USER_BDATA_MODEL', model, {expires: expires, path: '/'});
}
});
update(bDataModel);
}
this.PlayOptions = function() {
var els = function() {
return $('.lottery-betting > .play-options');
}
var multiple = function() {
return Number(els().find('.multiple > input').val());
}
var model = function() {
var val = els().find('.model > a.selected').attr('data-val');
if(val == 'yuan') {
return {val: val, money: 1};
}
if(val == 'jiao') {
return {val: val, money: 0.1};
}
if(val == 'fen') {
return {val: val, money: 0.01};
}
if(val == 'li') {
return {val: val, money: 0.001};
}
}
var update = function() {
var num = that.LotteryUtils.inputNumbers(that.$bData.method, that.PlayArea.data());
var total = multiple() * num * that.$SysUnitMoney * model().money;
els().find('[data-field="num"]').html(num);
els().find('[data-field="total"]').html(total.toFixed(3));
}
return {els: els, multiple: multiple, model: model, update: update};
}();
// 构造奖金
this.buildAdjustPrize = function(adjustPrize, column) {
adjustPrize.empty();
adjustPrize.append('<div class="col-sm-8"><span class="col-sm-3">奖金调节:</span><div class="slider col-sm-6"></div><div class="col-sm-3"><span data-field="code">0</span> / <span data-field="point">0.0</span>%</div></div><span class="prize col-sm-4"><i></i>当前玩法奖金<span data-field="prize">0.00</span>元</span>');
var slider = adjustPrize.find('.slider');
var start = that.$UserMaxCode;
// GET Cookie Code Value
if($.cookie('USER_BDATA_CODE')) {
var bCode = $.cookie('USER_BDATA_CODE');
if (!isNaN(bCode)) {
if(bCode > that.$UserMaxCode) {
start = that.$UserMaxCode;
} else if(bCode < that.$UserMinCode) {
start = that.$UserMinCode;
} else {
start = bCode;
}
}
}
slider.noUiSlider({connect: 'lower', behaviour: 'snap', step: 2, start: start, range: {'max': that.$UserMaxCode, 'min': that.$UserMinCode}});
if (that.$UserMaxCode == that.$UserMinCode) {
slider.attr('disabled', 'disabled');
} else {
slider.removeAttr('disabled');
}
var update = function(code) {
var point = that.$UserLp - ((code - that.$UserMinCode) / 20.0).toFixed(1);
adjustPrize.find('[data-field="code"]').html(code);
adjustPrize.find('[data-field="point"]').html(point.toFixed(1));
that.AdjustPrize.update();
}
var onSet = function() {
var code = Number(slider.val());
update(code);
// SET Cookie Code Value
var expires = new Date(moment().startOf('year').add(1, 'years'));
$.cookie('USER_BDATA_CODE', code, {expires: expires, path: '/'});
}
var onSlide = function() {
var code = Number(slider.val());
update(code);
}
slider.on({set: onSet, slide: onSlide});
update(start);
}
// 玩法提示
this.PlayHelp = function() {
var els = function() {
return $('.lottery-betting');
}
var update = function(t) {
els().find('[data-field="prize"]').html(t);
}
return {els: els, update: update};
}();
// 奖金调节获取值
this.AdjustPrize = function() {
var els = function() {
return $('.lottery-betting > .adjust-prize');
}
var code = function() {
return Number(els().find('[data-field="code"]').html());
}
var point = function() {
return Number(els().find('[data-field="point"]').html());
}
var slider = function() {
els().find('.slider').noUiSlider({range: {'max': that.$UserMaxCode, 'min': that.$UserMinCode}}, true);
}
var update = function() {
var method = that.$Method[that.$bData.method];
var model = that.PlayOptions.model();
var mMoney = that.PlayOptions.model().money;
if(method) {
var ps = method.bonus.split(',');
var t = [];
for (var i = 0, j = ps.length; i < j; i++) {
var pm = (code() / Number(ps[i])) * (that.$SysUnitMoney / 2) * mMoney;
t.push(pm);
}
t.sort(function(a, b) {
return Number(a) > Number(b) ? 1 : -1;
});
if(t.length == 1) {
that.PlayHelp.update(t[0].toFixed(3));
} else {
that.PlayHelp.update(t[0].toFixed(3) + ' ~ ' + t[t.length - 1].toFixed(3));
}
}
}
return {els: els, code: code, point: point, update: update, slider: slider};
}();
/**
* TODO 添加号码
*/
this.TianJiaHaoMaDongHua = function(){
$(".play-area .balls li a.selected").each(function(){
var pos = $(this).position();
var des = $('ul.nav.nav-tabs li').eq(0).position()
$(this).parent().append(
$(this).clone()
.removeClass('selected')
.addClass('selectedan')
.css('position','absolute')
.css('left',pos.left)
.css('top',pos.top)
.animate({
left:des.left+48,
top:des.top-30,
},100+Math.random()*1000,function(){
var that = $(this);
that.hide(500);
// setTimeout(function(){
// that.remove();
// },500)
})
);
});
}
this.addCallback = []; // 添加号码后的事件
this.addToList = function(callback) {
var issue = ''; // 暂时不用填写期号
var method = that.$bData.method;
var compress = that.$bData.compress;
var datasel = that.PlayArea.data();
var num = that.LotteryUtils.inputNumbers(method, datasel);
var content = that.LotteryUtils.inputFormat(method, datasel);
var code = that.AdjustPrize.code();
var point = that.AdjustPrize.point();
var multiple = that.PlayOptions.multiple();
var model = that.PlayOptions.model().val;
var total = multiple * num * that.$SysUnitMoney * that.PlayOptions.model().money;
if(num == 0) {
Will.info('您还没有选择号码或所选号码不全!', 3000);
return false;
}
that.TianJiaHaoMaDongHua();
var _method = that.$Method[method];
if (num <= _method.oooNums) {
Will.confirm('您所投注内容属于单挑玩法,最高奖金为' + _method.oooBonus + '元,确认继续投注?',function() {
that.LotteryRecord.add(issue, method, compress, content, num, multiple, model, code, point, total, callback);
that.PlayArea.reset();
});
} else {
that.LotteryRecord.add(issue, method, compress, content, num, multiple, model, code, point, total, callback);
that.PlayArea.reset();
}
}
// 投注列表
this.LotteryRecord = function() {
var els = function() {
return $('.lottery-record');
}
var name = function(method) {
var method = that.$Method[method];
return '[' + method.name + ']';
}
var format = function(content) {
if(content.length > 16) {
content = content.substring(0, 16) + '…<a data-command="details">[详细]';
}
return content;
}
var add = function(issue, method, compress, content, num, multiple, model, code, point, total, callback) {
$('[data-injection="order-list"]').bootstrapTable('append', {method:method,content:content,num:num,multiple:multiple,point:point,total:total,model:model});
// 加密处理开始
if(compress === true && num >= 1000) {
App.blockUI({
target: els(),
boxed: true,
message: '超大注数处理中...'
});
LZMA.compress(content, 3, function(result) {
App.unblockUI(els());
if(result === false) {
return Will.info( '号码添加失败,请重试!', 3000);
}
content = LZMAUtil.toHex(result);
that.$bList.push({lottery: that.$Lottery, issue: issue, content: content, num: num, method: method, multiple: multiple, model: model, code: code, compress: true});
// 回调函数
if($.isFunction(callback)) callback();
for (var i = 0; i < that.addCallback.length; i++) {
if($.isFunction(that.addCallback[i])) {
that.addCallback[i]();
}
}
});
} else {
that.$bList.push({lottery: that.$Lottery, issue: issue, content: content, num: num, method: method, multiple: multiple, model: model, code: code, compress: false});
// 回调函数
if($.isFunction(callback)) callback();
for (var i = 0; i < that.addCallback.length; i++) {
if($.isFunction(that.addCallback[i])) {
that.addCallback[i]();
}
}
}
}
var clear = function() {
$('[data-injection="order-list"]').bootstrapTable('removeAll');
that.$bList = [];
}
var isInit = false;
var init = function() {
isInit = true;
App.initScroll();
var button = els().find('.button');
$('body').off('click','[data-command="add"]').on("click",'[data-command="add"]',function(){
that.addToList();
});
button.find('[data-command="submit"]').unbind().click(function() {
if(that.$bList.length > 0) {
that.doSubmit();
} else {
that.addToList(that.doSubmit);
}
});
button.find('[data-command="clear"]').unbind().click(function() {
clear();
});
button.find('[data-command="chase"]').unbind().click(function() {
LotteryChase.init();
});
}
return {init: init, add: add, clear: clear};
}();
// 初始化网页元素
this.initDocument = function() {
var main = $('.lottery-betting').empty();
var playGroups = $('<div class="play-groups">').append('<ul>');
var playList = $('<div class="play-list">');
var playHelp = $('<div class="play-help">');
var playArea = $('<div class="play-area">');
var adjustPrize = $('<div class="adjust-prize clearfix">');
var playOptions = $('<div class="play-options">');
// 初始化玩法组
var initPlayGroups = function(index) {
playGroups.find('ul').empty();
$.each(that.Layout, function(i, group) {
var thisGroup = $('<li>').append('<a>' + group.title + '</a>');
// 点击效果
thisGroup.find('a').click(function() {
if(!$(this).hasClass('selected')) {
playGroups.find('li > a.selected').removeClass('selected');
$(this).addClass('selected');
initPlayList(group.rows);
}
});
playGroups.find('ul').append(thisGroup);
});
playGroups.find('ul > li > a').eq(index).trigger('click');
}
// 初始化玩法列表
var initPlayList = function(list) {
playList.empty();
$.each(list, function(i, rows) {
var thisRow = $('<div class="row">');
$.each(rows, function(j, row) {
thisRow.append('<div class="label">' + row.title + '</div>');
$.each(row.columns, function(k, column) {
var thisColumn = $('<div class="column">').attr('data-method', column.shortname).html(column.showname);
// 点击效果
thisColumn.click(function() {
if(!$(this).hasClass('selected')) {
playList.find('.row > .column').removeClass('selected');
$(this).addClass('selected');
}
that.$bData.method = column.shortname; // 用户选中的方法
that.$bData.compress = column.compress; // 是否加密传输
buildPlayHelp(column);
buildPlayArea(column);
that.buildAdjustPrize(adjustPrize, column);
that.PlayOptions.update();
});
thisRow.append(thisColumn);
});
});
playList.append(thisRow);
});
playList.find('.row > .column').eq(0).trigger('click');
}
// 初始化帮助信息
var buildPlayHelp = function(column) {
playHelp.empty();
playHelp.append('<div class="tips"><i></i><span class="label">玩法提示:</span>' + column.tips + '</div>');
//playHelp.append('<div class="prize"><i></i>当前玩法奖金<span data-field="prize">0.00</span>元</div>');
playHelp.append('<div class="help-info"><i class="arrow"></i><div class="example">' + column.example + '</div><div class="help">' + column.help + '</div></div>');
var show = function(els, target) {
var top = $(els).position().top;
var left = $(els).position().left;
playHelp.find(target).css({top: top + 32, left: left}).show();
}
var hide = function(target) {
playHelp.find(target).hide();
}
playHelp.find('.tips > i').hover(function() {show(this, '.help-info')}, function() {hide('.help-info')});
}
// 初始化玩法区域
var buildPlayArea = function(column) {
playArea.empty();
if(column.checkbox) {
that.buildCheckboxPlace(playArea, column.checkbox);
}
if(column.select) {
that.buildSelectPlace(playArea, column.select);
}
if(column.textarea) {
that.buildTextareaPlace(playArea, column.textarea);
}
}
// 初始化选项栏
this.buildPlayOptions(playOptions);
// 加载
main.append(playGroups);
main.append(playList);
main.append(playHelp);
main.append(playArea);
main.append(adjustPrize);
main.append(playOptions);
// 调用初始化方法
if(that.$LotteryType==1) initPlayGroups(3);
else initPlayGroups(0);
// 初始化投注列表
that.LotteryRecord.init();
}
// 初始化
this.init = function(data) {
if (data) {
that.$Lottery = data.lottery;
that.$LotteryType = data.lotteryType;
that.$LotteryName = data.lotteryName;
that.$DownCode = data.downCode;
that.$FenDownCode = data.fenDownCode;
that.$LiDownCode = data.liDownCode;
that.$Method = data.method;
that.$SysCode = data.sysCode;
that.$SysUnitMoney = data.sysUnitMoney;
that.$UserCode = data.userCode;
that.$UserLp = data.userLp;
// 计算得出
that.$UserMaxCode = that.$UserCode - that.$DownCode;
that.$UserMinCode = that.$UserCode - that.$UserLp * 20;
}
this.initDocument();
that.LotteryRecord.clear();
}
this.isLoading = false;
this.doSubmit = function() {
var thisContent = $('.lottery-record');
if(!that.isLoading) {
if(that.$bList.length == 0) {
return Will.info('投注列表没有订单!', 3000);
}
var list = [];
$.each(that.$bList, function(i, v) {
list.push({
lottery: v.lottery,
issue: v.issue,
method: v.method,
content: v.content,
model: v.model,
multiple: v.multiple,
code: v.code,
compress: v.compress
});
});
var data = { text: $.toJSON(list) };
GameLotteryCtrl.addOrder({
data: data,
beforeSend: function() {
isLoading = true;
App.blockUI({
target: thisContent,
boxed: true
});
},
success: function(response) {
if(response.error == 0) {
isLoading = false;
App.unblockUI(thisContent);
that.LotteryRecord.clear();
Will.success( '您的订单已投注成功!', 3000);
if (typeof RecordList != 'undefined') {
RecordList.init();
}
}
if(response.error == 1) {
if ('116-05' == response.code) {
setTimeout(function() {
isLoading = false;
App.unblockUI(thisContent);
Will.warning( '投注超时,请检查网路情况后重新重试。');
}, 10000);
} else if ('116-06' == response.code) {
window.location.href = './index.html';
} else {
isLoading = false;
App.unblockUI(thisContent);
Will.warning( response.message);
}
}
}
});
}
}
this.getConfig=function() {
return {
lottery: that.$Lottery,
lotteryName: that.$LotteryName,
downCode: that.$DownCode,
fenDownCode: that.$FenDownCode,
liDownCode: that.$LiDownCode,
method: that.$Method,
sysCode: that.$SysCode,
sysUnitMoney: that.$SysUnitMoney,
userCode: that.$UserCode,
userLp: that.$UserLp,
userMaxCode: that.$UserMaxCode,
userMinCode: that.$UserMinCode
}
};
this.bList=function() {
return that.$bList;
};
this.clear=function() {
that.LotteryRecord.clear();
},
this.addCallback=function(cb) {
that.addCallback.push(cb);
};
}
/**
* 走势图
*/
var LotteryTrend = function() {
var init = function(shortName) {
var name = shortName;
if(name == 'fbffc1m') name = 'ffc';
if(name == 'fbffc3m') name = '3fc';
if(name == 'fbffc5m') name = '5fc';
$('.lottery-code-trend').attr('href', '/lottery-trend.html?' + name);
$('.lottery-code-trend').attr('target', new Date().getTime());
}
return {
init: init
}
}();
/**
* 合买计划
*/
var LotteryPlan = function() {
var init = function(lottery) {
var name = lottery.shortName;
if(name == 'fbffc1m') name = 'ffc';
if(name == 'fbffc3m') name = '3fc';
if(name == 'fbffc5m') name = '5fc';
var thisButton = $('.lottery-record').find('[data-command="plan"]');
thisButton.attr('href', '/lottery-plan.html?' + name);
}
return {
init: init
}
}();
/**
* 彩票开奖时间
*/
KaiJiangShiJianVue = new Vue({
template:'<div class="lottery-open-info">\
<div class="expect">第<span >{{issue}}</span> 期截止时间还有:</div>\
<div class="last-time"><span ><i>{{time[0]}}{{time[1]}}</i>:<i>{{time[2]}}{{time[3]}}</i>:<i>{{time[4]}}{{time[5]}}</i></span></div>\
</div>',
data:{interval:0,lottery:{},issue:'0000-0000',surplusTime:15000,time:[0,0,0,0,0,0]},
compiled:function(){
$('[data-injection="rest-open-time"]').append(this.$el);
},
watch:{
lottery:function(){
clearTimeout(this.interval);
this.getTime();
}
},
methods:{
getTime:function(){
var that = this;
Will.ajax({name: that.lottery.shortName},'/api/game-lottery/static-open-time',function(data ){
if(data.surplusTime==0) {
setTimeout(function(){that.getTime()},1000);
return;
}
that.surplusTime = data.surplusTime+1;
that.issue = data.issue;
that.setTime();
})
},setTime:function(){
var that = this;
var mom = moment.duration(that.surplusTime,'s');
that.interval = setInterval(function() {
var ShiJian = mom.subtract(1,'s')._data;
var Shi = (ShiJian.hours+'').length==1?'0'+ShiJian.hours:ShiJian.hours+'';
var Fen = (ShiJian.minutes+'').length==1?'0'+ShiJian.minutes:ShiJian.minutes+'';
var Miao = (ShiJian.seconds+'').length==1?'0'+ShiJian.seconds:ShiJian.seconds+'';
that.time = [].concat(Shi.split('')).concat(Fen.split('')).concat(Miao.split(''));
$('[data-field="global-expect"]').html(that.issue);
$('[data-field="global-last-time"]').html(that.time[0]+that.time[1]+':'+that.time[2]+that.time[3]+':'+that.time[4]+that.time[5]);
if(mom.asSeconds() == 10) {
if($('.set-voice').find('.cd').hasClass('audio-on')) {
var lotteryCd = document.getElementById('lottery-cd');
if(lotteryCd) {
lotteryCd.play();
} else {
var audio = $('<audio id="lottery-cd" autoplay="autoplay">');
audio.attr('src', '/audio/cd.mp3').hide();
$('body').append(audio);
}
}
}
if (mom.asSeconds() == 0) {
$('audio#lottery-cd').remove();
clearTimeout(that.interval);
setTimeout(function(){that.getTime()}, 1000);
Will.warning( '温馨提示:第 <font class="QiHao" >' + that.issue + '</font> 期 已截止, 请注意投注期号!', 3000);
}
return arguments.callee;
}(), 1000);
}}
}).$mount();
/**
* 彩票开奖号码
*/
var LotteryOpenCode = function() {
var $Lottery; // 彩票游戏
var $Timer; // 定时器
var $LastIssue; // 上一期的开奖号码
var loadData = function(history) {
var data = { name: $Lottery.shortName, history: history };
GameLotteryCtrl.staticOpenCode({
data: data,
success: function(response) {
if (response) {
handleData(response);
}
}
});
}
var $MoreTimer;
var $CurrCode;
var handleData = function(list) {
var thisResultList = $('.lottery-open-list .list');
thisResultList.empty();
var formatCode = function(code, lottery) {
var format = $('<div class="code">');
var codes = code.split(',');
if (codes.length == 20 && (lottery == "hgffc" || lottery == "bjffc" || lottery == "twffc" || lottery == "jndffc")) {
var bigAry = BigNumber(codes).bigAry;
for (var i = 0; i < 5; i++) {
format.append('<div class="num more">' + bigAry[i] + '</div>');
}
} else {
var length = codes.length > 5 ? 5 : codes.length;
for (var i = 0; i < length; i++) {
format.append('<div class="num">' + codes[i].split('|')[0] + '</div>');
}
if (codes.length > 5) {
format.append('<a class="more">...</a>');
}
}
if($Lottery.type == 10){
format = $('<div class="code">');
var sb = code.split('|');
var codes = sb[1].split(',');
format.append('<div class="num">' + codes[0] + '</div><div class="num">' + codes[1] + '</div><div class="num">' + codes[2] + '</div>'+'<div class="num">' + sb[0] + '</div>')
}
return format;
}
$.each(list, function(i, val) {
if (i == 0) {
$LastIssue = val.issue;
$CurrCode = val;
showOpenCode(val);
}
var item = $('<div class="item">');
item.append('<div class="expect">' + val.issue + '</div>');
item.append(formatCode(val.code, val.lottery));
item.find('.code .more').hover(function() {
clearTimeout($MoreTimer);
showOpenCode(val);
}, function() {
$MoreTimer = setTimeout(function() {
showOpenCode($CurrCode);
}, 300);
});
thisResultList.append(item);
});
if($Lottery.type == 10){
var isDaS = '';
var isDanS = '';
var sb = '' ;
var lastIsDa = '';
var lastIsDan = '';
$.each(list, function(i, val) {
var HaoMa = val.code.split('|')[0];
var isDa = (HaoMa-0)>13 ? 1:0;
var isDan = (HaoMa-0)%2;
if(i>0){
if(lastIsDa == isDa) {
isDaS += (isDa+'')
}else{
isDaS += ('|'+isDa)
}
}else{
isDaS += (isDa+'')
}
if(i>0){
if(lastIsDan == isDan) {
isDanS += (isDan+'')
}else{
isDanS += ('|'+isDan)
}
}else{
isDanS += (isDan+'')
}
lastIsDa = isDa;
lastIsDan = isDan;
});
var isDaSL = isDaS.split('|');
var isDanSL = isDanS.split('|');
var $html = $('<div class="DaXiaoDanShuang">\
<div class="tabs"><div>大小</div><div>单双</div></div>\
<div class="contents"><div class="DaXiao"> </div><div class="DanShuang"> </div></div>\
</div>');
var $htmlDaSL = $('<ul>');
$.each(isDaSL,function(){
var html01 = $('<li>');
for(var i=0;i<this.length;i++){
html01.append("<div>"+((this.substr(0,1)-0)?"大":"小")+"</div>");
}
$htmlDaSL.append(html01);
});
var $htmlDanSL = $('<ul>');
$.each(isDanSL,function(){
var html01 = $('<li>');
for(var i=0;i<this.length;i++){
html01.append("<div>"+((this.substr(0,1)-0)?"单":"双")+"</div>");
}
$htmlDanSL.append(html01);
});
$html.find('.DaXiao').append($htmlDaSL);
$html.find('.DanShuang').append($htmlDanSL);
$html.find('.tabs>div').click(function(){
$(this).addClass('selected').siblings().removeClass('selected');
$html.find('.contents>div').eq($html.find('.tabs>div').index($(this))).show().siblings().hide();
})[0].click();
$('.DaXiaoDanShuang').remove();
$('[data-injection="lottery-play-area"]').append($html);
}
}
var BigNumber = function(smallAry) {
var smallGroupAry = [];
var bigStr;
var bigAry = [];
var bigExpAry = [];
for (var i = 0; i < smallAry.length / 4; i++) {
var small = [];
var v1 = smallAry[i * 4];
var v2 = smallAry[i * 4 + 1];
var v3 = smallAry[i * 4 + 2];
var v4 = smallAry[i * 4 + 3];
small.push(v1, v2, v3, v4);
var sum = parseInt(v1) + parseInt(v2) + parseInt(v3) + parseInt(v4);
var exp = '' + v1 + "+" + v2 + "+" + v3 + "+" + v4 + "=" + (sum);
var expHtml = '' + exp;
var length = expHtml.length;
expHtml = expHtml.substr(0, length - 1) + '<span style="color:yellow">' + expHtml.substr(length - 1, length) + '</span>';
var sumStr = '' + sum;
bigAry.push(sumStr.substr(sumStr.length - 1, sumStr.length));
bigExpAry.push(exp);
smallGroupAry.push(small);
}
return {
bigAry: bigAry,
bigExpAry: bigExpAry,
smallGroupAry: smallGroupAry
}
}
/**
* 显示开奖号码
*/
var timeouter = 0;
var showOpenCode = function(data) {
var formatCode = function(code) {
var format = $('<ul>');
var codes = code.split(',');
for (var i = 0; i < codes.length; i++) {
// 检测号码个数
if ($Lottery.type == 1 || $Lottery.type == 2) {
if (i >= 5) break;
}
if ($Lottery.type == 3 || $Lottery.type == 4) {
if (i >= 3) break;
}
if ($Lottery.type == 5) {
if (i >= 20) break;
}
if ($Lottery.type == 6) {
if (i >= 10) break;
}
// 格式化开奖号码
if ($Lottery.type == 6) {
format.append('<li class="r' + codes[i] + '"></li>');
}else {
format.append('<li>' + codes[i] + '</li>');
}
}
if($Lottery.type == 10){
format = $('<ul>')
var sb = code.split('|');
var codes = sb[1].split(',');
format.append('<li>' + codes[0] + '</li><li>' + codes[1] + '</li><li>' + codes[2] + '</li>'+'<li>' + sb[0] + '</li>')
}
return format;
}
$('.lottery-open-code').find('[data-field="expect"]').html(data.issue);
var animateRotateShow = function(els, code, location) {
var codes = code.split(',');
var speed = 400,
bwidth = 68,
tdelay = 0;
var show = function(code, location, time, delay) {
setTimeout(function() {
var item = $('<div class="item">');
item.html(code);
item.css({
'left': '-' + bwidth + 'px',
'animation': '0.5s linear 0s normal none infinite rotate'
});
item.animate({
'left': location
}, time, 'linear', function() {
item.attr('style', 'left: ' + location + 'px');
});
els.find('.rotate').append(item);
}, delay);
}
for (var i = 0; i < codes.length; i++) {
var thisCode = codes[codes.length - 1 - i];
var thisLocation = location[codes.length - 1 - i];
var time = (thisLocation + bwidth) / speed * 1000;
show(thisCode, thisLocation, time, tdelay);
tdelay += time;
}
}
var lotteryOpenCode = $('.lottery-open-code').find('[data-field="code"]');
// 滚动效果的
if ($Lottery.shortName == 'hgssc' || $Lottery.shortName == 'bjssc'|| $Lottery.shortName == 'twbgssc') {
clearTimeout(timeouter);
var lotteryOpenCode02 = lotteryOpenCode;
lotteryOpenCode02.addClass('higher');
lotteryOpenCode02.css({
webkitFilter: 'url(#go1)',
filter: 'url(#go1)'
});
var smallStr = data.code.split('|')[1];
var smallAry = smallStr.split(',');
//小号数据分组
var temp = BigNumber(smallAry);
var smallGroupAry = temp.smallGroupAry;
var bigAry = temp.bigAry;
var bigExpAry = temp.bigExpAry;
//生成小号html
var smallul = '<ul class="small">';
for (var idx1 in smallGroupAry) {
smallul += '<span class="wp1"><span class="wp2">';
smallGroupAry[idx1];
for (var idx2 in smallGroupAry[idx1]) {
smallul += '<li>' + smallGroupAry[idx1][idx2] + '</li>';
}
smallul += '</span></span>';
}
smallul += '</ul>';
//生成大号html
var bigsul = "<ul class='big'>";
for (var idx1 in bigAry) {
bigsul += '<li>' + bigAry[idx1] + '</li>';
}
smallul += '</ul>';
lotteryOpenCode02.empty();
var tip = $("<div class='tip1'></div>");
lotteryOpenCode02.append(smallul);
lotteryOpenCode02.append(bigsul);
lotteryOpenCode02.append(tip);
lotteryOpenCode02.append('<div style="clear:both;"></div>')
lotteryOpenCode02.find('li').hide();
//入场
var smallli = lotteryOpenCode02.find('.small li');
smallli.removeClass("zoomIn animated");
smallli.each(function(idx, obj) {
setTimeout(function() {
$(obj).css('display', 'block').addClass("zoomIn animated")
}, idx * 50);
});
var bigli = lotteryOpenCode02.find('.big li');
var smallGroup = lotteryOpenCode02.find('.small .wp2');
//大小球动画
!! function() {
timeouter = setTimeout(function() {
lotteryOpenCode02.removeAttr("style");
}, 1000);
smallGroup.each(function(idx, obj) {
setTimeout(function() {
$(obj).css('display', 'block').removeClass().addClass("wp2 zoomOut animated");
// bigli.eq(idx).css({'visibility':'visible','display':'block'}).removeClass().addClass("li2 bounceIn animated");
bigli.eq(idx).css('display', 'block').removeClass().addClass("li2 bounceIn animated");
//$(obj).css('display','block').removeClass().addClass("wp2 zoomOut animated");
//$(obj).css('display','block').removeClass().addClass("wp2 bounceOut animated");
// $(obj).find('li').css('display','block').removeClass().addClass("wp2 bounceOut animated");
// setTimeout(function(){
// bigli.eq(idx).css('display','block').removeClass().addClass("li2 bounceIn animated");
// },500);
// $(obj).css('display','block').removeClass().addClass("wp2 flip animated");
// setTimeout(function(){$(obj).css('display','block').removeClass().addClass("wp2 zoomOut animated")},800);
// setTimeout(function(){bigli.eq(idx).css('display','block').removeClass().addClass("li2 zoomIn animated")},800);
// $(obj).css('display','block').removeClass().addClass("wp2 hinge animated");
// bigli.eq(idx).css('display','block').removeClass().addClass("li2 rollIn animated");
}, 1000 + idx * 200);
});
}()
//大球悬停动画
bigli.unbind();
bigli.hover(function() {
// $(this).removeClass().addClass("flipOutY animated");
// smallGroup.eq($(this).index()).removeClass().addClass("wp2 flipInY animated");
var ls = smallGroup.eq($(this).index()).find('li');
var html = "";
var sum = 0;
ls.each(function(idx, ele) {
var txt = $(this).html();
if (idx == ls.length - 1) html += txt + "=";
if (idx != ls.length - 1) html += txt + "+";
sum += parseInt(txt);
});
html += sum;
var length = html.length;
html = html.substr(0, length - 1) + '<span style="color:yellow">' + html.substr(length - 1, length) + '</span>';
tip.html(html);
}, function() {
// $(this).removeClass().addClass("flipInY animated");
// smallGroup.eq($(this).index()).removeClass().addClass("wp2 flipOutY animated");
});
} else {
lotteryOpenCode.html(formatCode(data.code));
//入场
var list = $('.lottery-open-code .code li');
list.each(function(idx, obj) {
setTimeout(function() {
// $(obj).css('display', 'block').addClass("zoomIn animated"); bounceInLeft
var s = 'zoomIn';
$(obj).css('visibility', 'visible');
// $(obj).attr('style','visibility: visible;');
$(obj).addClass(s+" animated"); //visibility: visible;
// $(obj).css('display', 'inline-block')
}, idx * 100);
});
lotteryOpenCode.removeClass('higher');
//彩票球隐藏
if(list.length>10){
//list.slice(10).hide();
$('.lottery-open-code > .code.ssc > ul > li').addClass('kl8lot')
};
if(list.length == 3){
$('.lottery-open-code > .code > ul > li').css({'margin-left':'13.6%'})
};
if(list.length == 4){
$('.lottery-open-code > .code > ul > li').css({'margin-left':'9.6%'})
};
}
// else {
// lotteryOpenCode.html(formatCode(data.code));
// lotteryOpenCode.removeClass('higher');
// }
}
var init = function(lottery) {
$Lottery = lottery;
loadData(true);
}
var flush = function(data) {
if (data.issue != $LastIssue) {
loadData(true);
}
}
return {
init: init,
flush: flush
}
}();
/**
* 开奖通知
*/
var LotteryOpenNotice = function() {
var loadData = function() {
GameLotteryCtrl.pullOpenNotice({
success: function(response) {
if (response.error == 0) {
handleData(response.data);
}
}
});
}
// 播放声音
var audio = function() {
if($('.set-voice').find('.win').hasClass('audio-on')) {
$('audio#lottery-open').remove();
var audio = $('<audio id="lottery-open" autoplay="autoplay">');
audio.attr('src', '/audio/lottery-open.mp3').hide();
$('body').append(audio);
}
}
var handleData = function(data) {
audio();
var msg = '当前彩种:' + data.lottery + '<br/>';
msg += '当前期号:' + data.issue + '<br/>';
msg += '当期投注:' + data.money.toFixed(3) + '元<br/>';
msg += '当期中奖:' + data.winMoney.toFixed(3) + '元<br/>';
msg += '当期盈亏:' + data.profit.toFixed(3) + '元<br/>';
// App.tips('消息提示', msg, 8000);
Lobibox.notify('info', {
size: 'mini',
title: '中奖提示',
msg: msg,
showClass: 'bounceIn',
hideClass: 'bounceOut',
});
}
var pull = function() {
loadData();
}
return {
pull: pull
}
}();