添加部分接口

This commit is contained in:
iFish 2014-08-20 20:58:24 +08:00
parent 3550302bfc
commit 06a22c3017
8 changed files with 162 additions and 42 deletions

View File

@ -43,6 +43,9 @@
var callid = 0;
window.fishXhrLoadCallback = function (obj) {
if (typeof (obj) === "string")
obj = JSON.parse(obj);
var def = queue[obj.id];
if (!def)
return;
@ -57,19 +60,20 @@
}
delete queue[obj.id];
alert(obj.success);
if (obj.success) {
$.resolve(obj.result, {
def.resolve(obj.result, {
headers: obj.headers,
statusCode: obj.statusCode,
statusDescription: obj.statusDescription,
id: def.id
id: obj.id
});
} else {
$.reject(obj.result, {
def.reject(obj.result, {
headers: obj.headers,
statusCode: obj.statusCode,
statusDescription: obj.statusDescription,
id: def.id
id: obj.id
});
}
};
@ -98,7 +102,7 @@
returnType: def.rawResultType === "image" ? "image" : "text"
};
queue[def.context.id] = def;
window.__TicketJavaScriptObject__.sendRequest(def.context);
window.__TicketJavaScriptObject__.sendRequest(JSON.stringify(def.context));
return def.promise();
};
@ -108,15 +112,15 @@
get: function () {
var arr = [].slice.call(arguments);
arr.unshift("GET");
ajax.apply(this, arr);
return ajax.apply(this, arr);
},
post: function () {
var arr = [].slice.call(arguments);
arr.unshift("POST");
ajax.apply(this, arr);
return ajax.apply(this, arr);
},
getImage: function(url, refer) {
return ajax("GET", url, "image", null, refer);
return return ajax("GET", url, "image", null, refer);
}
}
})();
@ -140,9 +144,9 @@
$("#loadText").click(function () {
lbAjax.get("https://kyfw.12306.cn/otn/login/init", "text", null, "https://kyfw.12306.cn/otn/")
.done(function (data) {
$("#result").html("加载成功!" + data);
$("#result").text("加载成功!" + data);
}).fail(function (data) {
$("#result").html("加载失败!" + data);
$("#result").text("加载失败!" + data);
});
});
});

View File

@ -191,6 +191,7 @@
<Content Include="js\data.js" />
<Content Include="js\modules\doT.js" />
<Content Include="js\otn\orderprocess.js" />
<Content Include="js\otn\passenger.js" />
<Content Include="js\otn\queryticket.js" />
<Content Include="js\otn\trainfilter.js" />
<Content Include="js\otn\trainstationsuggest.js" />

View File

