function.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. /**
  2. * File: function.js
  3. * User: Baoxu
  4. * Date: 16/3/8
  5. * Time: 23:55
  6. * Desc: 通用js方法
  7. */
  8. /*****************************************************************/
  9. /** 函数执行起点 **/
  10. /*****************************************************************/
  11. addLoadEvent(todo);
  12. /**
  13. * 页面加载完成之后需要立即执行的函数或者语句
  14. * @name todo
  15. */
  16. function todo() {
  17. bindEvent();
  18. }
  19. /**
  20. * 事件的全局委派
  21. * @name bindEvent
  22. */
  23. function bindEvent() {
  24. //全局点击事件的代理委派
  25. EventUtil.addHandler(document, "click", function (event) {
  26. event = EventUtil.getEvent(event);
  27. var target = EventUtil.getTarget(event);
  28. var event_tag = target.getAttribute("data-event-tag");
  29. switch (event_tag) {
  30. case "et_login_btn":
  31. //用户点击登陆按钮
  32. doLogin();
  33. break;
  34. case "et_logout_btn":
  35. //用户点击注销按钮
  36. doLogout();
  37. break;
  38. case "et_spider_book_btn":
  39. //管理员点击通过ISBN码抓取图书信息按钮
  40. getBookInfoByISBN();
  41. break;
  42. case "et_apply_book_btn":
  43. //用户点击申请借阅按钮
  44. applyBook(target);
  45. break;
  46. case "et_loan_book_btn":
  47. //管理员点击借阅管理里面的统一借阅按钮
  48. EventUtil.preventDefault(event);
  49. loanBook(target);
  50. break;
  51. case "et_return_book_btn":
  52. //管理员点击借阅管理里面的统一借阅按钮
  53. EventUtil.preventDefault(event);
  54. returnBook(target);
  55. break;
  56. case "et_renew_book_btn":
  57. //管理员点击借阅管理里面的统一借阅按钮
  58. EventUtil.preventDefault(event);
  59. renewBook(target);
  60. break;
  61. }
  62. });
  63. }
  64. /**
  65. * 异步用户登录操作
  66. * @name doLogin
  67. * @returns {boolean}
  68. */
  69. function doLogin() {
  70. var form = document.loginForm, mail = form.nav_email.value, pass = form.nav_password.value;
  71. if (!form["nav_email"] || !form["nav_password"]) {
  72. return false;
  73. }
  74. //登录
  75. var verifyUrl = "../common/login.php?mail=" + mail + "@corp.netease.com&password=" + pass;
  76. $.getJSON(verifyUrl, function (json) {
  77. if (json.status == 1) {
  78. //登录成功后改写登陆框部分
  79. $("#loginForm").addClass("f-dn");
  80. $("#loginSuccess").removeClass("f-dn");
  81. var displayNameSpan = $("span#displayUserName");
  82. if (json["name"]) {
  83. displayNameSpan.text(json["name"]);
  84. } else {
  85. displayNameSpan.text(json["mail"].slice(0, json["mail"].indexOf("@")));
  86. }
  87. document.location.reload();
  88. } else {
  89. alert("用户名或密码错误,请重试。");
  90. }
  91. });
  92. return true;
  93. }
  94. /**
  95. * 注销功能函数
  96. * @name doLogout
  97. */
  98. function doLogout() {
  99. //注销
  100. var verifyUrl = "../common/logout.php";
  101. $.getJSON(verifyUrl, function (json) {
  102. if (json.status == 1) {
  103. //alert("注销成功");
  104. //登录成功后改写登陆框部分
  105. $("#loginForm").removeClass("f-dn");
  106. $("#loginSuccess").addClass("f-dn");
  107. //注销之后返回首页
  108. window.location.href = "../home";
  109. }
  110. });
  111. }
  112. /**
  113. * 通过ISBN号获取图书信息,信息来源是豆瓣开放平台
  114. * @name getBookInfoByISBN
  115. */
  116. function getBookInfoByISBN() {
  117. var spiderInfoLoad = $("p#spider-info-loading");
  118. var spiderInfoError = $("p#spider-info-error");
  119. var spiderInfoOk = $("p#spider-info-ok");
  120. //显示工作状态,进行中
  121. spiderInfoLoad.removeClass("f-dn");
  122. spiderInfoError.addClass("f-dn");
  123. spiderInfoOk.addClass("f-dn");
  124. //Ajax请求抓取
  125. var isbn = $("#appendedInput").val();
  126. //先判断拟抓取的ISBN是否已经存在
  127. $.getJSON("../common/get_isbn_exist.php?isbn13=" + isbn, function (data) {
  128. if (!data["exists"]) {
  129. $.getJSON("../common/get_book_info.php?isbn=" + isbn, function (json) {
  130. if (json["title"]) {
  131. //显示工作状态,成功
  132. spiderInfoOk.removeClass("f-dn");
  133. spiderInfoLoad.addClass("f-dn");
  134. spiderInfoError.addClass("f-dn");
  135. //将tags转换为以逗号分隔的形式
  136. var tagsString = "";
  137. for (var i = 0; i < json["tags"].length - 1; i++) {
  138. tagsString += json["tags"][i]["name"] + ",";
  139. }
  140. tagsString += json["tags"][json["tags"].length - 1]["name"];
  141. //标准化日期字符串
  142. var e = new RegExp("[0-9][0-9][0-9][0-9]", "g");
  143. var pubYear = e.exec(json["pubdate"]);
  144. //抓取信息回显到表单
  145. $("input#title").val(json["title"]);
  146. $("input#subtitle").val(json["subtitle"]);
  147. $("input#origin_title").val(json["origin_title"]);
  148. $("input#pubdate").val(pubYear);
  149. $("input#author").val(json["author"]);
  150. $("input#translator").val(json["translator"]);
  151. $("input#publisher").val(json["publisher"]);
  152. $("input#image").val(json["images"]["large"]);
  153. $("textarea#summary").text(json["summary"]);
  154. $("input#pages").val(json["pages"]);
  155. $("input#tags").val(tagsString);
  156. $("input#isbn10").val(json["isbn10"]);
  157. $("input#isbn13").val(json["isbn13"]);
  158. $("img#spider_book_img").attr("src", json["images"]["medium"]);
  159. } else {
  160. //显示工作状态,失败
  161. spiderInfoError.removeClass("f-dn");
  162. spiderInfoLoad.addClass("f-dn");
  163. spiderInfoOk.addClass("f-dn");
  164. }
  165. });
  166. } else {
  167. alert("这本书已存在,请不要重复添加!");
  168. }
  169. });
  170. }
  171. /**
  172. * 用户注册的时候检查填写的邮箱是否已经被注册
  173. * @param e 引用的input输入框
  174. */
  175. function checkRegistMail(e) {
  176. var mailExistInfo = $("#js-regist-mail-exist");
  177. $.getJSON("../common/get_mail_exist.php?mail=" + e.value, function (json) {
  178. if (json["exists"] == 1) {
  179. e.focus();
  180. mailExistInfo.removeClass("f-dn");
  181. } else {
  182. mailExistInfo.addClass("f-dn");
  183. }
  184. });
  185. }
  186. /**
  187. * 用户注册的时候,检查用户两遍输入的密码是否一致
  188. * @param e 引用的password2输入框
  189. */
  190. function checkRegistPassword(e) {
  191. var passNotEqualInfo = $("#js-regist-pass-not-equal");
  192. if ($("#password").val() != $("#password2").val()) {
  193. passNotEqualInfo.removeClass("f-dn");
  194. e.focus();
  195. } else {
  196. passNotEqualInfo.addClass("f-dn");
  197. }
  198. }
  199. /**
  200. * 抓取书籍的时候,验证填入的ISBN13在数据库中是否存在
  201. * @param isbn 要检查的ISBN号
  202. */
  203. function checkBookIsbn13(isbn) {
  204. //这里要用同步请求,不然无法赋值
  205. $.ajax({
  206. type: "GET",
  207. url: "../common/get_isbn_exist.php?isbn13=" + isbn,
  208. async: "false",
  209. dataType: "json",
  210. success: function (json) {
  211. return json["exists"];
  212. }
  213. });
  214. }
  215. /**
  216. * 用户点击申请借书的按钮之后,异步请求申请借书接口,在数据库中添加申请借书的记录
  217. * @param e 被点击的对象
  218. */
  219. function applyBook(e) {
  220. var applyBookInfo = $("#js-apply-book-info");
  221. var bookId = e.getAttribute("data-book-id");
  222. $.getJSON("../common/do_apply_book.php?bookId=" + bookId, function (json) {
  223. switch (json["apply"]) {
  224. case 0:
  225. applyBookInfo.removeClass("text-success");
  226. applyBookInfo.addClass("text-error");
  227. applyBookInfo.text("写入数据库失败,请联系系统管理员");
  228. break;
  229. case 1:
  230. applyBookInfo.removeClass("text-error");
  231. applyBookInfo.addClass("text-success");
  232. applyBookInfo.text("申请成功,请找图书管理员审核");
  233. break;
  234. case 2:
  235. applyBookInfo.removeClass("text-success");
  236. applyBookInfo.addClass("text-error");
  237. applyBookInfo.text("已经申请了,请不要重复申请");
  238. break;
  239. }
  240. });
  241. }
  242. /**
  243. * 管理员批准用户申请借书的请求,借出书籍
  244. * @param e 被点击的对象,从中获取书籍ID和借阅ID
  245. */
  246. function loanBook(e) {
  247. var bookId = e.getAttribute("data-book-id");
  248. var borrowId = e.getAttribute("data-borrow-id");
  249. $.getJSON("../common/do_loan_book.php?bookId=" + bookId + "&borrowId=" + borrowId, function (json) {
  250. if (json["state"] == 1) {
  251. alert("操作成功,请确认已将书籍交给借书人。");
  252. document.location.reload();
  253. } else {
  254. alert("操作失败,请联系管理员");
  255. }
  256. });
  257. }
  258. /**
  259. * 用户还回书,管理员确认入库
  260. * @param e 被点击的对象,从中获取书籍ID和借阅ID
  261. */
  262. function returnBook(e) {
  263. var bookId = e.getAttribute("data-book-id");
  264. var borrowId = e.getAttribute("data-borrow-id");
  265. $.getJSON("../common/do_return_book.php?bookId=" + bookId + "&borrowId=" + borrowId, function (json) {
  266. if (json["state"] == 1) {
  267. alert("操作成功,请确认已将图书收回");
  268. document.location.reload();
  269. } else {
  270. alert("操作失败,请联系管理员");
  271. }
  272. });
  273. }
  274. /**
  275. * 设置续借
  276. * @param e 被点击的对象,从中获取书籍ID和借阅ID
  277. */
  278. function renewBook(e) {
  279. var bookId = e.getAttribute("data-book-id");
  280. var borrowId = e.getAttribute("data-borrow-id");
  281. $.getJSON("../common/do_renew_book.php?bookId=" + bookId + "&borrowId=" + borrowId, function (json) {
  282. if (json["state"] == 1) {
  283. alert("续借成功");
  284. document.location.reload();
  285. } else {
  286. alert("操作失败");
  287. }
  288. });
  289. }