2014-08-19 16:11:37 +08:00
|
|
|
|
var cn12306 = {
|
|
|
|
|
coreVersion: "1.0.0.0",
|
|
|
|
|
baseUri: "https://kyfw.12306.cn/otn/",
|
|
|
|
|
queryBaseUri: "http://dynamic.12306.cn/otsquery/",
|
2014-09-01 13:50:43 +08:00
|
|
|
|
queryUri:'leftTicket/query',
|
2014-08-19 16:11:37 +08:00
|
|
|
|
ajaxQueue: {},
|
|
|
|
|
ajaxCount: 0,
|
|
|
|
|
getFullUri: function(url) {
|
|
|
|
|
return url[4] === ":" || url[5] === ":" ? url : cn12306.baseUri + url;
|
|
|
|
|
},
|
2014-08-22 18:00:59 +08:00
|
|
|
|
recode: function() {
|
2014-08-19 16:11:37 +08:00
|
|
|
|
|
2014-08-22 18:00:59 +08:00
|
|
|
|
$('#randcodeimg').attr('src', $('#randcodeimg').attr('data-loading'));
|
|
|
|
|
$('#randcode').val('').focus();
|
|
|
|
|
|
|
|
|
|
cn12306.loadRandCode('sjrand', function(data) {
|
|
|
|
|
$('#randcodeimg').attr('src', data);
|
|
|
|
|
}, "login/init");
|
|
|
|
|
},
|
2014-08-19 16:11:37 +08:00
|
|
|
|
/**
|
|
|
|
|
* 获取验证码
|
|
|
|
|
* @param {String} flag 验证码类型(sjrand|randp)
|
|
|
|
|
* @param {Function} callback 获取后回调
|
|
|
|
|
* @param {String} refer Header refer
|
|
|
|
|
* @return {Img uri} base64图片url
|
|
|
|
|
*/
|
|
|
|
|
loadRandCode: function(flag, callback, refer) {
|
|
|
|
|
var url = cn12306.getFullUri(flag[4] === ":" || flag[5] === ":" ? flag : (function(f) {
|
|
|
|
|
if (flag == "sjrand") {
|
2014-08-21 18:31:41 +08:00
|
|
|
|
return "passcodeNew/getPassCodeNew?module=login&rand=sjrand";
|
2014-08-19 16:11:37 +08:00
|
|
|
|
} else if (flag == "randp") {
|
2014-08-21 18:31:41 +08:00
|
|
|
|
return "passcodeNew/getPassCodeNew?module=passenger&rand=randp";
|
2014-08-19 16:11:37 +08:00
|
|
|
|
}
|
|
|
|
|
Public.alert("不支持的验证码类型!");
|
|
|
|
|
})(flag));
|
|
|
|
|
|
2014-08-21 18:31:41 +08:00
|
|
|
|
bootStrap.getImage(url, refer).done(callback).fail(function() {
|
|
|
|
|
Public.alert("加载验证码失败,请点击验证码刷新");
|
|
|
|
|
});
|
2014-08-19 16:11:37 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取ajax url
|
|
|
|
|
* @param {String} url ajax url
|
|
|
|
|
* @return {String} ajax url
|
|
|
|
|
*/
|
|
|
|
|
getAjaxUrl: function(url) {
|
2014-08-21 13:42:42 +08:00
|
|
|
|
// return (isAndLiebao || isIos || isWebApp) ? cn12306.getFullUri(url) : baseProxyUrl;
|
|
|
|
|
return (isAndLiebao || isIos) ? cn12306.getFullUri(url) : baseProxyUrl;
|
2014-08-19 16:11:37 +08:00
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取请求头
|
|
|
|
|
* @param {String} url ajax url
|
|
|
|
|
* @param {String} refer Header refer
|
|
|
|
|
* @return {Object} 所有header
|
|
|
|
|
*/
|
|
|
|
|
getHeaders: function(url, refer) {
|
|
|
|
|
var url = cn12306.getFullUri(url),
|
|
|
|
|
refer = cn12306.getFullUri(refer),
|
|
|
|
|
headers = {},
|
|
|
|
|
prefix = isAndLiebao ? "" : "Fish-";
|
|
|
|
|
|
|
|
|
|
headers[prefix + "User-Agent"] = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)",
|
|
|
|
|
headers[prefix + "Origin"] = /(https?:\/\/[^\/]+\/)/.exec(url)[1],
|
|
|
|
|
headers[prefix + "RawUrl"] = url
|
|
|
|
|
headers[prefix + "Referer"] = refer;
|
2014-08-21 13:42:42 +08:00
|
|
|
|
// if (!(isAndLiebao || isIos || isWebApp)) {
|
|
|
|
|
if (!(isAndLiebao || isIos)) {
|
2014-08-19 16:11:37 +08:00
|
|
|
|
headers["Fish-RawUrl"] = url;
|
|
|
|
|
}
|
|
|
|
|
return headers;
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 验证验证码
|
|
|
|
|
* @param {String} type 验证码类型
|
|
|
|
|
* @param {String} code 需要验证的验证码
|
|
|
|
|
* @param {Function} success 成功回调
|
|
|
|
|
* @param {Function} error 失败回调
|
|
|
|
|
* @param {String} refer Header请求头refer
|
|
|
|
|
* @return {Ajax Callback} 执行回调
|
|
|
|
|
*/
|
|
|
|
|
checkRandCode: function(type, code, success, error, refer) {
|
|
|
|
|
var url = cn12306.getFullUri("passcodeNew/checkRandCodeAnsyn"),
|
|
|
|
|
refer = cn12306.getFullUri(refer),
|
|
|
|
|
headers = cn12306.getHeaders(url, refer);
|
|
|
|
|
|
2014-08-22 18:00:59 +08:00
|
|
|
|
bootStrap.post("passcodeNew/checkRandCodeAnsyn", null, null, refer).done(function(data) {
|
|
|
|
|
if (typeof success == 'function') {
|
|
|
|
|
success(data);
|
|
|
|
|
}
|
|
|
|
|
}).fail(function(xhr, type) {
|
|
|
|
|
if (typeof error == 'function') {
|
|
|
|
|
error(xhr, type);
|
2014-08-19 16:11:37 +08:00
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 测试指定用户是否已经登录
|
|
|
|
|
* @param {function} loginedCallback 已经登录回调
|
|
|
|
|
* @param {Function} unloginCallback 未登录回调
|
|
|
|
|
* @param {Function} errorCallback 错误回调
|
|
|
|
|
*/
|
|
|
|
|
isUserLogined: function(loginedCallback, unloginCallback, errorCallback) {
|
2014-08-21 13:42:42 +08:00
|
|
|
|
var url = "login/checkUser",
|
|
|
|
|
refer = 'leftTicket/init';
|
2014-08-19 16:11:37 +08:00
|
|
|
|
|
2014-08-22 18:00:59 +08:00
|
|
|
|
bootStrap.post("login/checkUser", "json", {
|
|
|
|
|
"_json_att": ""
|
|
|
|
|
}, "leftTicket/init").done(function(json) {
|
|
|
|
|
if (json && json.data && json.data.flag) {
|
|
|
|
|
if (json.attributes) {
|
|
|
|
|
sessionStorage["useratts"] = json.attributes;
|
|
|
|
|
};
|
|
|
|
|
if (!cn12306.checking) {
|
|
|
|
|
cn12306.checkeUser();
|
|
|
|
|
};
|
|
|
|
|
(typeof loginedCallback == "function") && loginedCallback();
|
|
|
|
|
} else {
|
|
|
|
|
(typeof unloginCallback == "function") && unloginCallback();
|
2014-08-19 16:11:37 +08:00
|
|
|
|
}
|
2014-08-22 18:00:59 +08:00
|
|
|
|
}).fail(function(xhr, type) {
|
|
|
|
|
(typeof errorCallback == "function") && errorCallback();
|
2014-08-19 16:11:37 +08:00
|
|
|
|
});
|
2014-08-21 13:42:42 +08:00
|
|
|
|
},
|
|
|
|
|
|
2014-08-22 18:00:59 +08:00
|
|
|
|
ajax: function(o) {
|
2014-08-21 13:42:42 +08:00
|
|
|
|
var obj = {
|
2014-08-22 18:00:59 +08:00
|
|
|
|
"type": 'POST',
|
|
|
|
|
"dataType": 'json'
|
2014-08-21 13:42:42 +08:00
|
|
|
|
}
|
|
|
|
|
|
2014-08-22 18:00:59 +08:00
|
|
|
|
$.extend(obj, o || {});
|
2014-08-21 13:42:42 +08:00
|
|
|
|
|
|
|
|
|
obj["headers"] = cn12306.getHeaders(obj["url"], obj["refer"]);
|
|
|
|
|
|
2014-08-22 18:00:59 +08:00
|
|
|
|
if (typeof obj["url"] != 'undefined') {
|
|
|
|
|
obj["url"] = cn12306.getAjaxUrl(cn12306.getFullUri(obj["url"]));
|
|
|
|
|
}
|
|
|
|
|
if (typeof obj["refer"] != 'undefined') {
|
|
|
|
|
obj["refer"] = cn12306.getAjaxUrl(obj["refer"]);
|
|
|
|
|
}
|
2014-08-21 13:42:42 +08:00
|
|
|
|
$.ajax(obj);
|
2014-08-21 16:32:56 +08:00
|
|
|
|
},
|
2014-08-22 18:00:59 +08:00
|
|
|
|
checking: false,
|
|
|
|
|
checkeUser: function() {
|
2014-08-21 16:32:56 +08:00
|
|
|
|
cn12306.checking = true;
|
2014-08-22 18:00:59 +08:00
|
|
|
|
bootStrap.post('login/checkUser', 'json', null, 'login/init').done(function() {
|
|
|
|
|
setTimeout(cn12306.checkeUser, 60000);
|
|
|
|
|
}).fail(function() {
|
|
|
|
|
setTimeout(cn12306.checkeUser, 60000);
|
2014-08-21 16:32:56 +08:00
|
|
|
|
});
|
2014-09-01 13:50:43 +08:00
|
|
|
|
},
|
|
|
|
|
loginOut: function(success, error) {
|
|
|
|
|
bootStrap.post('login/loginOut', 'html', null, 'login/init').done(function() {
|
|
|
|
|
if (success) {
|
|
|
|
|
sessionStorage.clear();
|
|
|
|
|
success();
|
|
|
|
|
}
|
|
|
|
|
}).fail(function(e) {
|
|
|
|
|
if (error) {
|
|
|
|
|
error(e);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
queryTicket:function(data,success,error){
|
|
|
|
|
bootStrap.get(cn12306.queryUri, "json", data, "leftTicket/init").done(function(json) {
|
|
|
|
|
if (json["status"] == true && json["httpstatus"] == 200 && json['data'].length > 0) {
|
|
|
|
|
cn12306.listGetTrainNo(json['data']);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (json["status"] == false && !!json["c_url"]) {
|
|
|
|
|
cn12306.queryUri = json['c_url'];
|
|
|
|
|
cn12306.queryTicket(data,success,error);
|
|
|
|
|
}else if (typeof success == 'function') {
|
|
|
|
|
success(json);
|
|
|
|
|
}
|
|
|
|
|
}).fail(function(xhr, type) {
|
|
|
|
|
if (typeof success == 'function') {
|
|
|
|
|
error(xhr, type);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
byTrainNos:{},
|
|
|
|
|
setLocalTrainNos:function(key,data){
|
|
|
|
|
console.log(data);
|
|
|
|
|
if(!cn12306.byTrainNos[key]){
|
|
|
|
|
cn12306.byTrainNos[key] = data;
|
|
|
|
|
localStorage.setItem('localTrainNos',JSON.stringify(cn12306.byTrainNos));
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getLocalTrainNos:function(){
|
|
|
|
|
var nos = localStorage.getItem('localTrainNos');
|
|
|
|
|
if(nos){
|
|
|
|
|
cn12306.byTrainNos = JSON.parse(nos);
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
listGetTrainNo:function(list){
|
|
|
|
|
if(!!list && list.length > 0){
|
|
|
|
|
for (var i = 0,len = list.length; i < list.length; i++) {
|
|
|
|
|
cn12306.queryByTrainNos({
|
|
|
|
|
'train_no':list[i]['queryLeftNewDTO']['train_no'],
|
|
|
|
|
'from_station_telecode':list[i]['queryLeftNewDTO']['from_station_telecode'],
|
|
|
|
|
'to_station_telecode':list[i]['queryLeftNewDTO']['to_station_telecode'],
|
|
|
|
|
'depart_date':list[i]['queryLeftNewDTO']['start_train_date'].replace(/(\d{4})(\d{2})(\d{2})/, "$1-$2-$3")
|
|
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
loadingInfo:[],
|
|
|
|
|
queryByTrainNos:function(formData,success,error){
|
|
|
|
|
|
|
|
|
|
// train_no=240000G6670A
|
|
|
|
|
// from_station_telecode=BXP
|
|
|
|
|
// to_station_telecode=LLF
|
|
|
|
|
// depart_date=2014-08-30
|
|
|
|
|
console.log(cn12306.byTrainNos[formData['train_no']]);
|
|
|
|
|
if(!!cn12306.byTrainNos[formData['train_no']]){
|
|
|
|
|
if(typeof success == 'function'){
|
|
|
|
|
success(cn12306.byTrainNos[formData['train_no']]);
|
|
|
|
|
}
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(cn12306.loadingInfo.indexOf(formData['train_no']) != -1){
|
|
|
|
|
return ;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cn12306.loadingInfo.push(formData['train_no']);
|
|
|
|
|
|
|
|
|
|
bootStrap.get('czxx/queryByTrainNo', null, formData, 'leftTicket/init').done(function(data) {
|
|
|
|
|
var idx = cn12306.loadingInfo.indexOf(formData['train_no']);
|
|
|
|
|
if(idx != -1){
|
|
|
|
|
cn12306.loadingInfo.splice(idx,1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(data['status']){
|
|
|
|
|
cn12306.setLocalTrainNos(formData['train_no'],data['data']);
|
|
|
|
|
}
|
|
|
|
|
if (typeof success == 'function') {
|
|
|
|
|
success(data);
|
|
|
|
|
}
|
|
|
|
|
}).fail(function(xhr, type) {
|
|
|
|
|
if (typeof error == 'function') {
|
|
|
|
|
error(xhr, type);
|
|
|
|
|
}
|
|
|
|
|
});
|
2014-08-19 16:11:37 +08:00
|
|
|
|
}
|
|
|
|
|
}
|