Light12306/Mobile12306New/js/prdersubmit.js

559 lines
21 KiB
JavaScript
Raw Normal View History

2014-09-01 13:50:43 +08:00
var OrderSubmit = {
init: function() {
if ($('#ordersubmit_page').length == 0) {
return false;
}
2014-09-04 17:11:16 +08:00
$('#menu_btn').on('click', function() {
$('#user_menu').toggle();
$('#user_menu').height(document.documentElement.clientHeight-45);
});
$('#user_menu').on('click', function(e) {
if ($(e.target).attr('id') == 'user_menu') {
$('#user_menu').hide();
}
});
$('#remind_btn').on('click',function(e){
var url = 'remind.html?',
from = $('#startStationCode').val(),
to = $('#endStationCode').val(),
date = $('#start_date_val').val();
// url += 'date='+date;
if(!!from){
url += '&from='+from;
}
if(!!to){
url += '&to='+to;
}
location.href = url;
});
2014-09-01 13:50:43 +08:00
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');
}
2014-09-01 16:24:47 +08:00
OrderSubmit.curInfo = Public.his.queryObjs[Public.his.querys[0][0]];
2014-09-01 13:50:43 +08:00
var html = '<div class="info">',
date = new Date(OrderSubmit.curData['form_train_date'].replace(/\-/g, '/'));
html += '<div class="info_title"><span class="pull_right">' + OrderSubmit.curData['code'] + '</span><span>' + date.format('yyyy-M-d') + ' ' + date.day(3) + '</span></div>';
html += '<div class="stations_info"><div class="station_info"><strong>' + OrderSubmit.curData['from']['name'] + '</strong>' + OrderSubmit.curData['from']['time'] + '</div>';
html += '<div class="station_info"><strong>' + OrderSubmit.curData['to']['name'] + '</strong>' + OrderSubmit.curData['to']['time'] + '</div></div>';
html += '</div>';
$('#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();
}else{
Public.alert('23:00-07:00 系统维护时间');//如果无法读取联系人(至少有自己的帐号),即当做是在维护时间
return;
2014-09-01 13:50:43 +08:00
}
}).fail(function(xhr, type) {
console.log(xhr, type);
});
}
},
setPassengerList: function() {
var html = '';
for (var i = 0, len = OrderSubmit.passengerList.length; i < len; i++) {
html += '<label class="query_checkbox"><input name="train_type" type="checkbox" value="' + OrderSubmit.passengerList[i]['key'] + '">' + OrderSubmit.passengerList[i]['passenger_name'] + '</label>';
};
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 ($(this).prop("checked") && ($('#passengers [type="checkbox"]:checked').length > 5 || $('#passenger_list li').length >= 5)) {
2014-09-01 13:50:43 +08:00
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];
2014-09-04 14:46:15 +08:00
html = '<li class="clearfix" data-key="' + obj['key'] + '" data-type="' + types[0]['id'] + '" data-seat="' + seat['code'] + '"><span class="pull_left"><strong>' + obj['passenger_name'] + '</strong><span class="ticket">' + types[0]['name'] + '</span><br>' + obj['passenger_id_no'] + '</span><a href="javascript:;" data-fn="edit" class="pull_right"><span class="seat">' + seat['name'];
if((seat['price'] / 10) > 0){
html += '&nbsp;' + (seat['price'] / 10) + '元';
}
html += '</span>&nbsp;<i class="icon_edit"></i></a></li>';
2014-09-01 13:50:43 +08:00
$('#passenger_list').append(html);
},
addChildren: function(key, el) {
var obj = OrderSubmit.passengerObj[key],
seat = OrderSubmit.curData.ticketMap[el.attr('data-seat')];
html = '<li class="clearfix" data-children="true" data-key="' + obj['passenger_name'] + '$' + obj['passenger_id_type_code'] + '$' + obj['passenger_id_no'] + '" data-type="2" data-seat="' + el.attr('data-seat') + '">\
<span class="pull_left"><strong>' + obj['passenger_name'] + '</strong><span class="ticket"></span><br>' + obj['passenger_id_no'] + '</span>\
<a href="javascript:;" data-fn="edit" class="pull_right">\
2014-09-04 14:46:15 +08:00
<span class="seat">' + seat['name'];
if((seat['price'] / 10) > 0){
html += '&nbsp;' + (seat['price'] / 10) + '元';
}
html += '</span>&nbsp;<i class="icon_edit"></i></a></li>';
2014-09-01 13:50:43 +08:00
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);
2014-09-04 14:46:15 +08:00
if((info['price'] / 10) > 0){
$('.seat', OrderSubmit.editEl).html(info['name'] + '&nbsp;' + (info['price'] / 10) + '元');
}else{
$('.seat', OrderSubmit.editEl).html(info['name']);
}
2014-09-01 13:50:43 +08:00
$('#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];
2014-09-04 14:46:15 +08:00
html += '<li><a href="javascript:;" data-id="' + obj['code'] + '"><span class="pull_right text_gray"><span class="text_warning">' + obj['count'] + '</span>&nbsp;张</span><span class="form_label">' + obj['name'] + '</span><span class="text_gray">';
if((obj['price'] / 10) > 0){
html += (obj['price'] / 10) + '元';
}
html += '</span></a></li>';
2014-09-01 13:50:43 +08:00
};
$('#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 += '<li><a href="javascript:;" data-id="' + list[i]['id'] + '">' + list[i]['name'] + '</a></li>';
};
$('#edit_ticket ul').html(html);
$('#edit_ticket').show();
OrderSubmit.showLayer();
},
submitData: null,
submit: function(passenger, train, studentTicket) {
2014-09-02 22:52:30 +08:00
console.log(passenger);
2014-09-01 13:50:43 +08:00
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"));
2014-09-02 22:52:30 +08:00
2014-09-01 13:50:43 +08:00
if (e.passenger_type === "2") {
pas2.push(" ");
2014-09-02 22:52:30 +08:00
} else {
pas2.push(e.passenger_name + "," + e.passenger_id_type_code + "," + e.passenger_id_no + "," + e.passenger_type);
};
2014-09-01 13:50:43 +08:00
});
2014-09-02 22:52:30 +08:00
console.log(pas1,pas2);
2014-09-01 13:50:43 +08:00
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'],
2014-09-02 22:52:30 +08:00
'randCode': $('#randcode').val(),
2014-09-01 13:50:43 +08:00
'purpose_codes': OrderSubmit.submitData['purpose_codes'],
'key_check_isChange': OrderSubmit.submitData['key_check_isChange'],
'leftTicketStr': OrderSubmit.submitData['leftTicketStr'],
'train_location': OrderSubmit.submitData['train_location'],
2014-09-02 22:52:30 +08:00
'_json_att': OrderSubmit.submitData['_json_att']
2014-09-01 13:50:43 +08:00
}
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("登录状态异常,请重新登录。");
2014-09-03 14:49:31 +08:00
}
// else if (json['data']['op_2'] === "true") {
// Public.alert("排队人数过多,不允许提交订单。排队人数=" + json['data']['countT']);
// }
2014-09-03 14:49:31 +08:00
else if (!!json['data'] && !json['data']['submitStatus']) {
2014-09-01 13:50:43 +08:00
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('您还有未处理的订单,请您到<br/><a href="no_complete_order.html">[未完成订单]</a>进行处理!', function() {
2014-09-01 13:50:43 +08:00
window.location.href = 'no_complete_order.html';
});
} else {
Public.alert(tipText);
}
}
}