435 lines
14 KiB
JavaScript
435 lines
14 KiB
JavaScript
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 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 = '<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('切换成功');
|
|
}
|
|
});
|
|
|
|
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('<a href="javascript:;" class="train_label">' + arr[1] + '<input type="hidden" name="train" value="' + arr[1] + '"></a>')
|
|
} else if (arr[0] == 'passenger') {
|
|
$('#passenger_form [name="psg"][value="' + arr[1] + '"]').prop('checked', true);
|
|
$('#filter_form #passenger_list').append('<a href="javascript:;" class="train_label">' + arr[1].split('$')[0] + '<input type="hidden" name="passenger" value="' + arr[1] + '"></span></a>')
|
|
};
|
|
};
|
|
|
|
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 += '<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('&');
|
|
|
|
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('<a href="javascript:;" class="train_label">' + tc + '<input type="hidden" name="train" value="' + tc + '"></a>');
|
|
}
|
|
});
|
|
// 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('<a href="javascript:;" class="train_label">' + name + '<input type="hidden" name="passenger" value="' + val + '"></a>');
|
|
} 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);
|
|
});
|
|
}
|
|
} |