Light12306/Web12306/js/ui/ui-submit-order.js

126 lines
4.5 KiB
JavaScript
Raw Normal View History

2014-07-01 20:07:44 +08:00
define(function (require, exports, module) {
2014-06-26 22:24:54 +08:00
var EventObject = require("../platform/EventObject.js");
var widget = require("./widget.js");
2014-06-27 22:25:42 +08:00
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");
2014-06-27 22:25:42 +08:00
//提交参数
2014-07-01 20:07:44 +08:00
var pTrain, pStu, pPassengers, pProfile;
var submitDef;
2014-06-26 22:24:54 +08:00
//界面
var ticketPassengerContainer = $("table.ticket-passenger");
var ticketPassengerTpl = $("#ticket-passenger-template").doT();
2014-07-01 20:07:44 +08:00
var SubmitOrderUi = function () {
2014-06-26 22:24:54 +08:00
var that = this;
EventObject.apply(this);
2014-07-01 20:07:44 +08:00
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");
2014-06-26 22:24:54 +08:00
2014-07-01 20:07:44 +08:00
this.init = function () {
$("#ticket-submit-info .ticket-submit-vc input:text").keyup(function () {
2014-06-27 22:25:42 +08:00
if (this.value.length === 4)
that.submitOrder();
});
2014-07-01 20:07:44 +08:00
submitBtn.click(that.submitOrder);
//重新提交
resubmitBtn.click(function () {
resubmitBtn[0].disabled = true;
that.fireEvent("requireResubmitOrder");
});
2014-06-26 22:24:54 +08:00
};
2014-07-01 20:07:44 +08:00
this.showOrderUi = function (train, profile, passengers) {
2014-06-27 22:25:42 +08:00
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 + "次");
2014-06-27 22:25:42 +08:00
}
if (!pTrain)
return;
2014-07-01 20:07:44 +08:00
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();
2014-06-27 22:25:42 +08:00
if (!vc_inited) {
vc_inited = true;
vc.load($("#ticket-submit-info .ticket-submit-vc"));
} else {
2014-07-01 20:07:44 +08:00
$("#ticket-submit-info .ticket-submit-vc span").click();
2014-06-27 22:25:42 +08:00
}
};
2014-07-01 20:07:44 +08:00
this.hide = function () {
if ($("#ticket-submit-container:visible").length) {
widget.hideFloatDialog($("#ticket-submit-container"));
}
};
this.submitOrder = function () {
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;
submitBtn[0].disabled = true;
submitProgress.removeClass().addClass("ticket-submit-status ticket-submit-status-loading").show().find("span").html("正在提交订单中...");
submitDef = op.submitOrder(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);
submitBtn[0].disabled = false;
});
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;
2014-06-27 22:25:42 +08:00
2014-07-01 20:07:44 +08:00
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 {
$("#ticket-submit-info .ticket-submit-vc span").click();
}
});
submitDef.progress(function (data) {
submitProgress.find("span").html(data.msg);
});
submitDef.always(function () {
submitDef = null;
});
2014-06-26 22:24:54 +08:00
};
return this;
};
SubmitOrderUi.prototype = Object.create(EventObject);
SubmitOrderUi.constructor = SubmitOrderUi;
module.exports = new SubmitOrderUi();
});