search.jsp 10.0 KB

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