@@ -284,7 +259,7 @@
历时{{=t.elapsedTime.total.replace(':',"小时")}}分
- {{=t.from.name}}
+ {{=t.from.name}}
{{=t.to.name}}
|
@@ -395,33 +370,29 @@
-
- 2014年4月14日 15:42开
+
-
- 10车22号下铺
-
-
- 南 昌
-
-
- 合 肥
-
-
- T191次
-
-
- ¥227.00 元
-
-
- 请尽快提交订单并支付,
- 车票不等人。。。
-
-
- 新空调快车
-
-
-
+
+
diff --git a/Web12306/js/boot.js b/Web12306/js/boot.js
index 53a12c9..ce82d94 100644
--- a/Web12306/js/boot.js
+++ b/Web12306/js/boot.js
@@ -92,51 +92,56 @@
var notInstallExtension = function () {
seajs.use("ui/noextension");
};
+ var entryPoint = function () {
+ if (!window.targetExtensionId) {
+ notInstallExtension();
+ } else {
+ //确保内容脚本启动
+ var start = $.Deferred();
+ start.done(function () {
+ chrome.runtime.sendMessage(window.targetExtensionId, { action: "getStorage" }, function (m) {
+ window.storage = m.detail;
+
+ seajs.use("ui/" + pagename);
+ });
+ });
+ start.fail(function () {
+ notInstallExtension();
+ });
+
+ if (document.body.dataset["mobileSupportInitialized"]) {
+ start.resolve();
+ } else {
+ var timer = setTimeout(function () {
+ start.reject();
+ }, 3000);
+ document.addEventListener("mobileSupportInitialized", function () {
+ window.clearTimeout(timer);
+ start.resolve();
+ });
+ }
+ }
+ };
var targetExtension = [
"bpbefagpafkfgoihbmcgeileodldkpnf",
"gkbheeokbgmmnbjhhlphckobccejghjn"
];
window.targetExtensionId = null;
+ var nextTest = function () {
+ if (targetExtension.length) {
+ var id = targetExtension.pop();
+ chrome.runtime.sendMessage(id, { action: "getStorage" }, function (m) {
+ if (m) {
+ window.targetExtensionId = id;
+ window.storage = m.detail;
+ entryPoint();
+ } else {
+ nextTest();
+ }
+ });
+ } else entryPoint();
+ };
if (typeof (chrome) !== 'undefined') {
- for (var id in targetExtension) {
- var port = chrome.runtime.connect(targetExtension[id]);
- try {
- port.postMessage("");
- port.disconnect();
-
- window.targetExtensionId = targetExtension[id];
- break;
- } catch (e) {
-
- }
- }
- }
- if (!window.targetExtensionId) {
- notInstallExtension();
- } else {
- //确保内容脚本启动
- var start = $.Deferred();
- start.done(function () {
- chrome.runtime.sendMessage(window.targetExtensionId, { action: "getStorage" }, function (m) {
- window.storage = m.detail;
-
- seajs.use("ui/" + pagename);
- });
- });
- start.fail(function () {
- notInstallExtension();
- });
-
- if (document.body.dataset["mobileSupportInitialized"]) {
- start.resolve();
- } else {
- var timer = setTimeout(function () {
- start.reject();
- }, 3000);
- document.addEventListener("mobileSupportInitialized", function () {
- window.clearTimeout(timer);
- start.resolve();
- });
- }
- }
+ nextTest();
+ } else entryPoint();
})(window, document);
diff --git a/Web12306/js/data.js b/Web12306/js/data.js
index bc57668..9188217 100644
--- a/Web12306/js/data.js
+++ b/Web12306/js/data.js
@@ -6,7 +6,7 @@
"1": "成人",
"2": "儿童",
"3": "学生",
- "4": "残疾军人、伤残人民警察"
+ "4": "残军"
};
exports.tagOtnMap = {
"9": "SWZ",
diff --git a/Web12306/js/otn/orderprocess.js b/Web12306/js/otn/orderprocess.js
index b8ea2c7..c7d6416 100644
--- a/Web12306/js/otn/orderprocess.js
+++ b/Web12306/js/otn/orderprocess.js
@@ -16,7 +16,7 @@
};
exports.prepareOrder = function (train, profile) {
- var purposeCode = profile.studentTicket=="1" ? "0X00" : "ADULT";
+ var purposeCode = profile.studentTicket ? "0X00" : "ADULT";
var data = "secretStr" + "=" + train.secureStr + "&train_date=" + train.date + "&back_train_date" + "=" + (profile.resign ? profile.resignDate : train.date) + "&tour_flag" + "=" + (profile.resign ? "gc" : "dc") + "&" +
"purpose_codes" + "=" + purposeCode + "&" +
"query_from_station_name" + "=" + profile.fromText + "&" +
@@ -33,10 +33,6 @@
var token = /var\s*globalRepeatSubmitToken\s*=\s*['"]([^'"]+)["']/i.exec(html) && RegExp.$1;
if (token) {
submitToken = token;
-
- console.log(token, submitData.leftTicketStr, submitData.key_check_isChange, submitData.train_location);
-
-
def.resolve({ token: token });
} else {
submitToken = null;
@@ -123,7 +119,7 @@
fromStationTelecode: train.from.code,
toStationTelecode: train.to.code,
leftTicket: submitData["leftTicketStr"],
- purpose_codes: profile.studentTicket === "1" ? "0X00" : "00",
+ purpose_codes: profile.studentTicket ? "0X00" : "00",
_json_att: ajax.userAtts,
REPEAT_SUBMIT_TOKEN: submitToken
};
@@ -153,7 +149,7 @@
passengerTicketStr: pas1,
oldPassengerStr: pas2,
randCode: randcode,
- purpose_codes: profile.studentTicket === "1" ? "0X00" : "00",
+ purpose_codes: profile.studentTicket ? "0X00" : "00",
key_check_isChange: submitData["key_check_isChange"],
leftTicketStr: submitData["leftTicketStr"],
train_location: submitData["train_location"],
diff --git a/Web12306/js/otn/queryticket.js b/Web12306/js/otn/queryticket.js
index 12a2330..1675107 100644
--- a/Web12306/js/otn/queryticket.js
+++ b/Web12306/js/otn/queryticket.js
@@ -142,7 +142,7 @@
"leftTicketDTO.train_date": date,
"leftTicketDTO.from_station": from,
"leftTicketDTO.to_station": to,
- "purpose_codes": student == "1" ? "0X00" : "ADULT"
+ "purpose_codes": student ? "0X00" : "ADULT"
}, "json", function () {
var data = transferData(this.model);
def.resolveWith(data);
diff --git a/Web12306/js/ui/index.js b/Web12306/js/ui/index.js
index e60ce3c..85622f2 100644
--- a/Web12306/js/ui/index.js
+++ b/Web12306/js/ui/index.js
@@ -63,16 +63,16 @@
return;
}
-
if (user.options.showMoreOpt !== undefined) {
var div = $("div.options-param");
- if(user.options.showMoreOpt ^ div.is(":visible"))
+ if (user.options.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);
$("#to_city").val(p.toText).attr("data-code", p.toCode);
+ document.querySelector("input[name='ticket_type'][value='" + (p.studentTicket ? "1" : "0") + "']").checked = true;
$("input[data-profile-key],select[data-profile-key]").each(function () {
var type = this.type;
@@ -84,7 +84,7 @@
}
if (type === "checkbox")
- this.checked = svalue || false;
+ this.checked = svalue == value;
else if (type === "radio") {
this.checked = svalue == value;
} else {
@@ -124,6 +124,10 @@
p.toCode = this.dataset.code;
sessMgr.save();
});
+ $("input[name='ticket_type']").click(function() {
+ sessMgr.currentProfile.studentTicket = this.value === "1";
+ sessMgr.save();
+ });
$(document).on("change", "input[data-profile-key],select[data-profile-key]", function () {
var u = sessMgr.current;
var p = u.currentProfile;
@@ -143,14 +147,14 @@
p[key] = checked;
}
} else if (type === "checkbox") {
- p[key] = this.checked;
+ p[key] = this.checked ? this.value : null;
} else {
p[key] = $(this).val();
}
sessMgr.save();
});
$("#btnQuery").click(function () {
- ui_result.load($("#from_city").attr("data-code"), $("#to_city").attr("data-code"), $("#dep_date").val(), sessMgr.currentProfile.studentTicket, true);
+ ui_result.load();
});
@@ -160,7 +164,7 @@
})();
//系统级别错误捕捉
- (function() {
+ (function () {
document.addEventListener("networkOrCertificationError", function () {
//TODO UI
alert("无法访问12306,可能是网络错误或证书错误,请直接访问12306试试!如果正常的话请回来刷新本页!");
diff --git a/Web12306/js/ui/ui-order-submit-process.js b/Web12306/js/ui/ui-order-submit-process.js
index f4c3d05..0723ae9 100644
--- a/Web12306/js/ui/ui-order-submit-process.js
+++ b/Web12306/js/ui/ui-order-submit-process.js
@@ -30,7 +30,7 @@
pTrain = train;
pSeat = seat;
pProfile = profile;
- pStu = profile.studentTicket || "0";
+ pStu = profile.studentTicket;
pPassengers = passengers;
}
if (!pTrain)
diff --git a/Web12306/js/ui/ui-passenger-selection.js b/Web12306/js/ui/ui-passenger-selection.js
index aba1a1e..d924da5 100644
--- a/Web12306/js/ui/ui-passenger-selection.js
+++ b/Web12306/js/ui/ui-passenger-selection.js
@@ -41,7 +41,7 @@
list.removeClass("loading");
list.html(listTpl(_.filter(paslist, function (p) {
- return stu === "0" || p.passenger_type === '3';
+ return !stu || p.passenger_type === '3';
}), extTplData));
});
};
diff --git a/Web12306/js/ui/ui-submit-order.js b/Web12306/js/ui/ui-submit-order.js
index 8ac7527..69a26a8 100644
--- a/Web12306/js/ui/ui-submit-order.js
+++ b/Web12306/js/ui/ui-submit-order.js
@@ -5,10 +5,15 @@
var mp = require("./widget_message_popup.js");
var op = require("../otn/orderprocess.js");
var vc = require("./widget_verifycode.js");
+ var param = require("../data.js");
//提交参数
var pTrain, pStu, pPassengers, pProfile;
var submitDef;
+ //界面
+ var ticketPassengerContainer = $("table.ticket-passenger");
+ var ticketPassengerTpl = $("#ticket-passenger-template").doT();
+
var SubmitOrderUi = function () {
var that = this;
EventObject.apply(this);
@@ -35,6 +40,17 @@
pProfile = profile;
pStu = profile.studentTicket;
pPassengers = passengers;
+
+ //显示乘客列表
+ ticketPassengerContainer.find("tr:gt(0)").remove().end().append(ticketPassengerTpl(pPassengers, {
+ param: param
+ }));
+ //车次信息
+ var ticketInfo = $("#ticket-info");
+ ticketInfo.find(".time-info").html(pTrain.date.replace(/(\d{4})-(\d{2})-(\d{2})/, "$1年$2月$3日") + " " + pTrain.from.time + "发车");
+ ticketInfo.find(".from-station").html(pTrain.from.name);
+ ticketInfo.find(".to-station").html(pTrain.to.name);
+ ticketInfo.find(".train-no").html(pTrain.code + "次");
}
if (!pTrain)
return;
diff --git a/Web12306/js/ui/ui-trainlist.js b/Web12306/js/ui/ui-trainlist.js
index 545cdcc..6f8de8c 100644
--- a/Web12306/js/ui/ui-trainlist.js
+++ b/Web12306/js/ui/ui-trainlist.js
@@ -7,6 +7,7 @@
var EventObject = require("../platform/EventObject.js");
var mp = require("./widget_message_popup.js");
var tsquery = require("./ui-train-stop.js");
+ var datebar = require("./widget_datebar.js");
var TrainListObj = function () {
var __ = this;
@@ -19,7 +20,17 @@
param: param
}));
};
- this.load = function (from, to, date, stu, ui) {
+ this.load = function (ui, from, to, date, stu) {
+ ui = ui === undefined ? true : ui;
+ from = from || $("#from_city").attr("data-code");
+ to = to || $("#to_city").attr("data-code");
+ date = date || $("#dep_date").val();
+ stu = stu || sessMgr.currentProfile.studentTicket;
+
+ var extArg = Array.prototype.slice.call(arguments);
+ __.fireEvent("onload", extArg);
+ datebar.go(date, date);
+
var tip = null;
if (ui) {
tip = new mp.MessagePopup("loading", "正在查询中...");
@@ -34,14 +45,24 @@
}
queryResult = this;
__.renderResultList();
+
+ __.fireEvent("onloadsuccess", extArg);
}).fail(function () {
tip.setState("error", "查票失败...");
tip.delayClose();
+ __.fireEvent("onloadfailed", extArg);
});
};
this.init = function () {
tsquery.init();
+ datebar.init();
+
+ datebar.on("requireChangeDate", function(e, d) {
+ //请求切换时间
+ $("#dep_date").val(d);
+ __.load();
+ });
};
//监听订票请求
diff --git a/Web12306/js/ui/widget_datebar.js b/Web12306/js/ui/widget_datebar.js
new file mode 100644
index 0000000..eabf3b4
--- /dev/null
+++ b/Web12306/js/ui/widget_datebar.js
@@ -0,0 +1,101 @@
+define(function (require, exports, module) {
+ var ev = require("../platform/EventObject.js");
+ var tpl = $("#datebar-template").doT();
+ var container = $("ul.date-bar-list");
+
+ var toDate = function (date) {
+ return date instanceof Date ? date : new Date(Date.parse(date));
+ };
+ var getFirstDayOfWeek = function (date) {
+ date = toDate(date);
+ var day = date.getDay();
+
+ if (day === 1)
+ return date;
+ var offset = 1 - day;
+ return addDays(date, offset);
+ };
+ var addDays = function (date, offset) {
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate() + offset);
+ };
+ var formatDate = function (date) {
+ var m = date.getMonth() + 1;
+ var d = date.getDate();
+
+ return (m < 10 ? "0" : "") + m + "月" + (d < 10 ? "0" : "") + d + "日";
+ };
+ var getDateString = function (date) {
+ return date.getFullYear() + "-" + (date.getMonth() < 9 ? "0" : "") + (date.getMonth() + 1) + "-" + (date.getDate() < 10 ? "0" : "") + date.getDate();
+ };
+
+ var WidgetDateBarUi = function () {
+ var that = this;
+ var today = addDays(new Date(), 0);
+ var date = null;
+ var maxdays = addDays(today, 30);
+ var currentHightDate = today;
+
+ ev.apply(this);
+
+ this.init = function () {
+ $("div.date-bar-prev").click(that.goPrev);
+ $("div.date-bar-next").click(that.goNext);
+ $(document).on("click", "ul.date-bar-list li:not(.disabled):not(.selected)", function() {
+ that.fireEvent("requireChangeDate", this.dataset.date);
+ });
+
+ that.go(today);
+ };
+ this.go = function (goDate, selectedDate) {
+ goDate = toDate(goDate);
+ if (selectedDate)
+ currentHightDate = toDate(selectedDate);
+
+ var d = getFirstDayOfWeek(goDate);
+ if (!date || d.getTime() !== date.getTime()) {
+ date = d;
+ that.render();
+ }
+ container.find("li:not(.disabled)").removeClass("selected").filter("[data-date='" + getDateString(currentHightDate) + "']").addClass("selected");
+ };
+ this.goNext = function () {
+ that.go(addDays(date, 7));
+ };
+ this.goPrev = function () {
+ that.go(addDays(date, -7));
+ };
+ this.render = function () {
+ var data = [];
+ var namestr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
+ for (var i = 0; i < 7; i++) {
+ var d = addDays(date, i);
+
+ data.push({
+ _date: d,
+ name: namestr[d.getDay()],
+ date: formatDate(d),
+ disabled: d < today || d > maxdays,
+ selected: d.getTime() == today.getTime(),
+ datecode: getDateString(d)
+ });
+ }
+
+ container.empty().html(tpl(data));
+ };
+
+ Object.defineProperty(this, "current", {
+ get: function () {
+ return date;
+ },
+ set: function (value) {
+ that.go(getFirstDayOfWeek(value));
+ }
+ });
+
+ return this;
+ };
+ WidgetDateBarUi.prototype = Object.create(ev);
+ WidgetDateBarUi.constructor = ev;
+
+ return new WidgetDateBarUi();
+});
diff --git a/Web12306/js/ui/widget_datedropdown.js b/Web12306/js/ui/widget_datedropdown.js
index ee98c9d..9d2a02f 100644
--- a/Web12306/js/ui/widget_datedropdown.js
+++ b/Web12306/js/ui/widget_datedropdown.js
@@ -9,7 +9,7 @@
return now;
};
var getDateString = function (date) {
- return date.getFullYear() + "-" + (date.getMonth() < 9 ? "0" : "") + (date.getMonth() + 1) + "-" + (date.getDate() < 9 ? "0" : "") + date.getDate();
+ return date.getFullYear() + "-" + (date.getMonth() < 9 ? "0" : "") + (date.getMonth() + 1) + "-" + (date.getDate() < 10 ? "0" : "") + date.getDate();
};
var renderCalendar = function (container, monthStart, minDate, maxDate) {
|