common.js 37 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753
  1. /**
  2. * 发送ajax 请求
  3. *
  4. * @param param
  5. * 参数集 [{a:a,b:b}]
  6. * @param action
  7. * action名称
  8. * @param datatype
  9. * 请求类型:xml,json,text
  10. * @param process
  11. * 回调函数
  12. */
  13. function sendAjaxParam(param, action, datatype, process, error) {
  14. $.ajax({
  15. type : "post",
  16. url : action,
  17. async : false,
  18. data : param,
  19. cache : false,
  20. dataType : datatype,
  21. timeout : 30000,
  22. error : function(request, msg, errObj) {
  23. try {
  24. var text = request.responseText;
  25. if (text.indexOf("TIMEOUT_ERROR") != -1) {
  26. window.top.location.reload();
  27. }
  28. } catch (e) {
  29. }
  30. if (error) {
  31. error(request, msg);
  32. }
  33. },
  34. success : function(data) {
  35. process(data);
  36. }
  37. });
  38. }
  39. // 异步
  40. function sendAsyncAjax(param, action, datatype, process, error) {
  41. $.ajax({
  42. type : "post",
  43. url : action,
  44. async : true,
  45. data : param,
  46. cache : false,
  47. dataType : datatype,
  48. timeout : 30000,
  49. error : function(request, msg, errObj) {
  50. try {
  51. var text = request.responseText;
  52. if (text.indexOf("TIMEOUT_ERROR") != -1) {
  53. window.top.location.reload();
  54. }
  55. } catch (e) {
  56. }
  57. if (error) {
  58. error(request, msg);
  59. }
  60. },
  61. success : function(data) {
  62. process(data);
  63. }
  64. });
  65. }
  66. function adjustHeight() {
  67. $(".l-content").height(getParentHeight() - 25);
  68. }
  69. function loadMsg() {
  70. var obj = window.top;
  71. if (obj != undefined && obj != null) {
  72. var msg = $("#msg_info").val();
  73. var error = $("#msg_error").val();
  74. var msgTime = $("#msg_time").val();
  75. if (msgTime != '' && msgTime != null) {
  76. obj.waitMsg(msg, parseInt(msgTime, 10));
  77. } else if (error != '' && error != null) {
  78. obj.errorMsg(error);
  79. } else if (msg != '' && msg != null) {
  80. obj.successMsg(msg);
  81. }
  82. var fieldsError = $("input[name='msg_fieldsError']");
  83. $(fieldsError).each(
  84. function() {
  85. var id = $(this).attr("id");
  86. var fieldName = id.substring(id.indexOf("_") + 1);
  87. $(getObject(fieldName)).addClass("inputError").after(
  88. "<span class='error_msg' style='color:red'>&nbsp;"
  89. + $(this).val() + "</span>");
  90. });
  91. }
  92. }
  93. $(document).ready(function() {
  94. try {
  95. browerType();
  96. loadMsg();
  97. hideResource();
  98. hide_blank();
  99. } catch (e) {
  100. }
  101. });
  102. function browerType() {
  103. var t = loadBrowserType();
  104. if (t != 'win') {
  105. $("html").bind('touchmove', function(e) {
  106. e.preventDefault();
  107. }, false);
  108. }
  109. }
  110. function loadBrowserType() {
  111. var sUserAgent = navigator.userAgent.toLowerCase();
  112. var bIsIpad = sUserAgent.match(/ipad/i) == "ipad";
  113. var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os";
  114. var bIsMidp = sUserAgent.match(/midp/i) == "midp";
  115. var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4";
  116. var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb";
  117. var bIsAndroid = sUserAgent.match(/android/i) == "android";
  118. var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce";
  119. var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile";
  120. if (bIsIpad) {
  121. return "ipad";
  122. } else if (bIsIphoneOs || bIsAndroid) {
  123. return "iphone";
  124. } else if (bIsMidp || bIsUc7 || bIsUc || bIsCE || bIsWM) {
  125. return "android";
  126. } else {
  127. return "win";
  128. }
  129. }
  130. window.onload = function() {
  131. $("input[type='text']:not('.notFirstFocus'):visible:eq(0)").focus();
  132. };
  133. function hideResource() {
  134. $(".pr_tagTxt").each(function() {
  135. var level = $(this).attr("level");
  136. if (level != "null" && level) {
  137. var obj = $(this);
  138. while (level > 0) {
  139. obj = $(obj).parent();
  140. level--;
  141. }
  142. $(obj).hide();
  143. }
  144. });
  145. }
  146. function getLeft(object) {
  147. var go = object[0];
  148. var oParent, oLeft = go.offsetLeft;
  149. while (go.offsetParent != null) {
  150. oParent = go.offsetParent;
  151. oLeft += oParent.offsetLeft;
  152. go = oParent;
  153. }
  154. return oLeft;
  155. }
  156. function getTop(object) {
  157. var go = object[0];
  158. var oParent, oTop = go.offsetTop;
  159. while (go.offsetParent != null) {
  160. oParent = go.offsetParent;
  161. oTop += oParent.offsetTop;
  162. go = oParent;
  163. }
  164. var t = oTop + $(object).height() + 5;
  165. return t;
  166. }
  167. function addMessage(obj, msg) {
  168. var fname = $(obj).attr("name");
  169. var cid = fname + 'tipTable';
  170. if (cid == undefined)
  171. cid = $(obj).attr("id");
  172. var target = $("#tipTable").clone();
  173. $(target).attr("id", "");
  174. $(target).addClass("newTipTable");
  175. $(obj).parents("body").append(target[0]);
  176. $(obj).bind("focus", function() {
  177. $('#tipTable').hide();
  178. $(target).remove();
  179. $(obj).removeClass("inputError");
  180. });
  181. var tipObj = target[0];
  182. $(tipObj).css({
  183. left : getLeft(obj) + $(obj).width() + 'px',
  184. top : getTop(obj) - 40 + 'px'
  185. });
  186. $('.contenImage', tipObj).html(msg);
  187. $(tipObj).fadeIn("fast");
  188. }
  189. function displayMsg(o, err) {
  190. var obj = o;
  191. if ($(o)[0])
  192. obj = $(o)[0];
  193. var tg = $(obj).attr("tagName");
  194. if (tg == undefined) {
  195. tg = obj.tagName;
  196. }
  197. var tn = tg.toLowerCase();
  198. if (tn != 'input' && tn != 'select' && tn != 'textarea' && tn != 'font') {
  199. $(o).append(
  200. "<div class='error_msg' style='color:red;'>&nbsp;" + err
  201. + "</div>");
  202. } else {
  203. $(o).after(
  204. "<span class='error_msg' style='color:red;'>&nbsp;" + err
  205. + "</span>");
  206. }
  207. }
  208. /**
  209. * 添加表单元素的错误消息
  210. *
  211. * @param fieldName
  212. * 元素名称
  213. * @param err
  214. * 错误消息
  215. */
  216. function addFieldError(fieldName, err) {
  217. clearMsg();
  218. $(getObject(fieldName)).addClass("inputError");
  219. // addMessage(getObject(fieldName),err);
  220. displayMsg(getObject(fieldName), err);
  221. }
  222. /**
  223. * 表单验证的错误提示
  224. *
  225. * @param fieldName
  226. * 元素名称
  227. * @param err
  228. * 错误消息
  229. */
  230. function addFieldErrors(fieldName, err) {
  231. if ($(getObject(fieldName)).hasClass("inputError")) {
  232. clearSingelMsg(fieldName);
  233. }
  234. $(getObject(fieldName)).addClass("inputError");
  235. // addMessage(getObject(fieldName),err);
  236. displayMsg(getObject(fieldName), err);
  237. }
  238. function addFieldMsgErrors(fieldName, msgBox, err) {
  239. if ($(getObject(fieldName)).hasClass("inputError")) {
  240. clearMsgBox(msgBox);
  241. }
  242. $(getObject(fieldName)).addClass("inputError");
  243. // addMessage(getObject(msgBox),err);
  244. displayMsg(getObject(msgBox), err);
  245. }
  246. /**
  247. * 添加页面错误消息
  248. *
  249. * @param err
  250. */
  251. function addError(err) {
  252. clearMsg();
  253. var obj = window.top;
  254. if (obj != undefined && obj != null) {
  255. obj.errorMsg(err);
  256. }
  257. return true;
  258. }
  259. /**
  260. * 添加提示消息
  261. *
  262. * @param msg
  263. */
  264. function addInfo(msg) {
  265. clearMsg();
  266. var obj = window.top;
  267. if (obj != undefined && obj != null) {
  268. obj.successMsg(msg);
  269. }
  270. return true;
  271. }
  272. /**
  273. * 添加定时关闭提示消息
  274. *
  275. * @param msg
  276. */
  277. function addWaitInfo(msg, time) {
  278. clearMsg();
  279. var obj = window.top;
  280. if (obj != undefined && obj != null) {
  281. obj.waitMsg(msg, time);
  282. }
  283. return true;
  284. }
  285. // 当前选项卡ID
  286. function getCurrentTabId() {
  287. var obj = window.top;
  288. var tabid = "";
  289. if (obj != undefined && obj != null) {
  290. tabid = $("li.l-selected", obj.document).attr("tabid");
  291. }
  292. return tabid;
  293. }
  294. // 根据名称获取对象
  295. function getObject(fieldName) {
  296. var obj = $("input[name='" + fieldName + "']:enabled");
  297. if (obj.length == 0) {
  298. obj = $("textarea[name='" + fieldName + "']");
  299. }
  300. if (obj.length == 0) {
  301. obj = $("select[name='" + fieldName + "']");
  302. }
  303. if (obj.length == 0) {
  304. obj = $("#" + fieldName);
  305. }
  306. return obj;
  307. }
  308. /**
  309. * 清除表单所有错误提示
  310. */
  311. function clearMsg() {
  312. $(".error_msg").each(function() {
  313. $(this).remove();
  314. });
  315. $(".inputError").each(function() {
  316. $(this).removeClass("inputError");
  317. });
  318. }
  319. /**
  320. * 清除表单元素后的错误提示消息
  321. *
  322. * @param fieldName
  323. */
  324. function clearSingelMsg(fieldName) {
  325. $(getObject(fieldName)).parent().find(".error_msg").remove();
  326. $(getObject(fieldName)).removeClass("inputError");
  327. }
  328. /**
  329. * 清除表单元素后的错误提示消息
  330. *
  331. * @param fieldName
  332. */
  333. function clearMsgBox(msgBox) {
  334. $(getObject(msgBox)).empty();
  335. }
  336. // 提交表单
  337. function submitForm(form) {
  338. $("form[name='" + form + "']").submit();
  339. }
  340. /**
  341. * 指定提交表单
  342. *
  343. * @param form
  344. * 表单名称
  345. * @param action
  346. * action 名称
  347. */
  348. function submitFormAction(form, action) {
  349. $("form[name='" + form + "']").attr("action", action);
  350. $("form[name='" + form + "']").submit();
  351. }
  352. /**
  353. * 指定URL提交,目标为当前选项卡
  354. *
  355. * @param url
  356. */
  357. function submitAUrl(url) {
  358. var name = getCurrentTabId();
  359. submitTargetAUrl(url, name);
  360. }
  361. /**
  362. * 指定URL提交,自定义目标
  363. *
  364. * @param url
  365. * @param target
  366. */
  367. function submitTargetAUrl(url, target) {
  368. var istart = url.lastIndexOf("/");
  369. var action = "";
  370. var iend = url.indexOf("?");
  371. if (iend == -1) {
  372. action = url;
  373. } else {
  374. action = url.substring(istart, iend);
  375. var param = url.substring(iend + 1);
  376. var params = param.split("&");
  377. var element = document.createElement("div");
  378. $(element).css({
  379. "display" : "none"
  380. });
  381. for (var i = 0; i < params.length; i++) {
  382. var p = params[i].split("=");
  383. var input = document.createElement("input");
  384. var obj = $("input[name='" + p[0] + "']", "form");
  385. if (obj.length > 0) {
  386. $(obj).val(p[1]);
  387. } else {
  388. $(input).attr("name", p[0]);
  389. $(input).val(p[1]);
  390. $(element).append(input);
  391. }
  392. }
  393. $("form").append(element);
  394. }
  395. $("#action").remove();
  396. $("form").attr("target", target);
  397. $("form").attr("action", action);
  398. $("form").submit();
  399. }
  400. // className 外层样式
  401. // inputName 内层控件名称
  402. // 外层事件
  403. // 内层事件
  404. // 样列:<div class='className'><input name='inputName' type='checkbox' /></div>
  405. function hoverEvent(className, inputName, clickEvent, clickEvent2) {
  406. $("." + className).each(function() {
  407. $(this).hover(function() {
  408. if (!$(this).hasClass("dclick"))
  409. $(this).addClass("dhover");
  410. }, function() {
  411. $(this).removeClass("dhover");
  412. });
  413. $(this).bind("click", function() {
  414. $("." + className).each(function() {
  415. $(this).removeClass("dclick");
  416. });
  417. $(this).removeClass("dhover");
  418. $(this).addClass("dclick");
  419. });
  420. });
  421. hoverClickEvent(className, inputName, clickEvent, clickEvent2);
  422. }
  423. function hoverClickEvent(className, inputName, clickEvent, clickEvent2) {
  424. var isCheck = false;
  425. $("input[name='" + inputName + "']").each(function() {
  426. $(this).bind("click", function() {
  427. isCheck = true;
  428. clickEvent(this);
  429. });
  430. });
  431. $("." + className).css({
  432. "cursor" : "pointer"
  433. }).each(function() {
  434. $(this).bind("click", function() {
  435. if (isCheck == true) {
  436. isCheck = false;
  437. return;
  438. }
  439. var o = $("input", this);
  440. clickEvent2(o);
  441. });
  442. });
  443. }
  444. /**
  445. * 重写URL
  446. *
  447. * @param url
  448. * @returns {String}
  449. */
  450. function changePath(url) {
  451. if (url.indexOf("?") != -1) {
  452. return url + "&t=" + new Date().getTime();
  453. } else {
  454. return url + "?t=" + new Date().getTime();
  455. }
  456. }
  457. /**
  458. * 可选树
  459. *
  460. * @param treeAction
  461. * 获取数据的ACTION
  462. * @param treeId
  463. * 树的ID 与页面的ID一致,
  464. * <ul id="treeId" />
  465. * @param clickEvent
  466. * 节点单击事件
  467. * @returns {String}
  468. */
  469. function userCommonTree(treeAction, treeId, clickEvent, onSuccess, onAppend) {
  470. var manager = "";
  471. $("#" + treeId).ligerTree({
  472. url : PROJECT_NAME + "/" + changePath(treeAction),
  473. checkbox : true,
  474. folderCheckbox : false,
  475. single : true,
  476. childIcon : 'folder',
  477. idFieldName : 'id',
  478. parentIDFieldName : 'pid',
  479. openFolderEven : true,
  480. slide : false,
  481. nodeWidth : 120,
  482. attribute : [ 'id', 'url' ],
  483. onSelect : function(node) {
  484. },
  485. onclick : function(node) {
  486. clickEvent(node);
  487. },
  488. onAppend : function(parentNode, newdata) {
  489. if (onAppend)
  490. onAppend(parentNode, newdata);
  491. },
  492. onSuccess : function() {
  493. if (onSuccess)
  494. onSuccess();
  495. }
  496. });
  497. manager = $("#" + treeId).ligerGetTreeManager();
  498. return manager;
  499. }
  500. /**
  501. * 不可选树
  502. *
  503. * @param treeAction
  504. * 获取数据的ACTION
  505. * @param treeId
  506. * 树的ID 与页面的ID一致,
  507. * <ul id="treeId" />
  508. * @param clickEvent
  509. * 节点单击事件
  510. * @returns {String}
  511. */
  512. function deptCommonTree(treeAction, treeId, clickEvent, onSuccess) {
  513. var manager = "";
  514. $("#" + treeId).ligerTree({
  515. url : PROJECT_NAME + "/" + changePath(treeAction),
  516. checkbox : false,
  517. folderCheckbox : false,
  518. single : true,
  519. childIcon : 'folder',
  520. idFieldName : 'id',
  521. parentIDFieldName : 'pid',
  522. openFolderEven : true,
  523. slide : false,
  524. nodeWidth : 160,
  525. attribute : [ 'id', 'url' ],
  526. onSelect : function(node) {
  527. },
  528. onclick : function(node) {
  529. clickEvent(node);
  530. },
  531. onSuccess : function() {
  532. if (onSuccess)
  533. onSuccess();
  534. }
  535. });
  536. manager = $("#" + treeId).ligerGetTreeManager();
  537. return manager;
  538. }
  539. /**
  540. * idCol 中是否存在id
  541. *
  542. * @param id
  543. * @param idCol
  544. * @returns {Boolean}
  545. */
  546. function isExist(id, idCol) {
  547. for (var i = 0; i < idCol.length; i++) {
  548. if (id == idCol[i])
  549. return true;
  550. }
  551. return false;
  552. }
  553. /**
  554. * 在iframeName 中查找 id 的元素并返回对象
  555. *
  556. * @param iframeName
  557. * iframe 的名称
  558. * @param id
  559. * @returns
  560. */
  561. function findIframeById(iframeName, id) {
  562. var win = document.getElementsByName(iframeName)[0].contentWindow;
  563. var element = win.document.getElementById(id);
  564. return element;
  565. }
  566. /**
  567. * 在iframeName 中查找 name 的元素并返回对象
  568. *
  569. * @param iframeName
  570. * iframe 的名称
  571. * @param id
  572. * @returns
  573. */
  574. function findIframeByName(iframeName, name) {
  575. var element = findIframeByNames(iframeName, name);
  576. if (element.length > 0)
  577. return element[0];
  578. return null;
  579. }
  580. /**
  581. * 在iframeName 中查找 name 的元素并返回对象集
  582. *
  583. * @param iframeName
  584. * iframe 的名称
  585. * @param id
  586. * @returns
  587. */
  588. function findIframeByNames(iframeName, name) {
  589. var win = document.getElementsByName(iframeName)[0].contentWindow;
  590. var element = win.document.getElementsByName(name);
  591. return element;
  592. }
  593. /**
  594. * 以Jquery方式在iframeName中查找元素并返回对象集
  595. *
  596. * @param iframeName
  597. * iframe 的名称
  598. * @param id
  599. * @returns
  600. */
  601. function findIframeByJquery(iframeName, str) {
  602. var win = document.getElementsByName(iframeName)[0].contentWindow;
  603. var element = $(str, win.document);
  604. return element;
  605. }
  606. /**
  607. * 后台返回AJAX数据的显示方法
  608. *
  609. * @param data
  610. * 数据集,格式,data.success data.error
  611. */
  612. function displayAjaxMsg(data) {
  613. // var obj = $.parseJSON(data);
  614. var msg = data.success;
  615. var error = data.error;
  616. if (msg)
  617. addInfo(msg);
  618. if (error)
  619. addError(error);
  620. }
  621. // /验证组件
  622. // type:require 必填项,len 长度验证,equals 等值验证,regex 正则表达式验证
  623. // var rs =
  624. // $.validate({name:"oldpassword",model:[{type:"require",msg:"当前密码不能为空!"},
  625. // {type:"len",min:4,max:10,msg:"密码长度在4-10位之间!"}]});
  626. // rs &= $.validate({name:"rePassword",model:[{type:"require",msg:"确认密码不能为空!"},
  627. // {type:"equals",name2:"newpassword",msg:"确认密码与新密码不一致!"}]});
  628. (function($) {
  629. $.validate = function(o) {
  630. o = $.extend({
  631. type : ""
  632. }, o);
  633. var model = o.model;
  634. for (var i = 0; i < model.length; i++) {
  635. var t = model[i];
  636. if (t == null || t == undefined)
  637. continue;
  638. t.name = o.name;
  639. if (t.type == "require") {
  640. var r = $.require(t);
  641. if (!r)
  642. return r;
  643. }
  644. if (t.type == "len") {
  645. var r = $.len(t);
  646. if (!r)
  647. return r;
  648. }
  649. if (t.type == "equals") {
  650. var r = $.equals(t);
  651. if (!r)
  652. return r;
  653. }
  654. if (t.type == "regex") {
  655. var r = $.regex(t);
  656. if (!r)
  657. return r;
  658. }
  659. if (t.type == "isNumber") {
  660. var r = $.isNumber(t);
  661. if (!r)
  662. return r;
  663. }
  664. if (t.type == "size") {
  665. var r = $.size(t);
  666. if (!r)
  667. return r;
  668. }
  669. if (t.type == "date") {
  670. var r = $.date(t);
  671. if (!r)
  672. return r;
  673. }
  674. if (t.type == "lenByZhOrEn") {
  675. var r = $.lenByZhOrEn(t);
  676. if (!r)
  677. return r;
  678. }
  679. if (t.type == "isMoney") {
  680. var r = $.isMoney(t);
  681. if (!r)
  682. return r;
  683. }
  684. }
  685. return true;
  686. };
  687. var display = function(o) {
  688. if (o.msgField != "" && o.msgField != undefined && o.msgBox != ""
  689. && o.msgBox != undefined) {
  690. addFieldMsgErrors(o.msgField, o.msgBox, o.msg);
  691. } else if (o.msgField != "" && o.msgField != undefined) {
  692. addFieldErrors(o.msgField, o.msg);
  693. } else if (o.msgBox != "" && o.msgBox != undefined) {
  694. addFieldMsgErrors(o.name, o.msgBox, o.msg);
  695. } else {
  696. addFieldErrors(o.name, o.msg);
  697. }
  698. };
  699. var clearMsg = function(o) {
  700. clearSingelMsg(o.name);
  701. clearMsgBox(o.msgBox);
  702. };
  703. $.require = function(o) {
  704. o = $.extend({
  705. name : "",
  706. msg : "",
  707. success : function(e) {
  708. },
  709. error : function(e) {
  710. }
  711. }, o);
  712. var v = {
  713. require : function() {
  714. var name = o.name;
  715. var value = "";
  716. if (name == "oldpassword" || name == "newpassword"
  717. || name == "rePassword") {
  718. value = $(getObject(o.name)).val();
  719. } else {
  720. value = $(getObject(o.name)).val().replace(/(^\s*)|(\s*$)/g, "");
  721. }
  722. if (value == "" || value == null) {
  723. display(o);
  724. o.error(o);
  725. return false;
  726. }
  727. clearMsg(o);
  728. o.success(this);
  729. return true;
  730. }
  731. };
  732. return v.require();
  733. };
  734. $.len = function(o) {
  735. o = $.extend({
  736. name : "",
  737. min : "",
  738. max : "",
  739. msg : "",
  740. success : function(e) {
  741. },
  742. error : function(e) {
  743. }
  744. }, o);
  745. var v = {
  746. len : function() {
  747. var value = $(getObject(o.name)).val();
  748. if (o.min == "" && value.length > o.max) {
  749. display(o);
  750. o.error(o);
  751. return false;
  752. }
  753. if (o.max == "" && value.length < o.min) {
  754. display(o);
  755. o.error(o);
  756. return false;
  757. }
  758. if (value.length < o.min || value.length > o.max) {
  759. display(o);
  760. o.error(o);
  761. return false;
  762. }
  763. clearMsg(o);
  764. o.success(this);
  765. return true;
  766. }
  767. };
  768. return v.len();
  769. };
  770. //modify by zhanggw 判断长度修改为区分中英文 中文算2个,英文1个 begin
  771. $.lenByZhOrEn = function(o) {
  772. o = $.extend({
  773. name : "",
  774. min : "",
  775. max : "",
  776. msg : "",
  777. success : function(e) {
  778. },
  779. error : function(e) {
  780. }
  781. }, o);
  782. var v = {
  783. len : function() {
  784. var value = $(getObject(o.name)).val();
  785. if (o.min == "" && getStrLength(value) > o.max) {
  786. display(o);
  787. o.error(o);
  788. return false;
  789. }
  790. if (o.max == "" && getStrLength(value) < o.min) {
  791. display(o);
  792. o.error(o);
  793. return false;
  794. }
  795. if (getStrLength(value) < o.min || getStrLength(value) > o.max) {
  796. display(o);
  797. o.error(o);
  798. return false;
  799. }
  800. clearMsg(o);
  801. o.success(this);
  802. return true;
  803. }
  804. };
  805. return v.len();
  806. };
  807. //end
  808. $.size = function(o) {
  809. o = $.extend({
  810. name : "",
  811. min : "",
  812. max : "",
  813. msg : "",
  814. success : function(e) {
  815. },
  816. error : function(e) {
  817. }
  818. }, o);
  819. var v = {
  820. len : function() {
  821. var value = $(getObject(o.name)).val();
  822. var v = parseFloat(value);
  823. if (o.min == "" && v > o.max) {
  824. display(o);
  825. o.error(o);
  826. return false;
  827. }
  828. if (o.max == "" && v < o.min) {
  829. display(o);
  830. o.error(o);
  831. return false;
  832. }
  833. if ((v < o.min || v > o.max) && o.max != "" && o.min != "") {
  834. display(o);
  835. o.error(o);
  836. return false;
  837. }
  838. clearMsg(o);
  839. o.success(this);
  840. return true;
  841. }
  842. };
  843. return v.len();
  844. };
  845. $.date = function(o) {
  846. o = $.extend({
  847. name : "",
  848. min : "",
  849. max : "",
  850. msg : "",
  851. success : function(e) {
  852. },
  853. error : function(e) {
  854. }
  855. }, o);
  856. var v = {
  857. len : function() {
  858. var value = $(getObject(o.name)).val();
  859. if (o.min == "" && value > o.max) {
  860. display(o);
  861. o.error(o);
  862. return false;
  863. }
  864. if (o.max == "" && value < o.min) {
  865. display(o);
  866. o.error(o);
  867. return false;
  868. }
  869. if ((value < o.min || value > o.max) && o.max != ""
  870. && o.min != "") {
  871. display(o);
  872. o.error(o);
  873. return false;
  874. }
  875. clearMsg(o);
  876. o.success(this);
  877. return true;
  878. }
  879. };
  880. return v.len();
  881. };
  882. $.equals = function(o) {
  883. o = $.extend({
  884. name : "",
  885. name2 : "",
  886. msg : "",
  887. success : function(e) {
  888. },
  889. error : function(e) {
  890. }
  891. }, o);
  892. var v = {
  893. equals : function() {
  894. var value1 = $(getObject(o.name)).val();
  895. var value2 = $(getObject(o.name2)).val();
  896. ;
  897. if (value1 != value2) {
  898. display(o);
  899. o.error(o);
  900. return false;
  901. }
  902. clearMsg(o);
  903. o.success(this);
  904. return true;
  905. }
  906. };
  907. return v.equals();
  908. };
  909. $.isNumber = function(o) {
  910. o = $.extend({
  911. name : "",
  912. msg : "",
  913. success : function(e) {
  914. },
  915. error : function(e) {
  916. }
  917. }, o);
  918. var v = {
  919. equals : function() {
  920. var value = $(getObject(o.name)).val();
  921. // o.regex = /^([0-9]|\.)*$/;
  922. if (isNaN(value)) {
  923. display(o);
  924. o.error(o);
  925. return false;
  926. }
  927. clearMsg(o);
  928. o.success(this);
  929. return true;
  930. }
  931. };
  932. return v.equals();
  933. };
  934. $.isMoney = function(o) {
  935. o = $.extend({
  936. name : "",
  937. msg : "",
  938. success : function(e) {
  939. },
  940. error : function(e) {
  941. }
  942. }, o);
  943. var v = {
  944. equals : function() {
  945. var value = $(getObject(o.name)).val();
  946. if(value==null||value.length==0){
  947. return true;
  948. }
  949. var regex = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
  950. if (!value.match(regex)) {
  951. display(o);
  952. o.error(o);
  953. return false;
  954. }
  955. clearMsg(o);
  956. o.success(this);
  957. return true;
  958. }
  959. };
  960. return v.equals();
  961. };
  962. $.regex = function(o) {
  963. o = $.extend({
  964. name : "",
  965. regex : "",
  966. msg : "",
  967. success : function(e) {
  968. },
  969. error : function(e) {
  970. }
  971. }, o);
  972. var v = {
  973. regex : function() {
  974. var value = $(getObject(o.name)).val();
  975. if (o.msgBox != "" && o.msgBox != undefined)
  976. o.msgDisplay = o.msgBox;
  977. if (!o.regex.test(value)) {
  978. display(o);
  979. o.error(o);
  980. return false;
  981. }
  982. clearMsg(o);
  983. o.success(this);
  984. return true;
  985. }
  986. };
  987. return v.regex();
  988. };
  989. })(jQuery);
  990. function validate(o) {
  991. return $.validate({
  992. name : o.name,
  993. model : o.model
  994. });
  995. }
  996. function validates(o) {
  997. var rs = true;
  998. for (var i = 0; i < o.length; i++) {
  999. var v = o[i];
  1000. rs &= $.validate({
  1001. name : v.name,
  1002. model : v.model
  1003. });
  1004. }
  1005. return rs;
  1006. }
  1007. // $(document).ready(function(){
  1008. // usertree:按钮ID
  1009. // type:部门树:dept,部门用户树:detpuser,用户树:user,
  1010. // 类型加上single为单选如:deptsingle
  1011. // backId:回填ID,回填名称,使用文本框的名称
  1012. // 用户ID为负数,正数为部门ID
  1013. // selectId:回填ID,不写时使用backId定的字段内容回填
  1014. // loadTypeTree("usertree",{type:"user",backId:"uid",backName:"name"});
  1015. // });
  1016. function loadTypeTree(btnId, params) {
  1017. var obj = window.top;
  1018. if (obj != undefined && obj != null) {
  1019. var btn = $("#" + btnId);
  1020. params.win = window.document;
  1021. obj.loadDeptTree(btn, params);
  1022. }
  1023. }
  1024. function openTypeTree(btnId, params) {
  1025. var obj = window.top;
  1026. if (obj != undefined && obj != null) {
  1027. var btn = $("#" + btnId);
  1028. params.win = window.document;
  1029. obj.loadDeptTree(btn, params);
  1030. $(btn).click();
  1031. }
  1032. }
  1033. // 打开新的标签页
  1034. /**
  1035. * tabid 标签页ID 标签显示名称 显示的内容链接 isReload,如果true,那么当目标tab已经存在时会重载这个tab
  1036. * isClose,如果true,并且isReload=true,那么当目标tab已经存在时会先关闭这个tab后再打开
  1037. */
  1038. function addTab(tabid, text, url, isReload, isClose) {
  1039. var tab = null;
  1040. if (tabid == null)
  1041. tabid = new Date().getTime();
  1042. var obj = window.top;
  1043. if (obj != undefined && obj != null) {
  1044. tab = obj.findTabContent();
  1045. }
  1046. if (isReload && tab.isTabItemExist(tabid)) {
  1047. if (isClose) {
  1048. tab.removeTabItem(tabid);
  1049. tab.addTabItem({
  1050. tabid : tabid,
  1051. text : text,
  1052. url : url,
  1053. changeHeightOnResize : true
  1054. });
  1055. } else {
  1056. tab.selectTabItem(tabid);
  1057. tab.reload(tabid);
  1058. }
  1059. } else {
  1060. tab.addTabItem({
  1061. tabid : tabid,
  1062. text : text,
  1063. url : url,
  1064. changeHeightOnResize : true
  1065. });
  1066. }
  1067. }
  1068. /**
  1069. * 获取标签页的高度
  1070. *
  1071. * @returns {String}
  1072. */
  1073. function getParentHeight() {
  1074. var obj = window.top;
  1075. var h = "";
  1076. if (obj != undefined && obj != null) {
  1077. h = $(".l-tab-content", obj.document).height();
  1078. }
  1079. return h;
  1080. }
  1081. /**
  1082. * 关闭当前的这个页面
  1083. */
  1084. function closeWindow() {
  1085. try {
  1086. var tab = null;
  1087. var obj = window.top;
  1088. if (obj != undefined && obj != null) {
  1089. tab = obj.findTabContent();
  1090. }
  1091. var curTabId = tab.getSelectedTabItemID();
  1092. tab.removeTabItem(curTabId);
  1093. } catch (e) {
  1094. alert("操作失败!当前页面可能不在系统框架内,请关闭!");
  1095. }
  1096. }
  1097. /**
  1098. * 关闭当前的这个页面
  1099. */
  1100. function closeWindowByTabId(tabId) {
  1101. try {
  1102. var tab = null;
  1103. var obj = window.top;
  1104. if (obj != undefined && obj != null) {
  1105. tab = obj.findTabContent();
  1106. }
  1107. if (tabId) {
  1108. if (tab.isTabItemExist(tabId)) {
  1109. tab.removeTabItem(tabId);
  1110. }
  1111. }
  1112. } catch (e) {
  1113. alert("操作失败!当前页面可能不在系统框架内,请关闭!");
  1114. }
  1115. }
  1116. /**
  1117. * 刷新当前的这个窗口 tabId[String]目标tab的id
  1118. */
  1119. function refreshWindow(tabId) {
  1120. try {
  1121. var tab = null;
  1122. var obj = window.top;
  1123. if (obj != undefined && obj != null) {
  1124. tab = obj.findTabContent();
  1125. }
  1126. if (tabId) {
  1127. if (tab.isTabItemExist(tabId)) {
  1128. tab.reload(tabId);
  1129. }
  1130. } else {
  1131. var curTabId = tab.getSelectedTabItemID();
  1132. tab.reload(curTabId);
  1133. }
  1134. } catch (e) {
  1135. alert("操作失败!当前页面可能不在系统框架内,请关闭!");
  1136. }
  1137. }
  1138. /**
  1139. * 后去当前窗口的id
  1140. */
  1141. function getCurWindowId() {
  1142. try {
  1143. var tab = null;
  1144. var obj = window.top;
  1145. if (obj != undefined && obj != null) {
  1146. tab = obj.findTabContent();
  1147. }
  1148. return tab.getSelectedTabItemID();
  1149. } catch (e) {
  1150. return "";
  1151. }
  1152. }
  1153. /**
  1154. * 格式化日期格式,生成的格式例:2012-08-01 12:00:00
  1155. *
  1156. * @param date
  1157. * @returns
  1158. */
  1159. function formatDate(date) {
  1160. if (date == undefined) {
  1161. return "";
  1162. }
  1163. var year = date.getFullYear();
  1164. var month = date.getMonth();
  1165. var day = date.getDate();
  1166. var hour = date.getHours();
  1167. var minute = date.getMinutes();
  1168. var second = date.getSeconds();
  1169. var datestr;
  1170. month += 1;
  1171. if (month < 10) {
  1172. month = '0' + month;
  1173. }
  1174. if (day < 10) {
  1175. day = '0' + day;
  1176. }
  1177. if (hour < 10) {
  1178. hour = '0' + hour;
  1179. }
  1180. if (minute < 10) {
  1181. minute = '0' + minute;
  1182. }
  1183. if (second < 10) {
  1184. second = '0' + second;
  1185. }
  1186. datestr = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':'
  1187. + second;
  1188. return datestr;
  1189. }
  1190. /**
  1191. * 当ajax请求发送失败时调用此方法,必须配合liger的dialog组件使用
  1192. *
  1193. * @param message
  1194. * 错误提示信息
  1195. * @param req
  1196. * 请求对象
  1197. */
  1198. function showAjaxError(req, msg, errorThrown) {
  1199. try {
  1200. var message = msg ? msg : errorThrown; // msg和errorThrown中只会有一个有值
  1201. /* Request Timeout代表会话超时 Unknown 代表服务器关闭或未知情况 */
  1202. if (message == "timeout"
  1203. || (req && (req.statusText == "Request Timeout"))) {
  1204. var message = "请求超时,请重新提交请求,可能原因如下:<br/>" + "1、您没有登录本系统;<br/>"
  1205. + "2、会话超时;<br/>" + "3、您没有权限访问该页面;<br/>" + "4、服务器正在重启;<br/>";
  1206. $.ligerDialog.error(message);
  1207. return 1;
  1208. }
  1209. /* Forbidden 服务器拒绝该请求 */
  1210. if (req && (req.statusText == "Forbidden")) {
  1211. var message = "对不起,服务器拒绝了此次请求,请稍后重试!";
  1212. $.ligerDialog.error(message);
  1213. return 2;
  1214. }
  1215. if (req && req.statusText) {
  1216. if (message == "" || message == null) {
  1217. $.ligerDialog.error(req.statusText);
  1218. } else {
  1219. if (req.responseText
  1220. && req.responseText.indexOf(SYSTEM_TIMEOUT_ERROR) != -1) {
  1221. message = "请求超时,请重新提交!";
  1222. } else if (req.responseText
  1223. && req.responseText.indexOf(SYSTEM_PROCESS_ERROR) != -1) {
  1224. message = "系统异常,请尝试刷新页面后重新提交,或联系管理员!";
  1225. }
  1226. $.ligerDialog.error(message + "[" + req.statusText + "]");
  1227. }
  1228. return 3;
  1229. } else {
  1230. if (message == "" || message == null) {
  1231. $.ligerDialog.error("操作失败,请稍后重试!"); // 如果没有传入 错误消息,则默认给出一个错误消息提示
  1232. } else {
  1233. $.ligerDialog.error(message);
  1234. }
  1235. return 3;
  1236. }
  1237. } catch (e) {
  1238. $.ligerDialog.error("发生未知错误(" + message
  1239. + "),已知情况:<br/>1、服务器繁忙,请求超时!请稍等片刻再操作……<br/>2、数据库异常,请联系管理员!");
  1240. return 255;
  1241. }
  1242. }
  1243. function logout() {
  1244. $("#logout").click();
  1245. }
  1246. function daytime() {
  1247. var timee = new Date();
  1248. var hh = timee.getHours();
  1249. var mm = timee.getMinutes();
  1250. var ww = timee.getDay();
  1251. var days = [ "7", "1", "2", "3", "4", "5", "6" ];
  1252. if (days[ww] == "7" || days[ww] == "6") {
  1253. if (hh < 15) {
  1254. return true;
  1255. } else {
  1256. if (hh = 15) {
  1257. if (mm <= 45) {
  1258. return true;
  1259. } else {
  1260. return false;
  1261. }
  1262. } else {
  1263. return false;
  1264. }
  1265. }
  1266. } else {
  1267. if (hh < 16) {
  1268. return true;
  1269. } else {
  1270. if (hh = 16) {
  1271. if (mm <= 15) {
  1272. return true;
  1273. } else {
  1274. return false;
  1275. }
  1276. } else {
  1277. return false;
  1278. }
  1279. }
  1280. }
  1281. }
  1282. /**
  1283. * 当前用户据在部门ID
  1284. *
  1285. * @returns
  1286. */
  1287. function findUserGroupId() {
  1288. var obj = window.top;
  1289. if (obj != undefined && obj != null) {
  1290. var gid = $("#userGroupId", obj.document).val();
  1291. return gid;
  1292. }
  1293. }
  1294. /**
  1295. * 当前用户所在公司ID
  1296. *
  1297. * @returns
  1298. */
  1299. function findUserCompanyId() {
  1300. var obj = window.top;
  1301. if (obj != undefined && obj != null) {
  1302. var gid = $("#userCompanyId", obj.document).val();
  1303. return gid;
  1304. }
  1305. }
  1306. /**
  1307. * 系统当前时间
  1308. *
  1309. * @returns
  1310. */
  1311. function getCurrentDate() {
  1312. var d = new Date();
  1313. var day = formatDate(d);
  1314. day = day.substring(0, day.length - 3);
  1315. return day;
  1316. }
  1317. /**
  1318. * 系统当前日期
  1319. *
  1320. * @returns
  1321. */
  1322. function getSystemDate() {
  1323. var d = new Date();
  1324. var day = formatDate(d);
  1325. day = day.substring(0, day.indexOf(" "));
  1326. return day;
  1327. }
  1328. //日期加上天数后的新日期.
  1329. function AddDays(date, days) {
  1330. var nd = new Date(date);
  1331. nd = nd.valueOf();
  1332. nd = nd + days * 24 * 60 * 60 * 1000;
  1333. nd = new Date(nd);
  1334. // alert(nd.getFullYear() + "年" + (nd.getMonth() + 1) + "月" + nd.getDate() +
  1335. // "日");
  1336. var y = nd.getFullYear();
  1337. var m = nd.getMonth() + 1;
  1338. var d = nd.getDate();
  1339. if (m <= 9)
  1340. m = "0" + m;
  1341. if (d <= 9)
  1342. d = "0" + d;
  1343. var cdate = y + "-" + m + "-" + d;
  1344. return cdate;
  1345. }
  1346. function getListCheckTexts(name, id) {
  1347. var pn = $("#" + name).val();
  1348. var pid = $("#" + id).val();
  1349. if (pid == undefined)
  1350. return;
  1351. if (pn == undefined)
  1352. return;
  1353. var item = pid.split(",");
  1354. var text = pn.split(",");
  1355. var checkTexts = "";
  1356. for (var i = 0; i < item.length; i++) {
  1357. checkTexts += "," + item[i] + "_" + text[i];
  1358. }
  1359. return checkTexts;
  1360. }
  1361. function loadingShow() {
  1362. $("html").removeClass("l-srcoll-show");
  1363. $("html").addClass("l-srcoll-hide");
  1364. $("body").removeClass("l-srcoll-show");
  1365. $("body").addClass("l-srcoll-hide");
  1366. $("#pageloading").show();
  1367. }
  1368. function loadingHide() {
  1369. $("html").removeClass("l-srcoll-hide");
  1370. $("html").addClass("l-srcoll-show");
  1371. $("body").removeClass("l-srcoll-hide");
  1372. $("body").addClass("l-srcoll-show");
  1373. $("#pageloading").hide();
  1374. }
  1375. function openfilewin(html) {
  1376. var w = $(window).width();
  1377. return $.ligerDialog.open({
  1378. content : html,
  1379. width : w * 0.9,
  1380. height : '99%',
  1381. isResize : true,
  1382. isHidden : false
  1383. });
  1384. }
  1385. function openTips(option) {
  1386. return $.ligerDialog.open(option);
  1387. }
  1388. /**
  1389. * 在最顶层弹出窗口
  1390. *
  1391. * @param option
  1392. */
  1393. function openTopDialog(option) {
  1394. var obj = window.top;
  1395. var bpmConfig = "";
  1396. if (obj != undefined && obj != null) {
  1397. bpmConfig = $("#bpmConfig", obj.document).val();
  1398. if(!bpmConfig){
  1399. return obj.openDialog(option);
  1400. }else{
  1401. return this.openDialog(option);
  1402. }
  1403. }
  1404. }
  1405. /**
  1406. * 获取当前系统的工程名称
  1407. *
  1408. * @returns {String}
  1409. */
  1410. function getProjectName() {
  1411. var obj = window.top;
  1412. var prjName = "";
  1413. if (obj != undefined && obj != null) {
  1414. prjName = $("#prjName", obj.document).val();
  1415. }
  1416. return prjName;
  1417. }
  1418. /**
  1419. * 获取当前系统的皮肤样式
  1420. *
  1421. * @returns {String}
  1422. */
  1423. function getCssName() {
  1424. var obj = window.top;
  1425. var cssName = "";
  1426. if (obj != undefined && obj != null) {
  1427. cssName = $("#cssName", obj.document).val();
  1428. }
  1429. return cssName;
  1430. }
  1431. /**
  1432. * 顶级打开确认提示框
  1433. *
  1434. * @param content
  1435. * 提示内容
  1436. * @param backValidate
  1437. * 回调函数
  1438. */
  1439. function yrConfirm(content, backValidate) {
  1440. var obj = window.top;
  1441. if (obj != undefined && obj != null) {
  1442. obj.confirmDialog(content, backValidate);
  1443. }
  1444. }
  1445. /**
  1446. * 四舍五入函数
  1447. *
  1448. * @param Dight
  1449. * 数字
  1450. * @param How
  1451. * 保留小数点几位
  1452. * @returns
  1453. */
  1454. function ForDight(Dight, How) {
  1455. Dight = Math.round(Dight * Math.pow(10, How)) / Math.pow(10, How);
  1456. return Dight;
  1457. }
  1458. /**
  1459. * 判断数组中是否包含指定元素
  1460. *
  1461. * @param elem
  1462. * @param array
  1463. * @returns {Number}
  1464. */
  1465. function inArray(elem, array) {
  1466. for (var i = 0, length = array.length; i < length; i++)
  1467. if (array[i] == elem)
  1468. return i;
  1469. return -1;
  1470. }
  1471. function hide_blank() {
  1472. var obj = $("[target=_blank]");
  1473. var url = $(obj).attr("href");
  1474. if (url.indexOf("downloadFile.do") != -1) {
  1475. $(obj).removeAttr("target");
  1476. }
  1477. }
  1478. function insertClientType() {
  1479. var obj = window.top;
  1480. if (obj != undefined && obj != null) {
  1481. obj.configType();
  1482. }
  1483. }
  1484. function loadClientType() {
  1485. var obj = window.top;
  1486. if (obj != undefined && obj != null) {
  1487. return obj.loadConfigType();
  1488. }
  1489. }
  1490. function winOpen(url, title, prop) {
  1491. var isFromClient = loadClientType();
  1492. if (isFromClient == "1") {
  1493. $("body")
  1494. .append(
  1495. '<a id="mypopup" href="" style="display:none;" target="_blank"></a>');
  1496. obj = document.getElementById("mypopup");
  1497. obj.style.display = "block";
  1498. obj.href = url;
  1499. obj.focus();
  1500. obj.click();
  1501. obj.style.display = "none";
  1502. } else {
  1503. window.open(url, title, prop);
  1504. }
  1505. };
  1506. /**
  1507. * js数组转JSON
  1508. *
  1509. * @param o
  1510. * @returns
  1511. */
  1512. function arrayToJson(o) {
  1513. var r = [];
  1514. if (typeof o == "string")
  1515. return "\""
  1516. + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\\n")
  1517. .replace(/(\r)/g, "\\r").replace(/(\t)/g, "\\t") + "\"";
  1518. if (typeof o == "object") {
  1519. if (!o.sort) {
  1520. for ( var i in o)
  1521. r.push(i + ":" + arrayToJson(o[i]));
  1522. if (!!document.all
  1523. && !/^\n?function\s*toString\(\)\s*\{\n?\s*\[native code\]\n?\s*\}\n?\s*$/
  1524. .test(o.toString)) {
  1525. r.push("toString:" + o.toString.toString());
  1526. }
  1527. r = "{" + r.join() + "}";
  1528. } else {
  1529. for (var i = 0; i < o.length; i++) {
  1530. r.push(arrayToJson(o[i]));
  1531. }
  1532. r = "[" + r.join() + "]";
  1533. }
  1534. return r;
  1535. }
  1536. if (!o)
  1537. o = "";
  1538. return o.toString();
  1539. }
  1540. function struct(key, value) {
  1541. this.key = key;
  1542. this.value = value;
  1543. }
  1544. function put(key, value) {
  1545. for (var i = 0; i < this.arr.length; i++) {
  1546. if (this.arr[i].key === key) {
  1547. this.arr[i].value = value;
  1548. return;
  1549. }
  1550. }
  1551. this.arr[this.arr.length] = new struct(key, value);
  1552. }
  1553. var get = function(key) {
  1554. for (var i = 0; i < this.arr.length; i++) {
  1555. if (this.arr[i].key === key) {
  1556. return this.arr[i].value;
  1557. }
  1558. }
  1559. return null;
  1560. };
  1561. /**
  1562. * JS转map对象
  1563. *
  1564. * @returns {map}
  1565. */
  1566. function map() {
  1567. this.put = put;
  1568. this.get = get;
  1569. this.arr = new Array();
  1570. }
  1571. /**
  1572. * JS获取字符串长度(区分中英文) 中文算2个,英文一个.
  1573. * @param str
  1574. * @returns
  1575. */
  1576. function getStrLength(str) {
  1577. var cArr = str.match(/[^\x00-\xff]/ig);
  1578. return str.length + (cArr == null ? 0 : cArr.length);
  1579. }
  1580. function openVesion() {
  1581. var runTimeObj = $("#runTime").val();
  1582. if (runTimeObj == 0) {
  1583. var html = "<div style='width:200px;height:90px;margin:3px 9px 0px 3px'>"
  1584. + "试用版本已到期,如需继续使用请联系软件提供商" + "</div>";
  1585. openTopDialog({
  1586. content : html,
  1587. title : "通知",
  1588. width : 250,
  1589. height : 100
  1590. });
  1591. }
  1592. }
  1593. /**
  1594. * 在文本框中加入提示文本
  1595. */
  1596. (function($) {
  1597. $.fn.extend({
  1598. defaultTitle : function(e) {
  1599. var o = $.extend({
  1600. title : ""
  1601. }, e);
  1602. var searchObj = this;
  1603. searchObj.addClass("f9");
  1604. if (searchObj.size() != 1)
  1605. return;
  1606. var txt = searchObj.val();
  1607. if (txt && txt != "")
  1608. o.title = txt;
  1609. searchObj.bind("click", function() {
  1610. var val = $(this).val();
  1611. if (val == o.title) {
  1612. $(this).val("");
  1613. }
  1614. });
  1615. searchObj.bind("blur", function() {
  1616. var val = $(this).val();
  1617. if (val == "") {
  1618. $(this).val(o.title);
  1619. }
  1620. });
  1621. searchObj.keydown(function(e) {
  1622. if (e.keyCode == 13) {
  1623. if ($(".btn_ck").size() == 1) {
  1624. $(".btn_ck").click();
  1625. }
  1626. }
  1627. });
  1628. searchObj.val(o.title);
  1629. // 在搜索框前面加入隐藏域,使搜索框不会默认获得焦点
  1630. searchObj.before("<input type='hidden'/>");
  1631. $(this).focus().select();
  1632. }
  1633. });
  1634. })(jQuery);
  1635. var flowDialogs = [];
  1636. function openflowDialog(owurl, name, dialogId) {
  1637. // alert(owurl);
  1638. // alert(dialogId);
  1639. var flowDialog = openTopDialog({
  1640. height : $("body", window.top.document).height() - 50,
  1641. width : $("body", window.top.document).width() - 50,
  1642. url : owurl,
  1643. showMax : false,
  1644. showToggle : false,
  1645. showMin : true,
  1646. isResize : false,
  1647. modal : false,
  1648. title : name,
  1649. id : dialogId,
  1650. name : "ligerWindow_" + dialogId,
  1651. allowClose : true,
  1652. isHidden : true,
  1653. timeParmName : "date1"
  1654. });
  1655. flowDialogs.push(flowDialog);
  1656. }
  1657. function closeflowDialog(id) {
  1658. //alert(id);
  1659. var length = flowDialogs.length;
  1660. for (var i = 0; i < length; i++) {
  1661. var flowDialog = flowDialogs.shift();
  1662. if (flowDialog.id == id) {
  1663. // alert(id);
  1664. flowDialog.close();
  1665. } else {
  1666. flowDialogs.push(flowDialog);
  1667. }
  1668. }
  1669. }
  1670. function changeUrl(action){
  1671. try{
  1672. uuid = window.top.getUUID();
  1673. }catch(e){
  1674. // alert("uuid为空,请联系管理员!")
  1675. }
  1676. if(uuid && action){
  1677. if(action.indexOf("?")!=-1){
  1678. action = action+"&uuid="+uuid;
  1679. }else{
  1680. action = action+"?uuid="+uuid;
  1681. }
  1682. }
  1683. return action;
  1684. }