define(function (require) { var param = require("../data.js"); var widget = require("./widget.js"); var sessMgr = require("../account/sessionMgr.js"); var datebar = require("./widget_datebar.js"); var parser = require("../platform/parser.js"); var media = require("../platform/media.js"); var mp = require("./widget_message_popup.js"); var stationData = require("../station/station_data.js"); var utility = require("../utility.js"); var port = require("../platform/extensionPort.js"); require("./widget_modalDialog.js"); //会话管理器事件 sessMgr.on("notValidPassengerFound", function () { mp.showMessagePopup("warn", "您的账户中有未通过12306实名认证的联系人,将不可为他们订票。"); $(".passenger-notverified").show(); }); //初始化日期 require("./widget_datedropdown.js"); //预售期提示 require("./widget_sell_notification.js"); //地区选择 var citySelector = require("./widget_cityselector.js"); citySelector.init("input.ui-cityselector"); //验证码 require("./widget_verifycode.js").init(); //登录 var ui_login = require("./ui-login.js"); //结果列表 var ui_result = require("./ui-trainlist.js"); //自动刷新呢 var autorefresh = require("./ui-autorefresh.js"); autorefresh.on("requestQueryTicket", function () { var cp = sessMgr.currentProfile; if (!cp.fromCode || !cp.toCode || !cp.depDate) { mp.showMessagePopup("error", "亲,还没有设置查询的条件哦。"); autorefresh.stop(); return; } ui_result.load(null, null, null, null, null, null, null, null, true); }); //提交订单 var uiOrderProcess = require("./ui-order-submit-process.js"); //查询参数 require("./ui-autosubmitform.js"); //模式管理 require("./ui-theme-manager.js"); //系统公告 require("./ui-sysnotice.js"); //用户配置和选项的加载以及保存 require("../platform/profileBinder.js"); require("../platform/optionBinder.js"); //订票列表交互 ui_result.on("requireSubmitOrder", function (e, d) { autorefresh.stop(); uiOrderProcess.start(d.train, d.seat, sessMgr.currentProfile, d.passengers); }); autorefresh.on("requireSubmitOrder", function (e, d) { uiOrderProcess.start(d.data, d.seat, sessMgr.currentProfile, d.passengers); }); //界面交互初始化 (function () { $(".order-tips").html("今日可订票:" + utility.formatDate(param.minDate, "MM月dd日") + "-" + utility.formatDate(param.maxDate, "MM月dd日") + "车票"); //自动加速关闭 $(".net-tips, .reset-btn").hide(); var resetInterfaceByProfile = function () { var user = sessMgr.current; if (!user) { return; } var showMoreOpt = user.options.showMoreOpt !== undefined ? user.options.showMoreOpt : (user.options.showMoreOpt = param.moreOptDefault); var div = $("div.options-param"); !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); showSellTime.call(document.getElementById("from_city")); $("#to_city").val(p.toText).attr("data-code", p.toCode); document.querySelector("input[name='ticket_type'][value='" + (p.studentTicket ? "1" : "0") + "']").checked = true; //车次类型 var ptt = p.trainTypes || []; $("ul.search-traintypes :checkbox:gt(0)").each(function () { this.checked = !ptt.length || _.indexOf(ptt, this.value) != -1; }); $("ul.search-traintypes :checkbox:eq(0)").prop("checked", $("ul.search-traintypes :checkbox:gt(0):not(:checked)").length == 0); //当前日期 if (p.depDate) { var d = utility.addDays(utility.toDate(p.depDate), 0); var today = utility.addDays(new Date(), 0); d = d < today ? today : d; var datestr = utility.formatDate(d, "yyyy-MM-dd"); datebar.go(d, d); $("#dep_date").val(datestr); } }; $("ul.search-traintypes :checkbox:gt(0)").change(function () { sessMgr.currentProfile.trainTypes = $.makeArray($("ul.search-traintypes :checkbox:gt(0):checked").map(function () { return this.value; })); $("ul.search-traintypes :checkbox:eq(0)").prop("checked", $("ul.search-traintypes :checkbox:gt(0):not(:checked)").length == 0); sessMgr.save(); }); $("ul.search-traintypes :checkbox:eq(0)").change(function () { var checkbox = $("ul.search-traintypes :checkbox:gt(0)"); if (checkbox.filter(":not(:checked)").length) { checkbox.prop("checked", true); } else { checkbox.prop("checked", false); } checkbox.eq(0).change(); }); //登录失效 sessMgr.on("userForcedOut", function () { mp.showMessagePopup("error", "12306取消了您的登录,请重新登录"); ui_login.showLoginDialog(); }); $(".search-more-option").click(function () { var div = $("div.options-param"); div.is(":visible") ? (div.hide(), $(this).html("显示更多选项")) : (div.show(), $(this).html("隐藏更多选项")); sessMgr.current.options.showMoreOpt = div.is(":visible"); sessMgr.save(); //report port.track(param.trackTypes.PROFILE_AUTO_MOREOPT, [sessMgr.current.options.showMoreOpt ? 1 : 0]); }); $("#from_city").change(function () { var u = sessMgr.current; var p = u.currentProfile; p.fromText = this.value; p.fromCode = this.dataset.code; sessMgr.save(); }); $("#to_city").change(function () { var u = sessMgr.current; var p = u.currentProfile; p.toText = this.value; p.toCode = this.dataset.code; sessMgr.save(); }); var selltipTpl = $("#selltime_tip_tpl").doT(); var showSellTime = function () { var v = this.dataset.code; var vn = this.value; var cnt = $("#selltime_tip"); if (!v) { cnt.hide(); return; } //查找其它近似站 var stations = param.findSimilarStationInfos(vn); if (!stations || !stations.length) { cnt.hide(); return; } var times = _.map(stations, function (s) { var time = stationData.sellTime[s.code]; if (!time) return null; time = utility.format24hTo12h(time); return time ? { name: s.name, time: time.join("
") } : null; }); if (!times || !times.length) { cnt.hide(); return; } cnt.find("ul").html(selltipTpl(times)); cnt.show(); }; $("#from_city").change(showSellTime); showSellTime.apply(document.getElementById("from_city")); $("input[name='ticket_type']").click(function () { sessMgr.currentProfile.studentTicket = this.value === "1"; sessMgr.save(); }); $("div.transfer-city-btn").click(function () { var f = document.getElementById("from_city"); var t = document.getElementById("to_city"); var txt = f.value; var code = f.dataset.code; f.value = t.value; f.dataset.code = t.dataset.code; t.value = txt; t.dataset.code = code; $("#from_city, #to_city").change(); }); $("#btnQuery").click(function () { autorefresh.stop(); media.stop(); var cp = sessMgr.currentProfile; if (!cp.fromCode || !cp.toCode || !cp.depDate) { mp.showMessagePopup("error", "亲,还没有设置查询的条件哦。"); return; } citySelector.cityui.addCityToRecent(cp.fromCode); citySelector.cityui.addCityToRecent(cp.toCode); ui_result.resetStatus(); //检查学生票是否对应 if (cp.studentTicket && cp.passengers && cp.passengers.length) { if (_.some(cp.passengers, function (p) { return p.passenger_type !== '3'; })) { mp.confirm("确认", "您选择的是学生票,但是添加的联系人并不全是学生,将无法提交订单,确定继续查票吗?", ui_result.load); } else { //ui_result.load(); autorefresh.start(true); } } else { //ui_result.load(); autorefresh.start(true); } //track port.track(param.trackTypes.QUERY_TICKET, [ cp.fromCode, cp.fromText, cp.toCode, cp.toText, cp.depDate, cp.studentTicket + '', (cp.selectedSeatType && cp.selectedSeatType.length) || 0, (cp.selectedTrain && cp.selectedTrain.length) || 0, (cp.passengers && cp.passengers.length) || 0, (cp.dateloop && cp.dateloop.length) || 0, cp.hideNoTicket ? 1 : 0, cp.hideNotInListTrain ? 1 : 0, cp.autoWaitToSell ? 1 : 0, cp.tryBottomSeat ? 1 : 0, cp.selectSeatFirst ? 1 : 0, cp.autoSubmitEnabled ? 1 : 0 ]); }); sessMgr.on("sessionChanged", resetInterfaceByProfile); sessMgr.on("currentProfileChanged", resetInterfaceByProfile); //初始化状态 resetInterfaceByProfile(); })(); //系统级别错误捕捉 (function () { document.addEventListener("networkOrCertificationError", function () { //TODO UI $.showModalDialog("无法访问12306,可能是网络错误或证书错误,请直接访问12306试试!如果正常的话请回来刷新本页!", { image: "/images/cat.png", buttons: [ { text: "打开12306官网", type: "primary", callback: function () { window.open("https://kyfw.12306.cn/otn/leftTicket/init"); return false; } }, { text: "刷新重试", callback: function () { self.location.reload(); return false; } } ], closeOnAction: false }); }); })(); //聊天系统 require("./chat/chatframe.js"); //统计报告 port.track(param.trackTypes.OPEN_PAGE_INDEX); //后台触发更新 port.sendMessage({ action: "triggerUpdate" }); //服务器加速 require("./ui-dnsspeeding.js"); //自动查询 var lastAutoQueryKey; var autoQuery = function () { var cp = sessMgr.currentProfile; if (!cp) return; if (cp.fromCode && cp.toCode && cp.depDate) { var key = cp.fromCode + cp.toCode + cp.depDate + cp.studentTicket + (cp.trainTypes && cp.trainTypes.join()) + (cp.selectedSeatType && cp.selectedSeatType.join()) + (cp.selectedTrain && cp.selectedTrain.join()); if (key !== lastAutoQueryKey) { lastAutoQueryKey = key; ui_result.load(); } } }; sessMgr.on("save", function () { autoQuery(); }); autoQuery(); //易到用车 require("../bd/ydcoupon.js"); require("../bd/orderfailbd.js"); //$("#passenger_editor").showModalDialog({ // title: "新增联系人", // buttons: [ // { // type: "primary", // text: "确定", // callback: function(e) { // alert("ok!"); // e.hide(); // } // } // ] //}); });