common.js 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758
  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. }
  1685. var uuid = "${session.loginID}";
  1686. function getUUID(){
  1687. return uuid;
  1688. }