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 = '
最近查找
', 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 += ''; }; $('#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); }); } }