var OrderSubmit = { init: function() { if ($('#ordersubmit_page').length == 0) { return false; } OrderSubmit.bindEvent(); Public.checkLogin(function() { if (!sessionStorage.getItem(Public.user + 'curBuy') && !sessionStorage.getItem('curBuy')) { window.location.href = 'query.html'; } OrderSubmit.getTrainInfo(); OrderSubmit.getPassenger(); // OrderSubmit.loadPassCode(); }, function() { window.location.href = 'login.html'; }, function() { window.location.href = 'login.html'; }); }, getTrainInfo: function() { OrderSubmit.curData = JSON.parse(sessionStorage.getItem(Public.user + 'curBuy')); if (!OrderSubmit.curData) { OrderSubmit.curData = JSON.parse(sessionStorage.getItem('curBuy')); } OrderSubmit.curBuySeat = sessionStorage.getItem(Public.user + 'curBuySeat'); if (!OrderSubmit.curBuySeat) { OrderSubmit.curBuySeat = sessionStorage.getItem('curBuySeat'); } OrderSubmit.curInfo = Public.his.queryObjs[Public.his.querys[0][0]]; var html = '
', date = new Date(OrderSubmit.curData['form_train_date'].replace(/\-/g, '/')); html += '
' + OrderSubmit.curData['code'] + '' + date.format('yyyy-M-d') + ' ' + date.day(3) + '
'; html += '
' + OrderSubmit.curData['from']['name'] + '' + OrderSubmit.curData['from']['time'] + '
'; html += '
' + OrderSubmit.curData['to']['name'] + '' + OrderSubmit.curData['to']['time'] + '
'; html += '
'; $('#trainInfo').html(html); }, passengerList: null, loadPassCode: function() { if ($('#randcodeimg').hasClass('loading_code')) { return false; } $('#randcodeimg').addClass('loading_code'); cn12306.loadRandCode('sjrand', function(img) { $('#randcodeimg').attr('src', img); $('#randcodeimg').removeClass('loading_code'); }, 'passcodeNew/getPassCodeNew?module=login&rand=sjrand'); }, getPassenger: function() { if (sessionStorage.getItem(Public.user + '_passenger')) { OrderSubmit.passengerList = JSON.parse(sessionStorage.getItem(Public.user + '_passenger')); OrderSubmit.passengerObj = JSON.parse(sessionStorage.getItem(Public.user + '_passengerobj')); OrderSubmit.setPassengerList(); } else { bootStrap.post('confirmPassenger/getPassengerDTOs', null, null, 'leftTicket/init').done(function(data) { if (data['status'] && Array.isArray(data["data"]["normal_passengers"]) && data["data"]["normal_passengers"].length > 0) { OrderSubmit.formatPassenger(data["data"]["normal_passengers"]); OrderSubmit.setPassengerList(); } }).fail(function(xhr, type) { console.log(xhr, type); }); } }, setPassengerList: function() { var html = ''; for (var i = 0, len = OrderSubmit.passengerList.length; i < len; i++) { html += ''; }; if (OrderSubmit.curInfo) { var arr = OrderSubmit.curInfo['filters'].split('&'), k = []; for (var i = 0; i < arr.length; i++) { k = arr[i].split('='); k[1] = decodeURIComponent(k[1]); if (k[0] == 'passenger' && !!OrderSubmit.passengerObj[k[1]]) { OrderSubmit.passengerAdd(OrderSubmit.passengerObj[k[1]]); } }; } $('#passengers').html(html); $('#add_passenger').on('click', function() { Public.showInnerPage('passenger'); }); $('#passenger_ok').on('click', function() { Public.hideInnerPage('passenger'); }); $('#passengers [type="checkbox"]').on('change', function() { if ($('#passengers [type="checkbox"]:checked').length > 5 || $('#passenger_list li').length >= 5) { Public.alert('联系人最多只能选择五个'); $(this).prop("checked", false); return false; }else{ var $_this = $(this), val = $_this.val(); if ($_this.prop("checked")) { OrderSubmit.passengerAdd(OrderSubmit.passengerObj[val]); } else { $('#passenger_list [data-key="' + val + '"]').remove(); }; } }); if ($('#passenger_list li').length > 0) { $('#ordersubmit').click(); } }, passenger: {}, passengerAdd: function(obj) { var html = '', types = Util.getAvailableTicketType(obj), seat = OrderSubmit.curData.ticketMap[OrderSubmit.curBuySeat]; html = '
  • ' + obj['passenger_name'] + '' + types[0]['name'] + '
    ' + obj['passenger_id_no'] + '
    ' + seat['name'] + ' ' + (seat['price'] / 10) + '元 
  • '; $('#passenger_list').append(html); }, addChildren: function(key, el) { var obj = OrderSubmit.passengerObj[key], seat = OrderSubmit.curData.ticketMap[el.attr('data-seat')]; html = '
  • \ ' + obj['passenger_name'] + '儿童票
    ' + obj['passenger_id_no'] + '
    \ \ ' + seat['name'] + ' ' + (seat['price'] / 10) + '元 
  • '; el.after(html); }, formatPassenger: function(lists) { var arr = [], obj = {}, key = ""; for (var i = 0; i < lists.length; i++) { if (Util.canPassageAddToOrder(lists[i])) { key = /*lists[i]['passenger_type'] + "$" + */ lists[i]['passenger_name'] + "$" + lists[i]['passenger_id_type_code'] + "$" + lists[i]['passenger_id_no']; lists[i]['key'] = key; obj[key] = lists[i]; arr.push(lists[i]); } }; OrderSubmit.passengerList = arr; OrderSubmit.passengerObj = obj; sessionStorage.setItem('_passenger', JSON.stringify(arr)); sessionStorage.setItem('_passengerobj', JSON.stringify(obj)); }, editKey: '', editEl: null, showLayer: function() { $('#layer').show(); }, hideLayer: function() { $('#layer').hide(); }, bindEvent: function() { var $edit_menu = $('#edit_menu'); $('[data-fn="edit"]').live('click', function(e) { var box = $(this).closest('[data-key]'), key = box.attr('data-key'); OrderSubmit.editKey = key; OrderSubmit.editEl = box; $('#passenger_editinfo').html(box.html()); $('#passenger_editinfo [data-fn="edit"]').attr('data-fn', 'edit_close'); $('#edit_menu').css({ 'top': box.offset().top }); if (box.attr('data-children')) { $('[data-fn="children"]').closest('li').hide(); $('[data-fn="ticket"]').closest('li').hide(); } else { $('[data-fn="children"]').closest('li').show(); $('[data-fn="ticket"]').closest('li').show(); } $edit_menu.show(); OrderSubmit.showLayer(); }); $('#layer').live('click', function() { $edit_menu.hide(); $('#edit_ticket').hide(); $('#edit_seat').hide(); OrderSubmit.hideLayer(); }); $edit_menu.live('click', function(e) { e.stopPropagation(); return false; }); $('[data-fn="edit_close"]').live('click', function(e) { $edit_menu.hide(); OrderSubmit.hideLayer(); }); $('[data-fn="remove"]').live('click', function(e) { var type = OrderSubmit.editEl.attr('data-type'); if (type == '2') { OrderSubmit.editEl.remove(); } else { $('#passenger_list [data-key="' + OrderSubmit['editKey'] + '"]').remove(); $('#passengers [value="' + OrderSubmit['editKey'] + '"]').prop('checked', false); } delete OrderSubmit.passenger[OrderSubmit['editKey']]; $edit_menu.hide(); OrderSubmit.hideLayer(); }); $('[data-fn="children"]').live('click', function(e) { if ($('#passenger_list li').length > 4) { Public.alert('联系人最多只能选择五个'); } else { OrderSubmit.addChildren(OrderSubmit.editKey, OrderSubmit.editEl); } $edit_menu.hide(); OrderSubmit.hideLayer(); }); $('[data-fn="seat"]').live('click', function(e) { $edit_menu.hide(); OrderSubmit.hideLayer(); OrderSubmit.setSeat(); }); $('#edit_seat ul a').live('click', function() { var id = $(this).attr('data-id'), info = OrderSubmit.curData['ticketMap'][id]; OrderSubmit.editEl.attr('data-seat', id); $('.seat', OrderSubmit.editEl).html(info['name'] + ' ' + (info['price'] / 10) + '元'); $('#edit_seat').hide(); OrderSubmit.hideLayer(); }); $('[data-fn="ticket"]').live('click', function(e) { $edit_menu.hide(); OrderSubmit.hideLayer(); OrderSubmit.setTicket(); }); $('#edit_ticket a').live('click', function() { var id = $(this).attr('data-id'), name = $(this).html(); OrderSubmit.editEl.attr('data-type', id); $('.ticket', OrderSubmit.editEl).html(name); $('#edit_ticket').hide(); OrderSubmit.hideLayer(); }); $('#ordersubmit').on('click', function() { var passenger = [], studentTicket = false; if ($('#passenger_list li').length == 0) { Public.alert('请添加联系人'); return false; } $('#passenger_list li').each(function(idx, ele) { passenger[idx] = {}; var obj = OrderSubmit.passengerObj[$(this).attr('data-key')]; passenger[idx]['seat'] = $(this).attr('data-seat'); passenger[idx]['passenger_type'] = $(this).attr('data-type'); passenger[idx]['passenger_id_type_code'] = obj['passenger_id_type_code']; passenger[idx]['passenger_id_no'] = obj['passenger_id_no']; passenger[idx]['mobile_no'] = obj['mobile_no']; passenger[idx]['passenger_name'] = obj['passenger_name']; }); OrderSubmit.submit(passenger, OrderSubmit.curData, studentTicket); }); $('#code_layer .public_btns a[data-val="sure"]').live('click', function() { OrderSubmit.submitGo(); }); $('#code_layer .public_btns a[data-val="cancel"]').live('click', function() { $('#code_layer').hide(); }); }, setSeat: function() { var html = '', obj; for (var i = 0, len = OrderSubmit.curData['ticketMapSort'].length; i < len; i++) { obj = OrderSubmit.curData['ticketMapSort'][i]; html += '
  • ' + obj['count'] + ' 张' + obj['name'] + '' + (obj['price'] / 10) + '元
  • '; }; $('#edit_seat ul').html(html); $('#edit_seat').show(); OrderSubmit.showLayer(); }, setTicket: function() { var list = Util.getAvailableTicketType(OrderSubmit.passengerObj[OrderSubmit.editKey]), html = ''; for (var i = 0, len = list.length; i < len; i++) { html += '
  • ' + list[i]['name'] + '
  • '; }; $('#edit_ticket ul').html(html); $('#edit_ticket').show(); OrderSubmit.showLayer(); }, submitData: null, submit: function(passenger, train, studentTicket) { console.log(passenger); var pas1 = []; var pas2 = []; var purposeCode = studentTicket ? "0X00" : "ADULT"; passenger.forEach(function(e) { pas1.push( e.seat + "," + "1" + "," + e.passenger_type + "," + e.passenger_name + "," + e.passenger_id_type_code + "," + e.passenger_id_no + "," + e.mobile_no + "," + (train.resign ? "Y" : "N")); if (e.passenger_type === "2") { pas2.push(" "); } else { pas2.push(e.passenger_name + "," + e.passenger_id_type_code + "," + e.passenger_id_no + "," + e.passenger_type); }; }); console.log(pas1,pas2); pas1 = pas1.join("_"); pas2 = pas2.join("_") + "_"; OrderSubmit.submitData = { "secretStr": train['secureStr'], "train_date": train['date'], "train_date_full": (new Date(train['date'])).toString(), "train_no": train['id'], "tour_flag": (train['resign'] ? "gc" : "dc"), "purpose_codes": purposeCode, "query_from_station_name": train['from']['name'], "fromStationTelecode": train['from']['code'], "query_to_station_name": train['to']['name'], "toStationTelecode": train['to']['code'], "stationTrainCode": train['code'], "seatType": passenger[0]['seat'], "cancel_flag": 2, "bed_level_order_num": "000000000000000000000000000000", "_json_att": '', "passengerTicketStr": pas1, "oldPassengerStr": pas2 }; OrderSubmit.loading = Public.showLoading('正在提交订单'); var data = { "leftTicketDTO.train_date": OrderSubmit.curData['form_train_date'], "leftTicketDTO.from_station": OrderSubmit.curData['from']['code'], "leftTicketDTO.to_station": OrderSubmit.curData['to']['code'], "purpose_codes": OrderSubmit.submitData['purpose_codes'] }; cn12306.queryTicket(data,function(json) { if (json["status"] == true && json["httpstatus"] == 200) { if (json['data'].length > 0) { for (var i = 0; i < json['data'].length; i++) { if (json['data'][i]['queryLeftNewDTO']['station_train_code'] == OrderSubmit.curData['code']) { OrderSubmit.curData['secureStr'] = json['data'][i]['secretStr']; OrderSubmit.submitData['secretStr'] = json['data'][i]['secretStr']; break; } }; OrderSubmit.autoSubmitOrderRequest(); } } },function(xhr, type) { OrderSubmit.autoSubmitOrderRequest(); }); }, autoSubmitOrderRequest: function() { var data = "secretStr" + "=" + OrderSubmit.submitData['secretStr'] + "&train_date=" + OrderSubmit.submitData['train_date'] + "&tour_flag" + "=" + OrderSubmit.submitData['tour_flag'] + "&purpose_codes" + "=" + OrderSubmit.submitData['purpose_codes'] + "&query_from_station_name" + "=" + OrderSubmit.submitData['query_from_station_name'] + "&query_to_station_name" + "=" + OrderSubmit.submitData['query_to_station_name'] + "&cancel_flag=" + OrderSubmit.submitData['cancel_flag'] + "&bed_level_order_num=" + OrderSubmit.submitData['bed_level_order_num'] + "&passengerTicketStr=" + OrderSubmit.submitData['passengerTicketStr'] + "&oldPassengerStr=" + OrderSubmit.submitData['oldPassengerStr']; // leftTicket/submitOrderRequest // secretStr MjAxNC0wOS0xMSMwMCNLNzA5MiMwMDowNyMwNzoyNSMwNTAwMEs3MDkyMjAjSEJCI0JKQiMwNzozMiPlk4jlsJTmu6gj5ruo5rGfIzA3IzA4IzEwMDA4MDMwNjA0MDA4NDAwMDMzMTAwMDgwMDAxODMwMDU5MDAyMTEjQjIjMTQwOTA0MzI5ODcyMyMzODQxNDE3MTQxNkJENkZGMUQ1REZDOUEyRDZEQUYxNDFBMjBFMDQ3NEJGRDU4QkRGQjcyODEzOQ== // train_date 2014-09-10 // back_train_date 2014-08-26 // tour_flag dc // purpose_codes ADULT // query_from_station_name 哈尔滨 // query_to_station_name 滨江 // undefined bootStrap.post("confirmPassenger/autoSubmitOrderRequest", "json", data, "leftTicket/init").done(function(json) { if (!json.status || !json.data) { Public.hideLoading(OrderSubmit.loading); if (json['messages']) { // Public.alert(json['messages'][0]); OrderSubmit.errorCallback(json['messages'][0]); } else { // Public.alert("12306返回了未知的状态信息,请刷新重试。"); OrderSubmit.errorCallback("12306返回了未知的状态信息,请刷新重试。"); } } else if (json.data.isRelogin) { // Public.hideLoading(OrderSubmit.loading); // Public.alert("请重新登录"); OrderSubmit.errorCallback("请重新登录"); } else if (json.data.errMsg) { // Public.hideLoading(OrderSubmit.loading); // Public.alert("无法提交订单:" + json.data.errMsg); OrderSubmit.errorCallback("无法提交订单:" + json.data.errMsg); } else { var arr = json.data.result.split('#'); OrderSubmit.submitData["key_check_isChange"] = arr[1]; OrderSubmit.submitData["leftTicketStr"] = arr[2]; OrderSubmit.submitData["train_location"] = arr[0]; OrderSubmit.submitData["async"] = arr[3]; OrderSubmit.submitData["train_no"] = OrderSubmit.submitData['train_no']; OrderSubmit.checkQueueInfo(); } }).fail(function() { // Public.hideLoading(OrderSubmit.loading); // Public.alert("12306不给力唷,请尽快重试..."); OrderSubmit.errorCallback("12306不给力唷,请尽快重试..."); }); }, checkQueueInfo: function() { var submitData = { "train_date": OrderSubmit.submitData['train_date_full'].toString(), "train_no": OrderSubmit.submitData['train_no'], "stationTrainCode": OrderSubmit.submitData['stationTrainCode'], "seatType": OrderSubmit.submitData['seatType'], "fromStationTelecode": OrderSubmit.submitData['fromStationTelecode'], "toStationTelecode": OrderSubmit.submitData['toStationTelecode'], "leftTicket": OrderSubmit.submitData["leftTicketStr"], "purpose_codes": OrderSubmit.submitData["purpose_codes"], "_json_att": OrderSubmit.submitData["_json_att"] } bootStrap.post('confirmPassenger/getQueueCountAsync', null, submitData, "leftTicket/init").done(function(json) { if (!json || !json.status || !json.data) { // Public.hideLoading(OrderSubmit.loading); // Public.alert(json['messages'][0] || "未知错误"); OrderSubmit.errorCallback(json['messages'][0] || "未知错误"); } else if (json.data.isRelogin) { // Public.hideLoading(OrderSubmit.loading); // Public.alert("登录状态异常,请重新登录。"); OrderSubmit.errorCallback("登录状态异常,请重新登录。"); } else if (json.data.op_2 === "true") { // Public.hideLoading(OrderSubmit.loading); // Public.alert("排队人数过多,不允许提交订单。排队人数=" + json.data.countT); OrderSubmit.errorCallback("排队人数过多,不允许提交订单。排队人数=" + json.data.countT); } else { Public.hideLoading(OrderSubmit.loading); cn12306.recode(); $('#code_layer').show(); } }).fail(function() { Public.hideLoading(OrderSubmit.loading); Public.alert({ msg: "12306不给力啊,唉。出现网络错误了,请重试.." }); }); }, submitGo: function() { var submitData = { 'passengerTicketStr': OrderSubmit.submitData['passengerTicketStr'], 'oldPassengerStr': OrderSubmit.submitData['oldPassengerStr'], 'randCode': $('#randcode').val(), 'purpose_codes': OrderSubmit.submitData['purpose_codes'], 'key_check_isChange': OrderSubmit.submitData['key_check_isChange'], 'leftTicketStr': OrderSubmit.submitData['leftTicketStr'], 'train_location': OrderSubmit.submitData['train_location'], '_json_att': OrderSubmit.submitData['_json_att'] } bootStrap.post('confirmPassenger/confirmSingleForQueueAsys', null, submitData, "leftTicket/init").done(function(json) { Public.hideLoading(OrderSubmit.loading); if (!json || !json['status'] || !json['data']) { Public.alert(json['messages'][0] || "未知错误"); } else if (json['data']['isRelogin']) { Public.alert("登录状态异常,请重新登录。"); } else if (json['data']['op_2'] === "true") { Public.alert("排队人数过多,不允许提交订单。排队人数=" + json['data']['countT']); } else if (!!json['data'] && !json['data']['submitStatus']) { Public.alert(json['data']['errMsg'] || "未知错误"); } else { Public.alert("订票成功", function() { window.location.href = 'no_complete_order.html'; }); $('#code_layer').hide(); } }).fail(function() { Public.hideLoading(OrderSubmit.loading); Public.alert("12306不给力啊,唉。出现网络错误了,请重试.."); }); }, errorCallback: function(tipText) { Public.hideLoading(OrderSubmit.loading); if (tipText.indexOf('您还有未处理的订单') != -1) { Public.alert('您还有未处理的订单,请您到
    [未完成订单]进行处理!', function() { window.location.href = 'no_complete_order.html'; }); } else { Public.alert(tipText); } } }