var Query = {
calendar: null,
init: function() {
if ($('#query_page').length == 0) {
return;
}
Public.checkLogin(Query.hasLogin, Query.noLogin, Query.noLogin);
var maxDay = (new Date()).addDays(19);
Public.setDate(maxDay);
$('#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();
}
});
$('#open_filter').on('click', function() {
Public.showInnerPage('filter');
});
$('#filter_cancel').on('click', function() {
Public.hideInnerPage('filter');
var bak = $('#query_form [name=filters]').val(),
querys = bak.split('&');
Query.setFilter(querys);
});
$('#filter_ok').on('click', function() {
Public.hideInnerPage('filter');
$('#query_form [name=filters]').val($('#filter_form').serialize());
});
$('#query_form [name=filters]').val($('#filter_form').serialize());
$('#query_form').on('submit', function() {
var fixedUrl = Public.getQueryData(window.location.search);
if(fixedUrl.c != 'query'){
Public.checkLogin(null, function(){
Public.alert('还未登录,请登陆后查询', function() {
location.href = 'login.html?t=submitorder';
});
return;
}, null);
}
var start = $('#startStationCode').val(),
end = $('#endStationCode').val();
if (start == '') {
Public.alert('请选择出发站');
return false;
} else if (end == '') {
Public.alert('请选择到达站');
return false;
} else if (start == end) {
Public.alert('出发地和目的地不能相同');
return false;
};
var queryString = $('#query_form').serialize();
Public.setHisQuery(start + '-' + end, queryString);
window.location.href = 'run_query.html';
return false;
});
$('#login').on('click', function() {
if ($(this).attr('data-fn') == 'loginout') {
cn12306.loginOut(function() {
Public.toast('退出成功,正在跳转');
setTimeout(function() {
window.location.href = 'login.html';
}, 1000);
}, function() {
Public.toast('退出失败,请重试。');
});
}
});
CheckStaion.init();
Query.stationInt();
Query.setHisQuery();
Query.filterBind();
$('#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;
});
},
setHisQuery: function() {
var hisList = Public.his.querys,
html = '
最近查找
',
val;
if (Public.his.querys.length == 0) {
return false;
}
html += '';
$('#hisQuery').html(html);
$('#hisQuery [data-key]').on('click', function() {
var key = $(this).attr('data-key');
if (!!key && !!Public.his.queryObjs[key]) {
Query.newQuery(Public.his.queryObjs[key]);
Public.toast('切换成功');
}
});
Query.newQuery(Public.his.queryObjs[$('#hisQuery [data-key]:eq(0)').attr('data-key')]);
},
newQuery: function(obj) {
var el;
$('#query_form [type=checkbox],#query_form [type=radio]').prop("checked", false);
for (var k in obj) {
el = $('#query_form [name=' + k + ']');
if (el.length > 1) {
$('#query_form [name="' + k + '"][value="' + obj[k] + '"]').prop("checked", true);
} else {
el.val(obj[k]);
if (k == 'startname') {
$('#startStation').html(obj[k]);
} else if (k == 'endname') {
$('#endStation').html(obj[k]);
} else if (k == 'start_date') {
var date = new Date(obj[k].replace(/\-/g, '/'));
$('#start_date').html(date.format('yyyy年M月d日') + ' ' + date.day(3));
Public.calendar.setCurDate(date);
}
}
};
var bak = $('#query_form [name=filters]').val(),
querys = bak.split('&');
Query.setFilter(querys);
},
setFilter: function(querys) {
var arr = [],
el;
$('#filter_form [type=checkbox],#filter_form [type=radio]').prop("checked", false);
$('#filter_form #train_labels,#filter_form #passenger_list').html('');
for (var i = 0; i < querys.length; i++) {
arr = querys[i].split('=');
arr[1] = decodeURIComponent(arr[1]);
el = $('#filter_form [name="' + arr[0] + '"][value="' + arr[1] + '"]');
if (arr[0] == 'train_type' || arr[0] == 'train_seat') {
el.prop("checked", true);
} else if (arr[0] == 'timeslot') {
el.prop("checked", true);
el.closest('.query_box').find('label').removeClass('query_bigcheck_checked');
el.closest('label').addClass('query_bigcheck_checked');
} else if (arr[0] == 'train') {
$('#filter_form #train_labels').append('' + arr[1] + ' ')
} else if (arr[0] == 'passenger') {
$('#passenger_form [name="psg"][value="' + arr[1] + '"]').prop('checked', true);
$('#filter_form #passenger_list').append('' + arr[1].split('$')[0] + ' ')
};
};
if (sessionStorage.getItem(Public.user + '_passenger')) {
Query.passengerList = JSON.parse(sessionStorage.getItem(Public.user + '_passenger'));
Query.passengerObj = JSON.parse(sessionStorage.getItem(Public.user + '_passengerobj'));
} 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) {
Query.formatPassenger(data["data"]["normal_passengers"]);
}
}).fail(function(xhr, type) {
console.log(xhr, type);
});
}
},
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]);
}
};
Query.passengerList = arr;
Query.passengerObj = obj;
sessionStorage.setItem(Public.user + '_passenger', JSON.stringify(arr));
sessionStorage.setItem(Public.user + '_passengerobj', JSON.stringify(obj));
},
hasLogin: function() {
$('#login').attr('href', 'javascript:;').attr('data-fn', 'loginout').html('退出');
$('#menu_btn .icon_user').addClass('icon_user2');
Query.setHisQuery();
Query.getPassenger();
},
noLogin: function() {
var sch = Public.getQueryData(window.location.search);
if(!!sch.cond && sch.cond == 'login'){
history.replaceState(null, null, WIN.location.href.split('?')[0]);
Public.confirm('你还未登录,是否登陆?',function(){
location.href = 'login.html';
});
}
$('#login').attr('href', '/12306/login.html').attr('data-fn', 'login').html('登录');
$('#menu_btn .icon_user').removeClass('icon_user2');
Query.setHisQuery();
},
stationInt: function() {
$('#startStation').on('click', function() {
CheckStaion.callback = Query.startCallback;
CheckStaion.cancelCallback = Query.cancelCallback;
CheckStaion.show();
$('#wrap').hide();
});
$('#endStation').on('click', function() {
CheckStaion.callback = Query.endCallback;
CheckStaion.cancelCallback = Query.cancelCallback;
CheckStaion.show();
$('#wrap').hide();
});
$('#exchange').on('click', function() {
var startName = $('#startStationName').val(),
startCode = $('#startStationCode').val(),
endName = $('#endStationName').val(),
endCode = $('#endStationCode').val();
$('#startStationName').val(endName);
$('#startStationCode').val(endCode);
$('#endStationName').val(startName);
$('#endStationCode').val(startCode);
if (!!startName) {
$('#endStation').html(startName);
} else {
$('#endStation').html('到达站');
}
if (!!endName) {
$('#startStation').html(endName);
} else {
$('#startStation').html('出发站');
}
});
},
startCallback: function(name, code) {
$('#startStation').html(name);
$('#startStationName').val(name);
$('#startStationCode').val(code);
CheckStaion.hide();
$('#wrap').show();
},
endCallback: function(name, code) {
$('#endStation').html(name);
$('#endStationName').val(name);
$('#endStationCode').val(code);
CheckStaion.hide();
$('#wrap').show();
},
cancelCallback: function() {
$('#wrap').show();
},
trainsHis: {},
getTrains: function() {
if ($('#startStationCode').val() == '' || $('#endStationCode').val() == '') {
Public.alert('请选择发到达站');
return;
}
var type = 'ADULT';
if ($('#query_form [name=type]').val() == '2') {
type = '0X00';
}
var loading = Public.showLoading('正在获取车次'),
date = $('#start_date_val').val(),
from = $('#startStationCode').val(),
to = $('#endStationCode').val(),
key = from + to + date + type,
data = {
"leftTicketDTO.train_date": date,
"leftTicketDTO.from_station": from,
"leftTicketDTO.to_station": to,
"purpose_codes": type
};
if (!!Query.trainsHis[key]) {
Query.setTrains(Query.trainsHis[key]);
Public.showInnerPage('trains_box');
}
// (url, returnType, postdata, refer, headers)
// bootStrap.get(cn12306.queryUri, "json", data, "leftTicket/init").done(function(json) {
// if (json["status"] == true && json["httpstatus"] == 200) {
// if (json['data'].length > 0) {
// Query.trainsHis[key] = json['data'];
// Query.setTrains(json['data']);
// Public.showInnerPage('trains_box');
// }
// }
// Public.hideLoading(loading);
// }).fail(function(xhr, type) {
// Public.hideLoading(loading);
// });
cn12306.queryTicket(data,function(json) {
if (json["status"] == true && json["httpstatus"] == 200) {
if (json['data'].length > 0) {
Query.trainsHis[key] = json['data'];
Query.setTrains(json['data']);
Public.showInnerPage('trains_box');
}
}
Public.hideLoading(loading);
},function(xhr, type) {
Public.hideLoading(loading);
});
},
setTrains: function(lists) {
var data,
html = '',
ls = [];
for (var i = 0, len = lists.length; i < len; i++) {
data = lists[i]['queryLeftNewDTO'];
ls = data['lishi'].split(':');
if ($('#train_labels [value="' + data['station_train_code'] + '"]').length > 0) {
html += '' + (!!ls[0] && ls[0] != '00' ? parseInt(ls[0]) + '小时' : '') + (!!ls[1] ? parseInt(ls[1]) + '分' : '0分') + ' ' + data['station_train_code'] + ' ' + data['start_time'] + ' - ' + data['arrive_time'] + ' ';
};
$('#trainList').html(html);
},
getPassenger: function() {
if (sessionStorage.getItem(Public.user + '_passenger')) {
Query.setPassengerList(JSON.parse(sessionStorage.getItem(Public.user + '_passenger')));
} 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) {
Query.setPassengerList(data['data']['normal_passengers']);
}
}).fail(function(xhr, type) {
console.log(xhr, type);
});
}
},
setPassengerList: function(list) {
var html = '';
for (var i = 0, len = list.length; i < len; i++) {
html += ' ' + list[i]['passenger_name'] + ' ';
};
$('#passengers').html(html);
var bak = $('#query_form [name=filters]').val(),
querys = bak.split('&');
Query.setFilter(querys);
},
filterBind: function() {
$('#train_filter').live('click', function() {
Query.getTrains();
});
$('#trains_ok').live('click', function() {
Public.showInnerPage('filter');
});
$('#trainList a').live('click', function() {
var tc = $(this).attr('data-traincode');
if ($(this).hasClass('cur')) {
$('#train_labels [value="' + tc + '"]').closest('.train_label').remove();
$(this).removeClass('cur');
} else {
$(this).addClass('cur');
$('#train_labels').append('' + tc + ' ');
}
});
// alert('live')
$('#train_labels .train_label').live('click', function() {
// alert(1)
$(this).remove();
});
$('#check_passenger').live('click', function() {
if (!Public.isLogin) {
Public.confirm('登陆后可选乘车人', function() {
window.location.href = 'login.html';
}, '登陆');
} else {
Public.showInnerPage('passenger');
}
});
$('#passengers [name="psg"]').live('change', function() {
if ($('#passengers [name="psg"]:checked').length > 5) {
Public.alert('联系人最多只能选择五个');
$(this).prop('checked', false);
return;
}
var val = $(this).val(),
name = $(this).attr('data-name');
if ($(this).prop('checked')) {
$('#passenger_list').append('' + name + ' ');
} else {
$('#passenger_list [name="passenger"][value="'+ val + '"]').closest('.train_label').remove();//删除选中联系人中对应的
}
});
$('#passenger_ok').live('click', function() {
var checkeds = $('#passenger_list [name="passenger"]');
$('#passenger_form [name="psg"]').prop('checked', false);
checkeds.each(function(idx, el) {
$('#passenger_form [name="psg"][value="' + $(el).val() + '"]').prop('checked', true);
});
Public.showInnerPage('filter');
});
$('#passenger_list .train_label').live('click', function() {
var val = $('input', this).val();
$(this).remove();
$('#passengers [name="psg"][value="' + val + '"]').prop('checked', false);
});
}
}