没有查询到车次,请更换条件或时间试试..
@@ -573,14 +573,14 @@
diff --git a/Web12306/js/account/sessionMgr.js b/Web12306/js/account/sessionMgr.js
index 787806d..c65a81a 100644
--- a/Web12306/js/account/sessionMgr.js
+++ b/Web12306/js/account/sessionMgr.js
@@ -80,7 +80,13 @@
});
};
that.loadProfile = function (username, checkData) {
+ //备份当前的查询,并取代为默认的查询
+ var cp = that.currentProfile;
+ if (cp && (!cp.fromText || !cp.toText || !cp.depDate))
+ cp = null;
+
var profile = storage.obj("12306_user_" + username) || { username: username, passengers: [], savedProfile: {}, currentProfile: {}, rawPassenger: [], options: {} };
+ profile.currentProfile = cp || $.extend({}, that.defaultProfile, profile.currentProfile);
that.current = profile;
if (username) {
@@ -170,7 +176,7 @@
get: function () {
return session && session.currentProfile;
}, set: function (value) {
- session.currentProfile = value || that.defaultProfile;
+ session.currentProfile = $.extend({}, that.defaultProfile, value);
that.fireEvent("currentProfileChanged");
that.save();
}
diff --git a/Web12306/js/data.js b/Web12306/js/data.js
index e14eb59..db018fd 100644
--- a/Web12306/js/data.js
+++ b/Web12306/js/data.js
@@ -1,6 +1,22 @@
define(function (require, exports, module) {
var citydata = require("./station/station_data.js");
+ exports.trimToDay = function (d) {
+ d = d || new Date();
+ if (!(d instanceof Date)) {
+ d = new Date(d + '');
+ }
+
+ var x = new Date();
+ x.setTime(d.getTime() - d.getTime() % (1000 * 3600 * 24));
+ return x;
+ };
+ exports.addDays = function (date, days) {
+ var x = new Date();
+ x.setTime(date.getTime() - date.getTime() % (1000 * 3600 * 24) + 1000 * 3600 * 24 * days);
+ return x;
+ };
+
exports.citydata = citydata;
exports.cities = _(_.flatten(_.map(_.values(citydata.data), function (e) { return _.values(e); }))).mapObject(function (e) { return e.c; });;
exports.identityCardTypes = {
@@ -46,12 +62,35 @@
exports.toSeatTypeName = function (code) {
return exports.seatNameInvMap[exports.tagOtnMap[code]];
};
- exports.seatDisplayOrder = '9PMO643210'.split('');
+ exports.seatDisplayOrder = 'O219PM6430'.split('');
exports.isDebug = ((function () { return false; }) + '').indexOf("false;") != -1;
- exports.log = function() {
+ exports.log = function () {
if (!exports.isDebug)
return;
console.log.apply(console, Array.prototype.slice.call(arguments));
};
+
+ exports.showMoreOptRange = [
+ [new Date(2014, 9, 5), new Date(2014, 9, 20)],
+ [new Date(2015, 1, 20), new Date(2014, 2, 18)]
+ ];
+
+ exports.maxSellDays = 19;
+ exports.minDate = exports.trimToDay(new Date());
+ exports.maxDate = exports.addDays(exports.minDate, exports.maxSellDays);
+ exports.isValidDate = function(date) {
+ date = exports.trimToDay(date);
+ return date >= exports.minDate;
+ };
+
+ Object.defineProperty(exports, "moreOptDefault", {
+ get: function () {
+ var d = exports.minDate;
+
+ return _.any(exports.showMoreOptRange,function(v) {
+ return v[0] <= d && d <= v[1];
+ });
+ }
+ });
});
\ No newline at end of file
diff --git a/Web12306/js/otn/orderprocess.js b/Web12306/js/otn/orderprocess.js
index 5e6513d..fb26323 100644
--- a/Web12306/js/otn/orderprocess.js
+++ b/Web12306/js/otn/orderprocess.js
@@ -53,7 +53,7 @@
submitData = JSON.parse(exports.formatJson(formData["ticketInfoForPassengerForm"] || "{}"));
};
- return def;
+ return def.promise();
};
exports.fastPrepareOrder = function (train, profile, passenger) {
@@ -132,7 +132,7 @@
};
autoSubmitRequest();
- return def;
+ return def.promise();
};
exports.fastSubmitOrder = function (train, profile, passenger, randcode) {
@@ -222,7 +222,7 @@
};
submitOrder();
- return def;
+ return def.promise();
};
exports.submitOrder = function (train, profile, passenger, randcode) {
@@ -379,6 +379,6 @@
checkOrderInfo();
- return def;
+ return def.promise();
};
});
diff --git a/Web12306/js/otn/queryticket.js b/Web12306/js/otn/queryticket.js
index 7cf5213..654925f 100644
--- a/Web12306/js/otn/queryticket.js
+++ b/Web12306/js/otn/queryticket.js
@@ -2,6 +2,9 @@
var ajax = require("../platform/webRequest.js");
var param = require("../data.js");
var parser = require("../platform/parser.js");
+ var ev = require("../platform/EventObject.js");
+
+ exports.events = new ev();
var getTicketInfo = function (v) {
var data = [], info = v.indexOf("#") === -1 ? v : /getSelected\(['"](.*?)['"]\)/i.exec(v)[1].split('#')[11],
@@ -38,7 +41,9 @@
var transferData = function (data, noProcess) {
var result = data;
- if (!Array.isArray(result.data) || !result.data.length || !result.data[0].queryLeftNewDTO) return null;
+ if (!Array.isArray(result.data) || !result.data.length || !result.data[0].queryLeftNewDTO) {
+ exports.events.fireEvent("requestFailed");
+ };
var trainData = { raw: result, rawTrainMap: {}, trainMap: {}, auto: null, nextTime: null };
@@ -116,9 +121,9 @@
if (!noProcess) {
//执行车次预过滤。过滤内容:出发地,目标地,时间
- $(document).trigger("filterTrains", trainData);
+ exports.events.fireEvent("filterTrains", trainData);
//处理车次
- $(document).trigger("processTrains", trainData);
+ exports.events.fireEvent("processTrains", trainData);
//过滤数据
if (trainData.filtered && trainData.filtered.length) {
@@ -152,7 +157,7 @@
def.reject();
});
- return def;
+ return def.promise();
};
exports.queryTrainStop = function (id, from, to, date) {
@@ -173,6 +178,6 @@
def.reject("网络错误");
});
- return def;
+ return def.promise();
};
});
diff --git a/Web12306/js/platform/EventObject.js b/Web12306/js/platform/EventObject.js
index 270a7d0..f0fd02c 100644
--- a/Web12306/js/platform/EventObject.js
+++ b/Web12306/js/platform/EventObject.js
@@ -8,6 +8,8 @@
var handleQueue = handles[name] || [];
handles[name] = handleQueue;
handleQueue.push(callback);
+
+ return this;
};
this.off = function (name, callback) {
@@ -25,6 +27,8 @@
handleQueue.length = 0;
}
handles[name] = handleQueue;
+
+ return this;
};
this.fireEvent = function (type) {
diff --git a/Web12306/js/platform/media.js b/Web12306/js/platform/media.js
index 7773a8a..9f254fb 100644
--- a/Web12306/js/platform/media.js
+++ b/Web12306/js/platform/media.js
@@ -1,18 +1,23 @@
-define(function(require, exports, module) {
+define(function (require, exports, module) {
+ var port = require("./extensionPort.js");
var audio = new Audio("http://static.liebao.cn/resources/audio/music2.ogg");
audio.loop = true;
- exports.play = function() {
+ exports.play = function () {
audio.play();
$("#music_controller").show();
};
- exports.stop = function() {
+ exports.stop = function () {
audio.pause();
$("#music_controller").hide();
};
+ window.test = exports.notify = function (title, content) {
+ port.sendMessage({ action: "notify", title: title, content: content });
+ }
+
$("#btn_stop_sound").click(exports.stop);
$("#music_controller button").click(exports.stop);
});
diff --git a/Web12306/js/ui/index.js b/Web12306/js/ui/index.js
index a09d366..8987f36 100644
--- a/Web12306/js/ui/index.js
+++ b/Web12306/js/ui/index.js
@@ -1,12 +1,11 @@
define(function (require) {
var param = require("../data.js");
- var ajax = require("../platform/webRequest.js");
- var storage = require('../platform/storage.js');
var widget = require("./widget.js");
var sessMgr = require("../account/sessionMgr.js");
var mp = require("./widget_message_popup.js");
var datebar = require("./widget_datebar.js");
var parser = require("../platform/parser.js");
+ var media = require("../platform/media.js");
//会话管理器事件
sessMgr.on("notValidPassengerFound", function () {
@@ -31,7 +30,7 @@
//自动刷新呢
var autorefresh = require("./ui-autorefresh.js");
autorefresh.init();
- autorefresh.on("requestQueryTicket", function() {
+ autorefresh.on("requestQueryTicket", function () {
ui_result.load();
});
@@ -54,6 +53,7 @@
//订票列表交互
(function () {
ui_result.on("requireSubmitOrder", function (e, d) {
+ autorefresh.stop();
uiOrderProcess.start(d.train, d.seat, sessMgr.currentProfile, null);
});
autorefresh.on("requireSubmitOrder", function (e, d) {
@@ -64,17 +64,21 @@
//界面交互初始化
(function () {
+ $(".order-tips").html("今日可预定:" + parser.formatDate(param.minDate, "MM月dd日") + "-" + parser.formatDate(param.maxDate, "MM月dd日") + "的火车票");
+
+ //自动加速关闭
+ $(".net-tips, .reset-btn").hide();
+
var resetInterfaceByProfile = function () {
var user = sessMgr.current;
if (!user) {
return;
}
- if (user.options.showMoreOpt !== undefined) {
- var div = $("div.options-param");
- if (user.options.showMoreOpt ^ div.is(":visible"))
- !user.options.showMoreOpt ? (div.hide(), $(".search-more-option").html("显示更多选项")) : (div.show(), $(".search-more-option").html("隐藏更多选项"));
- }
+ var showMoreOpt = user.options.showMoreOpt !== undefined ? user.options.showMoreOpt : param.moreOptDefault;
+ var div = $("div.options-param");
+ if (showMoreOpt ^ div.is(":visible"))
+ !user.options.showMoreOpt ? (div.hide(), $(".search-more-option").html("显示更多选项")) : (div.show(), $(".search-more-option").html("隐藏更多选项"));
var p = user.currentProfile;
$("#from_city").val(p.fromText).attr("data-code", p.fromCode);
@@ -127,7 +131,7 @@
sessMgr.currentProfile.studentTicket = this.value === "1";
sessMgr.save();
});
- $("div.transfer-city-btn").click(function() {
+ $("div.transfer-city-btn").click(function () {
var f = document.getElementById("from_city");
var t = document.getElementById("to_city");
@@ -142,6 +146,7 @@
});
$("#btnQuery").click(function () {
autorefresh.stop();
+ media.stop();
if (!sessMgr.currentProfile.fromCode || !sessMgr.currentProfile.toCode || !sessMgr.currentProfile.depDate) {
mp.showMessagePopup("error", "亲,还没有设置查询的条件哦。");
return;
diff --git a/Web12306/js/ui/ui-autorefresh.js b/Web12306/js/ui/ui-autorefresh.js
index a74654a..295383e 100644
--- a/Web12306/js/ui/ui-autorefresh.js
+++ b/Web12306/js/ui/ui-autorefresh.js
@@ -5,6 +5,7 @@
var expdata = require("../data.js");
var inAutoRefresh = false;
var media = require("../platform/media.js");
+ var query = require("../otn/queryticket.js");
sessMgr.on("sessionChanged", function () {
session = sessMgr.current;
@@ -73,7 +74,7 @@
})();
//如果开启了自动预定,那么不显示预定结果以外的车次
if (currentProfile.selectedTrain && currentProfile.selectedTrain.length) {
- var rule = new RegExp("^" + currentProfile.selectedTrain.join("|") + "$", "i");
+ var rule = new RegExp("^(" + currentProfile.selectedTrain.join("|") + ")$", "i");
var filtered3 = _.filter(data.available, function (e) { return !rule.test(e.code); });
data.include = _.difference(data.available, filtered3);
@@ -92,7 +93,7 @@
};
var processTrains = function (data) {
- if (!currentProfile || !session.options.showMoreOpt)
+ if (!currentProfile || (!session.options.showMoreOpt && !inAutoRefresh))
return;
//预置参数
@@ -161,9 +162,10 @@
data.nextTime = null;
if (inAutoRefresh) {
media.play();
+ media.notify("可以订票了!", "终于等到可以订的 " + data.auto.train + "次列车" + expdata.toSeatTypeName(data.auto.seat) + "!");
}
if (currentProfile.autoSubmitEnabled && data.enableAuto) {
- $(document).trigger("performAutoSubmit", data.auto);
+ auto.fireEvent("performAutoSubmit", data.auto);
}
} else {
//规则:如果只有待售的,那么等到指定的时间
@@ -200,9 +202,9 @@
var currentDateLoopIndex = -1;
this.init = function () {
- $(document).on("filterTrains", function (e, d) {
+ query.events.on("filterTrains", function(e, d) {
filterTrains(d);
- }).on("processTrains", function (e, d) {
+ }).on("processTrains", function(e, d) {
processTrains(d);
if (!d.auto && (d.nextTime && inAutoRefresh)) {
@@ -212,7 +214,10 @@
} else if (d.auto) {
that.stop();
}
- }).on("performAutoSubmit", function (e, d) {
+ }).on("requestFailed", function () {
+ //失败?不做任何处理
+ });
+ that.on("performAutoSubmit", function (e, d) {
that.dispatchEvent("requireSubmitOrder", d);
});
};
@@ -317,5 +322,6 @@
AutoRefresh.prototype = Object.create(ev);
AutoRefresh.constructor = AutoRefresh;
- return new AutoRefresh();
+ var auto = new AutoRefresh();
+ return auto;
});
diff --git a/Web12306/js/ui/ui-autosubmitform.js b/Web12306/js/ui/ui-autosubmitform.js
index 390ff08..cd248d5 100644
--- a/Web12306/js/ui/ui-autosubmitform.js
+++ b/Web12306/js/ui/ui-autosubmitform.js
@@ -24,6 +24,7 @@
allpasseengers = data;
currentSearchKey = null;
if (!data.length) {
+ uiDlgList.empty();
uiDlg.find(".empty-indicator").show();
}
performSearch();
@@ -104,7 +105,7 @@
break;
}
}
- span.fadeOut('fast', function () { $(this).remove(); });
+ span.remove();
e.stopPropagation();
}).on("click", ".optional-block", function (e) {
@@ -192,6 +193,7 @@
}
queryLoadingRow.show();
+ queryErrorRow.hide();
query.queryTicket(cp.fromCode, cp.toCode, cp.depDate, cp.studentTicket, true)
.done(function () {
traindata = this;
@@ -248,7 +250,7 @@
container.on("click", ".optional-block", function () {
var obj = $(this).closest("span[data-code]");
exports.removeTrainFromList(obj[0].dataset.code);
- obj.fadeOut('fast', function () { $(this).remove(); });
+ obj.remove();
});
exports.addTrainToList = function (t) {
@@ -298,7 +300,12 @@
var initProfile = function () {
container.find(">span").remove();
if (cp && cp.dateloop) {
- container.append(tpl(cp.dateloop));
+ var filteredDate = _.filter(cp.dateloop, data.isValidDate);
+ if (filteredDate.length !== cp.dateloop.length) {
+ cp.dateloop = filteredDate;
+ sessmgr.save();
+ }
+ container.append(tpl(_.filter(cp.dateloop, data.isValidDate)));
}
};
diff --git a/Web12306/js/ui/ui-submit-order.js b/Web12306/js/ui/ui-submit-order.js
index 1421b73..0da6d5f 100644
--- a/Web12306/js/ui/ui-submit-order.js
+++ b/Web12306/js/ui/ui-submit-order.js
@@ -6,6 +6,8 @@
var op = require("../otn/orderprocess.js");
var vc = require("./widget_verifycode.js");
var param = require("../data.js");
+ var media = require("../platform/media.js");
+ var share = require("./ui_sns_share.js");
//提交参数
var pTrain, pStu, pPassengers, pProfile;
var submitDef;
@@ -75,6 +77,8 @@
}
};
this.submitOrder = function () {
+ media.stop();
+
var randCode = $("#ticket-submit-info .ticket-submit-vc input:text").val();
if (randCode.length !== 4) {
mp.showMessagePopup("error", "请输入验证码...");
@@ -93,6 +97,7 @@
dom.find("div>p:eq(0) span").html(data.orderId);
submitProgress.removeClass().addClass("ticket-submit-status ticket-submit-status-ok");
submitProgress.find("span").html("订票成功!订单号为 " + data.orderId);
+ share.makeWeiboShare(document.getElementById("lnkShareWb"), null, "我刚在#猎豹浏览器#上用#订票助手#抢到了" + pPassengers.length + "张车票!你的车票买到了吗?", null);
submitBtn[0].disabled = false;
});
submitDef.fail(function (data) {
diff --git a/Web12306/js/ui/ui-trainlist.js b/Web12306/js/ui/ui-trainlist.js
index 659f4ac..b2ecb05 100644
--- a/Web12306/js/ui/ui-trainlist.js
+++ b/Web12306/js/ui/ui-trainlist.js
@@ -9,6 +9,7 @@
var tsquery = require("./ui-train-stop.js");
var datebar = require("./widget_datebar.js");
var parser = require("../platform/parser.js");
+ var autorefresh = require("./ui-autorefresh.js");
var TrainListObj = function () {
var __ = this;
@@ -61,6 +62,7 @@
datebar.init();
datebar.on("requireChangeDate", function (e, d) {
+ autorefresh.stop();
//请求切换时间
$("#dep_date").val(d).change();
sessMgr.save();
diff --git a/Web12306/js/ui/ui_sns_share.js b/Web12306/js/ui/ui_sns_share.js
new file mode 100644
index 0000000..989c05e
--- /dev/null
+++ b/Web12306/js/ui/ui_sns_share.js
@@ -0,0 +1,13 @@
+define(function (require, exports, module) {
+ exports.makeWeiboShare = function (target, url, text, imageUrl) {
+ url = url || self.location + '';
+ ((function (s, d, e, r, l, p, t, z, c) {
+ var f = 'http://v.t.sina.com.cn/share/share.php?',
+ u = z || d.location,
+ p = ['url=', e(u), '&title=', e(t || d.title), '&source=', e(r), '&sourceUrl=', e(l), '&content=', c || 'gb2312', '&pic=', e(p || '')].join('');
+
+ target.setAttribute("href", [f, p].join(''));
+ })(screen, document, encodeURIComponent, '', '', imageUrl || "", text, url, 'utf-8'));
+
+ };
+});
diff --git a/Web12306/js/ui/widget_datedropdown.js b/Web12306/js/ui/widget_datedropdown.js
index d8658a8..43cfec2 100644
--- a/Web12306/js/ui/widget_datedropdown.js
+++ b/Web12306/js/ui/widget_datedropdown.js
@@ -1,5 +1,6 @@
define(function (require, exports, module) {
var eo = require("../platform/EventObject.js");
+ var data = require("../data.js");
var getCurDate = function () {
var now = new Date();
|