Light12306/Web12306/js/ui/ui-submit-order.js
2014-12-05 23:32:41 +08:00

173 lines
6.0 KiB
JavaScript

define(function (require, exports, module) {
var EventObject = require("../platform/EventObject.js");
var widget = require("./widget.js");
var vc_inited = false;
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 media = require("../platform/media.js");
var share = require("./ui_sns_share.js");
var port = require("../platform/extensionPort.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);
var submitBtn = $("#ticket-submit-info .ticket-submit-info-vc button.button-primary");
var submitProgress = $("#ticket-submit-info .ticket-submit-status");
var resubmitBtn = $("#ticket-submit-info .ticket-submit-info-status-failed button.button-primary");
var init = function () {
$("#ticket-submit-info .ticket-submit-vc input:text").keyup(function () {
if (this.value.length === 4)
that.submitOrder();
});
submitBtn.click(that.submitOrder);
//重新提交
resubmitBtn.click(function () {
resubmitBtn[0].disabled = true;
that.fireEvent("requireResubmitOrder");
});
};
this.showOrderUi = function (train, profile, passengers) {
if (train) {
pTrain = train;
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;
if (!$("#ticket-submit-container:visible").length) {
widget.showFloatDialog($("#ticket-submit-container"));
}
$("#ticket-submit-info").find(">section").hide().first().show().find(":text").val("")[0].select();
submitProgress.hide();
$("#ticket-submit-info .ticket-submit-vc").attr("data-target", profile.resign ? "order" : "login");
if (!vc_inited) {
vc_inited = true;
vc.load($("#ticket-submit-info .ticket-submit-vc"));
} else {
$("#ticket-submit-info .ticket-submit-vc span").click();
}
};
this.hide = function () {
if ($("#ticket-submit-container:visible").length) {
widget.hideFloatDialog($("#ticket-submit-container"));
}
};
this.submitOrder = function () {
media.stop();
var randCode = $("#ticket-submit-info .ticket-submit-vc input:text").val();
if (randCode.length !== 4) {
mp.showMessagePopup("error", "请输入验证码...");
return;
}
if (submitBtn[0].disabled || submitDef)
return;
//track
port.track(param.trackTypes.SUBMIT_ORDER, [
pTrain.code,
pTrain.from.name,
pTrain.to.name,
pTrain.date,
pPassengers[0].seat,
pPassengers.length,
pTrain.byAuto ? 1 : 0,
pTrain.suggest || 0
]);
submitBtn[0].disabled = true;
submitProgress.removeClass().addClass("ticket-submit-status ticket-submit-status-loading").show().find("span").html("正在提交订单中...");
submitDef = pProfile.resign ? op.submitOrder(pTrain, pProfile, pPassengers, randCode) : op.fastSubmitOrder(pTrain, pProfile, pPassengers, randCode);
submitDef.done(function (data) {
that.fireEvent("orderSuccess", data);
var dom = $("#ticket-submit-info").find("section.ticket-submit-info-vc").hide().end().find("section.ticket-submit-info-status-ok").show();
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, "这个春节火车票依旧不容易,还好 @猎豹浏览器 抢票杠杠的,帮我瞬间抢到了车票! #春节抢票就用猎豹# http://www.ijinshan.com/12306/?f=weiboshare", null);
submitBtn[0].disabled = false;
//track
port.track(param.trackTypes.SUBMIT_ORDER_SUCCESS, [
pTrain.code,
pTrain.from.name,
pTrain.to.name,
pTrain.date,
pPassengers[0].seat,
pPassengers.length,
pTrain.byAuto ? 1 : 0,
pTrain.suggest || 0
]);
});
submitDef.fail(function (data) {
that.fireEvent("orderFailed", data);
submitProgress.removeClass().addClass("ticket-submit-status ticket-submit-status-error");
submitProgress.find("span").html("订票失败...错误信息:" + data.msg);
submitBtn[0].disabled = false;
if (data.msg.indexOf("验证码") === -1) {
//切换至错误页面
var dom = $("#ticket-submit-info").find("section.ticket-submit-info-vc").hide().end().find("section.ticket-submit-info-status-failed").show();
dom.find("div>p:eq(0) span").html(data.msg);
resubmitBtn[0].disabled = false;
} else {
//$("p.ticket-submit-vc input").val("")[0].focus();
//$("#ticket-submit-info .ticket-submit-vc span").click();
vc.refresh($("#ticket-submit-info .ticket-submit-vc"), true);
}
//track
port.track(param.trackTypes.SUBMIT_ORDER_FAILED, [
pTrain.code,
pTrain.from.name,
pTrain.to.name,
pTrain.date,
pPassengers[0].seat,
pPassengers.length,
pTrain.byAuto ? 1 : 0,
pTrain.suggest || 0
]);
});
submitDef.progress(function (data) {
submitProgress.find("span").html(data.msg);
});
submitDef.always(function () {
submitDef = null;
});
};
init();
return this;
};
SubmitOrderUi.prototype = Object.create(EventObject);
SubmitOrderUi.constructor = SubmitOrderUi;
module.exports = new SubmitOrderUi();
});