Light12306/Mobile12306New/js/query.js

423 lines
14 KiB
JavaScript
Raw Normal View History

2014-08-19 16:11:37 +08:00
var Query = {
calendar: null,
init: function() {
2014-08-21 13:42:42 +08:00
if ($('#query_page').length == 0) {
return;
}
2014-09-01 13:50:43 +08:00
Public.checkLogin(Query.hasLogin, Query.noLogin, Query.noLogin);
2014-08-19 16:11:37 +08:00
var maxDay = (new Date()).addDays(19);
2014-08-21 13:42:42 +08:00
Public.setDate(maxDay);
2014-08-19 16:11:37 +08:00
2014-08-21 13:42:42 +08:00
$('#menu_btn').on('click', function() {
2014-08-19 16:11:37 +08:00
$('#user_menu').toggle();
});
2014-08-21 13:42:42 +08:00
$('#user_menu').on('click', function(e) {
if ($(e.target).attr('id') == 'user_menu') {
2014-08-19 16:11:37 +08:00
$('#user_menu').hide();
}
});
2014-08-21 13:42:42 +08:00
$('#open_filter').on('click', function() {
Public.showInnerPage('filter');
2014-08-19 16:11:37 +08:00
});
2014-08-21 13:42:42 +08:00
$('#filter_cancel').on('click', function() {
Public.hideInnerPage('filter');
var bak = $('#query_form [name=filters]').val(),
querys = bak.split('&');
Query.setFilter(querys);
2014-08-19 16:11:37 +08:00
});
2014-08-21 13:42:42 +08:00
$('#filter_ok').on('click', function() {
Public.hideInnerPage('filter');
$('#query_form [name=filters]').val($('#filter_form').serialize());
2014-08-19 16:11:37 +08:00
});
2014-08-21 13:42:42 +08:00
$('#query_form [name=filters]').val($('#filter_form').serialize());
$('#query_form').on('submit', function() {
var start = $('#startStationCode').val(),
end = $('#endStationCode').val();
if (start == '') {
Public.alert('请选择出发站');
return false;
} else if (end == '') {
Public.alert('请选择到达站');
return false;
2014-09-01 13:50:43 +08:00
} else if (start == end) {
2014-08-21 13:42:42 +08:00
Public.alert('出发地和目的地不能相同');
return false;
};
var queryString = $('#query_form').serialize();
Public.setHisQuery(start + '-' + end, queryString);
window.location.href = 'run_query.html';
return false;
2014-08-19 16:11:37 +08:00
});
2014-08-21 13:42:42 +08:00
2014-09-01 13:50:43 +08:00
$('#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();
2014-09-03 22:19:44 +08:00
$('#remind_btn').on('click',function(e){
2014-09-03 23:06:47 +08:00
var url = 'remind.html?',
2014-09-03 22:19:44 +08:00
from = $('#startStationCode').val(),
to = $('#endStationCode').val(),
date = $('#start_date_val').val();
2014-09-03 23:06:47 +08:00
// url += 'date='+date;
2014-09-03 22:19:44 +08:00
if(!!from){
url += '&from='+from;
}
if(!!to){
url += '&to='+to;
}
location.href = url;
});
2014-08-21 13:42:42 +08:00
},
setHisQuery: function() {
var hisList = Public.his.querys,
html = '<div class="his_title">最近查找</div>',
val;
if (Public.his.querys.length == 0) {
return false;
}
html += '<ul class="list his_list">';
for (var i = 0, len = hisList.length; i < len; i++) {
val = Public.his.queryObjs[hisList[i][0]];
html += '<li><a href="javascript:;" data-key="' + hisList[i][0] + '"><span>' + val["startname"] + '</span><span>' + val["endname"] + '</span></a></li>'
};
html += '</ul>';
$('#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('切换成功');
2014-08-19 16:11:37 +08:00
}
});
2014-08-21 13:42:42 +08:00
Query.newQuery(Public.his.queryObjs[$('#hisQuery [data-key]:eq(0)').attr('data-key')]);
2014-08-19 16:11:37 +08:00
},
2014-08-21 13:42:42 +08:00
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) {
2014-09-01 13:50:43 +08:00
$('#query_form [name="' + k + '"][value="' + obj[k] + '"]').prop("checked", true);
2014-08-21 13:42:42 +08:00
} else {
el.val(obj[k]);
2014-09-01 13:50:43 +08:00
if (k == 'startname') {
2014-08-21 13:42:42 +08:00
$('#startStation').html(obj[k]);
2014-09-01 13:50:43 +08:00
} else if (k == 'endname') {
2014-08-21 13:42:42 +08:00
$('#endStation').html(obj[k]);
2014-09-01 13:50:43 +08:00
} else if (k == 'start_date') {
var date = new Date(obj[k].replace(/\-/g, '/'));
2014-08-21 13:42:42 +08:00
$('#start_date').html(date.format('yyyy年M月d日') + ' ' + date.day(3));
Public.calendar.setCurDate(date);
}
2014-08-19 16:11:37 +08:00
}
2014-08-21 13:42:42 +08:00
};
var bak = $('#query_form [name=filters]').val(),
querys = bak.split('&');
Query.setFilter(querys);
2014-08-19 16:11:37 +08:00
},
2014-09-01 13:50:43 +08:00
setFilter: function(querys) {
2014-08-21 13:42:42 +08:00
var arr = [],
el;
$('#filter_form [type=checkbox],#filter_form [type=radio]').prop("checked", false);
2014-09-01 13:50:43 +08:00
$('#filter_form #train_labels,#filter_form #passenger_list').html('');
2014-08-21 13:42:42 +08:00
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');
2014-09-01 13:50:43 +08:00
} else if (arr[0] == 'train') {
$('#filter_form #train_labels').append('<span class="train_label">' + arr[1] + '<input type="hidden" name="train" value="' + arr[1] + '"></span>')
} else if (arr[0] == 'passenger') {
$('#passenger_form [name="psg"][value="' + arr[1] + '"]').prop('checked', true);
$('#filter_form #passenger_list').append('<span class="train_label">' + arr[1].split('$')[0] + '<input type="hidden" name="passenger" value="' + arr[1] + '"></span></span>')
2014-08-21 13:42:42 +08:00
};
};
2014-09-01 13:50:43 +08:00
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);
});
}
2014-08-21 13:42:42 +08:00
},
2014-09-01 13:50:43 +08:00
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]);
2014-08-19 16:11:37 +08:00
}
2014-09-01 13:50:43 +08:00
};
Query.passengerList = arr;
Query.passengerObj = obj;
sessionStorage.setItem(Public.user + '_passenger', JSON.stringify(arr));
sessionStorage.setItem(Public.user + '_passengerobj', JSON.stringify(obj));
2014-08-19 16:11:37 +08:00
},
hasLogin: function() {
$('#login').attr('href', 'javascript:;').attr('data-fn', 'loginout').html('退出');
$('#menu_btn .icon_user').addClass('icon_user2');
2014-09-01 13:50:43 +08:00
Query.setHisQuery();
Query.getPassenger();
2014-08-19 16:11:37 +08:00
},
noLogin: function() {
$('#login').attr('href', '/12306/login.html').attr('data-fn', 'login').html('登录');
$('#menu_btn .icon_user').removeClass('icon_user2');
2014-09-01 13:50:43 +08:00
Query.setHisQuery();
2014-08-21 13:42:42 +08:00
},
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();
2014-09-01 13:50:43 +08:00
},
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 += '<li><a href="javascript:;" class="clearfix cur"';
} else {
html += '<li><a href="javascript:;" class="clearfix"';
}
html += ' data-traincode="' + data['station_train_code'] + '"><span class="pull_right">' + (!!ls[0] && ls[0] != '00' ? parseInt(ls[0]) + '小时' : '') + (!!ls[1] ? parseInt(ls[1]) + '分' : '0分') + '</span><span class="pull_left "><strong class="text_lg form_label text_left">' + data['station_train_code'] + '</strong>' + data['start_time'] + ' - ' + data['arrive_time'] + '</span></a></li>';
};
$('#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 += '<label class="query_checkbox"><input name="psg" type="checkbox" data-name="' + list[i]['passenger_name'] + '" value="' + list[i]['passenger_name'] + '$' + list[i]['passenger_id_type_code'] + '$' + list[i]['passenger_id_no'] + '">' + list[i]['passenger_name'] + '</label>';
};
$('#passengers').html(html);
var bak = $('#query_form [name=filters]').val(),
querys = bak.split('&');
2014-08-21 13:42:42 +08:00
2014-09-01 13:50:43 +08:00
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('<span class="train_label">' + tc + '<input type="hidden" name="train" value="' + tc + '"></span>');
}
});
$('#train_labels .train_label').live('click', function() {
$(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('<span class="train_label">' + name + '<input type="hidden" name="passenger" value="' + val + '"></span>');
} else {
$('#passenger_list [name="passenger"][value="'+ val + '"]').closest('.train_label').remove();//删除选中联系人中对应的
2014-09-01 13:50:43 +08:00
}
});
$('#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);
});
}
2014-08-19 16:11:37 +08:00
}