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 && 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(); });