RoadFlow2.1 临时演示

roadui.core.js 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. RoadUI = function () { };
  2. RoadUI.Core = {
  3. allFrames: [],
  4. getAllFrames: function (frame)
  5. {
  6. if (!frame)
  7. {
  8. frame = top;
  9. this.allFrames.push(frame);
  10. }
  11. var frames = frame.frames;
  12. for (var i = 0; i < frames.length; i++)
  13. {
  14. this.allFrames.push(frames[i]);
  15. this.getAllFrames(frames[i]);
  16. }
  17. },
  18. newid: function (isMiddline)
  19. {
  20. var guid = "";
  21. isMiddline = isMiddline == undefined ? true : isMiddline;
  22. for (var i = 1; i <= 32; i++)
  23. {
  24. var n = Math.floor(Math.random() * 16.0).toString(16);
  25. guid += n;
  26. if (isMiddline && (i == 8 || i == 12 || i == 16 || i == 20))
  27. {
  28. guid += "-";
  29. }
  30. }
  31. return guid;
  32. },
  33. rooturl: function ()
  34. {
  35. var curWwwPath = window.document.location.href;
  36. var pathName = window.document.location.pathname;
  37. var pos = curWwwPath.indexOf(pathName);
  38. var localhostPaht = curWwwPath.substring(0, pos);
  39. var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);
  40. //alert(projectName);
  41. return projectName + "/";
  42. },
  43. query: function (name)
  44. {
  45. var search = document.location.search;
  46. var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
  47. var matcher = pattern.exec(search);
  48. var items = null;
  49. if (null != matcher)
  50. {
  51. try
  52. {
  53. items = decodeURIComponent(decodeURIComponent(matcher[1]));
  54. } catch (e)
  55. {
  56. try
  57. {
  58. items = decodeURIComponent(matcher[1]);
  59. } catch (e)
  60. {
  61. items = matcher[1];
  62. }
  63. }
  64. }
  65. return items;
  66. },
  67. open: function (url, width, height, name)//弹出居中窗口
  68. {
  69. //弹出窗口的宽度
  70. var iWidth = width || 700;
  71. //弹出窗口的高度
  72. var iHeight = height || 500;
  73. var y = (window.screen.availHeight - 30 - iHeight) / 2; //获得窗口的垂直位置;
  74. var x = (window.screen.availWidth - 10 - iWidth) / 2; //获得窗口的水平位置;
  75. return window.open(url, name || "newwindow_" + RoadUI.Core.newid(false), 'height=' + iHeight + ',width=' + iWidth + ',top=' + y + ',left=' + x + ',toolbar=no,menubar=no,scrollbars=yes,resizable=yes,location=no,status=no');
  76. },
  77. formatDate: function (date, fmt)
  78. {
  79. if (!date) return;
  80. if (!fmt) fmt = "yyyy-MM-dd";
  81. switch (typeof date)
  82. {
  83. case "string":
  84. date = new Date(date.replace(/-/, "/"));
  85. break;
  86. case "number":
  87. date = new Date(date);
  88. break;
  89. }
  90. if (!date instanceof Date) return;
  91. var o = {
  92. "M+": date.getMonth() + 1, //月份
  93. "d+": date.getDate(), //日
  94. "h+": date.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
  95. "H+": date.getHours(), //小时
  96. "m+": date.getMinutes(), //分
  97. "s+": date.getSeconds(), //秒
  98. "q+": Math.floor((date.getMonth() + 3) / 3), //季度
  99. "S": date.getMilliseconds() //毫秒
  100. };
  101. var week = {
  102. "0": "\u65e5",
  103. "1": "\u4e00",
  104. "2": "\u4e8c",
  105. "3": "\u4e09",
  106. "4": "\u56db",
  107. "5": "\u4e94",
  108. "6": "\u516d"
  109. };
  110. if (/(y+)/.test(fmt))
  111. {
  112. fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
  113. }
  114. if (/(E+)/.test(fmt))
  115. {
  116. fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[date.getDay() + ""]);
  117. }
  118. for (var k in o)
  119. {
  120. if (new RegExp("(" + k + ")").test(fmt))
  121. {
  122. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
  123. }
  124. }
  125. return fmt;
  126. },
  127. decodeUri: function (uri)
  128. {
  129. if (!uri || $.trim(uri).length == 0)
  130. {
  131. return "";
  132. }
  133. try
  134. {
  135. return decodeURI(uri);
  136. }
  137. catch (e)
  138. {
  139. return uri;
  140. }
  141. },
  142. accDiv: function (arg1, arg2)//返回值:arg1除以arg2的精确结果
  143. {
  144. var t1 = 0, t2 = 0, r1, r2;
  145. try { t1 = arg1.toString().split(".")[1].length } catch (e) { }
  146. try { t2 = arg2.toString().split(".")[1].length } catch (e) { }
  147. with (Math)
  148. {
  149. r1 = Number(arg1.toString().replace(".", ""))
  150. r2 = Number(arg2.toString().replace(".", ""))
  151. return (r1 / r2) * pow(10, t2 - t1);
  152. }
  153. },
  154. accMul: function (arg1, arg2)//返回值:arg1乘以 arg2的精确结果
  155. {
  156. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
  157. try { m += s1.split(".")[1].length } catch (e) { }
  158. try { m += s2.split(".")[1].length } catch (e) { }
  159. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
  160. },
  161. accAdd: function (arg1, arg2)// 返回值:arg1加上arg2的精确结果
  162. {
  163. var r1, r2, m, c;
  164. try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
  165. try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
  166. c = Math.abs(r1 - r2);
  167. m = Math.pow(10, Math.max(r1, r2))
  168. if (c > 0)
  169. {
  170. var cm = Math.pow(10, c);
  171. if (r1 > r2)
  172. {
  173. arg1 = Number(arg1.toString().replace(".", ""));
  174. arg2 = Number(arg2.toString().replace(".", "")) * cm;
  175. }
  176. else
  177. {
  178. arg1 = Number(arg1.toString().replace(".", "")) * cm;
  179. arg2 = Number(arg2.toString().replace(".", ""));
  180. }
  181. }
  182. else
  183. {
  184. arg1 = Number(arg1.toString().replace(".", ""));
  185. arg2 = Number(arg2.toString().replace(".", ""));
  186. }
  187. return (arg1 + arg2) / m
  188. },
  189. accSub: function (arg1, arg2)// 返回值:arg1减去arg2的精确结果
  190. {
  191. var r1, r2, m, n;
  192. try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
  193. try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
  194. m = Math.pow(10, Math.max(r1, r2));
  195. //last modify by deeka
  196. //动态控制精度长度
  197. n = (r1 >= r2) ? r1 : r2;
  198. return ((arg1 * m - arg2 * m) / m).toFixed(n);
  199. },
  200. isIe6Or7: function ()
  201. {
  202. return !+'\v1' && !'1'[0];
  203. },
  204. isIE: function ()
  205. {
  206. return !!window.ActiveXObject;
  207. },
  208. isIE6: function ()
  209. {
  210. return this.isIE() && !window.XMLHttpRequest;
  211. },
  212. isIE7: function ()
  213. {
  214. return this.isIE() && !this.isIE6() && !this.isIE8();
  215. },
  216. isIE8: function ()
  217. {
  218. return this.isIE() && !!document.documentMode;
  219. },
  220. intDiv: function (number1, number2)//整除
  221. {
  222. var num1 = Math.round(number1);
  223. var num2 = Math.round(number2);
  224. var result = num1 / num2;
  225. if (result >= 0)
  226. {
  227. result = Math.floor(result);
  228. }
  229. else
  230. {
  231. result = Math.ceil(result);
  232. }
  233. return result;
  234. },
  235. offsetTop:function (elements){
  236. var top = elements.offsetTop;
  237. var parent = elements.offsetParent;
  238. while (parent)
  239. {
  240. top += parent.offsetTop;
  241. parent = parent.offsetParent;
  242. };
  243. return top;
  244. },
  245. offsetLeft:function (elements){
  246. var left = elements.offsetLeft;
  247. var parent = elements.offsetParent;
  248. while (parent)
  249. {
  250. left += parent.offsetLeft;
  251. parent = parent.offsetParent;
  252. };
  253. return left;
  254. },
  255. getPager:function (count, size, number, param, loadDataFunName, eleId)
  256. {
  257. eleId = eleId || "";
  258. var pager = '';
  259. size = size || 15;
  260. number = number || 1;
  261. //得到共有多少页
  262. var pageCount = count <= 0 ? 1 : count % size == 0 ? parseInt(count / size) : parseInt(count / size) + 1;
  263. if (pageCount <= 1)//只有一页则返回空
  264. {
  265. return "";
  266. }
  267. if (number < 1)
  268. {
  269. number = 1;
  270. }
  271. else if (number > pageCount)
  272. {
  273. number = pageCount;
  274. }
  275. //构造分页字符串
  276. var displaySize = 10;//中间显示的页数
  277. pager += "<div>";
  278. pager += "<span style='margin-right:15px;'>共 " + count.toString() + " 条 每页 " + size.toString() + " 条</span>";
  279. pager += "<a class=\"b\" style=\"margin-right:10px;\" href=\"javascript:eval('" + loadDataFunName + "(" + size + "," + 1 + ",\\'" + eleId + "\\')');\">首页</a>";
  280. pager += "<a class=\"b\" style=\"margin-right:10px;\" href=\"javascript:eval('" + loadDataFunName + "(" + size + "," + (number - 1) + ",\\'" + eleId + "\\')');\">上一页</a>";
  281. pager += "<a class=\"b\" style=\"margin-right:10px;\" href=\"javascript:eval('" + loadDataFunName + "(" + size + "," + (number + 1) + ",\\'" + eleId + "\\')');\">下一页</a>";
  282. pager += "<a class=\"b\" href=\"javascript:eval('" + loadDataFunName + "(" + size + "," + pageCount + ",\\'" + eleId + "\\')');\">尾页</a>";
  283. pager += "</div>";
  284. return pager;
  285. }
  286. };
  287. RoadUI.Xml = {
  288. getXmlDom: function ()
  289. {
  290. var xmldoc;
  291. if (window.ActiveXObject)
  292. {
  293. xmldoc = new ActiveXObject("Microsoft.XMLDOM");
  294. }
  295. else
  296. {
  297. if (document.implementation && document.implementation.createDocument)
  298. {
  299. xmldoc = document.implementation.createDocument("", "doc", null);
  300. }
  301. }
  302. return xmldoc;
  303. },
  304. loadXML: function (xml)
  305. {
  306. var xmldoc = RoadUI.Xml.getXmlDom();
  307. xmldoc.async = false;
  308. try
  309. {
  310. xmldoc.loadXML(xml);
  311. }
  312. catch (e)
  313. {
  314. xmldoc = new DOMParser().parseFromString(xml, "text/xml");
  315. }
  316. return xmldoc;
  317. },
  318. getElementValue: function (elements)
  319. {
  320. return elements && elements.length > 0 && elements[0].firstChild ? elements[0].firstChild.nodeValue : "";
  321. }
  322. };
  323. String.prototype.isInteger = function ()
  324. {
  325. return (new RegExp(/^\d+$/).test(this));
  326. };
  327. String.prototype.isNumber = function (value, element)
  328. {
  329. return (new RegExp(/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/).test(this));
  330. };
  331. String.prototype.trim = function ()
  332. {
  333. return this.replace(/(^\s*)|(\s*$)/g, "");
  334. };
  335. String.prototype.isNullOrEmpty =function()
  336. {
  337. return !this || this.length == 0 || this.trim().length == 0;
  338. };
  339. String.prototype.startWith = function (pattern)
  340. {
  341. return this.indexOf(pattern) === 0;
  342. };
  343. String.prototype.endWith = function (pattern)
  344. {
  345. var d = this.length - pattern.length;
  346. return d >= 0 && this.lastIndexOf(pattern) === d;
  347. };
  348. String.prototype.encodeTXT = function ()
  349. {
  350. return (this).replaceAll('&', '&amp;').replaceAll("<", "&lt;").replaceAll(">", "&gt;").replaceAll(" ", "&nbsp;");
  351. };
  352. String.prototype.isMail = function ()
  353. {
  354. return (new RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/).test(this.trim()));
  355. };
  356. String.prototype.isPhone = function ()
  357. {
  358. return (new RegExp(/(^([0-9]{3,4}[-])?\d{3,8}(-\d{1,6})?$)|(^\([0-9]{3,4}\)\d{3,8}(\(\d{1,6}\))?$)|(^\d{3,8}$)/).test(this));
  359. };
  360. String.prototype.isUrl = function ()
  361. {
  362. return (new RegExp(/^[a-zA-z]+:\/\/([a-zA-Z0-9\-\.]+)([-\w .\/?%&=:]*)$/).test(this));
  363. };
  364. String.prototype.isExternalUrl = function ()
  365. {
  366. return this.isUrl() && this.indexOf("://" + document.domain) == -1;
  367. };
  368. String.prototype.replaceAll = function (s1, s2, ignoreCase)
  369. {
  370. var str = this;
  371. if ('.' == s1)
  372. {
  373. while (str.indexOf(s1) != -1)
  374. {
  375. str = str.replace(s1, s2);
  376. }
  377. return str;
  378. }
  379. else
  380. {
  381. if (!RegExp.prototype.isPrototypeOf(s1))
  382. {
  383. return str.replace(new RegExp(s1, (ignoreCase ? "gi" : "g")), s2);
  384. }
  385. else
  386. {
  387. return str.replace(s1, s2);
  388. }
  389. }
  390. };
  391. String.prototype.isDate = function ()
  392. {
  393. var str = this;
  394. var reg = /^(\d+)-(\d{1,2})-(\d{1,2})$/;
  395. var r = str.match(reg);
  396. if (r == null)
  397. {
  398. reg = /^(\d+)\/(\d{1,2})\/(\d{1,2})$/;
  399. r = str.match(reg);
  400. }
  401. if (r == null) return false;
  402. r[2] = r[2] - 1;
  403. var d = new Date(r[1], r[2], r[3]);
  404. if (d.getFullYear() != r[1]) return false;
  405. if (d.getMonth() != r[2]) return false;
  406. if (d.getDate() != r[3]) return false;
  407. return true;
  408. }
  409. String.prototype.isDateTime = function ()
  410. {
  411. var str = this;
  412. var reg = /^(\d+)-(\d{1,2})-(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
  413. var r = str.match(reg);
  414. if (r == null)
  415. {
  416. reg = /^(\d+)\/(\d{1,2})\/(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
  417. r = str.match(reg);
  418. }
  419. if (r == null) return false;
  420. r[2] = r[2] - 1;
  421. var d = new Date(r[1], r[2], r[3], r[4], r[5], r[6]);
  422. if (d.getFullYear() != r[1]) return false;
  423. if (d.getMonth() != r[2]) return false;
  424. if (d.getDate() != r[3]) return false;
  425. if (d.getHours() != r[4]) return false;
  426. if (d.getMinutes() != r[5]) return false;
  427. if (d.getSeconds() != r[6]) return false;
  428. return true;
  429. }
  430. String.prototype.removeHtml = function ()
  431. {
  432. var str = this;
  433. return str.replace(/<[^>]+>/g, "");//去掉所有的html标记
  434. };
  435. Date.prototype.format = function (format)
  436. {
  437. var o = {
  438. "M+": this.getMonth() + 1,
  439. "d+": this.getDate(),
  440. "h+": this.getHours(),
  441. "m+": this.getMinutes(),
  442. "s+": this.getSeconds(),
  443. "q+": Math.floor((this.getMonth() + 3) / 3),
  444. "S": this.getMilliseconds()
  445. }
  446. if (/(y+)/.test(format))
  447. {
  448. format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
  449. }
  450. for (var k in o)
  451. {
  452. if (new RegExp("(" + k + ")").test(format))
  453. {
  454. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
  455. }
  456. }
  457. return format;
  458. };
  459. Array.prototype.unique = function ()
  460. {
  461. var res = [];
  462. var json = {};
  463. for (var i = 0; i < this.length; i++)
  464. {
  465. if (!json[this[i]])
  466. {
  467. res.push(this[i]);
  468. json[this[i]] = 1;
  469. }
  470. }
  471. return res;
  472. };
  473. var currentFocusObj = null; //当前焦点对象
  474. function initElement($elements, type)
  475. {
  476. if (!$elements || $elements.size() == 0)
  477. {
  478. return;
  479. }
  480. var cssType = type;
  481. $elements.addClass(cssType + "1")
  482. .bind("mouseover", function ()
  483. {
  484. $(this).removeClass().addClass(cssType + "2");
  485. }).bind("mouseout", function ()
  486. {
  487. if (currentFocusObj == null || $(this).get(0) !== currentFocusObj)
  488. {
  489. $(this).removeClass().addClass(cssType + "1");
  490. }
  491. }).bind("focus", function ()
  492. {
  493. if (currentFocusObj != null)
  494. {
  495. var css = $(currentFocusObj).attr("class").replace("1", "").replace("2", "");
  496. $(currentFocusObj).removeClass().addClass(css + "1");
  497. }
  498. $(this).removeClass().addClass(cssType + "2");
  499. currentFocusObj = $(this).get(0);
  500. });
  501. }