BaseUtil.js 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707
  1. /**
  2. * 杂七杂八的方法
  3. * @author yingp
  4. */
  5. Ext.define('erp.util.BaseUtil',{
  6. getSequenceId : function(seqname){
  7. Ext.Ajax.request({
  8. url : basePath + 'common/getCodeString.action',
  9. async: false,//同步ajax请求
  10. params: {
  11. caller: caller,//如果table==null,则根据caller去form表取对应table
  12. table: table,
  13. type: type
  14. },
  15. method : 'post',
  16. callback : function(options,success,response){
  17. var localJson = new Ext.decode(response.responseText);
  18. if(localJson.exceptionInfo){
  19. showError(localJson.exceptionInfo);
  20. }
  21. if(localJson.success){
  22. Ext.getCmp(codeField).setValue(localJson.code);
  23. }
  24. }
  25. });
  26. },
  27. /**
  28. * 取编号
  29. * @param table 表名
  30. * @param type
  31. * @param codeField 编号字段
  32. */
  33. getRandomNumber: function(table, type, codeField){
  34. var form = Ext.getCmp('form');
  35. if(form){
  36. table = table == null ? form.tablename : table;
  37. }
  38. type = type == null ? 2 : type;
  39. codeField = codeField == null ? form.codeField : codeField;
  40. Ext.Ajax.request({
  41. url : basePath + 'common/getCodeString.action',
  42. async: false,//同步ajax请求
  43. params: {
  44. caller: caller,//如果table==null,则根据caller去form表取对应table
  45. table: table,
  46. type: type
  47. },
  48. method : 'post',
  49. callback : function(options,success,response){
  50. var localJson = new Ext.decode(response.responseText);
  51. if(localJson.exceptionInfo){
  52. showError(localJson.exceptionInfo);
  53. }
  54. if(localJson.success){
  55. Ext.getCmp(codeField).setValue(localJson.code);
  56. }
  57. }
  58. });
  59. },
  60. /**
  61. * 解析url,获得传递的参数
  62. */
  63. getUrlParam: function(name){
  64. var reg=new RegExp("(^|&)"+name+"=([^&]*)(&|$)");
  65. var r=window.location.search.substr(1).match(reg);
  66. if(r!=null)
  67. return decodeURI(r[2]);
  68. return null;
  69. },
  70. /**
  71. * 获取配置参数值
  72. */
  73. getSetting : function(caller, code, callback) {
  74. Ext.Ajax.request({
  75. url : basePath + 'ma/setting/config.action?caller=' + caller + '&code=' + code,
  76. method : 'GET',
  77. callback : function(opt, s, res){
  78. var val = null;
  79. if(res && res.responseText){
  80. var r = new Ext.decode(res.responseText);
  81. if(r && r.exceptionInfo){
  82. showError(r.exceptionInfo);return;
  83. } else {
  84. val = r.data;
  85. if(val) {
  86. switch(r.data_type) {
  87. case 'YN':
  88. val = val == '1';break;
  89. case 'NUMBER':
  90. val = Number(val);break;
  91. }
  92. if(r.multi == 1)
  93. val = val.split('\n');
  94. }
  95. }
  96. }
  97. callback && callback.call(null, val);
  98. }
  99. });
  100. },
  101. /**
  102. * string:原始字符串
  103. * substr:子字符串
  104. * isIgnoreCase:忽略大小写
  105. */
  106. contains: function(string,substr,isIgnoreCase){
  107. if(isIgnoreCase){
  108. string=string.toLowerCase();
  109. substr=substr.toLowerCase();
  110. }
  111. var startChar=substr.substring(0,1);
  112. var strLen=substr.length;
  113. for(var j=0;j<string.length-strLen+1;j++){
  114. if(string.charAt(j)==startChar){//如果匹配起始字符,开始查找
  115. if(string.substring(j,j+strLen)==substr){//如果从j开始的字符与str匹配,那ok
  116. return true;
  117. }
  118. }
  119. }
  120. return false;
  121. },
  122. getActiveTab: function(){
  123. var tab = null;
  124. if(Ext.getCmp("content-panel")){
  125. tab = Ext.getCmp("content-panel").getActiveTab();
  126. }
  127. if(!tab && parent.Ext.getCmp("content-panel"))
  128. tab = parent.Ext.getCmp("content-panel").getActiveTab();
  129. if(!tab && parent.parent.Ext.getCmp("content-panel"))
  130. tab = parent.parent.Ext.getCmp("content-panel").getActiveTab();
  131. if(!tab){
  132. var win = parent.Ext.ComponentQuery.query('window');
  133. if(win.length > 0){
  134. tab = win[win.length-1];
  135. }
  136. }
  137. return tab;
  138. },
  139. /**
  140. * 文件下载
  141. * @param path 文件路径
  142. */
  143. download: function(path){
  144. var me = this;
  145. Ext.Ajax.request({
  146. url : basePath + 'common/download.action',
  147. params: {
  148. path: path
  149. },
  150. method : 'post',
  151. callback : function(options,success,response){
  152. var localJson = new Ext.decode(response.responseText);
  153. if(localJson.exceptionInfo){
  154. showError(localJson.exceptionInfo);
  155. }
  156. if(localJson.success){
  157. if(me.contains(path, "\\", true)){
  158. showMessage("温馨提示", path.substring(path.lastIndexOf("\\") + 1) + "已保存成功");
  159. } else {
  160. showMessage("温馨提示", path.substring(path.lastIndexOf("/") + 1) + "已保存成功");
  161. }
  162. }
  163. }
  164. });
  165. },
  166. /**
  167. * js生成excel的xml
  168. * 只导出当前Store的数据
  169. * 只能wps打开
  170. */
  171. exportexcel: function(panel, title){
  172. var me = this;
  173. title = title == null ? me.getActiveTab().tabConfig.tooltip : title;
  174. var excelxml = panel.getExcelXml(title);
  175. var fd = Ext.get('frmDummy');
  176. if (!fd) {
  177. fd = Ext.DomHelper.append(
  178. Ext.getBody(), {
  179. tag : 'form',
  180. method : 'post',
  181. id : 'frmDummy',
  182. action : basePath + 'jsps/common/excel.jsp',
  183. target : '_blank',
  184. name : 'frmDummy',
  185. cls : 'x-hidden',
  186. cn : [ {
  187. tag : 'input',
  188. name : 'content',
  189. id : 'content',
  190. type : 'hidden'
  191. } , {
  192. tag : 'input',
  193. name : 'file',
  194. id : 'file',
  195. type : 'hidden'
  196. } ]
  197. }, true);
  198. }
  199. fd.child('#file').set({
  200. value : title + new Date().getTime()
  201. });
  202. fd.child('#content').set({
  203. value : excelxml
  204. });
  205. fd.dom.submit();
  206. },
  207. pageTitle: function() {
  208. return (this.getActiveTab().title || this.getActiveTab().tabConfig.tooltip) + Ext.Date.format(new Date(), 'Y-m-d H:m:s');
  209. },
  210. /**
  211. * Java ApachePoi 生成excel
  212. * 导出当前Caller对应数据库全部Store
  213. * @param caller
  214. * @param type datalist、detailgrid
  215. * @param condition 条件
  216. */
  217. createExcel: function(caller, type, condition, title, remark, customFields, grid){
  218. condition = condition == null ? '' : condition;
  219. title = title || this.pageTitle();
  220. if (!Ext.fly('ext-grid-excel')) {
  221. var frm = document.createElement('form');
  222. frm.id = 'ext-grid-excel';
  223. frm.name = id;
  224. frm.className = 'x-hidden';
  225. document.body.appendChild(frm);
  226. }
  227. var bool = true, _noc = this.getUrlParam("_noc");
  228. _noc = _noc || (type == 'detailgrid' ? 1 : (grid ? grid._noc : 0));
  229. Ext.Ajax.request({
  230. url: basePath + 'common/beforeExport.action',
  231. params: {
  232. caller: caller,
  233. type: type,
  234. condition: condition
  235. },
  236. async: false,
  237. callback: function(opt, s, r) {
  238. var rs = Ext.decode(r.responseText);
  239. if(rs.exceptionInfo) {
  240. showError(rs.exceptionInfo);
  241. } else if(rs.busy) {
  242. showMessage('下载提示', '<h1>需要导出数据的人过多</h1>请稍后再试...');
  243. bool = false;
  244. } else if(rs.count > 100000) {
  245. showMessage('下载提示', '<h1>数据量过大</h1>当前总数据为' + rs.count + '条,超过导出上限(10万条),系统将为您导出前10万条<br>请稍等...');
  246. }
  247. }
  248. });
  249. if(!bool) return;
  250. if(remark){
  251. Ext.Ajax.request({
  252. url: basePath + 'common/excel/gridWithRemark.xls',
  253. method: 'post',
  254. form: Ext.fly('ext-grid-excel'),
  255. isUpload: true,
  256. params: {
  257. caller: caller,
  258. type: type,
  259. title: unescape(title.replace(/\\/g,"%").replace(/,/g," ")),
  260. condition: condition,
  261. remark: unescape(remark.replace(/\\/g,"%")),
  262. fields : customFields,
  263. _noc: _noc
  264. }
  265. });
  266. } else {
  267. Ext.Ajax.request({
  268. url: basePath + 'common/excel/create.xls',
  269. method: 'post',
  270. form: Ext.fly('ext-grid-excel'),
  271. isUpload: true,
  272. params: {
  273. caller: caller,
  274. type: type,
  275. title: unescape(title),
  276. condition: condition,
  277. fields : customFields,
  278. _noc: _noc
  279. }
  280. });
  281. }
  282. },
  283. /**
  284. * Java AppachePoi 生成excel
  285. * 导出当前Grid的Store
  286. * @param grid
  287. * @param title xls文件名
  288. */
  289. exportGrid: function(grid, title, remark){
  290. title = (title || this.getActiveTab().tabConfig.tooltip) + Ext.Date.format(new Date(), 'Y-m-d H:m:s');
  291. var columns = (grid.columns && grid.columns.length > 0) ?
  292. grid.columns : grid.headerCt.getGridColumns(),
  293. cm = new Array(), datas = new Array(), gf = grid.store.groupField;
  294. Ext.Array.each(columns, function(c){
  295. if(c.dataIndex == gf || (!c.hidden && (c.width > 0 || c.flex > 0) && !c.isCheckerHd)) {
  296. if((c.items && c.items.length > 0) || (c.columns && c.columns.length > 0)) {
  297. var items = (c.items && c.items.items) || c.columns;
  298. Ext.Array.each(items, function(item){
  299. if(!item.hidden)
  300. cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/<br>/g, '\n')) + '(' + item.text.replace(/<br>/g, '\n') + ')',
  301. dataIndex: item.dataIndex, width: item.width, xtype: item.xtype, format: item.format, locked: item.locked, summary: item.summaryType == 'sum', group: item.dataIndex == gf});
  302. });
  303. } else {
  304. cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/<br>/g, '\n')), dataIndex: c.dataIndex, width: (c.dataIndex == gf ? 100 : c.width), xtype: c.xtype, format: c.format, locked: c.locked, summary: c.summaryType == 'sum', group: c.dataIndex == gf});
  305. }
  306. }
  307. });
  308. if(grid.store.tree) {//TreeGrid
  309. var root = grid.store.tree.root;
  310. var pf = function(node) {
  311. if(node) {
  312. var dd = node.data, keys = Ext.Object.getKeys(dd);
  313. Ext.each(keys, function(k){
  314. var v = dd[k];
  315. if(v == null) {
  316. dd[k] = '';
  317. } else if(Ext.isDate(v)){
  318. dd[k] = Ext.Date.format(v, 'Y-m-d');
  319. } else if(Ext.isNumber(v)){
  320. dd[k] = String(v);
  321. }
  322. });
  323. datas.push(dd);
  324. if(node.childNodes.length > 0) {
  325. Ext.each(node.childNodes, function(n) {
  326. pf(n);
  327. });
  328. }
  329. }
  330. };
  331. Ext.each(root.childNodes, function(n) {
  332. pf(n);
  333. });
  334. } else {
  335. var store = grid.getView().getStore(),
  336. items = store.data.items;
  337. if(store.buffered) {
  338. items = store.prefetchData.items;
  339. }
  340. var numreg = /^(-?\d+)(\.\d+)?$/, datereg = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/;
  341. var pf = function(c, dd, ss) {
  342. if(c.xtype == 'datecolumn'){
  343. c.format = c.format || 'Y-m-d';
  344. if(Ext.isDate(dd[c.dataIndex])){
  345. ss[c.dataIndex] = Ext.Date.format(dd[c.dataIndex], c.format);
  346. } else if(datereg.test(dd[c.dataIndex])) {
  347. ss[c.dataIndex] = Ext.Date.format(
  348. Ext.Date.parse(dd[c.dataIndex], 'Y-m-d H:i:s'), c.format);
  349. }
  350. } else if(c.xtype == 'datetimecolumn'){
  351. if(Ext.isDate(dd[c.dataIndex])){
  352. ss[c.dataIndex] = Ext.Date.format(dd[c.dataIndex], 'Y-m-d H:i:s');
  353. } else if(datereg.test(dd[c.dataIndex])) {
  354. ss[c.dataIndex] = dd[c.dataIndex];
  355. }
  356. } else if(c.xtype == 'numbercolumn'){
  357. if(Ext.isNumber(dd[c.dataIndex])){
  358. ss[c.dataIndex] = String(dd[c.dataIndex].toString());
  359. } else if(numreg.test(dd[c.dataIndex])){
  360. ss[c.dataIndex] = String(dd[c.dataIndex].toString());
  361. } else {
  362. ss[c.dataIndex] = '0';
  363. }
  364. } else if(c.xtype == 'yncolumn') {
  365. ss[c.dataIndex] = dd[c.dataIndex] == 0 ? '否' : '是';
  366. } else {
  367. ss[c.dataIndex] = dd[c.dataIndex] ? String(dd[c.dataIndex]) : '';
  368. }
  369. if(ss[c.dataIndex] == null) {
  370. ss[c.dataIndex] = '';
  371. }
  372. };
  373. Ext.each(items, function(d){
  374. var ss = {};
  375. Ext.each(columns, function(c){
  376. if(c.dataIndex == gf || (!c.hidden && (c.width > 0 || c.flex>0)&& !c.isCheckerHd)) {
  377. if((c.items && c.items.length > 0) || (c.columns && c.columns.length > 0)) {
  378. var items = ( c.items && c.items.items) || c.columns;
  379. Ext.Array.each(items, function(item){
  380. if(!item.hidden) {
  381. pf(item, d.data, ss);
  382. }
  383. });
  384. } else {
  385. pf(c, d.data, ss);
  386. }
  387. }
  388. });
  389. datas.push(ss);
  390. });
  391. }
  392. if (!Ext.fly('ext-grid-excel')) {
  393. var frm = document.createElement('form');
  394. frm.id = 'ext-grid-excel';
  395. frm.name = frm.id;
  396. frm.className = 'x-hidden';
  397. document.body.appendChild(frm);
  398. }
  399. if(remark){//抬头上面的注释 注释为第一行
  400. // remark = remark.replace(/<br>/g,'\n');
  401. Ext.Ajax.request({
  402. url: basePath + 'common/excel/gridWithRemark.xls',
  403. method: 'post',
  404. form: Ext.fly('ext-grid-excel'),
  405. isUpload: true,
  406. params: {
  407. datas: unescape(Ext.JSON.encode(datas).replace(/\\/g,"%")),
  408. columns: Ext.encode(cm),
  409. title: unescape(title.replace(/\\/g,"%").replace(/,/g," ")),
  410. remark:unescape(remark.replace(/\\/g,"%"))
  411. }
  412. });
  413. }else{ //无注释 抬头为第一行
  414. Ext.Ajax.request({
  415. url: basePath + 'common/excel/grid.xls',
  416. method: 'post',
  417. form: Ext.fly('ext-grid-excel'),
  418. isUpload: true,
  419. params: {
  420. datas: unescape(Ext.JSON.encode(datas).replace(/\\/g,"%")),
  421. columns: unescape(Ext.encode(cm).replace(/\\/g,"%")),
  422. title: title
  423. }
  424. });
  425. }
  426. },
  427. exportPdf: function(grid, title){
  428. title = (title || this.getActiveTab().tabConfig.tooltip) + Ext.Date.format(new Date(), 'Y-m-d H:m:s');
  429. var columns = (grid.columns && grid.columns.length > 0) ?
  430. grid.columns : grid.headerCt.getGridColumns(),
  431. cm = new Array(), datas = new Array();
  432. Ext.Array.each(columns, function(c){
  433. if(!c.hidden && (c.width > 0 || c.flex > 0) && !c.isCheckerHd) {
  434. if(c.items && c.items.length > 0) {
  435. var items = c.items.items;
  436. Ext.Array.each(items, function(item){
  437. if(!item.hidden)
  438. cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/<br>/g, '\n')) + '(' + item.text.replace(/<br>/g, '\n') + ')',
  439. dataIndex: item.dataIndex, width: item.width, xtype: item.xtype, format: item.format});
  440. });
  441. } else {
  442. cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/<br>/g, '\n')), dataIndex: c.dataIndex, width: c.width, xtype: c.xtype, format: c.format});
  443. }
  444. }
  445. });
  446. var items = grid.store.data.items;
  447. if(grid.store.buffered) {
  448. items = grid.store.prefetchData.items;
  449. }
  450. var datereg = /\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/;
  451. var pf = function(c, dd, ss) {
  452. if(c.xtype == 'datecolumn'){
  453. c.format = c.format || 'Y-m-d';
  454. if(Ext.isDate(dd[c.dataIndex])){
  455. ss[c.dataIndex] = Ext.Date.format(dd[c.dataIndex], c.format);
  456. } else if(datereg.test(dd[c.dataIndex])) {
  457. ss[c.dataIndex] = Ext.Date.format(
  458. Ext.Date.parse(dd[c.dataIndex], 'Y-m-d H:i:s'), c.format);
  459. }
  460. } else if(c.xtype == 'datetimecolumn'){
  461. if(Ext.isDate(dd[c.dataIndex])){
  462. ss[c.dataIndex] = Ext.Date.format(dd[c.dataIndex], 'Y-m-d H:i:s');
  463. } else if(datereg.test(dd[c.dataIndex])) {
  464. ss[c.dataIndex] = dd[c.dataIndex];
  465. }
  466. } else if(c.xtype == 'numbercolumn'){
  467. if(Ext.isNumber(dd[c.dataIndex])){
  468. ss[c.dataIndex] = String(dd[c.dataIndex].toString());
  469. }
  470. } else if(c.xtype == 'yncolumn') {
  471. ss[c.dataIndex] = dd[c.dataIndex] == 0 ? '否' : '是';
  472. } else {
  473. ss[c.dataIndex] = dd[c.dataIndex] ? String(dd[c.dataIndex]) : '';
  474. }
  475. if(ss[c.dataIndex] == null) {
  476. ss[c.dataIndex] = '';
  477. }
  478. };
  479. Ext.each(items, function(d){
  480. var ss = {};
  481. Ext.each(columns, function(c){
  482. if(!c.hidden && c.width > 0 && !c.isCheckerHd) {
  483. if(c.items && c.items.length > 0) {
  484. var items = c.items.items;
  485. Ext.Array.each(items, function(item){
  486. if(!item.hidden) {
  487. pf(item, d.data, ss);
  488. }
  489. });
  490. } else {
  491. pf(c, d.data, ss);
  492. }
  493. }
  494. });
  495. datas.push(ss);
  496. });
  497. if (!Ext.fly('ext-grid-excel')) {
  498. var frm = document.createElement('form');
  499. frm.id = 'ext-grid-excel';
  500. frm.name = frm.id;
  501. frm.className = 'x-hidden';
  502. document.body.appendChild(frm);
  503. }
  504. Ext.Ajax.request({
  505. url: basePath + 'common/document/grid.pdf',
  506. method: 'post',
  507. form: Ext.fly('ext-grid-excel'),
  508. isUpload: true,
  509. params: {
  510. datas: unescape(Ext.JSON.encode(datas).replace(/\\/g,"%")),
  511. columns: unescape(Ext.encode(cm).replace(/\\/g,"%")),
  512. title: title
  513. }
  514. });
  515. },
  516. /**
  517. * Java AppachePoi 生成excel
  518. * 导出当前Grid的Store
  519. * @param grid
  520. * @param title xls文件名
  521. */
  522. customExport: function(cal, grid, title, action, condition, args){
  523. title = (title || this.getActiveTab().tabConfig.tooltip) + Ext.Date.format(new Date(), 'Y-m-d H:m:s');
  524. var columns = grid.columns,cm = new Array();
  525. Ext.Array.each(columns, function(c){
  526. if(!c.hidden && (c.width > 0 || c.flex > 0) && !c.isCheckerHd) {
  527. if(c.items && c.items.length > 0) {
  528. var items = c.items.items;
  529. Ext.Array.each(items, function(item){
  530. if(!item.hidden)
  531. cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/<br>/g, '\n')) + '(' + item.text.replace(/<br>/g, '\n') + ')',
  532. dataIndex: item.dataIndex, width: item.width, xtype: item.xtype, format: item.format});
  533. });
  534. } else {
  535. cm.push({text: (Ext.isEmpty(c.text) ? ' ' : c.text.replace(/<br>/g, '\n')), dataIndex: c.dataIndex, width: c.width, xtype: c.xtype, format: c.format});
  536. }
  537. }
  538. });
  539. if (!Ext.fly('ext-grid-excel')) {
  540. var frm = document.createElement('form');
  541. frm.id = 'ext-grid-excel';
  542. frm.name = id;
  543. frm.className = 'x-hidden';
  544. document.body.appendChild(frm);
  545. }
  546. var params = {
  547. caller : cal,
  548. condition : condition,
  549. columns: unescape(Ext.encode(cm).replace(/\\/g,"%")),
  550. title: title
  551. };
  552. Ext.Ajax.request({
  553. url: basePath + (action || 'common/excel/grid.xls'),
  554. method: 'post',
  555. form: Ext.fly('ext-grid-excel'),
  556. isUpload: true,
  557. params: Ext.apply(params, args)
  558. });
  559. },
  560. /**
  561. * 跳转到add页面
  562. */
  563. onAdd: function(panelId, title, url){
  564. var main = parent.Ext.getCmp("content-panel") || parent.parent.Ext.getCmp("content-panel");
  565. if(main){
  566. panelId = panelId == main.getActiveTab().id ? Math.random() : panelId;
  567. var panel = Ext.getCmp(panelId || Math.random());
  568. if(!panel){
  569. var value = "";
  570. if (title.toString().length>5) {
  571. value = title.toString().substring(0,5);
  572. } else {
  573. value = title;
  574. }
  575. if(!contains(url, 'http://', true) && !contains(url, basePath, true)){
  576. url = basePath + url;
  577. }
  578. panel = {
  579. title : value,
  580. tag : 'iframe',
  581. tabConfig:{tooltip:title},
  582. border : false,
  583. layout : 'fit',
  584. iconCls : 'x-tree-icon-tab-tab',
  585. html : '<iframe id="iframe_add_'+panelId+'" src="' + url+'" height="100%" width="100%" frameborder="0" style="border-width: 0px;padding: 0px;" scrolling="auto"></iframe>',
  586. closable : true
  587. };
  588. this.openTab(panel, panelId);
  589. } else {
  590. main.setActiveTab(panel);
  591. }
  592. } else {
  593. if(!contains(url, basePath, true)){
  594. url = basePath + url;
  595. }
  596. window.open(url);
  597. }
  598. },
  599. openTab : function (panel,id){
  600. var o = (typeof panel == "string" ? panel : id || panel.id);
  601. var main = parent.Ext.getCmp("content-panel");
  602. var tab = main.getComponent(o);
  603. if (tab) {
  604. main.setActiveTab(tab);
  605. } else if(typeof panel!="string"){
  606. panel.id = o;
  607. var p = main.add(panel);
  608. main.setActiveTab(p);
  609. }
  610. },
  611. getPaydate : function(paymentmethodidfield,startdatefield,datefield){
  612. var paymentmethodid,startdate,startdateString;
  613. if(Ext.getCmp(paymentmethodidfield)){
  614. paymentmethodid = Ext.getCmp(paymentmethodidfield).getValue();
  615. }
  616. if(Ext.getCmp(startdatefield)){
  617. startdate = Ext.getCmp(startdatefield).getValue();
  618. startdateString = Ext.Date.format(startdate,'Y-m-d');
  619. }
  620. if(paymentmethodid!=null&&paymentmethodid!=''&&startdateString!=null&&startdateString!=''){
  621. Ext.Ajax.request({
  622. url : basePath + 'common/getPayDate.action',
  623. async: false,//同步ajax请求
  624. params: {
  625. // caller: caller,//如果table==null,则根据caller去form表取对应table
  626. paymentmethodid: paymentmethodid,
  627. startdateString: startdateString
  628. },
  629. method : 'post',
  630. callback : function(options,success,response){
  631. var localJson = new Ext.decode(response.responseText);
  632. if(localJson.exceptionInfo){
  633. showError(localJson.exceptionInfo);
  634. }
  635. if(localJson.success){
  636. if(Ext.getCmp(datefield)){
  637. Ext.getCmp(datefield).setValue(localJson.paydate);
  638. }
  639. }
  640. }
  641. });
  642. }
  643. },
  644. JTStr : "丢并乱亘亚夫伫布占并来仑徇侣局俣系侠表伥俩仓个们幸仿伦伟逼侧侦伪杰伧伞备效家佣偬传伛债伤倾偻仅佥仙侨仆伪侥偾雇价仪侬亿侩俭傧俦侪尽偿优储俪傩傥俨凶兑儿兖内两册胄幂净冻凛凯别删刭则锉克刹刚剥剐剀创铲划札剧刘刽刿剑剂劲动务勋胜劳势绩劢勋励劝匀陶匦汇匮区协昂恤却厍厕厌厉厣参丛吴呐吕啕呙员呗念问启哑启衔唤丧乔单哟呛啬吗呜唢哔叹喽呕啧尝唛哗唠啸叽哓呒恶嘘哒哝哕嗳哙喷吨当咛吓哜噜啮呖咙向喾严嘤啭嗫嚣冁呓罗苏嘱囱囵国围园圆图团丘垭执坚垩埚尧报场块茔垲埘涂冢坞埙尘堑垫坠堕坟垦坛压垒圹垆坏垄坜坝壮壶寿够梦夹奂奥奁夺奖奋妆你姗奸侄娱娄妇娅娲妫媪妈妪妩娴妫娆婵娇嫱嫒嬷嫔婴婶娘娈孙学孪宫寝实宁审写宽宠宝将专寻对导尴届屉屡层屦属冈岘岛峡崃昆岗仑峥嵛岚嵝崭岖崂峤峄嵘岭屿岳岿峦巅巯卺帅师帐带帧帏帼帻帜币帮帱开干几库厕厢厩厦厨庙厂庑废广廪庐厅弑吊弪张强弹弥弯汇彦雕佛径从徕复彻汹恒汹耻悦怅闷凄敦恶恼恽恻爱惬悫怆恺忾栗态愠惨惭恸惯悫怄怂虑悭庆戚欲忧惫怜凭愦惮愤悯怃宪忆恳应怿懔怼懑恹惩懒怀悬忏惧慑恋戋戗戬战戏户抛挟舍扪卷扫抡挣挂采拣扬换挥背损摇捣掏抢捂掴掼搂挚抠抟掺捞撑挠捻挢掸拨抚扑揿挞挝捡拥掳择击挡担据挤拟摈拧搁掷扩撷摆擞撸扰摅撵拢拦撄搀撺携摄攒挛摊搅揽考败叙敌数敛毙斓斩断升时晋昼晕晖畅暂晔历昙晓暧旷晒书会胧术东栅杆栀条枭弃枨枣栋栈栖桠匾杨枫桢业极搌杩荣桤盘构枪连椠椁桨桩乐枞梁楼标枢样朴树桦桡桥机椭横檩柽档桧检樯台槟祢柠槛柜橹榈栉椟橼栎橱槠栌枥橥榇栊榉棂樱栏权榄钦叹欧欤欢岁历归殁残殒殇殚僵殓殡歼杀壳壳肴毁殴毵毡氇气氢氩氲氽泛污决没冲况汹浃泾凉凄泪渌净沦渊涞浅涣减涡测浑凑浈涌汤沩准沟温沧灭涤荥沪滞渗卤浒滚满渔沤汉涟渍涨溆渐浆颍泼洁沩潜润浔溃滗涠涩澄浇涝涧渑泽泶浍淀浊浓湿泞蒙济涛滥潍滨溅泺滤滢渎泻渖浏濒泸沥潇潆潴泷濑弥潋澜沣滠洒漓滩湾滦灾为乌烃无炼炜烟茕焕烦炀荧炝热炽烨灯炖烧烫焖营灿毁烛烩熏烬焘烁炉烂争为爷尔墙牍它牵荦犊牺状狭狈狰犹狲呆狱狮奖独狯猃狞获猎犷兽獭献猕猡珏佩现珐珲玮琐瑶莹玛琅琏玑瑷环玺琼珑璎瓒瓯产产苏亩毕画畲异当畴叠痉麻痹疯疡痪瘗疮疟疗痨痫瘅愈疠瘪痴痒疖症癞癣瘿瘾瘫癫发皑皲皱杯盗盏尽监盘卢汤众困睁睐睾眯瞒了睑蒙胧瞩矫炮朱硖砗砚硕砀确码砖碜碛矶硗础碍礴矿砺砾矾砻他佑秘禄祸祯御禅礼祢祷秃税秆禀扁种称谷稣积颖穑秽稳获窝洼穷窑窭窥窜窍窦灶窃竖竞笔笋笕笺筝节范筑箧笃筛筚箦篓箪简篑箫檐签帘篮筹箨籁笼签篱箩吁粤糁粪粮团粝籴纠纪纣约红纡纥纨纫纹纳纽纾纯纰纱纸级纷纭纺扎细绂绁绅绍绀绋绐绌终弦组绊绗结绝绦绞络绚给绒统丝绛绝绢绑绡绠绨绣绥困经综缍绿绸绻线绶维绾纲网绷缀彩纶绺绮绽绰绫绵绲缁紧绯绿绪缃缄缂线缉缎缔缗缘缌编缓缅纬缑缈练缏缇致萦缙缢缒绉缣缚缜缟缛县绦缝缡缩纵缧纤缦絷缕缥总绩绷缫缪缯织缮缭绕绣缋绳绘系茧缳缲缴绎继缤缱缬纩续缠缨纤缆钵罂坛罚骂罢罗罴羁芈羟羡义习翘专耧圣闻联聪声耸聩聂职聍听聋肃巯胁脉胫脱胀肾脶脑肿脚肠腽嗉肤胶腻胆脍脓脸脐膑腊胪脏卧临台与兴举旧衅铺舱舣舰舻艰艳刍苎兹荆豆庄茎荚苋华苌莱万莴扁叶荭苇药荤莳莅苍荪席盖莲苁荜卜蒌蒋葱茑荫荨蒇荞芸莸荛蒉荡芜萧蓣荟蓟芗姜蔷剃莶荐萨荠蓝荩艺药薮蕴苈蔼蔺蕲芦苏蕴苹藓蔹茏兰萝处虚虏号亏虬蛱蜕蚬蚀虾蜗蛳蚂萤蝼蛰蝈虮蝉蛲虫蛏蚁蝇虿蝎蛴蝾蜡蛎蛊蚕蛮杯众炫术卫冲只衮袅补装里制复裤裢褛亵裥裥袄裣裆褴袜衬袭见规觅视觇觋觎亲觊觏觐觑觉览觌观觞觯触订讣计讯讧讨讦训讪讫托记讹讶讼欣诀讷访设许诉诃诊注证诂诋讵诈诒诏评诎诅词咏诩询诣试诗诧诟诡诠诘话该详诜诙诖诔诛诓夸志认诳诶诞诱诮语诚诫诬误诰诵诲说说谁课谇诽谊调谄谆谈诿请诤诹诼谅论谂谀谍谝喧诨谔谛谐谏谕谘讳谙谌讽诸谚谖诺谋谒谓誊诌谎谜谧谑谡谤谦谥讲谢谣谣谟谪谬讴谨谩哗证谲讥撰谮识谯谭谱噪谵毁译议谴护誉读变谗让谶赞谠溪岂竖丰猪猫贝贞负财贡贫货贩贪贯责贮贳赀贰贵贬买贷贶费贴贻贸贺贲赂赁贿赅资贾贼赈赊宾赇周赉赐赏赔赓贤卖贱赋赕质账赌赖赚赙购赛赜贽赘赠赞赝赡赢赆赃赎赝赣赃赶赵趋迹践逾踊跄跸迹蹒踪糟跷趸踌跻跃踯踬蹑躏躯车轧轨军轩轫轭软轸轴轵轺轲轶轼较辂辁载轾辄挽辅轻辆辎辉辋辍辊辇辈轮辑辏输辐辗舆毂辖辕辘转辙轿辚轰辔办辞辫辩农回乃迳这连周进游运过达违遥逊递远适迟迁选遗辽迈还迩边逻逦郏邮郓乡邹邬郧邓郑邻郸邺郐邝郦腌盏酝丑酝医酱酿衅酽释钆钇钌钊钉钋针钓钐扣钏钒钗钍钕钯钫钭钠钝钩钤钣钞钮钧钙钬钛钪铌铈钶铃钴钹铍钰钸铀钿钾钜铊铉刨铋铂钳铆铅钺钵钩钲钼钽铰铒铬铪银铳铜铣铨铢铭铫衔铑铷铱铟铵铥铕铯铐焊锐销锑锉铝锒锌钡铤铗锋锊锓锄锔锇铺锐铖锆锂铽锯钢锞录锖锩锥锕锟锤锱铮锛锬锭钱锦锚锡锢错录锰表铼钔锴锅镀锷铡锻锸锲锹锾键锶锗针锺镁镑锁镉钨蓥镏铠铩锼镐镇镒镍镓镌镞镟链镆镙镝铿锵镗镘镛铲镜镖镂錾铧镤镪锈铙铴镣铹镦镡钟镫镨镄镌镰镯镭铁环铎铛镱铸鉴鉴铄镳钥镶镊锣钻銮凿长门闩闪闫闭开闶闳闰闲闲间闵闸阂阁阀闺闽阃阆闾阅阅阊阉阎阏阍阈阌阒板闱阔阕阑阗阖阙闯关阚阐辟闼陉陕升阵阴陈陆阳堤陧队阶陨际随险隐陇隶只隽虽双雏杂鸡离难云电沾雾霁雳霭灵靓静靥巩秋鞑千鞯韦韧韩韪韬韫韵响页顶顷项顺顸须顼颂颀颃预顽颁顿颇领颌颉颐颏头颊颔颈颓频颓颗题额颚颜颛颜愿颡颠类颟颢顾颤显颦颅风飑飒台刮飓飕飘飙飞饥饨饪饫饬饭饮饴饲饱饰饺饼饷养饵饽馁饿哺馀肴馄饯馅馆饧饩馏馊馍馒馐馑馈馔饥饶飨餍馋马驭冯驮驰驯驳驻驽驹驵驾骀驸驶驼驷骂骈骇驳骆骏骋骓骒骑骐骛骗骞骘骝腾驺骚骟骡蓦骜骖骠骢驱骁骄验惊驿骤驴骥骊肮髅脏体髋发松胡须鬓斗闹哄阋郁魉魇鱼鲁鲂鱿鲐鲍鲋鲒鲞鲕鲔鲛鲑鲜鲧鲠鲩鲤鲨鲻鲭鲞鲷鲱鲵鲲鲳鲸鲮鲰鲶鲫鲽鳇鳅鳄鳆鳃鲥鳏鳎鳐鳍鲢鳗鳔鳖鳝鳜鳞鲎鳄鲈鸟凫鸠凫凤鸣鸢鸩鸨鸦鸵鸳鸲鸱鸪鸯鸭鸸鸹鸿鸽鸺鹃鹆鹁鹈鹅鹄鹉鹌鹏鹎雕鹊鸫鹑鹕鹗鹜莺鹤鹘鹣鹞鸡鹧鸥鸶鹰鹭鹦鹳鸾卤咸鹾碱盐丽麦麸曲面黄黉点党黩黾鼋鼹齐斋齿龀龅龇龃龆龄出龈龊龉龋龌龙庞龚龟蹿后碱碱谰霉啮颧尸瓮艳痈钟才僳脔谫谳莼蓠岽猬余饷阄沈滟灏骅骣骧纣缵栾棂椤轳轹昵腼腭飙齑戆龛镔镧镬鸬鸷鹂鹇鹚鹨鹩鹪鹫鹬疴疱瘘颞笕笾簖粜糇糍趱酾跞跹蹰躜鼍雠鲚鲟鲡鲣鲦鲶鳌鳓鳕鳝鳟鳢髌黪厘余厮庵暗鳌杯膘别策尝扯吃酬助捶棰唇啖当荡捣抵翻旁痱干杠胳个构拐拐罐钎蚝合核呼胡糊冱碱剿浚愧馈捆捆累狸麻菱溜炉橹罗蒙妙蔑闵奶霓袅袅暖刨碰瓶旗强墙襁勤睿膻虱湿薯搜溯酸坛绦偷颓望嘻鹇泄修锈埙咽胭岩演焰雁燕夭野殷淫愈龠咱皂榨棹跖妆兹鬃钻碱僳伙鳖里么链么钟彝锨抬",
  645. /**
  646. * 繁体库
  647. * */
  648. FTStr : "丟並亂亙亞伕佇佈佔併來侖侚侶侷俁係俠俵倀倆倉個們倖倣倫偉偪側偵偽傑傖傘備傚傢傭傯傳傴債傷傾僂僅僉僊僑僕僞僥僨僱價儀儂億儈儉儐儔儕儘償優儲儷儺儻儼兇兌兒兗內兩冊冑冪凈凍凜凱別刪剄則剉剋剎剛剝剮剴創剷劃劄劇劉劊劌劍劑勁動務勛勝勞勢勣勱勳勵勸勻匋匭匯匱區協卬卹卻厙厠厭厲厴參叢吳吶呂咷咼員唄唸問啓啞啟啣喚喪喬單喲嗆嗇嗎嗚嗩嗶嘆嘍嘔嘖嘗嘜嘩嘮嘯嘰嘵嘸噁噓噠噥噦噯噲噴噸噹嚀嚇嚌嚕嚙嚦嚨嚮嚳嚴嚶囀囁囂囅囈囉囌囑囪圇國圍園圓圖團坵埡執堅堊堝堯報場塊塋塏塒塗塚塢塤塵塹墊墜墮墳墾壇壓壘壙壚壞壟壢壩壯壺壽夠夢夾奐奧奩奪奬奮妝妳姍姦姪娛婁婦婭媧媯媼媽嫗嫵嫻嬀嬈嬋嬌嬙嬡嬤嬪嬰嬸孃孌孫學孿宮寢實寧審寫寬寵寶將專尋對導尷屆屜屢層屨屬岡峴島峽崍崑崗崙崢崳嵐嶁嶄嶇嶗嶠嶧嶸嶺嶼嶽巋巒巔巰巹帥師帳帶幀幃幗幘幟幣幫幬幵幹幾庫廁廂廄廈廚廟廠廡廢廣廩廬廳弒弔弳張強彈彌彎彙彥彫彿徑從徠復徹忷恆恟恥悅悵悶悽惇惡惱惲惻愛愜愨愴愷愾慄態慍慘慚慟慣慤慪慫慮慳慶慼慾憂憊憐憑憒憚憤憫憮憲憶懇應懌懍懟懣懨懲懶懷懸懺懼懾戀戔戧戩戰戲戶拋挾捨捫捲掃掄掙掛採揀揚換揮揹損搖搗搯搶摀摑摜摟摯摳摶摻撈撐撓撚撟撣撥撫撲撳撻撾撿擁擄擇擊擋擔據擠擬擯擰擱擲擴擷擺擻擼擾攄攆攏攔攖攙攛攜攝攢攣攤攪攬攷敗敘敵數斂斃斕斬斷昇時晉晝暈暉暢暫曄曆曇曉曖曠曬書會朧朮東柵桿梔條梟棄棖棗棟棧棲椏楄楊楓楨業極榐榪榮榿槃構槍槤槧槨槳樁樂樅樑樓標樞樣樸樹樺橈橋機橢橫檁檉檔檜檢檣檯檳檷檸檻櫃櫓櫚櫛櫝櫞櫟櫥櫧櫨櫪櫫櫬櫳櫸櫺櫻欄權欖欽歎歐歟歡歲歷歸歿殘殞殤殫殭殮殯殲殺殻殼殽毀毆毿氈氌氣氫氬氳汆汎汙決沒沖況洶浹涇涼淒淚淥淨淪淵淶淺渙減渦測渾湊湞湧湯溈準溝溫滄滅滌滎滬滯滲滷滸滾滿漁漚漢漣漬漲漵漸漿潁潑潔潙潛潤潯潰潷潿澀澂澆澇澗澠澤澩澮澱濁濃濕濘濛濟濤濫濰濱濺濼濾瀅瀆瀉瀋瀏瀕瀘瀝瀟瀠瀦瀧瀨瀰瀲瀾灃灄灑灕灘灣灤災為烏烴無煉煒煙煢煥煩煬熒熗熱熾燁燈燉燒燙燜營燦燬燭燴燻燼燾爍爐爛爭爲爺爾牆牘牠牽犖犢犧狀狹狽猙猶猻獃獄獅獎獨獪獫獰獲獵獷獸獺獻獼玀玨珮現琺琿瑋瑣瑤瑩瑪瑯璉璣璦環璽瓊瓏瓔瓚甌產産甦畝畢畫畬異當疇疊痙痲痺瘋瘍瘓瘞瘡瘧療癆癇癉癒癘癟癡癢癤癥癩癬癭癮癱癲發皚皸皺盃盜盞盡監盤盧盪眾睏睜睞睪瞇瞞瞭瞼矇矓矚矯砲硃硤硨硯碩碭確碼磚磣磧磯磽礎礙礡礦礪礫礬礱祂祐祕祿禍禎禦禪禮禰禱禿稅稈稟稨種稱穀穌積穎穡穢穩穫窩窪窮窯窶窺竄竅竇竈竊竪競筆筍筧箋箏節範築篋篤篩篳簀簍簞簡簣簫簷簽簾籃籌籜籟籠籤籬籮籲粵糝糞糧糰糲糴糾紀紂約紅紆紇紈紉紋納紐紓純紕紗紙級紛紜紡紮細紱紲紳紹紺紼紿絀終絃組絆絎結絕絛絞絡絢給絨統絲絳絶絹綁綃綆綈綉綏綑經綜綞綠綢綣綫綬維綰綱網綳綴綵綸綹綺綻綽綾綿緄緇緊緋緑緒緗緘緙線緝緞締緡緣緦編緩緬緯緱緲練緶緹緻縈縉縊縋縐縑縛縝縞縟縣縧縫縭縮縱縲縴縵縶縷縹總績繃繅繆繒織繕繚繞繡繢繩繪繫繭繯繰繳繹繼繽繾纈纊續纏纓纖纜缽罌罎罰罵罷羅羆羈羋羥羨義習翹耑耬聖聞聯聰聲聳聵聶職聹聽聾肅胇脅脈脛脫脹腎腡腦腫腳腸膃膆膚膠膩膽膾膿臉臍臏臘臚臟臥臨臺與興舉舊舋舖艙艤艦艫艱艷芻苧茲荊荳莊莖莢莧華萇萊萬萵萹葉葒葦葯葷蒔蒞蒼蓀蓆蓋蓮蓯蓽蔔蔞蔣蔥蔦蔭蕁蕆蕎蕓蕕蕘蕢蕩蕪蕭蕷薈薊薌薑薔薙薟薦薩薺藍藎藝藥藪藴藶藹藺蘄蘆蘇蘊蘋蘚蘞蘢蘭蘿處虛虜號虧虯蛺蛻蜆蝕蝦蝸螄螞螢螻蟄蟈蟣蟬蟯蟲蟶蟻蠅蠆蠍蠐蠑蠟蠣蠱蠶蠻衃衆衒術衛衝衹袞裊補裝裡製複褲褳褸褻襇襉襖襝襠襤襪襯襲見規覓視覘覡覦親覬覯覲覷覺覽覿觀觴觶觸訂訃計訊訌討訐訓訕訖託記訛訝訟訢訣訥訪設許訴訶診註証詁詆詎詐詒詔評詘詛詞詠詡詢詣試詩詫詬詭詮詰話該詳詵詼詿誄誅誆誇誌認誑誒誕誘誚語誠誡誣誤誥誦誨說説誰課誶誹誼調諂諄談諉請諍諏諑諒論諗諛諜諞諠諢諤諦諧諫諭諮諱諳諶諷諸諺諼諾謀謁謂謄謅謊謎謐謔謖謗謙謚講謝謠謡謨謫謬謳謹謾譁證譎譏譔譖識譙譚譜譟譫譭譯議譴護譽讀變讒讓讖讚讜谿豈豎豐豬貓貝貞負財貢貧貨販貪貫責貯貰貲貳貴貶買貸貺費貼貽貿賀賁賂賃賄賅資賈賊賑賒賓賕賙賚賜賞賠賡賢賣賤賦賧質賬賭賴賺賻購賽賾贄贅贈贊贋贍贏贐贓贖贗贛贜趕趙趨跡踐踰踴蹌蹕蹟蹣蹤蹧蹺躉躊躋躍躑躓躡躪軀車軋軌軍軒軔軛軟軫軸軹軺軻軼軾較輅輇載輊輒輓輔輕輛輜輝輞輟輥輦輩輪輯輳輸輻輾輿轂轄轅轆轉轍轎轔轟轡辦辭辮辯農迴迺逕這連週進遊運過達違遙遜遞遠適遲遷選遺遼邁還邇邊邏邐郟郵鄆鄉鄒鄔鄖鄧鄭鄰鄲鄴鄶鄺酈醃醆醖醜醞醫醬釀釁釅釋釓釔釕釗釘釙針釣釤釦釧釩釵釷釹鈀鈁鈄鈉鈍鈎鈐鈑鈔鈕鈞鈣鈥鈦鈧鈮鈰鈳鈴鈷鈸鈹鈺鈽鈾鈿鉀鉅鉈鉉鉋鉍鉑鉗鉚鉛鉞鉢鉤鉦鉬鉭鉸鉺鉻鉿銀銃銅銑銓銖銘銚銜銠銣銥銦銨銩銪銫銬銲銳銷銻銼鋁鋃鋅鋇鋌鋏鋒鋝鋟鋤鋦鋨鋪鋭鋮鋯鋰鋱鋸鋼錁錄錆錈錐錒錕錘錙錚錛錟錠錢錦錨錫錮錯録錳錶錸鍆鍇鍋鍍鍔鍘鍛鍤鍥鍬鍰鍵鍶鍺鍼鍾鎂鎊鎖鎘鎢鎣鎦鎧鎩鎪鎬鎮鎰鎳鎵鎸鏃鏇鏈鏌鏍鏑鏗鏘鏜鏝鏞鏟鏡鏢鏤鏨鏵鏷鏹鏽鐃鐋鐐鐒鐓鐔鐘鐙鐠鐨鐫鐮鐲鐳鐵鐶鐸鐺鐿鑄鑑鑒鑠鑣鑰鑲鑷鑼鑽鑾鑿長門閂閃閆閉開閌閎閏閑閒間閔閘閡閣閥閨閩閫閬閭閱閲閶閹閻閼閽閾閿闃闆闈闊闋闌闐闔闕闖關闞闡闢闥陘陝陞陣陰陳陸陽隄隉隊階隕際隨險隱隴隸隻雋雖雙雛雜雞離難雲電霑霧霽靂靄靈靚靜靨鞏鞦韃韆韉韋韌韓韙韜韞韻響頁頂頃項順頇須頊頌頎頏預頑頒頓頗領頜頡頤頦頭頰頷頸頹頻頽顆題額顎顏顓顔願顙顛類顢顥顧顫顯顰顱風颮颯颱颳颶颼飄飆飛飢飩飪飫飭飯飲飴飼飽飾餃餅餉養餌餑餒餓餔餘餚餛餞餡館餳餼餾餿饃饅饈饉饋饌饑饒饗饜饞馬馭馮馱馳馴駁駐駑駒駔駕駘駙駛駝駟駡駢駭駮駱駿騁騅騍騎騏騖騙騫騭騮騰騶騷騸騾驀驁驂驃驄驅驍驕驗驚驛驟驢驥驪骯髏髒體髖髮鬆鬍鬚鬢鬥鬧鬨鬩鬱魎魘魚魯魴魷鮐鮑鮒鮚鮝鮞鮪鮫鮭鮮鯀鯁鯇鯉鯊鯔鯖鯗鯛鯡鯢鯤鯧鯨鯪鯫鯰鯽鰈鰉鰍鰐鰒鰓鰣鰥鰨鰩鰭鰱鰻鰾鱉鱔鱖鱗鱟鱷鱸鳥鳧鳩鳬鳳鳴鳶鴆鴇鴉鴕鴛鴝鴟鴣鴦鴨鴯鴰鴻鴿鵂鵑鵒鵓鵜鵝鵠鵡鵪鵬鵯鵰鵲鶇鶉鶘鶚鶩鶯鶴鶻鶼鷂鷄鷓鷗鷥鷹鷺鸚鸛鸞鹵鹹鹺鹼鹽麗麥麩麯麵黃黌點黨黷黽黿鼴齊齋齒齔齙齜齟齠齡齣齦齪齬齲齷龍龐龔龜躥後堿鹼讕黴齧顴屍甕豔癰鍾纔傈臠譾讞蓴蘺崠蝟餘饟鬮瀋灩灝驊驏驤紂纘欒欞欏轤轢暱靦齶飆齏戇龕鑌鑭鑊鸕鷙鸝鷴鶿鷚鷯鷦鷲鷸痾皰瘺顳筧籩籪糶餱餈趲釃躒躚躕躦鼉讎鱭鱘鱺鰹鰷鯰鰲鰳鱈鱔鱒鱧髕黲釐餘廝菴闇鼇桮臕彆筴嚐撦喫詶耡搥箠脣啗儅盪擣觝繙徬疿榦槓肐箇搆枴柺鑵釬蠔閤覈謼衚餬沍硷勦濬媿餽梱綑纍貍痳蔆霤鑪艣儸懞玅衊湣嬭蜺嫋嬝煖鑤踫缾旂彊墻繈懃叡羶蝨溼藷蒐泝痠罈縚媮穨朢譆鷳洩脩銹壎嚥臙巖縯燄鴈鷰殀埜慇婬瘉籥偺皁搾櫂蹠粧玆騣鉆硷傈夥鼈裏麽鍊麼锺彜鍁擡",
  649. /**
  650. * 繁体转化简体
  651. * */
  652. Simplized : function (cc){
  653. var str='',jt=this.JTStr,ft=this.FTStr;
  654. for(var i=0;i<cc.length;i++){
  655. if(cc.charCodeAt(i)>10000&&ft.indexOf(cc.charAt(i))!=-1)str+=jt.charAt(ft.indexOf(cc.charAt(i)));
  656. else str+=cc.charAt(i);
  657. }
  658. return str;
  659. },
  660. Traditionalized :function (cc){
  661. var str='',ss=this.JTStr,tt=this.FTStr;
  662. for(var i=0;i<cc.length;i++){
  663. if(cc.charCodeAt(i)>10000&&ss.indexOf(cc.charAt(i))!=-1)str+=tt.charAt(ss.indexOf(cc.charAt(i)));
  664. else str+=cc.charAt(i);
  665. }
  666. return str;
  667. },
  668. numberFormat:function(a, b) {
  669. var me = this;
  670. if(a < 0){
  671. return -1*Math.round(me.multiply(Math.abs(a), Math.pow(10, b)))/Math.pow(10, b);
  672. } else {
  673. return Math.round(me.multiply(a, Math.pow(10,b)))/Math.pow(10, b);
  674. }
  675. },
  676. /**
  677. * 两数相乘,解决js乘法浮点错误
  678. */
  679. multiply: function(a, b) {
  680. var _a = String(a), _b = String(b), m = 0, n = 0;
  681. if(_a.indexOf('.') > 0)
  682. m = _a.substr(_a.indexOf('.')).length;
  683. if(_b.indexOf('.') > 0)
  684. n = _b.substr(_b.indexOf('.')).length;
  685. return (a*Math.pow(10, m))*(b*Math.pow(10, n))/Math.pow(10, m + n);
  686. },
  687. addListener: function(eventName, fn, scope, options) {// extjs event buffer属性有bug
  688. if(scope && typeof scope.addListener === 'function') {
  689. var opts = options || {}, buffer = opts.buffer || 1000;
  690. delete opts.buffer;
  691. scope.on(eventName, function(b, e){
  692. if(!scope.__buffered) {
  693. scope.__buffered = true;
  694. fn && fn.call(scope);
  695. Ext.defer(function(){
  696. delete scope.__buffered;
  697. }, buffer);
  698. } else {
  699. e.preventDefault();
  700. e.stopEvent();
  701. }
  702. }, scope, opts);
  703. }
  704. }
  705. });