177 lines
6.2 KiB
JavaScript
177 lines
6.2 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(":hidden").val("");
|
|
submitProgress.hide();
|
|
|
|
$("#ticket-submit-info .ticket-submit-vc").attr("data-target", profile.resign ? "order" : "fastSubmit");
|
|
if (!vc_inited) {
|
|
vc_inited = true;
|
|
vc.load($("#ticket-submit-info .ticket-submit-vc"));
|
|
} else {
|
|
$("#ticket-submit-info .ticket-submit-vc a").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:hidden").val();
|
|
if (!randCode.length) {
|
|
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) {
|
|
var evdata = $.extend({}, data, { train: pTrain, profile: pProfile, passengers: pPassengers });
|
|
|
|
that.fireEvent("orderSuccess", evdata);
|
|
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) {
|
|
var evdata = $.extend({}, data, { train: pTrain, profile: pProfile, passengers: pPassengers });
|
|
that.fireEvent("orderFailed", evdata);
|
|
|
|
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();
|
|
});
|