|
(function ($) { |
|
var trains, seats; |
|
|
|
// 席位ID对照表 |
|
// SWZ(商务座), TZ(特等座), ZY(一等座), ZE(二等座), GR(高级软座), RW(软卧), YW(硬卧), RZ(软座), YZ(硬座), WZ(无座) |
|
var seatsMap = { |
|
SWZ: "商务座", |
|
TZ: "特等座", |
|
ZY: "一等座", |
|
ZE: "二等座", |
|
GR: "高级软座", |
|
RW: "软卧", |
|
YW: "硬卧", |
|
RZ: "软座", |
|
YZ: "硬座", |
|
WZ: "无座" |
|
}; |
|
var tip_1 = '请输入欲购买的车次,多个车次用[英文逗号]分割, 如 T107,K25'; |
|
var tip_2 = '指定席位(输入席位代码,如 RW,YW):\nSWZ(商务座), TZ(特等座), ZY(一等座), ZE(二等座), GR(高级软座), RW(软卧), YW(硬卧), RZ(软座), YZ(硬座), WZ(无座)' |
|
|
|
var ret_1 = window.prompt(tip_1); |
|
ret_1 = $.trim(ret_1).toUpperCase(); |
|
var ret_2 = window.prompt(tip_2); |
|
ret_2 = $.trim(ret_2).toUpperCase(); |
|
|
|
trains = ret_1 !== "" ? ret_1.split(',') : []; |
|
seats = ret_2 !== "" ? ret_2.split(',') : Object.getOwnPropertyNames(seatsMap); |
|
|
|
console.log(trains); |
|
console.log(seats); |
|
|
|
var num = 0, |
|
timeId; |
|
|
|
var playAudio = function () { |
|
var audio = new Audio("/otn/resources/js/framework/audio/message.wav"); |
|
audio.play(); |
|
|
|
num = 0; |
|
} |
|
|
|
// 打开桌面提示 |
|
Notification.requestPermission(); |
|
// 弹出提示信息 |
|
function createNotification (ret) { |
|
var msg = ''; |
|
ret.forEach(function (item) { |
|
msg += item.checi + " " + seatsMap[item.xiwei] + " 有余票" + item.yupiao + "张\n"; |
|
}); |
|
|
|
var data = { |
|
dir: "auto", |
|
body: msg, |
|
icon: "http://ww3.sinaimg.cn/mw690/6fb2c1e4gw1e8jp394fabj203k03kgli.jpg" |
|
}; |
|
|
|
new Notification('赶紧抢票!!!', data); |
|
} |
|
|
|
var tmp_yupiao, tmp_checi, tmp_xiwei, tmp_ret; |
|
function start () { |
|
var ids = seats.map(function (item) { |
|
return '[id^=' + item + ']'; |
|
}); |
|
ids = ids.join(); |
|
|
|
timeId = setInterval(function () { |
|
var piao = $(ids); |
|
tmp_ret = []; |
|
|
|
//console.log(piao); |
|
piao.each(function () { |
|
var _this = $(this); |
|
|
|
tmp_yupiao = false; |
|
if (_this.text() === "有" || parseInt(_this.text(), 10) > 0) { |
|
tmp_yupiao = true; |
|
} |
|
|
|
tmp_checi = _this.parent().find('.number').text(); |
|
tmp_xiwei = this.id.split("_")[0]; |
|
|
|
if (tmp_yupiao && (trains.indexOf(tmp_checi) > -1 || trains.length === 0)) { |
|
tmp_ret.push({ |
|
checi: tmp_checi, |
|
yupiao: _this.text(), |
|
xiwei: tmp_xiwei |
|
}); |
|
num++; |
|
} |
|
}); |
|
|
|
// 播放声音 & 桌面提示 |
|
if (num > 0) { |
|
playAudio(); |
|
createNotification(tmp_ret); |
|
} |
|
}, 3000); |
|
} |
|
start(); |
|
|
|
// tips |
|
var qpbox = '<div style="position:fixed;left:0;top:0;color:#FFF;font-size:16px;word-break:break-all;background-color:#0070FF;padding:5px;z-index:10000;width:150px;"><p class="text_1">抢票工具工作中</p><p class="text_2"></p><p class="text_3"></p><button>暂停</button></div>'; |
|
qpbox = $(qpbox); |
|
qpbox.find('.text_2').text("车次:" + trains.join()); |
|
qpbox.find('.text_3').text("席位:" + seats.map(function (item) { |
|
return seatsMap[item]; |
|
}).join()); |
|
qpbox.appendTo('body'); |
|
|
|
qpbox.find('button').data('start', true).click(function () { |
|
var _this = $(this), |
|
status = qpbox.find('.text_1'); |
|
|
|
if (_this.data('start')) { |
|
window.QP_stop(); |
|
|
|
status.text('抢票工具已暂停'); |
|
_this.text("开始"); |
|
_this.data('start', false); |
|
qpbox.css('background-color', 'red'); |
|
|
|
} else { |
|
window.QP_start(); |
|
|
|
status.text('抢票工具工作中'); |
|
_this.text("暂停"); |
|
_this.data('start', true); |
|
qpbox.css('background-color', '#0070FF'); |
|
} |
|
return false; |
|
}); |
|
|
|
window.QP_stop = function () { |
|
clearInterval(timeId); |
|
} |
|
window.QP_start = function () { |
|
start(); |
|
}; |
|
})(jQuery); |