@ -164,6 +164,9 @@ a:active {
display: block;
color: #fff;
}
.header-bar .user-nav li.selected > a {
color: #f17206;
}
.header-bar .user-nav li:after {
content: '';

View File

@ -174,11 +174,11 @@
.passenger-selector .passenger-selector-editor {
float: left;
margin-top: 12px;
display: none;
color: #8b8b8b;
}
.passenger-selector .passenger-selector-editor a {
color: #8b8b8b;
display: none;
}
.passenger-selector .passenger-selector-editor a:hover {
@ -186,7 +186,6 @@
}
.options-param .param-array label {
width: 170px;
display: block;
float: left;
}

View File

@ -12,8 +12,10 @@
<nav>
<ul class="user-nav">
<li class="selected">
<i class="icon icon-index"></i>
<p>抢票首页</p>
<a href="/">
<i class="icon icon-index"></i>
<p>抢票首页</p>
</a>
</li>
<li>
<a href="https://kyfw.12306.cn/otn/queryOrder/init" target="_blank">
@ -238,7 +240,7 @@
{{for(var i in it){}}
<a href="javascript:;" class="options-seat-type-advlink">{{=i}}</a>
{{}}}
</script>
<div>
<table>
@ -258,10 +260,10 @@
</td>
</tr>
<tr>
<td colspan="6">
<i class="fa fa-times"></i>
请先设置站点和日期信息,再重新查询。
</td>
<td colspan="6">
<i class="fa fa-times"></i>
请先设置站点和日期信息,再重新查询。
</td>
<tr>
<td colspan="6">
<i class="fa fa-times"></i>
@ -304,7 +306,11 @@
</script>
<ul class="cl"></ul>
<div class="passenger-selector-editor">
<a href="javascript:;"><i class="fa fa-plus"></i> 添加</a>
<a href="javascript:;" style="display:none;"><i class="fa fa-plus"></i> 添加</a>
<label>
<input type="checkbox" data-profile-key="partialSubmitEnabled" value="1" id="" />
部分提交
</label>
</div>
<div class="passenger-pager">
<button class="passenger-pager-prev" disabled="disabled">上一页</button>
@ -350,8 +356,6 @@
<input type="checkbox" data-profile-key="tryBottomSeat" value="1" id="" />
尝试预定下铺
</label>
</p>
<p>
<label>
<input type="checkbox" data-profile-key="selectSeatFirst" value="1" id="" />
席别优先
@ -361,14 +365,10 @@
自动提交
</label>
<label>
<input type="checkbox" data-profile-key="partialSubmitEnabled" value="1" id="" />
允许部分提交联系人
刷新间隔
<input type="number" data-profile-key="autoRefreshDelay" min="1" max="30" value="5" id="" title="两次自动刷新之间的时间间隔,不建议过短" />
</label>
<span>
自动刷新间隔
<input type="number" data-profile-key="autoRefreshDelay" min="1" max="30" value="5" id="" />
秒(不建议过低)
</span>
</p>
</dd>
</dl>
@ -909,8 +909,7 @@
</section>
</section>
</script>
<article class="chat-items">
</article>
<article class="chat-items"></article>
<section class="chat-editor">
<header>
<input type="color" value="" class="chat-editor-color" />

View File

@ -0,0 +1,53 @@
define(function (require, exports, module) {
var parser = require("../platform/parser.js");
var ajax = require("../platform/webRequest.js");
var sessMgr = require("../account/sessionMgr.js");
var fastAddPassenger = function (type, name, idtype, id, countryCode) {
var def = new $.Deferred();
var p = {
passenger_name: name,
passenger_id_type_code: idtype,
passenger_id_no: id,
passenger_type: type,
countryCode: countryCode || "CN"
};
var request = ajax.sendPost("passengers/realAdd", "confirmPassenger/initDc", p);
request.done(function () {
if (!this.data) {
def.reject("网络错误");
return;
}
var response = this.data;
if (response.flag) {
//成功?
parser.processPassenger([p]);
p.totalTimes = response.totalTimes;
if (parser.canPassageAddToOrder(p)) {
sessMgr.getPassengers(function (plist) {
plist.push(p);
sessMgr.fireEvent("addPassenger", p);
});
def.resolve(def);
} else {
def.reject("联系人添加成功,但是未通过校验,无法订票。");
}
} else {
def.reject((response.message + '') || "网络错误");
}
}).fail(function () {
def.reject(this + '');
});
return def.promise();
};
return {
fastAddPassenger: function (p) {
}
}
});

View File

@ -17,6 +17,8 @@ define(function (require, exports, module) {
return config.baseUri + url;
};
this.send = function (method, url, refer, data, responseType, done, failed, appendatt) {
var def = new $.Deferred();
if (appendatt) {
data = $.extend({
_json_att: jsonAtt || ""
@ -34,25 +36,46 @@ define(function (require, exports, module) {
var e = new CustomEvent("ajaxproxy", { detail: { data: xhrData, index: ajaxCount++ }, cancelable: true });
if (!document.dispatchEvent(e)) {
requestMap[e.detail.index] = {
done: done,
fail: failed
done: function () {
var args = [].slice.call(arguments);
done && done.apply(this, args);
def.resolveWith(this, args);
},
fail: function() {
var args = [].slice.call(arguments);
failed && failed.apply(this, args);
def.rejectWith(this, args);
}
};
return;
} else {
document.dispatchEvent(new CustomEvent("requestSupportError"));
def.rejectWith("平台错误");
}
return def;
};
this.loadImage = function (url, refer, done, failed) {
var def = new $.Deferred();
var e = new CustomEvent("ajaxLoadVerifyCode", { detail: { url: that.getFullUri(url), refer: that.getFullUri(url), index: ajaxCount++ }, cancelable: true });
if (!document.dispatchEvent(e)) {
requestMap[e.detail.index] = {
done: done,
fail: failed
done: function () {
var args = [].slice.call(arguments);
done && done.apply(this, args);
def.resolveWith(this, args);
},
fail: function () {
var args = [].slice.call(arguments);
failed && failed.apply(this, args);
def.rejectWith(this, args);
}
};
return;
} else {
document.dispatchEvent(new CustomEvent("requestSupportError"));
def.rejectWith("平台错误");
}
return def;
};
this.sendGet = function (url, refer, data, responseType, done, failed, appendatt) {
/// <summary>以GET模式发送AJAX请求</summary>
@ -62,10 +85,12 @@ define(function (require, exports, module) {
/// <param name="responseType">要请求的地址</param>
/// <param name="done">完成请求的回调</param>
/// <param name="failed">请求失败的回调</param>
that.send("GET", url, refer, data, responseType, done, failed, appendatt);
return that.send("GET", url, refer, data, responseType, done, failed, appendatt);
};
this.sendPost = function (url, refer, data, responseType, done, failed, appendatt) {
that.send("POST", url, refer, data, responseType, done, failed, appendatt);
var args = [].slice.call(arguments);
args.unshift("POST");
return that.send.apply(this, args);
};
document.addEventListener("ajaxproxyfinished", function (e) {

View File

@ -3,6 +3,7 @@
var mp = require("./widget_message_popup.js");
var query = require("../otn/queryticket.js");
var data = require("../data.js");
var passenger = require("../otn/passenger.js");
var initPassengerEditor = function () {
//UI组件
@ -51,6 +52,24 @@
e.stopPropagation();
e.preventDefault();
});
uiDlg.find("label").click(function (e) {
//设置
var ele = $(e.target);
var ck = ele.find(":checkbox");
if (ck.length) {
ck[0].checked = !ck[0].checked;
ck.change();
}
var rad = ele.find(":radio");
if (rad.length) {
rad[0].checked = true;
rad.change();
}
e.preventDefault();
e.stopPropagation();
return false;
});
var currentSearchKey = null;
var currentList = null;
@ -84,6 +103,22 @@
uiDlg.find("button.passenger-pager-prev").prop("disabled", currentPageIndex < 2);
uiDlg.find("button.passenger-pager-next").prop("disabled", totalpage - 1 < currentPageIndex);
};
var addPassenger = function (type, name, idtype, id, countryCode) {
if (!sessmgr.isLogined) {
mp.showMessagePopup("error", "您还没有登录哦!");
return;
}
var def = passenger.fastAddPassenger.apply(this, [].slice.call(arguments));
def.fail(function (msg) {
mp.showMessagePopup("error", msg);
});
def.done(function (p) {
if (exports.addPassengerToList(p))
mp.showMessagePopup("error", "联系人已经添加成功!");
});
};
uiDlg.find("button.passenger-pager-prev").click(function () {
currentPageIndex--;
renderPage();
@ -145,6 +180,7 @@
sessmgr.on("sessionChanged", resetList);
sessmgr.on("currentProfileChanged", resetList);
sessmgr.on("addPassenger", performSearch);
exports.addPassengerToList = function (p) {
var cp = sessmgr.currentProfile;
@ -272,7 +308,7 @@
container.append(listTpl(cp.selectedTrain));
}
};
var filterList = function() {
var filterList = function () {
var key = inputObj.val();
if (!key) {
queryErrorRow.nextAll().show();
@ -302,7 +338,7 @@
exports.addTrainToList(s);
this.value = "";
}
}).on("input", function() {
}).on("input", function () {
filterList();
});