index.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. var userArray = new Array();
  2. var cb = checkBro();
  3. // var client = new ZeroClipboard();
  4. var cookieName = "ysmail"; //认证密匙保存cookie名称
  5. $(function () {
  6. setSidebarHelght();
  7. checkBro();
  8. newCheck();
  9. var authKey = $.cookie(cookieName);
  10. if (authKey) {
  11. $.YSM.authKey = authKey;
  12. getUsers();
  13. } else {
  14. login();
  15. }
  16. $.YSM.errCallBack = errcall;
  17. });
  18. function login() {
  19. $.YSM.ua(function (data) {
  20. $.YSM.authKey = data.data;
  21. getUsers();
  22. let date = new Date();
  23. date.setTime(date.getTime() + 7200000);
  24. $.cookie(cookieName, data.data, {expires: date});
  25. });
  26. }
  27. function checkBro() {
  28. if (navigator.appName == "Microsoft Internet Explorer") {
  29. if (navigator.appVersion.match(/4./i) == '4.') {
  30. return true;
  31. } else {
  32. return false;
  33. }
  34. }
  35. }
  36. /**
  37. * 设置左边区域高度
  38. */
  39. function setSidebarHelght() {
  40. $(".sidebar").css("height", $(window).height() - $(".container-fluid").height());
  41. }
  42. /**
  43. * 设置右边邮件显示列表区域宽度
  44. */
  45. function setMailcWidth() {
  46. $(".mailc").css("width", $(window).width() - $(".sidebar").width() - 15 * 2 - 90);
  47. }
  48. /**
  49. * 获取邮件账户列表
  50. */
  51. function getUsers() {
  52. $.YSM.ul(function (data) {
  53. userArray = data.data;
  54. var dom = $("#menu");
  55. var str = "";
  56. // var keyList = [];
  57. for (i in userArray) {
  58. var name = userArray[i];
  59. var key = proName(name);
  60. str += "<li class='dropdown' id='li" + key + "'>" +
  61. "<button type='button' id='dropdownMenu" + key + "'class='btn btn-link' style=\"padding: 6px 3px;\" onclick=\"liClick('" + name + "')\">" + name + "&nbsp;<span id=\"badge" + key + "\" class=\"" + (cb ? "" : "badge") + "\"></span></button><span data-toggle='dropdown' style='padding:1px 0' class='caret'></span>" +
  62. "<ul class='dropdown-menu pull-right' style='min-width:0px' role='menu' aria-labelledby='dropdownMenu" + key + "'>" +
  63. "<li role='presentation'><a class='zero' data-clipboard-text='" + name + "' >复制</a></li>" +
  64. "<li role='presentation'><a role='menuitem' tabindex='-1' href=\"javascript:del('" + name + "')\">删除</a></li>" +
  65. "</ul>" +
  66. "</li>"
  67. }
  68. dom.html(str);
  69. setMailcWidth();
  70. var clipboard = new ClipboardJS('.zero', {
  71. target: function (trigger) {
  72. return $(trigger).attr("clipboard-text");
  73. }
  74. });
  75. clipboard.on('success', function(e) {
  76. // console.info('Action:', e.action);
  77. // console.info('Text:', e.text);
  78. // console.info('Trigger:', e.trigger);
  79. // alert(e.text+"已复制!");
  80. succTips(e.text + " 已复制。");
  81. e.clearSelection();
  82. });
  83. // client = new ZeroClipboard($(".zero"));
  84. // console.log(client);
  85. // client.on( "ready", function( readyEvent ) {
  86. // // alert( "ZeroClipboard SWF is ready!" );
  87. // console.log(client);
  88. // succTips(readyEvent + " 已复制。");
  89. // client.on( "aftercopy", function(event) {
  90. // //在chrome下无法隐藏,处理一下.
  91. // var data = event.data["text/plain"];
  92. // $("#li"+proName(data)).removeClass("open");
  93. // succTips(data + " 已复制。");
  94. // } );
  95. // });
  96. //初始化账号复制
  97. });
  98. }
  99. function proName(name) {
  100. return name.replace(/@/, '').replace(/\./, ''); //去掉用户名中的@符号
  101. }
  102. /**
  103. * 随机获取用户
  104. */
  105. function getUser() {
  106. disableGetUser();
  107. $.YSM.u(function (data) {
  108. enableGetUser();
  109. getUsers();
  110. });
  111. }
  112. function liClick(v) {
  113. $("#badge" + proName(v)).text(""); //点击时将未读提示数设置为空
  114. succTips("数据读取中...");
  115. getMailData(v);
  116. }
  117. /**
  118. * 获取邮件数据
  119. * @param name 用户名
  120. * @returns
  121. */
  122. function getMailData(name) {
  123. $.YSM.ml(function (data) {
  124. display(data.data);
  125. }, name);
  126. }
  127. function display(array) {
  128. var dom = $("#accordion");
  129. var str = "";
  130. for (i in array) {
  131. var v = array[i];
  132. str += "<div class=\"panel panel-default\">" +
  133. "<div class=\"panel-heading\">" +
  134. "<h4 class=\"panel-title\">" +
  135. "<a data-toggle=\"collapse\" data-toggle=\"collapse\" data-parent=\"#accordion\" href=\"#collapse" + i + "\">" +
  136. proHtml(v.subject) +
  137. "</a>" +
  138. "</h4>" +
  139. "</div>" +
  140. "<div id=\"collapse" + i + "\" class=\"panel-collapse collapse\">" +
  141. "<div style=\"padding:10px\">发件人:" + proHtml(v.from) + "<br/>时间:" + v.date + "</div>" +
  142. "<div class=\"panel-body\">" +
  143. proHtml(v.content) +
  144. "</div>" +
  145. "</div>" +
  146. "</div>";
  147. }
  148. if (str == "") {
  149. succTips("暂无邮件.");
  150. } else {
  151. dom.html(str);
  152. }
  153. }
  154. /**
  155. * 双引号字符转义
  156. * @param str 要转换的文本
  157. * @returns
  158. */
  159. function proHtml(str) {
  160. return str;
  161. }
  162. /**
  163. * 删除邮箱账号
  164. * @param name
  165. */
  166. function del(name) {
  167. $.YSM.ud(getUsers, name);
  168. }
  169. /**
  170. * 检查是否有新邮件
  171. */
  172. function newCheck() {
  173. for (i in userArray) {
  174. var v = userArray[i];
  175. check(v);
  176. }
  177. setTimeout(newCheck, 10000);
  178. }
  179. function check(name) {
  180. $.YSM.mcu(function (data) {
  181. var coun = data.data;
  182. if (coun > 0) {
  183. $("#badge" + proName(name)).text(coun);
  184. }
  185. }, name);
  186. }
  187. /**
  188. * 禁用获取账号按钮
  189. */
  190. function disableGetUser() {
  191. var dom = $("#getuser");
  192. dom.attr("disabled", "disabled");
  193. dom.text("正在获取..");
  194. }
  195. /**
  196. * 启用获取账号按钮
  197. */
  198. function enableGetUser() {
  199. var dom = $("#getuser");
  200. dom.removeAttr("disabled", "");
  201. dom.text("获取新账号");
  202. }
  203. /**
  204. * 成功提示
  205. * @param message 提示内容
  206. */
  207. function succTips(message) {
  208. $("#accordion").html("<div class=\"alert alert-success\">" + message + "</div>");
  209. }
  210. /**
  211. * 错误回调
  212. */
  213. function errcall(data) {
  214. if (data.ret == 1023) {
  215. enableGetUser();
  216. } else {
  217. if (data.ret == 1024) {
  218. getUsers();
  219. }
  220. }
  221. errTips(data.msg);
  222. }
  223. /**
  224. * 错误信息提示
  225. * @param message 提示内容
  226. */
  227. function errTips(message) {
  228. $("#accordion").html("<div class=\"alert alert-danger\">" + message + "</div>");
  229. }