jeeplus.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598
  1. /*!
  2. * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
  3. *
  4. * 通用公共方法
  5. * @author jeeplus
  6. * @version 2014-4-29
  7. */
  8. $(document).ready(function() {
  9. try{
  10. // 链接去掉虚框
  11. $("a").bind("focus",function() {
  12. if(this.blur) {this.blur()};
  13. });
  14. //所有下拉框使用select2
  15. $("select").select2();
  16. }catch(e){
  17. // blank
  18. }
  19. });
  20. // 引入js和css文件
  21. function include(id, path, file){
  22. if (document.getElementById(id)==null){
  23. var files = typeof file == "string" ? [file] : file;
  24. for (var i = 0; i < files.length; i++){
  25. var name = files[i].replace(/^\s|\s$/g, "");
  26. var att = name.split('.');
  27. var ext = att[att.length - 1].toLowerCase();
  28. var isCSS = ext == "css";
  29. var tag = isCSS ? "link" : "script";
  30. var attr = isCSS ? " type='text/css' rel='stylesheet' " : " type='text/javascript' ";
  31. var link = (isCSS ? "href" : "src") + "='" + path + name + "'";
  32. document.write("<" + tag + (i==0?" id="+id:"") + attr + link + "></" + tag + ">");
  33. }
  34. }
  35. }
  36. // 获取URL地址参数
  37. function getQueryString(name, url) {
  38. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  39. if (!url || url == ""){
  40. url = window.location.search;
  41. }else{
  42. url = url.substring(url.indexOf("?"));
  43. }
  44. r = url.substr(1).match(reg)
  45. if (r != null) return unescape(r[2]); return null;
  46. }
  47. //获取字典标签
  48. function getDictLabel(data, value, defaultValue){
  49. for (var i=0; i<data.length; i++){
  50. var row = data[i];
  51. if (row.value == value){
  52. return row.label;
  53. }
  54. }
  55. return defaultValue;
  56. }
  57. // 打开一个窗体
  58. function windowOpen(url, name, width, height){
  59. var top=parseInt((window.screen.height-height)/2,10),left=parseInt((window.screen.width-width)/2,10),
  60. options="location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,"+
  61. "resizable=yes,scrollbars=yes,"+"width="+width+",height="+height+",top="+top+",left="+left;
  62. window.open(url ,name , options);
  63. }
  64. // 恢复提示框显示
  65. function resetTip(){
  66. top.$.jBox.tip.mess = null;
  67. }
  68. // 关闭提示框
  69. function closeTip(){
  70. top.$.jBox.closeTip();
  71. }
  72. //显示提示框
  73. function showTip(mess, type, timeout, lazytime){
  74. resetTip();
  75. setTimeout(function(){
  76. top.$.jBox.tip(mess, (type == undefined || type == '' ? 'info' : type), {opacity:0,
  77. timeout: timeout == undefined ? 2000 : timeout});
  78. }, lazytime == undefined ? 500 : lazytime);
  79. }
  80. // 显示加载框
  81. function loading(mess){
  82. if (mess == undefined || mess == ""){
  83. mess = "正在提交,请稍等...";
  84. }
  85. resetTip();
  86. top.$.jBox.tip(mess,'loading',{opacity:0});
  87. }
  88. // 警告对话框
  89. function alertx(mess, closed){
  90. top.$.jBox.info(mess, '提示', {closed:function(){
  91. if (typeof closed == 'function') {
  92. closed();
  93. }
  94. }});
  95. top.$('.jbox-body .jbox-icon').css('top','55px');
  96. }
  97. // 确认对话框
  98. function confirmx(mess, href, closed){
  99. top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
  100. //do something
  101. if (typeof href == 'function') {
  102. href();
  103. }else{
  104. resetTip(); //loading();
  105. location = href;
  106. }
  107. top.layer.close(index);
  108. });
  109. // top.$.jBox.confirm(mess,'系统提示',function(v,h,f){
  110. // if(v=='ok'){
  111. // if (typeof href == 'function') {
  112. // href();
  113. // }else{
  114. // resetTip(); //loading();
  115. // location = href;
  116. // }
  117. // }
  118. // },{buttonsFocus:1, closed:function(){
  119. // if (typeof closed == 'function') {
  120. // closed();
  121. // }
  122. // }});
  123. // top.$('.jbox-body .jbox-icon').css('top','55px');
  124. return false;
  125. }
  126. // 提示输入对话框
  127. function promptx(title, href){
  128. var index = top.layer.prompt({title: title, formType: 2}, function(text){
  129. if (typeof href == 'function') {
  130. href();
  131. }else{
  132. resetTip(); //loading();
  133. location = href + encodeURIComponent(text);
  134. }
  135. top.layer.close(index);
  136. });
  137. return false;
  138. }
  139. // cookie操作
  140. function cookie(name, value, options) {
  141. if (typeof value != 'undefined') { // name and value given, set cookie
  142. options = options || {};
  143. if (value === null) {
  144. value = '';
  145. options.expires = -1;
  146. }
  147. var expires = '';
  148. if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
  149. var date;
  150. if (typeof options.expires == 'number') {
  151. date = new Date();
  152. date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
  153. } else {
  154. date = options.expires;
  155. }
  156. expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
  157. }
  158. var path = options.path ? '; path=' + options.path : '';
  159. var domain = options.domain ? '; domain=' + options.domain : '';
  160. var secure = options.secure ? '; secure' : '';
  161. document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
  162. } else { // only name given, get cookie
  163. var cookieValue = null;
  164. if (document.cookie && document.cookie != '') {
  165. var cookies = document.cookie.split(';');
  166. for (var i = 0; i < cookies.length; i++) {
  167. var cookie = jQuery.trim(cookies[i]);
  168. // Does this cookie string begin with the name we want?
  169. if (cookie.substring(0, name.length + 1) == (name + '=')) {
  170. cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
  171. break;
  172. }
  173. }
  174. }
  175. return cookieValue;
  176. }
  177. }
  178. // 数值前补零
  179. function pad(num, n) {
  180. var len = num.toString().length;
  181. while(len < n) {
  182. num = "0" + num;
  183. len++;
  184. }
  185. return num;
  186. }
  187. // 转换为日期
  188. function strToDate(date){
  189. return new Date(date.replace(/-/g,"/"));
  190. }
  191. // 日期加减
  192. function addDate(date, dadd){
  193. date = date.valueOf();
  194. date = date + dadd * 24 * 60 * 60 * 1000;
  195. return new Date(date);
  196. }
  197. //截取字符串,区别汉字和英文
  198. function abbr(name, maxLength){
  199. if(!maxLength){
  200. maxLength = 20;
  201. }
  202. if(name==null||name.length<1){
  203. return "";
  204. }
  205. var w = 0;//字符串长度,一个汉字长度为2
  206. var s = 0;//汉字个数
  207. var p = false;//判断字符串当前循环的前一个字符是否为汉字
  208. var b = false;//判断字符串当前循环的字符是否为汉字
  209. var nameSub;
  210. for (var i=0; i<name.length; i++) {
  211. if(i>1 && b==false){
  212. p = false;
  213. }
  214. if(i>1 && b==true){
  215. p = true;
  216. }
  217. var c = name.charCodeAt(i);
  218. //单字节加1
  219. if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) {
  220. w++;
  221. b = false;
  222. }else {
  223. w+=2;
  224. s++;
  225. b = true;
  226. }
  227. if(w>maxLength && i<=name.length-1){
  228. if(b==true && p==true){
  229. nameSub = name.substring(0,i-2)+"...";
  230. }
  231. if(b==false && p==false){
  232. nameSub = name.substring(0,i-3)+"...";
  233. }
  234. if(b==true && p==false){
  235. nameSub = name.substring(0,i-2)+"...";
  236. }
  237. if(p==true){
  238. nameSub = name.substring(0,i-2)+"...";
  239. }
  240. break;
  241. }
  242. }
  243. if(w<=maxLength){
  244. return name;
  245. }
  246. return nameSub;
  247. }
  248. //打开对话框(添加修改)
  249. function openDialog(title,url,width,height,target){
  250. if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
  251. width='auto';
  252. height='auto';
  253. }else{//如果是PC端,根据用户设置的width和height显示。
  254. }
  255. top.layer.open({
  256. type: 2,
  257. area: [width, height],
  258. title: title,
  259. maxmin: true, //开启最大化最小化按钮
  260. content: url ,
  261. skin: 'two-btns',
  262. btn: ['提交', '关闭'],
  263. yes: function(index, layero){
  264. var body = top.layer.getChildFrame('body', index);
  265. var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
  266. var inputForm = body.find('#inputForm');
  267. var top_iframe;
  268. if(target){
  269. top_iframe = target;//如果指定了iframe,则在改frame中跳转
  270. }else{
  271. top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
  272. }
  273. inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
  274. if(iframeWin.contentWindow.doSubmit() ){
  275. // top.layer.close(index);//关闭对话框。
  276. setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
  277. }
  278. },
  279. cancel: function(index){
  280. }
  281. });
  282. }
  283. //打开对话框(查看)
  284. function openDialogView(title,url,width,height){
  285. if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
  286. width='auto';
  287. height='auto';
  288. }else{//如果是PC端,根据用户设置的width和height显示。
  289. }
  290. top.layer.open({
  291. type: 2,
  292. skin: 'one-btn',
  293. area: [width, height],
  294. title: title,
  295. maxmin: true, //开启最大化最小化按钮
  296. content: url ,
  297. btn: ['关闭'],
  298. cancel: function(index){
  299. }
  300. });
  301. }
  302. function search(){//查询,页码清零
  303. $("#pageNo").val(0);
  304. $("#searchForm").submit();
  305. return false;
  306. }
  307. function resetSearch(){//重置,页码清零
  308. $("#pageNo").val(0);
  309. $("#searchForm div.query input").val("");
  310. $("#searchForm div.query select").val("");
  311. $("#searchForm").submit();
  312. return false;
  313. }
  314. function reset(){//重置,页码清零
  315. $("#pageNo").val(0);
  316. $("#searchForm div.form-group input").val("");
  317. $("#searchForm div.form-group select").val("");
  318. $("#searchForm").submit();
  319. return false;
  320. }
  321. function sortOrRefresh(){//刷新或者排序,页码不清零
  322. $("#searchForm").submit();
  323. return false;
  324. }
  325. function page(n,s){//翻页
  326. $("#pageNo").val(n);
  327. $("#pageSize").val(s);
  328. $("#searchForm").submit();
  329. $("span.page-size").text(s);
  330. return false;
  331. }
  332. function resizeFormWindow(){
  333. var winH = $(window).height();
  334. $(".single-form").css('min-height',(winH - 8 - 1) +'px');//这里的div,选择你的那个div
  335. }
  336. function resizeListWindow1(){
  337. var winH = $(window).height();
  338. var updiv= $("#queryDiv").height();
  339. $(".contentDetails").css('min-height',(winH - updiv - 16 - 1) +'px');//这里的div,选择你的那个div
  340. }
  341. function resizeListWindow2(){
  342. var winH = $(window).height();
  343. var updiv1= $("#tabDiv").height();
  344. var updiv2= $("#queryDiv").height();
  345. $(".contentDetails").css('min-height',(winH - updiv1 - updiv2 - 8 - 1) +'px');//这里的div,选择你的那个div
  346. }
  347. function resizeListWindow3(){
  348. var winH = $(window).height();
  349. var updiv= $("#queryDiv").height();
  350. $(".contentDetails").css('min-height',(winH - updiv - 8 - 1) +'px');//这里的div,选择你的那个div
  351. }
  352. function resizeListWindow4(){
  353. var winH = $(window).height();
  354. var updiv1= $("#tabDiv").height();
  355. var updiv= $("#queryDiv").height();
  356. $(".contentDetails").css('min-height',(winH - updiv1 - updiv - 1) +'px');//这里的div,选择你的那个div
  357. }
  358. function getAuditContractState(id)
  359. {
  360. var result ={};
  361. result.action = true;
  362. switch(id)
  363. {
  364. case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
  365. case "2":result.label = "auditing";result.status="审批中";break;
  366. case "3":result.label = "cancel";result.status="撤回";break;
  367. case "4":result.label = "reject";result.status="驳回";break;
  368. case "5":result.label = "signed";result.status="已签";break;
  369. case "6":result.label = "discarding";result.status="作废中";break;
  370. case "7":result.label = "discarded";result.status="已作废";break;
  371. case "8":result.label = "changing";result.status="变更中";break;
  372. case "9":result.label = "changing";result.status="完成中";break;
  373. case "10":result.label = "signed";result.status="已完成";break;
  374. case "11":result.label = "changing";result.status="签章中";break;
  375. case "12":result.label = "changing";result.status="拒签";break;
  376. case "14":result.label = "changing";result.status="归档中";break;
  377. default:
  378. result.label = "unknown";result.status="未知";break;
  379. }
  380. return result;
  381. }
  382. function getruralProjectState(id)
  383. {
  384. var result ={};
  385. result.action = true;
  386. switch(id)
  387. {
  388. case "0":result.status="";result.action = false;break;
  389. case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
  390. case "2":result.label = "auditing";result.status="审批中";break;
  391. case "3":result.label = "cancel";result.status="撤回";break;
  392. case "4":result.label = "reject";result.status="驳回";break;
  393. case "5":result.label = "signed";result.status="登记完成";break;
  394. case "6":result.label = "discarding";result.status="作废中";break;
  395. case "7":result.label = "discarded";result.status="已作废";break;
  396. case "8":result.label = "changing";result.status="变更中";break;
  397. case "10":result.label = "unknown";result.status="待发起";result.action = false;break;
  398. default:
  399. result.label = "unknown";result.status="未知";break;
  400. }
  401. return result;
  402. }
  403. function getRuralProjectArchiveState(id)
  404. {
  405. var result ={};
  406. result.action = true;
  407. switch(id)
  408. {
  409. case "0":result.label = "tempstore";result.status="未归档";result.action = false;break;
  410. case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
  411. case "2":result.label = "auditing";result.status="归档中";break;
  412. case "3":result.label = "cancel";result.status="撤回";break;
  413. case "4":result.label = "reject";result.status="驳回";break;
  414. case "5":result.label = "signed";result.status="已归档";break;
  415. case "8":result.label = "changing";result.status="变更中";break;
  416. case "10":result.label = "unknown";result.status="待发起";result.action = false;break;
  417. default:
  418. result.label = "unknown";result.status="未知";break;
  419. }
  420. return result;
  421. }
  422. function getBorrowState(id)
  423. {
  424. var result ={};
  425. result.action = true;
  426. switch(id)
  427. {
  428. case "0":result.label = "tempstore";result.status="未借用";break;
  429. case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
  430. case "2":result.label = "auditing";result.status="借用中";break;
  431. case "3":result.label = "cancel";result.status="撤回";break;
  432. case "4":result.label = "reject";result.status="驳回";break;
  433. case "5":result.label = "signed";result.status="已借用";break;
  434. case "8":result.label = "changing";result.status="变更中";break;
  435. case "10":result.label = "unknown";result.status="待发起";result.action = false;break;
  436. default:
  437. result.label = "unknown";result.status="未知";break;
  438. }
  439. return result;
  440. }
  441. function getAuditState(id)
  442. {
  443. var result ={};
  444. result.action = true;
  445. switch(id)
  446. {
  447. case "0":result.status="";result.action = false;break;
  448. case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
  449. case "2":result.label = "auditing";result.status="审批中";break;
  450. case "3":result.label = "cancel";result.status="撤回";break;
  451. case "4":result.label = "reject";result.status="驳回";break;
  452. case "5":result.label = "signed";result.status="已签";break;
  453. case "6":result.label = "discarding";result.status="作废中";break;
  454. case "7":result.label = "discarded";result.status="已作废";break;
  455. case "8":result.label = "changing";result.status="变更中";break;
  456. case "10":result.label = "unknown";result.status="待发起";result.action = false;break;
  457. default:
  458. result.label = "unknown";result.status="未知";break;
  459. }
  460. return result;
  461. }
  462. function getAuditRecordState(id)
  463. {
  464. var result ={};
  465. result.action = true;
  466. switch(id)
  467. {
  468. case "1":result.label = "tempstore";result.status="暂存"; result.action = false;break;
  469. case "2":result.label = "auditing";result.status="审批中";break;
  470. case "3":result.label = "cancel";result.status="撤回";break;
  471. case "4":result.label = "reject";result.status="驳回";break;
  472. case "5":result.label = "signed";result.status="已归档";break;
  473. default:
  474. result.label = "unknown";result.status="未知";break;
  475. }
  476. return result;
  477. }
  478. function getAuditChangeState(id)
  479. {
  480. var result ={};
  481. result.action = true;
  482. switch(id)
  483. {
  484. case "1":result.label = "tempstore";result.status="暂存"; result.action = false;break;
  485. case "2":result.label = "changing";result.status="变更中";break;
  486. case "3":result.label = "cancel";result.status="撤回";break;
  487. case "4":result.label = "reject";result.status="驳回";break;
  488. case "5":result.label = "changed";result.status="已变更";break;
  489. default:
  490. result.label = "unknown";result.status="未知";break;
  491. }
  492. return result;
  493. }
  494. function getAuditInvalidState(id)
  495. {
  496. var result ={};
  497. result.action = true;
  498. switch(id)
  499. {
  500. case "1":result.label = "tempstore";result.status="暂存"; result.action = false;break;
  501. case "2":result.label = "discarding";result.status="作废中";break;
  502. case "3":result.label = "cancel";result.status="撤回";break;
  503. case "4":result.label = "reject";result.status="驳回";break;
  504. case "5":result.label = "discarded";result.status="已作废";break;
  505. default:
  506. result.label = "unknown";result.status="未知";break;
  507. }
  508. return result;
  509. }
  510. function getAuditLeaveState(id)
  511. {
  512. var result ={};
  513. result.action = true;
  514. switch(id)
  515. {
  516. case "1":result.label = "tempstore";result.status="暂存";result.action = false;break;
  517. case "2":result.label = "auditing";result.status="审批中";break;
  518. case "3":result.label = "cancel";result.status="撤回";break;
  519. case "4":result.label = "reject";result.status="驳回";break;
  520. case "5":result.label = "signed";result.status="已签";break;
  521. case "6":result.label = "auditing";result.status="销假中";break;
  522. case "7":result.label = "cancel";result.status="销假撤回";break;
  523. case "9":result.label = "reject";result.status="销假驳回";break;
  524. case "10":result.label = "auditing";result.status="续假中";break;
  525. case "11":result.label = "cancel";result.status="续假撤回";break;
  526. case "12":result.label = "reject";result.status="续假驳回";break;
  527. case "8":result.label = "changing";result.status="完成";break;
  528. default:
  529. result.label = "unknown";result.status="未知";break;
  530. }
  531. return result;
  532. }
  533. /*消除list页面table出现的滚动条,默认二个按钮,130px*/
  534. function resizeListTable(width){
  535. var fwidth = width || 130;
  536. fwidth = fwidth - 6;
  537. if(document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight))
  538. {
  539. var tb1 = document.getElementById("changewidth");
  540. tb1.innerHTML = tb1.innerHTML + "<style>.laytable-cell-1-op{ width: " + fwidth + "px;}</style>";
  541. }
  542. }
  543. function addLinkVisied(){
  544. $(this).addClass("a_visited");
  545. }
  546. function checkContentKeyUp(id,maxLength) {
  547. var content = document.getElementById(id);
  548. var length = content.value.replace(/^(\s|\u00A0)+/,'').replace(/(\s|\u00A0)+$/,'').length;
  549. var contentMsg = document.getElementById('contentMsg');
  550. contentMsg.innerHTML = "您已输入<font >" + length
  551. + "</font>字符,还可输入<font color='red'>" + (maxLength - length) + "</font>字符";
  552. }