common.js 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. $.extend($, {
  2. 'alert': function(options) {
  3. if (Object.prototype.toString.call(options) == '[object String]') {
  4. options = {
  5. 'content': options
  6. };
  7. }
  8. var options = $.extend({
  9. 'content' : '',
  10. 'title' : '提示',
  11. 'init' : function(e, dom){},
  12. 'callback' : function(e, dom){},
  13. 'size' : '',
  14. 'bgcolor' : '',
  15. 'btntext' : '确认',
  16. 'btnbg' : 'btn-primary',
  17. 'btncancel' : false
  18. }, options);
  19. var id = 'msgbox_id_' + Math.floor(Math.random() * 100000000);
  20. var btncancel = options.btncancel ? '<button type="button" class="btn btn-sm btn-default" data-dismiss="modal" aria-label="Close">取消</button>' : '';
  21. var html = `<div class="modal fade" tabindex="-1" role="dialog" id="${id}">
  22. <div class="modal-dialog ${options.size}" role="document">
  23. <div class="modal-content ${options.bgcolor}">
  24. <div class="modal-header">
  25. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  26. <span aria-hidden="true">&times;</span>
  27. </button>
  28. <h4 class="modal-title">${options.title}</h4>
  29. </div>
  30. <div class="modal-body">${options.content}</div>
  31. <div class="modal-footer">
  32. <button type="button" class="btn btn-sm ${options.btnbg}">${options.btntext}</button> ${btncancel}
  33. </div>
  34. </div>
  35. </div>
  36. </div>`;
  37. var jq = $(html);
  38. $(document.body).append(jq);
  39. $('.btn-primary', jq).click(function(e){
  40. if (options.callback && options.callback(jq) !== false) {
  41. jq.modal('hide');
  42. }
  43. });
  44. jq.on('show.bs.modal', function(e){
  45. if (options.init) {
  46. options.init(jq);
  47. }
  48. });
  49. jq.on('hidden.bs.modal', function(e){
  50. $(this).remove();
  51. });
  52. jq.modal('show');
  53. }
  54. });
  55. function time2str(timestamp, cnFormat) {
  56. var obj = new Date(timestamp * 1000);
  57. if(cnFormat) {
  58. var Y = obj.getFullYear(),
  59. m = obj.getMonth() + 1,
  60. d = obj.getDate(),
  61. H = obj.getHours(),
  62. i = obj.getMinutes(),
  63. s = obj.getSeconds();
  64. return Y
  65. + '-' + (m < 10 ? '0'+m : m)
  66. + '-' + (d < 10 ? '0'+d : d)
  67. + ' ' + (H < 10 ? '0'+H : H)
  68. + ':' + (i < 10 ? '0'+i : i)
  69. + ':' + (s < 10 ? '0'+s : s);
  70. } else {
  71. return obj.toLocaleString();
  72. }
  73. }
  74. function size2str(size) {
  75. if(size < 1024) {
  76. return size + '字节';
  77. } else if(size < 1024*1024) {
  78. return numberRound(size / 1024, 2) + 'K';
  79. } else if(size < 1024*1024*1024) {
  80. return numberRound(size / 1024 / 1024, 2) + 'M';
  81. } else {
  82. return numberRound(size / 1024 / 1024 / 1024, 2) + 'G';
  83. }
  84. }
  85. function numberFormat(n, len) {
  86. n = parseInt(n);
  87. len = len == 4 ? 4 : 3;
  88. if(n == NaN) {
  89. return 0;
  90. }
  91. var sign = n < 0 ? '-' : '';
  92. var str = '' + Math.abs(n), ret = '';
  93. var mod = str.length % len;
  94. if(mod > 0) {
  95. ret += str.substr(0, mod) + ',';
  96. }
  97. for(var i=mod; i<str.length; i+=len) {
  98. ret += str.substr(i, len) + ',';
  99. }
  100. return sign + ret.substr(0, ret.length - 1);
  101. }
  102. function numberRound(n, len) {
  103. n = parseFloat(n);
  104. len = len || 2;
  105. if(n == NaN || len < 1) {
  106. return 0;
  107. }
  108. var x = Math.pow(10, len);
  109. var str = '' + Math.round(n * x) / x;
  110. var pos = str.indexOf('.');
  111. var declen = pos == -1 ? 0 : str.length - pos - 1;
  112. if (declen == len) {
  113. return str;
  114. }
  115. if (pos == -1) {
  116. str += '.';
  117. }
  118. for (var i=declen; i<len; i++) {
  119. str += '0';
  120. }
  121. return str;
  122. }
  123. function pager(options) {
  124. options = $.extend({
  125. 'id': '',
  126. 'total': 0,
  127. 'page_size': 20,
  128. 'page_num': 1,
  129. 'bar_size': 9,
  130. 'show_prev_next': true,
  131. 'show_first_last': true,
  132. 'callback': function(page) {}
  133. }, options);
  134. if (options.id == '') {
  135. return;
  136. }
  137. if (options.bar_size % 2 == 0) {
  138. options.bar_size++;
  139. }
  140. var bar_side = (options.bar_size-1) / 2;
  141. var pages = Math.max(Math.ceil(parseInt(options.total) / parseInt(options.page_size)), 1);
  142. if (options.page_num < 1 || options.page_num > pages) {
  143. return;
  144. }
  145. var html = '<nav><ul class="pagination"><li class="disabled"><a href="#">共'+ options.total +'条'+ pages +'页</a></li>';
  146. if (options.show_first_last) {
  147. if (options.page_num == 1) {
  148. html += '<li class="disabled"><a class="page-link" href="#" data-value="1"><i class="glyphicon glyphicon-step-backward"></i></a></li>';
  149. } else {
  150. html += '<li><a class="page-link" href="#" data-value="1"><i class="glyphicon glyphicon-step-backward"></i></a></li>';
  151. }
  152. }
  153. if (options.show_prev_next) {
  154. if (options.page_num > 1) {
  155. html += '<li><a class="page-link" href="#" data-value="' + (options.page_num-1) + '"><i class="glyphicon glyphicon-chevron-left"></i></a></li>';
  156. } else {
  157. html += '<li class="disabled"><a class="page-link" href="#" data-value="1"><i class="glyphicon glyphicon-chevron-left"></i></a></li>';
  158. }
  159. }
  160. if (pages <= options.bar_size) {
  161. for (var i=1; i<=pages; i++) {
  162. if (i == options.page_num) {
  163. html += '<li class="disabled"><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  164. } else {
  165. html += '<li><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  166. }
  167. }
  168. } else if (options.page_num <= bar_side + 1) {
  169. for (var i=1; i<=options.bar_size; i++) {
  170. if (i == options.page_num) {
  171. html += '<li class="disabled"><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  172. } else {
  173. html += '<li><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  174. }
  175. }
  176. } else if (options.page_num >= pages - bar_side) {
  177. for (var i=pages-options.bar_size+1; i<=pages; i++) {
  178. if (i == options.page_num) {
  179. html += '<li class="disabled"><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  180. } else {
  181. html += '<li><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  182. }
  183. }
  184. } else {
  185. for (var i=options.page_num-bar_side, j=0; j<options.bar_size; i++, j++) {
  186. if (i == options.page_num) {
  187. html += '<li class="disabled"><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  188. } else {
  189. html += '<li><a class="page-link" href="#" data-value="' + i + '">' + i + '</a></li>';
  190. }
  191. }
  192. }
  193. if (options.show_prev_next) {
  194. if (options.page_num < pages) {
  195. html += '<li><a class="page-link" href="#" data-value="' + (options.page_num+1) + '"><i class="glyphicon glyphicon-chevron-right"></i></a></li>';
  196. } else {
  197. html += '<li class="disabled"><a class="page-link" href="#" data-value="' + pages + '"><i class="glyphicon glyphicon-chevron-right"></i></a></li>';
  198. }
  199. }
  200. if (options.show_first_last) {
  201. if (options.page_num == pages) {
  202. html += '<li class="disabled"><a class="page-link" href="#" data-value="' + pages + '"><i class="glyphicon glyphicon-step-forward"></i></a></li>';
  203. } else {
  204. html += '<li><a class="page-link" href="#" data-value="' + pages + '"><i class="glyphicon glyphicon-step-forward"></i></a></a></li>';
  205. }
  206. }
  207. html += '</ul></nav>';
  208. var jq = $('#' + options.id);
  209. jq.html(html);
  210. $('a', jq).click(function(){
  211. var p = $(this).attr('data-value');
  212. if (!p || p == "") {
  213. return false;
  214. }
  215. options.callback(parseInt(p));
  216. return false;
  217. });
  218. }