learun-ui.js 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072
  1. $(function () {
  2. window.onload = function () {
  3. Loading(true);
  4. }
  5. $(".ui-filter-text").click(function () {
  6. if ($(this).next('.ui-filter-list').is(":hidden")) {
  7. $(this).css('border-bottom-color', '#fff');
  8. $(".ui-filter-list").slideDown(10);
  9. $(this).addClass("active")
  10. } else {
  11. $(this).css('border-bottom-color', '#ccc');
  12. $(".ui-filter-list").slideUp(10);
  13. $(this).removeClass("active")
  14. }
  15. });
  16. $(".profile-nav li").click(function () {
  17. $(".profile-nav li").removeClass("active");
  18. $(".profile-nav li").removeClass("hover");
  19. $(this).addClass("active")
  20. }).hover(function () {
  21. if (!$(this).hasClass("active")) {
  22. $(this).addClass("hover")
  23. }
  24. }, function () {
  25. $(this).removeClass("hover")
  26. })
  27. })
  28. Loading = function (bool, text) {
  29. var ajaxbg = top.$("#loading_background,#loading_manage");
  30. if (bool) {
  31. ajaxbg.show();
  32. } else {
  33. if (top.$("#loading_manage").attr('istableloading') == undefined) {
  34. ajaxbg.hide();
  35. top.$(".ajax-loader").remove();
  36. }
  37. }
  38. if (!!text) {
  39. top.$("#loading_manage").html(text);
  40. } else {
  41. top.$("#loading_manage").html("正在拼了命为您加载…");
  42. }
  43. top.$("#loading_manage").css("left", (top.$('body').width() - top.$("#loading_manage").width()) / 2 - 54);
  44. top.$("#loading_manage").css("top", (top.$('body').height() - top.$("#loading_manage").height()) / 2);
  45. }
  46. tabiframeId = function () {
  47. var iframeId = top.$(".LRADMS_iframe:visible").attr("id");
  48. return iframeId;
  49. }
  50. $.fn.ComboBox = function (options) {
  51. //options参数:description,height,width,allowSearch,url,param,data
  52. var $select = $(this);
  53. if (!$select.attr('id')) {
  54. return false;
  55. }
  56. if (options) {
  57. if ($select.find('.ui-select-text').length == 0) {
  58. var $select_html = "";
  59. $select_html += "<div class=\"ui-select-text\" style='color:#999;'>" + options.description + "</div>";
  60. $select_html += "<div class=\"ui-select-option\">";
  61. $select_html += "<div class=\"ui-select-option-content\" style=\"max-height: " + options.height + "\">" + $select.html() + "</div>";
  62. if (options.allowSearch) {
  63. $select_html += "<div class=\"ui-select-option-search\"><input type=\"text\" class=\"form-control\" placeholder=\"搜索关键字\" /><span class=\"input-query\" title=\"Search\"><i class=\"fa fa-search\"></i></span></div>";
  64. }
  65. $select_html += "</div>";
  66. $select.html('');
  67. $select.append($select_html);
  68. }
  69. }
  70. var $option_html = $($("<p>").append($select.find('.ui-select-option').clone()).html());
  71. $option_html.attr('id', $select.attr('id') + '-option');
  72. $select.find('.ui-select-option').remove();
  73. if ($option_html.length > 0) {
  74. $('body').find('#' + $select.attr('id') + '-option').remove();
  75. }
  76. $('body').prepend($option_html);
  77. var $option = $("#" + $select.attr('id') + "-option");
  78. if (options.url != undefined) {
  79. $option.find('.ui-select-option-content').html('');
  80. $.ajax({
  81. url: options.url,
  82. data: options.param,
  83. type: "GET",
  84. dataType: "json",
  85. async: false,
  86. success: function (data) {
  87. options.data = data;
  88. var json = data;
  89. loadComboBoxView(json);
  90. },
  91. error: function (XMLHttpRequest, textStatus, errorThrown) {
  92. dialogMsg(errorThrown, -1);
  93. }
  94. });
  95. }
  96. else if (options.data != undefined) {
  97. var json = options.data;
  98. loadComboBoxView(json);
  99. }
  100. else {
  101. $option.find('li').css('padding', "0 5px");
  102. $option.find('li').click(function (e) {
  103. var data_text = $(this).text();
  104. var data_value = $(this).attr('data-value');
  105. $select.attr("data-value", data_value).attr("data-text", data_text);
  106. $select.find('.ui-select-text').html(data_text).css('color', '#000');
  107. $option.slideUp(150);
  108. $select.trigger("change");
  109. e.stopPropagation();
  110. }).hover(function (e) {
  111. if (!$(this).hasClass('liactive')) {
  112. $(this).toggleClass('on');
  113. }
  114. e.stopPropagation();
  115. });
  116. }
  117. function loadComboBoxView(json, searchValue, m) {
  118. if (json.length > 0) {
  119. var $_html = $('<ul></ul>');
  120. if (options.description) {
  121. $_html.append('<li data-value="">' + options.description + '</li>');
  122. }
  123. $.each(json, function (i) {
  124. var row = json[i];
  125. var title = row[options.title];
  126. if (title == undefined) {
  127. title = "";
  128. }
  129. if (searchValue != undefined) {
  130. if (row[m.text].indexOf(searchValue) != -1) {
  131. $_html.append('<li data-value="' + row[options.id] + '" title="' + title + '">' + row[options.text] + '</li>');
  132. }
  133. }
  134. else {
  135. $_html.append('<li data-value="' + row[options.id] + '" title="' + title + '">' + row[options.text] + '</li>');
  136. }
  137. });
  138. $option.find('.ui-select-option-content').html($_html);
  139. $option.find('li').css('padding', "0 5px");
  140. $option.find('li').click(function (e) {
  141. var data_text = $(this).text();
  142. var data_value = $(this).attr('data-value');
  143. $select.attr("data-value", data_value).attr("data-text", data_text);
  144. $select.find('.ui-select-text').html(data_text).css('color', '#000');
  145. $option.slideUp(150);
  146. $select.trigger("change");
  147. e.stopPropagation();
  148. }).hover(function (e) {
  149. if (!$(this).hasClass('liactive')) {
  150. $(this).toggleClass('on');
  151. }
  152. e.stopPropagation();
  153. });
  154. }
  155. }
  156. //操作搜索事件
  157. if (options.allowSearch) {
  158. $option.find('.ui-select-option-search').find('input').bind("keypress", function (e) {
  159. if (event.keyCode == "13") {
  160. var value = $(this).val();
  161. loadComboBoxView($(this)[0].options.data, value, $(this)[0].options);
  162. }
  163. }).focus(function () {
  164. $(this).select();
  165. })[0]["options"] = options;
  166. }
  167. $select.unbind('click');
  168. $select.bind("click", function (e) {
  169. if ($select.attr('readonly') == 'readonly' || $select.attr('disabled') == 'disabled') {
  170. return false;
  171. }
  172. $(this).addClass('ui-select-focus');
  173. if ($option.is(":hidden")) {
  174. $select.find('.ui-select-option').hide();
  175. $('.ui-select-option').hide();
  176. var left = $select.offset().left;
  177. var top = $select.offset().top + 29;
  178. var width = $select.width();
  179. if (options.width) {
  180. width = options.width;
  181. }
  182. if (($option.height() + top) < $(window).height()) {
  183. $option.slideDown(150).css({ top: top, left: left, width: width });
  184. } else {
  185. var _top = (top - $option.height() - 32)
  186. $option.show().css({ top: _top, left: left, width: width });
  187. $option.attr('data-show', true);
  188. }
  189. $option.css('border-top', '1px solid #ccc');
  190. $option.find('li').removeClass('liactive');
  191. $option.find('[data-value=' + $select.attr('data-value') + ']').addClass('liactive');
  192. $option.find('.ui-select-option-search').find('input').select();
  193. } else {
  194. if ($option.attr('data-show')) {
  195. $option.hide();
  196. } else {
  197. $option.slideUp(150);
  198. }
  199. }
  200. e.stopPropagation();
  201. });
  202. $(document).click(function (e) {
  203. var e = e ? e : window.event;
  204. var tar = e.srcElement || e.target;
  205. if (!$(tar).hasClass('form-control')) {
  206. if ($option.attr('data-show')) {
  207. $option.hide();
  208. } else {
  209. $option.slideUp(150);
  210. }
  211. $select.removeClass('ui-select-focus');
  212. e.stopPropagation();
  213. }
  214. });
  215. return $select;
  216. }
  217. $.fn.ComboBoxSetValue = function (value) {
  218. if ($.isNullOrEmpty(value)) {
  219. return;
  220. }
  221. var $select = $(this);
  222. var $option = $("#" + $select.attr('id') + "-option");
  223. $select.attr('data-value', value);
  224. var data_text = $option.find('ul').find('[data-value=' + value + ']').html();
  225. if (data_text) {
  226. $select.attr('data-text', data_text);
  227. $select.find('.ui-select-text').html(data_text).css('color', '#000');
  228. $option.find('ul').find('[data-value=' + value + ']').addClass('liactive')
  229. }
  230. return $select;
  231. }
  232. $.fn.ComboBoxTree = function (options) {
  233. //options参数:description,height,allowSearch,appendTo,click,url,param,method,icon
  234. var $select = $(this);
  235. if (!$select.attr('id')) {
  236. return false;
  237. }
  238. if ($select.find('.ui-select-text').length == 0) {
  239. var $select_html = "";
  240. $select_html += "<div class=\"ui-select-text\" style='color:#999;'>" + options.description + "</div>";
  241. $select_html += "<div class=\"ui-select-option\">";
  242. $select_html += "<div class=\"ui-select-option-content\" style=\"max-height: " + options.height + "\"></div>";
  243. if (options.allowSearch) {
  244. $select_html += "<div class=\"ui-select-option-search\"><input type=\"text\" class=\"form-control\" placeholder=\"搜索关键字\" /><span class=\"input-query\" title=\"Search\"><i class=\"fa fa-search\" title=\"按回车查询\"></i></span></div>";
  245. }
  246. $select_html += "</div>";
  247. $select.append($select_html);
  248. }
  249. var $option_html = $($("<p>").append($select.find('.ui-select-option').clone()).html());
  250. $option_html.attr('id', $select.attr('id') + '-option');
  251. $select.find('.ui-select-option').remove();
  252. if (options.appendTo) {
  253. $(options.appendTo).prepend($option_html);
  254. } else {
  255. $('body').prepend($option_html);
  256. }
  257. var $option = $("#" + $select.attr('id') + "-option");
  258. var $option_content = $("#" + $select.attr('id') + "-option").find('.ui-select-option-content');
  259. loadtreeview(options.url);
  260. function loadtreeview(url) {
  261. $option_content.treeview({
  262. onnodeclick: function (item) {
  263. $select.attr("data-value", item.id).attr("data-text", item.text);
  264. $select.find('.ui-select-text').html(item.text).css('color', '#000');
  265. $select.trigger("change");
  266. if (options.click) {
  267. options.click(item);
  268. }
  269. },
  270. height: options.height,
  271. url: url,
  272. param: options.param,
  273. method: options.method,
  274. description: options.description
  275. });
  276. }
  277. if (options.allowSearch) {
  278. $option.find('.ui-select-option-search').find('input').attr('data-url', options.url);
  279. $option.find('.ui-select-option-search').find('input').bind("keypress", function (e) {
  280. if (event.keyCode == "13") {
  281. var value = $(this).val();
  282. var url = changeUrlParam($option.find('.ui-select-option-search').find('input').attr('data-url'), "keyword", escape(value));
  283. loadtreeview(url);
  284. }
  285. }).focus(function () {
  286. $(this).select();
  287. });
  288. }
  289. if (options.icon) {
  290. $option.find('i').remove();
  291. $option.find('img').remove();
  292. }
  293. $select.find('.ui-select-text').unbind('click');
  294. $select.find('.ui-select-text').bind("click", function (e) {
  295. if ($select.attr('readonly') == 'readonly' || $select.attr('disabled') == 'disabled') {
  296. return false;
  297. }
  298. $(this).parent().addClass('ui-select-focus');
  299. if ($option.is(":hidden")) {
  300. $select.find('.ui-select-option').hide();
  301. $('.ui-select-option').hide();
  302. var left = $select.offset().left;
  303. var top = $select.offset().top + 29;
  304. var width = $select.width();
  305. if (options.width) {
  306. width = options.width;
  307. }
  308. if (($option.height() + top) < $(window).height()) {
  309. $option.slideDown(150).css({ top: top, left: left, width: width });
  310. } else {
  311. var _top = (top - $option.height() - 32);
  312. $option.show().css({ top: _top, left: left, width: width });
  313. $option.attr('data-show', true);
  314. }
  315. $option.css('border-top', '1px solid #ccc');
  316. if (options.appendTo) {
  317. $option.css("position", "inherit")
  318. }
  319. $option.find('.ui-select-option-search').find('input').select();
  320. } else {
  321. if ($option.attr('data-show')) {
  322. $option.hide();
  323. } else {
  324. $option.slideUp(150);
  325. }
  326. }
  327. e.stopPropagation();
  328. });
  329. $select.find('li div').click(function (e) {
  330. var e = e ? e : window.event;
  331. var tar = e.srcElement || e.target;
  332. if (!$(tar).hasClass('bbit-tree-ec-icon')) {
  333. $option.slideUp(150);
  334. e.stopPropagation();
  335. }
  336. });
  337. $(document).click(function (e) {
  338. var e = e ? e : window.event;
  339. var tar = e.srcElement || e.target;
  340. if (!$(tar).hasClass('bbit-tree-ec-icon') && !$(tar).hasClass('form-control')) {
  341. if ($option.attr('data-show')) {
  342. $option.hide();
  343. } else {
  344. $option.slideUp(150);
  345. }
  346. $select.removeClass('ui-select-focus');
  347. e.stopPropagation();
  348. }
  349. });
  350. return $select;
  351. }
  352. $.fn.ComboBoxTreeSetValue = function (value) {
  353. if (value == "") {
  354. return;
  355. }
  356. var $select = $(this);
  357. var $option = $("#" + $select.attr('id') + "-option");
  358. $select.attr('data-value', value);
  359. var data_text = $option.find('ul').find('[data-value=' + value + ']').html();
  360. if (data_text) {
  361. $select.attr('data-text', data_text);
  362. $select.find('.ui-select-text').html(data_text).css('color', '#000');
  363. $option.find('ul').find('[data-value=' + value + ']').parent().parent().addClass('bbit-tree-selected');
  364. }
  365. return $select;
  366. }
  367. $.fn.GetWebControls = function (keyValue) {
  368. var reVal = "";
  369. $(this).find('input,select,textarea,.ui-select').each(function (r) {
  370. var id = $(this).attr('id');
  371. var type = $(this).attr('type');
  372. switch (type) {
  373. case "checkbox":
  374. if ($("#" + id).is(":checked")) {
  375. reVal += '"' + id + '"' + ':' + '"1",';
  376. } else {
  377. reVal += '"' + id + '"' + ':' + '"0",';
  378. }
  379. break;
  380. case "select":
  381. var value = $("#" + id).attr('data-value');
  382. if (value == "") {
  383. value = "&nbsp;";
  384. }
  385. reVal += '"' + id + '"' + ':' + '"' + $.trim(value) + '",';
  386. break;
  387. case "selectTree":
  388. var value = $("#" + id).attr('data-value');
  389. if (value == "") {
  390. value = "&nbsp;";
  391. }
  392. reVal += '"' + id + '"' + ':' + '"' + $.trim(value) + '",';
  393. break;
  394. default:
  395. var value = $("#" + id).val();
  396. if (value == "") {
  397. value = "&nbsp;";
  398. }
  399. reVal += '"' + id + '"' + ':' + '"' + $.trim(value) + '",';
  400. break;
  401. }
  402. });
  403. reVal = reVal.substr(0, reVal.length - 1);
  404. if (!keyValue) {
  405. reVal = reVal.replace(/&nbsp;/g, '');
  406. }
  407. reVal = reVal.replace(/\\/g, '\\\\');
  408. reVal = reVal.replace(/\n/g, '\\n');
  409. var postdata = jQuery.parseJSON('{' + reVal + '}');
  410. //阻止伪造请求
  411. //if ($('[name=__RequestVerificationToken]').length > 0) {
  412. // postdata["__RequestVerificationToken"] = $('[name=__RequestVerificationToken]').val();
  413. //}
  414. return postdata;
  415. };
  416. $.fn.SetWebControls = function (data) {
  417. var $id = $(this)
  418. for (var key in data) {
  419. var id = $id.find('#' + key);
  420. if (id.attr('id')) {
  421. var type = id.attr('type');
  422. if (id.hasClass("input-datepicker")) {
  423. type = "datepicker";
  424. }
  425. var value = $.trim(data[key]).replace(/&nbsp;/g, '');
  426. switch (type) {
  427. case "checkbox":
  428. if (value == 1) {
  429. id.attr("checked", 'checked');
  430. } else {
  431. id.removeAttr("checked");
  432. }
  433. break;
  434. case "select":
  435. id.ComboBoxSetValue(value);
  436. break;
  437. case "selectTree":
  438. id.ComboBoxTreeSetValue(value);
  439. break;
  440. case "datepicker":
  441. id.val(formatDate(value, 'yyyy-MM-dd'));
  442. break;
  443. default:
  444. id.val(value);
  445. break;
  446. }
  447. }
  448. }
  449. }
  450. $.fn.Contextmenu = function () {
  451. var element = $(this);
  452. var oMenu = $('.contextmenu');
  453. $(document).click(function () {
  454. oMenu.hide();
  455. });
  456. $(document).mousedown(function (e) {
  457. if (3 == e.which) {
  458. oMenu.hide();
  459. }
  460. })
  461. var aUl = oMenu.find("ul");
  462. var aLi = oMenu.find("li");
  463. var showTimer = hideTimer = null;
  464. var i = 0;
  465. var maxWidth = maxHeight = 0;
  466. var aDoc = [document.documentElement.offsetWidth, document.documentElement.offsetHeight];
  467. oMenu.hide();
  468. for (i = 0; i < aLi.length; i++) {
  469. //为含有子菜单的li加上箭头
  470. aLi[i].getElementsByTagName("ul")[0] && (aLi[i].className = "sub");
  471. //鼠标移入
  472. aLi[i].onmouseover = function () {
  473. var oThis = this;
  474. var oUl = oThis.getElementsByTagName("ul");
  475. //鼠标移入样式
  476. oThis.className += " active";
  477. //显示子菜单
  478. if (oUl[0]) {
  479. clearTimeout(hideTimer);
  480. showTimer = setTimeout(function () {
  481. for (i = 0; i < oThis.parentNode.children.length; i++) {
  482. oThis.parentNode.children[i].getElementsByTagName("ul")[0] &&
  483. (oThis.parentNode.children[i].getElementsByTagName("ul")[0].style.display = "none");
  484. }
  485. oUl[0].style.display = "block";
  486. oUl[0].style.top = oThis.offsetTop + "px";
  487. oUl[0].style.left = oThis.offsetWidth + "px";
  488. //最大显示范围
  489. maxWidth = aDoc[0] - oUl[0].offsetWidth;
  490. maxHeight = aDoc[1] - oUl[0].offsetHeight;
  491. //防止溢出
  492. maxWidth < getOffset.left(oUl[0]) && (oUl[0].style.left = -oUl[0].clientWidth + "px");
  493. maxHeight < getOffset.top(oUl[0]) && (oUl[0].style.top = -oUl[0].clientHeight + oThis.offsetTop + oThis.clientHeight + "px")
  494. }, 300);
  495. }
  496. };
  497. //鼠标移出
  498. aLi[i].onmouseout = function () {
  499. var oThis = this;
  500. var oUl = oThis.getElementsByTagName("ul");
  501. //鼠标移出样式
  502. oThis.className = oThis.className.replace(/\s?active/, "");
  503. clearTimeout(showTimer);
  504. hideTimer = setTimeout(function () {
  505. for (i = 0; i < oThis.parentNode.children.length; i++) {
  506. oThis.parentNode.children[i].getElementsByTagName("ul")[0] &&
  507. (oThis.parentNode.children[i].getElementsByTagName("ul")[0].style.display = "none");
  508. }
  509. }, 300);
  510. };
  511. }
  512. //自定义右键菜单
  513. $(element).bind("contextmenu", function () {
  514. var event = event || window.event;
  515. oMenu.show();
  516. oMenu.css('top', event.clientY + "px");
  517. oMenu.css('left', event.clientX + "px");
  518. //最大显示范围
  519. maxWidth = aDoc[0] - oMenu.width();
  520. maxHeight = aDoc[1] - oMenu.height();
  521. //防止菜单溢出
  522. if (oMenu.offset().top > maxHeight) {
  523. oMenu.css('top', maxHeight + "px");
  524. }
  525. if (oMenu.offset().left > maxWidth) {
  526. oMenu.css('left', maxWidth + "px");
  527. }
  528. return false;
  529. }).bind("click", function () {
  530. oMenu.hide();
  531. });
  532. }
  533. $.fn.panginationEx = function (options) {
  534. var $pager = $(this);
  535. if (!$pager.attr('id')) {
  536. return false;
  537. }
  538. var defaults = {
  539. firstBtnText: '首页',
  540. lastBtnText: '尾页',
  541. prevBtnText: '上一页',
  542. nextBtnText: '下一页',
  543. showInfo: true,
  544. showJump: true,
  545. jumpBtnText: '跳转',
  546. showPageSizes: true,
  547. infoFormat: '{start} ~ {end}条,共{total}条',
  548. sortname: '',
  549. url: "",
  550. success: null,
  551. beforeSend: null,
  552. complete: null
  553. };
  554. var options = $.extend(defaults, options);
  555. var params = $.extend({ sidx: options.sortname, sord: "asc" }, options.params);
  556. options.remote = {
  557. url: options.url, //请求地址
  558. params: params, //自定义请求参数
  559. beforeSend: function (XMLHttpRequest) {
  560. if (options.beforeSend != null) {
  561. options.beforeSend(XMLHttpRequest);
  562. }
  563. },
  564. success: function (result, pageIndex) {
  565. //回调函数
  566. //result 为 请求返回的数据,呈现数据
  567. if (options.success != null) {
  568. options.success(result.rows, pageIndex);
  569. }
  570. },
  571. complete: function (XMLHttpRequest, textStatu) {
  572. if (options.complete != null) {
  573. options.complete(XMLHttpRequest, textStatu);
  574. }
  575. //...
  576. },
  577. pageIndexName: 'page', //请求参数,当前页数,索引从0开始
  578. pageSizeName: 'rows', //请求参数,每页数量
  579. totalName: 'records' //指定返回数据的总数据量的字段名
  580. }
  581. $pager.page(options);
  582. }
  583. $.fn.LeftListShowOfemail = function (options) {
  584. var $list = $(this);
  585. if (!$list.attr('id')) {
  586. return false;
  587. }
  588. $list.append('<ul style="padding-top: 10px;"></ul>');
  589. var defaults = {
  590. id: "id",
  591. name: "text",
  592. img: "fa fa-file-o",
  593. };
  594. var options = $.extend(defaults, options);
  595. $list.height(options.height);
  596. $.ajax({
  597. url: options.url,
  598. data: options.param,
  599. type: "GET",
  600. dataType: "json",
  601. async: false,
  602. success: function (data) {
  603. $.each(data, function (i, item) {
  604. var $_li = $('<li class="" data-value="' + item[options.id] + '" data-text="' + item[options.name] + '" ><i class="' + options.img + '" style="vertical-align: middle; margin-top: -2px; margin-right: 8px; font-size: 14px; color: #666666; opacity: 0.9;"></i>' + item[options.name] + '</li>');
  605. if (i == 0) {
  606. $_li.addClass("active");
  607. }
  608. $list.find('ul').append($_li);
  609. });
  610. $list.find('li').click(function () {
  611. var key = $(this).attr('data-value');
  612. var value = $(this).attr('data-text');
  613. $list.find('li').removeClass('active');
  614. $(this).addClass('active');
  615. options.onnodeclick({ id: key, name: value });
  616. });
  617. },
  618. error: function (XMLHttpRequest, textStatus, errorThrown) {
  619. dialogMsg(errorThrown, -1);
  620. }
  621. });
  622. }
  623. $.fn.authorizeButton = function () {
  624. var $element = $(this);
  625. $element.find('a.btn').attr('authorize', 'no')
  626. $element.find('ul.dropdown-menu').find('li').attr('authorize', 'no')
  627. var moduleId = tabiframeId().substr(6);
  628. var data = top.authorizeButtonData[moduleId];
  629. if (data != undefined) {
  630. $.each(data, function (i) {
  631. $element.find("#" + data[i].EnCode).attr('authorize', 'yes');
  632. });
  633. }
  634. $element.find('[authorize=no]').remove();
  635. }
  636. $.fn.authorizeColModel = function () {
  637. var $element = $(this);
  638. var columnModel = $element.jqGrid('getGridParam', 'colModel');
  639. $.each(columnModel, function (i) {
  640. if (columnModel[i].name != "rn") {
  641. $element.hideCol(columnModel[i].name);
  642. }
  643. });
  644. var moduleId = tabiframeId().substr(6);
  645. var data = top.authorizeColumnData[moduleId];
  646. if (data != undefined) {
  647. $.each(data, function (i) {
  648. $element.showCol(data[i].EnCode);
  649. });
  650. }
  651. }
  652. $.fn.jqGridEx = function (options) {
  653. var $jqGrid = $(this);
  654. var _selectedRowIndex;
  655. if (!$jqGrid.attr('id')) {
  656. return false;
  657. }
  658. var defaults = {
  659. url: "",
  660. datatype: "json",
  661. height: $(window).height() - 139.5,
  662. autowidth: true,
  663. colModel: [],
  664. viewrecords: true,
  665. rowNum: 30,
  666. rowList: [30, 50, 100],
  667. pager: "#gridPager",
  668. sortname: 'CreateDate desc',
  669. rownumbers: true,
  670. shrinkToFit: false,
  671. gridview: true,
  672. onSelectRow: function () {
  673. _selectedRowIndex = $("#" + this.id).getGridParam('selrow');
  674. },
  675. gridComplete: function () {
  676. $("#" + this.id).setSelection(_selectedRowIndex, false);
  677. }
  678. };
  679. var options = $.extend(defaults, options);
  680. $jqGrid.jqGrid(options);
  681. }
  682. $.fn.jqGridRowValue = function (code) {
  683. var $jgrid = $(this);
  684. var json = [];
  685. var selectedRowIds = $jgrid.jqGrid("getGridParam", "selarrrow");
  686. if (selectedRowIds != undefined && selectedRowIds != "") {
  687. var len = selectedRowIds.length;
  688. for (var i = 0; i < len ; i++) {
  689. var rowData = $jgrid.jqGrid('getRowData', selectedRowIds[i]);
  690. json.push(rowData[code]);
  691. }
  692. } else {
  693. var rowData = $jgrid.jqGrid('getRowData', $jgrid.jqGrid('getGridParam', 'selrow'));
  694. json.push(rowData[code]);
  695. }
  696. return String(json);
  697. }
  698. $.fn.jqGridRow = function () {
  699. var $jgrid = $(this);
  700. var json = [];
  701. var selectedRowIds = $jgrid.jqGrid("getGridParam", "selarrrow");
  702. if (selectedRowIds != "") {
  703. var len = selectedRowIds.length;
  704. for (var i = 0; i < len ; i++) {
  705. var rowData = $jgrid.jqGrid('getRowData', selectedRowIds[i]);
  706. json.push(rowData);
  707. }
  708. } else {
  709. var rowData = $jgrid.jqGrid('getRowData', $jgrid.jqGrid('getGridParam', 'selrow'));
  710. json.push(rowData);
  711. }
  712. return json;
  713. }
  714. dialogTop = function (content, type) {
  715. $(".tip_container").remove();
  716. var bid = parseInt(Math.random() * 100000);
  717. $("body").prepend('<div id="tip_container' + bid + '" class="container tip_container"><div id="tip' + bid + '" class="mtip"><i class="micon"></i><span id="tsc' + bid + '"></span><i id="mclose' + bid + '" class="mclose"></i></div></div>');
  718. var $this = $(this);
  719. var $tip_container = $("#tip_container" + bid);
  720. var $tip = $("#tip" + bid);
  721. var $tipSpan = $("#tsc" + bid);
  722. //先清楚定时器
  723. clearTimeout(window.timer);
  724. //主体元素绑定事件
  725. $tip.attr("class", type).addClass("mtip");
  726. $tipSpan.html(content);
  727. $tip_container.slideDown(300);
  728. //提示层隐藏定时器
  729. window.timer = setTimeout(function () {
  730. $tip_container.slideUp(300);
  731. $(".tip_container").remove();
  732. }, 4000);
  733. $("#tip_container" + bid).css("left", ($(window).width() - $("#tip_container" + bid).width()) / 2);
  734. }
  735. dialogOpen = function (options) {
  736. Loading(true);
  737. var defaults = {
  738. id: null,
  739. title: '系统窗口',
  740. width: "100px",
  741. height: "100px",
  742. url: '',
  743. shade: 0.3,
  744. btn: ['确认', '关闭'],
  745. callBack: null
  746. };
  747. var options = $.extend(defaults, options);
  748. var _url = options.url;
  749. var _width = top.$.windowWidth() > parseInt(options.width.replace('px', '')) ? options.width : top.$.windowWidth() + 'px';
  750. var _height = top.$.windowHeight() > parseInt(options.height.replace('px', '')) ? options.height : top.$.windowHeight() + 'px';
  751. top.layer.open({
  752. id: options.id,
  753. type: 2,
  754. shade: options.shade,
  755. title: options.title,
  756. fix: false,
  757. area: [_width, _height],
  758. content: top.contentPath + _url,
  759. btn: options.btn,
  760. yes: function () {
  761. options.callBack(options.id)
  762. }, cancel: function () {
  763. if (options.cancel != undefined)
  764. {
  765. options.cancel();
  766. }
  767. return true;
  768. }
  769. });
  770. }
  771. dialogContent = function (options) {
  772. var defaults = {
  773. id: null,
  774. title: '系统窗口',
  775. width: "100px",
  776. height: "100px",
  777. content: '',
  778. btn: ['确认', '关闭'],
  779. callBack: null
  780. };
  781. var options = $.extend(defaults, options);
  782. top.layer.open({
  783. id: options.id,
  784. type: 1,
  785. title: options.title,
  786. fix: false,
  787. area: [options.width, options.height],
  788. content: options.content,
  789. btn: options.btn,
  790. yes: function () {
  791. options.callBack(options.id)
  792. }
  793. });
  794. }
  795. dialogAlert = function (content, type) {
  796. if (type == -1) {
  797. type = 2;
  798. }
  799. top.layer.alert(content, {
  800. icon: type,
  801. title: "潍微科技提示"
  802. });
  803. }
  804. dialogConfirm = function (content, callBack) {
  805. top.layer.confirm(content, {
  806. icon: 7,
  807. title: "潍微科技提示",
  808. btn: ['确认', '取消'],
  809. }, function () {
  810. callBack(true);
  811. }, function () {
  812. callBack(false)
  813. });
  814. }
  815. dialogMsg = function (content, type) {
  816. if (type == -1) {
  817. type = 2;
  818. }
  819. top.layer.msg(content, { icon: type, time: 4000, shift: 5 });
  820. }
  821. dialogClose = function () {
  822. try {
  823. var index = top.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
  824. var $IsdialogClose = top.$("#layui-layer" + index).find('.layui-layer-btn').find("#IsdialogClose");
  825. var IsClose = $IsdialogClose.is(":checked");
  826. if ($IsdialogClose.length == 0) {
  827. IsClose = true;
  828. }
  829. if (IsClose) {
  830. top.layer.close(index);
  831. } else {
  832. location.reload();
  833. }
  834. } catch (e) {
  835. alert(e);
  836. }
  837. }
  838. reload = function () {
  839. location.reload();
  840. return false;
  841. }
  842. newGuid = function () {
  843. var guid = "";
  844. for (var i = 1; i <= 32; i++) {
  845. var n = Math.floor(Math.random() * 16.0).toString(16);
  846. guid += n;
  847. if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-";
  848. }
  849. return guid;
  850. }
  851. formatDate = function (v, format) {
  852. if (!v) return "";
  853. var d = v;
  854. if (typeof v === 'string') {
  855. if (v.indexOf("/Date(") > -1)
  856. d = new Date(parseInt(v.replace("/Date(", "").replace(")/", ""), 10));
  857. else
  858. d = new Date(Date.parse(v.replace(/-/g, "/").replace("T", " ").split(".")[0]));//.split(".")[0] 用来处理出现毫秒的情况,截取掉.xxx,否则会出错
  859. }
  860. var o = {
  861. "M+": d.getMonth() + 1, //month
  862. "d+": d.getDate(), //day
  863. "h+": d.getHours(), //hour
  864. "m+": d.getMinutes(), //minute
  865. "s+": d.getSeconds(), //second
  866. "q+": Math.floor((d.getMonth() + 3) / 3), //quarter
  867. "S": d.getMilliseconds() //millisecond
  868. };
  869. if (/(y+)/.test(format)) {
  870. format = format.replace(RegExp.$1, (d.getFullYear() + "").substr(4 - RegExp.$1.length));
  871. }
  872. for (var k in o) {
  873. if (new RegExp("(" + k + ")").test(format)) {
  874. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
  875. }
  876. }
  877. return format;
  878. };
  879. toDecimal = function (num) {
  880. if (num == null) {
  881. num = "0";
  882. }
  883. num = num.toString().replace(/\$|\,/g, '');
  884. if (isNaN(num))
  885. num = "0";
  886. sign = (num == (num = Math.abs(num)));
  887. num = Math.floor(num * 100 + 0.50000000001);
  888. cents = num % 100;
  889. num = Math.floor(num / 100).toString();
  890. if (cents < 10)
  891. cents = "0" + cents;
  892. for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3) ; i++)
  893. num = num.substring(0, num.length - (4 * i + 3)) + '' +
  894. num.substring(num.length - (4 * i + 3));
  895. return (((sign) ? '' : '-') + num + '.' + cents);
  896. }
  897. Date.prototype.DateAdd = function (strInterval, Number) {
  898. //y年 q季度 m月 d日 w周 h小时 n分钟 s秒 ms毫秒
  899. var dtTmp = this;
  900. switch (strInterval) {
  901. case 's': return new Date(Date.parse(dtTmp) + (1000 * Number));
  902. case 'n': return new Date(Date.parse(dtTmp) + (60000 * Number));
  903. case 'h': return new Date(Date.parse(dtTmp) + (3600000 * Number));
  904. case 'd': return new Date(Date.parse(dtTmp) + (86400000 * Number));
  905. case 'w': return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
  906. case 'q': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number * 3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  907. case 'm': return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  908. case 'y': return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
  909. }
  910. }
  911. request = function (keyValue) {
  912. var search = location.search.slice(1);
  913. var arr = search.split("&");
  914. for (var i = 0; i < arr.length; i++) {
  915. var ar = arr[i].split("=");
  916. if (ar[0] == keyValue) {
  917. if (unescape(ar[1]) == 'undefined') {
  918. return "";
  919. } else {
  920. return unescape(ar[1]);
  921. }
  922. }
  923. }
  924. return "";
  925. }
  926. changeUrlParam = function (url, key, value) {
  927. var newUrl = "";
  928. var reg = new RegExp("(^|)" + key + "=([^&]*)(|$)");
  929. var tmp = key + "=" + value;
  930. if (url.match(reg) != null) {
  931. newUrl = url.replace(eval(reg), tmp);
  932. } else {
  933. if (url.match("[\?]")) {
  934. newUrl = url + "&" + tmp;
  935. }
  936. else {
  937. newUrl = url + "?" + tmp;
  938. }
  939. }
  940. return newUrl;
  941. }
  942. $.currentIframe = function () {
  943. if ((top.frames[tabiframeId()].contentWindow != undefined) && ($.isbrowsername() == "Chrome" || $.isbrowsername() == "FF")) {
  944. return top.frames[tabiframeId()].contentWindow;
  945. }
  946. else {
  947. return top.frames[tabiframeId()];
  948. }
  949. }
  950. $.isbrowsername = function () {
  951. var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
  952. var isOpera = userAgent.indexOf("Opera") > -1;
  953. if (isOpera) {
  954. return "Opera"
  955. }; //判断是否Opera浏览器
  956. if (userAgent.indexOf("Firefox") > -1) {
  957. return "FF";
  958. } //判断是否Firefox浏览器
  959. if (userAgent.indexOf("Chrome") > -1) {
  960. if (window.navigator.webkitPersistentStorage.toString().indexOf('DeprecatedStorageQuota') > -1) {
  961. return "Chrome";
  962. } else {
  963. return "360";
  964. }
  965. }//判断是否Chrome浏览器//360浏览器
  966. if (userAgent.indexOf("Safari") > -1) {
  967. return "Safari";
  968. } //判断是否Safari浏览器
  969. if (userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1 && !isOpera) {
  970. return "IE";
  971. }; //判断是否IE浏览器
  972. }
  973. $.download = function (url, data, method) {
  974. if (url && data) {
  975. data = typeof data == 'string' ? data : jQuery.param(data);
  976. var inputs = '';
  977. $.each(data.split('&'), function () {
  978. var pair = this.split('=');
  979. inputs += '<input type="hidden" name="' + pair[0] + '" value="' + pair[1] + '" />';
  980. });
  981. $('<form action="' + url + '" method="' + (method || 'post') + '">' + inputs + '</form>').appendTo('body').submit().remove();
  982. };
  983. };
  984. $.standTabchange = function (object, forid) {
  985. $(".standtabactived").removeClass("standtabactived");
  986. $(object).addClass("standtabactived");
  987. $('.standtab-pane').css('display', 'none');
  988. $('#' + forid).css('display', 'block');
  989. }
  990. $.isNullOrEmpty = function (obj) {
  991. if ((typeof (obj) == "string" && obj == "") || obj == null || obj == undefined) {
  992. return true;
  993. }
  994. else {
  995. return false;
  996. }
  997. }
  998. $.arrayClone = function (data) {
  999. return $.map(data, function (obj) {
  1000. return $.extend(true, {}, obj);
  1001. });
  1002. }
  1003. $.windowWidth = function () {
  1004. return $(window).width();
  1005. }
  1006. $.windowHeight = function () {
  1007. return $(window).height();
  1008. }
  1009. IsNumber = function (obj) {
  1010. $("#" + obj).bind("contextmenu", function () {
  1011. return false;
  1012. });
  1013. $("#" + obj).css('ime-mode', 'disabled');
  1014. $("#" + obj).keypress(function (e) {
  1015. if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
  1016. return false;
  1017. }
  1018. });
  1019. }
  1020. IsMoney = function (obj) {
  1021. $("#" + obj).bind("contextmenu", function () {
  1022. return false;
  1023. });
  1024. $("#" + obj).css('ime-mode', 'disabled');
  1025. $("#" + obj).bind("keydown", function (e) {
  1026. var key = window.event ? e.keyCode : e.which;
  1027. if (isFullStop(key)) {
  1028. return $(this).val().indexOf('.') < 0;
  1029. }
  1030. return (isSpecialKey(key)) || ((isNumber(key) && !e.shiftKey));
  1031. });
  1032. function isNumber(key) {
  1033. return key >= 48 && key <= 57
  1034. }
  1035. function isSpecialKey(key) {
  1036. return key == 8 || key == 46 || (key >= 37 && key <= 40) || key == 35 || key == 36 || key == 9 || key == 13
  1037. }
  1038. function isFullStop(key) {
  1039. return key == 190 || key == 110;
  1040. }
  1041. }
  1042. checkedArray = function (id) {
  1043. var isOK = true;
  1044. if (id == undefined || id == "" || id == 'null' || id == 'undefined') {
  1045. isOK = false;
  1046. dialogMsg('您没有选中任何项,请您选中后再操作。', 0);
  1047. }
  1048. return isOK;
  1049. }
  1050. checkedRow = function (id) {
  1051. var isOK = true;
  1052. if (id == undefined || id == "" || id == 'null' || id == 'undefined') {
  1053. isOK = false;
  1054. dialogMsg('您没有选中任何数据项,请选中后再操作!', 0);
  1055. } else if (id.split(",").length > 1) {
  1056. isOK = false;
  1057. dialogMsg('很抱歉,一次只能选择一条记录!', 0);
  1058. }
  1059. return isOK;
  1060. }