search.jsp 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364
  1. <%@ page language="java" contentType="text/html; charset=utf-8"
  2. pageEncoding="utf-8"%>
  3. <%
  4. String path = request.getContextPath();
  5. String basePath = request.getScheme() + "://"
  6. + request.getServerName() + ":" + request.getServerPort()
  7. + path + "/";
  8. %>
  9. <!DOCTYPE html>
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  13. <link rel="stylesheet" type="text/css"
  14. href="<%=basePath%>resource/ext/4.2/resources/ext-theme-gray/ext-theme-gray-all.css" />
  15. <link rel="stylesheet" href="<%=basePath%>resource/css/search.css"
  16. type="text/css"></link>
  17. <script type="text/javascript"
  18. src="<%=basePath%>resource/ext/4.2/ext-all.js"></script>
  19. <script type="text/javascript" src="<%=basePath%>resource/i18n/i18n.js"></script>
  20. <script type="text/javascript">
  21. // ghost
  22. Ext.example = function() {
  23. var b;
  24. function a(t, c, d) {
  25. return '<div class="msg x-message-box-' + t + '"><h3>' + c + "</h3><p>" + d + "</p></div>"
  26. }
  27. return {
  28. msg : function(t, g, e, y) {
  29. if (!b) {
  30. b = Ext.DomHelper.insertFirst(document.body, {
  31. id : "msg-div"
  32. }, true);
  33. }
  34. var d = Ext.String.format.apply(String, Array.prototype.slice.call(arguments, 2));
  35. var c = Ext.DomHelper.append(b, a((t || 'info'), g, d), true);
  36. c.hide();
  37. c.slideIn("t").ghost("t", {
  38. delay : y || 1000,
  39. remove : true
  40. });
  41. },
  42. init : function() {
  43. if (!b) {
  44. b = Ext.DomHelper.insertFirst(document.body, {
  45. id : "msg-div"
  46. }, true);
  47. }
  48. }
  49. };
  50. }();
  51. Ext.onReady(Ext.example.init, Ext.example);
  52. // override remote queryStr length
  53. Ext.override(Ext.form.field.ComboBox, {
  54. initEvents: function() {
  55. var me = this;
  56. me.callParent();
  57. if (!me.enableKeyEvents) {
  58. me.mon(me.inputEl, 'keyup', me.onKeyUp, me);
  59. }
  60. me.mon(me.inputEl, 'paste', me.onPaste, me);
  61. me.mon(me.inputEl, 'compositionstart', me.onCompositionStart, me);
  62. me.mon(me.inputEl, 'compositionend', me.onCompositionEnd, me);
  63. },
  64. onCompositionStart: function(){
  65. this.compositions = true;
  66. },
  67. onCompositionEnd: function(){
  68. this.compositions = false;
  69. },
  70. beforeQuery : function(queryPlan) {
  71. var me = this;
  72. if(me.compositions) {
  73. // 拼音输入期间不触发
  74. queryPlan.cancel = true;
  75. }
  76. // Allow beforequery event to veto by returning false
  77. if (me.fireEvent('beforequery', queryPlan) === false) {
  78. queryPlan.cancel = true;
  79. }
  80. // Allow beforequery event to veto by returning setting the cancel flag
  81. else if (!queryPlan.cancel) {
  82. // If the minChars threshold has not been met, and we're not forcing an "all" query, cancel the query
  83. if (me.getCharLength(queryPlan.query) < me.minChars && !queryPlan.forceAll) {
  84. queryPlan.cancel = true;
  85. }
  86. }
  87. return queryPlan;
  88. },
  89. getCharLength : function(str) {
  90. for (var len = str.length, c = 0, i = 0; i < len; i++)
  91. str.charCodeAt(i) < 27 || str.charCodeAt(i) > 126 ? c += 2 : c++;
  92. return c;
  93. }
  94. });
  95. // override fieldset, toggle others when checked
  96. Ext.override(Ext.form.FieldSet, {
  97. onCheckChange : function(cmp, checked) {
  98. this.setExpanded(checked);
  99. if (checked) {
  100. var id = this.id, cmps = this.ownerCt.query('fieldset[name=' + this.name + ']');
  101. Ext.Array.each(cmps, function(c) {
  102. if (c.id !== id)
  103. c.setExpanded(false);
  104. });
  105. }
  106. }
  107. });
  108. // split by regexp without remove
  109. String.prototype._split = function(regexp) {
  110. if (regexp instanceof RegExp) {
  111. var arr = this.split(""), _arr = [], temp = '', isStr = false;
  112. for ( var i in arr) {
  113. // 字符串不拆
  114. if (arr[i] == "'") {
  115. if (temp.length > 0) {
  116. _arr.push("'" + temp + "'");
  117. isStr = false;
  118. } else
  119. isStr = true;
  120. temp = '';
  121. } else if (isStr){
  122. temp += arr[i];
  123. } else {
  124. if (regexp.test(arr[i])) {
  125. if (temp.length > 0)
  126. _arr.push(temp);
  127. _arr.push(arr[i]);
  128. temp = '';
  129. } else
  130. temp += arr[i];
  131. }
  132. }
  133. if (temp.length > 0)
  134. _arr.push(temp);
  135. return _arr;
  136. }
  137. return this.split(regexp);
  138. };
  139. // date format
  140. Date.prototype.format = function(format) {
  141. var value = this;
  142. var date = {
  143. "m+" : value.getMonth() + 1,
  144. "d+" : value.getDate(),
  145. "h+(24){0,1}" : value.getHours(),
  146. "(m){0,1}i+" : value.getMinutes(),
  147. "s+" : value.getSeconds(),
  148. "q+" : Math.floor((value.getMonth() + 3) / 3),
  149. "S+" : value.getMilliseconds()
  150. };
  151. if (/(y+)/i.test(format)) {
  152. format = format.replace(RegExp.$1, (value.getFullYear() + '').substr(4 - RegExp.$1.length));
  153. }
  154. for ( var k in date) {
  155. if (new RegExp("(" + k + ")").test(format)) {
  156. format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k] : ("00" + date[k])
  157. .substr(("" + date[k]).length));
  158. }
  159. }
  160. return format;
  161. };
  162. // m-n的随机整数,不包括m
  163. Math.randomInt = function(m, n) {
  164. return Math.ceil(Math.random()*(n - m) + m);
  165. };
  166. // test formula with eval
  167. window.assertEquals = function(expected, actual) {
  168. var equal = false;
  169. if (expected instanceof Array) {
  170. for ( var i in expected) {
  171. if (expected[i] == actual)
  172. return;
  173. }
  174. } else {
  175. equal = expected == actual;
  176. }
  177. if (!equal)
  178. throw new Error('wrong number of arguments, expected '
  179. + (expected instanceof Array ? expected.join(' or ') : expected) + ', acctually ' + actual);
  180. };
  181. // 测试用函数集
  182. Ext.Test = {
  183. randomNum: function() {
  184. // 测试用number
  185. return Number(Math.random().toFixed(6));
  186. },
  187. randomDate: function() {
  188. // 测试用时间
  189. var y = Math.randomInt(1970, 2100), m = Math.randomInt(0, 12), d = Math.randomInt(0, 30),
  190. h = Math.randomInt(0, 24), i = Math.randomInt(0, 60), s = Math.randomInt(0, 60);
  191. return new Date(y, m, d, h, i, s);
  192. },
  193. randomStr: function() {
  194. // 测试用字符串
  195. var str = '', len = 8;
  196. var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
  197. var maxPos = $chars.length;
  198. for (var i = 0; i < len; i++) {
  199. str += $chars.charAt(Math.floor(Math.random() * maxPos));
  200. }
  201. return str;
  202. },
  203. abs : function() {
  204. assertEquals(1, arguments.length);
  205. return Math.abs(arguments[0]);
  206. },
  207. ceil : function() {
  208. assertEquals(1, arguments.length);
  209. return Math.ceil(arguments[0]);
  210. },
  211. floor : function() {
  212. assertEquals(1, arguments.length);
  213. return Math.floor(arguments[0]);
  214. },
  215. round : function() {
  216. assertEquals([ 1, 2 ], arguments.length);
  217. var a = arguments[0], b = arguments[1] || 0;
  218. return Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
  219. },
  220. nvl : function() {
  221. assertEquals(2, arguments.length);
  222. var a = arguments[0], b = arguments[1];
  223. return a == null ? b : a;
  224. },
  225. nvl2 : function() {
  226. assertEquals(3, arguments.length);
  227. var a = arguments[0], b = arguments[1], c = arguments[2];
  228. return a == null ? c : b;
  229. },
  230. lpad : function() {
  231. assertEquals(3, arguments.length);
  232. var a = arguments[0], b = Math.floor(arguments[1]), c = arguments[2];
  233. if (!!a) {
  234. a = String(a);
  235. c = String(c);
  236. var m = a.length, n = c.length, r = c.split("");
  237. if (m < b) {
  238. var i = 0, prefix = '';
  239. while (m < b) {
  240. prefix += r[i++ % n];
  241. m++;
  242. }
  243. a = prefix + a;
  244. } else if (m > b) {
  245. a = a.substr(0, b);
  246. }
  247. }
  248. return a;
  249. },
  250. rpad : function() {
  251. assertEquals(3, arguments.length);
  252. var a = arguments[0], b = Math.floor(arguments[1]), c = arguments[2];
  253. if (!!a) {
  254. a = String(a);
  255. c = String(c);
  256. var m = a.length, n = c.length, r = c.split("");
  257. if (m < b) {
  258. var i = 0;
  259. while (m < b) {
  260. a += r[i++ % n];
  261. m++;
  262. }
  263. } else if (m > b) {
  264. a = a.substr(0, b);
  265. }
  266. }
  267. return a;
  268. },
  269. trim : function() {
  270. assertEquals(1, arguments.length);
  271. var a = arguments[0];
  272. return !a ? a : String(a).trim();
  273. },
  274. to_char : function() {
  275. assertEquals([ 1, 2 ], arguments.length);
  276. var a = arguments[0], b = arguments[1];
  277. if(a instanceof Date) {
  278. return a.format(b);
  279. } else {
  280. return !a ? a : String(a);
  281. }
  282. },
  283. trunc : function() {
  284. assertEquals([ 1, 2 ], arguments.length);
  285. var a = arguments[0], b = arguments[1];
  286. if(a instanceof Date) {
  287. var y = a.getFullYear(), m = a.getMonth(), d = a.getDate();
  288. if (b) {
  289. b = b.toUpperCase();
  290. if(['Y', 'YEAR'].indexOf(b) > -1) {
  291. m = 0;
  292. d = 1;
  293. } else if(['M', 'MONTH'].indexOf(b) > -1) {
  294. d = 1;
  295. } else if(['D', 'DAY'].indexOf(b) > -1) {
  296. return new Date(new Date(y, m, d) - 86400000*a.getDay());
  297. }
  298. }
  299. return new Date(y, m, d);
  300. } else if (a instanceof Number) {
  301. return Math.ceil(a);
  302. } else {
  303. throw new Error('illegal argument type, trunc(' + a + ',' + b + ')');
  304. }
  305. return a;
  306. },
  307. add_months : function() {
  308. assertEquals(2, arguments.length);
  309. var a = arguments[0], b = arguments[1];
  310. if(a instanceof Date) {
  311. var y = a.getFullYear(), m = a.getMonth(), d = a.getDate();
  312. return new Date(y, m + b, d);
  313. } else {
  314. throw new Error('illegal argument type, add_months(' + a + ',' + b + ')');
  315. }
  316. }
  317. };
  318. Ext.eval = function(code) {
  319. // Ext.Test作为预定义条件
  320. var def = '';
  321. for(var i in Ext.Test) {
  322. if (!def) {
  323. def = 'var ';
  324. } else {
  325. def += ',';
  326. }
  327. def += i + '=' + Ext.Test[i];
  328. }
  329. def += ';';
  330. code = def + code;
  331. if (Ext.isIE) {
  332. return execScript(code);
  333. } else {
  334. return window.eval(code);
  335. }
  336. };
  337. //is number(Ext.isNumber doesn't work)
  338. var isNumber = function(n) {
  339. return !isNaN(parseFloat(n)) && isFinite(n);
  340. };
  341. //
  342. Ext.Loader.setConfig({
  343. enabled : true
  344. });//开启动态加载
  345. Ext.application({
  346. name : 'erp',//为应用程序起一个名字,相当于命名空间
  347. appFolder : basePath + 'app',//app文件夹所在路径
  348. controllers : [//声明所用到的控制层
  349. 'common.Search' ],
  350. launch : function() {
  351. Ext.create('erp.view.common.search.Viewport');
  352. }
  353. });
  354. var caller = getUrlParam('whoami');
  355. </script>
  356. </head>
  357. <body>
  358. </body>
  359. </html>