ext-base-bak.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751
  1. function postpage(pageObj, servid, method, fromMV, subm, check, confirmState, exportDG, issubmit){
  2. var obj = document.forms[pageObj.formId];
  3. obj.elements[pageObj.sidKey].value = servid;
  4. obj.elements[pageObj.midKey].value = method;
  5. obj.elements[pageObj.fromId].value = fromMV;
  6. obj.elements[pageObj.exportKey].value = exportDG;
  7. obj.method = subm;
  8. if(!check){
  9. obj.onsubmit = null;
  10. }
  11. pageObj.needConfirm = confirmState;
  12. if(issubmit){
  13. //如果需要check 判断 checkRequire 是否返回 true
  14. if(check && checkRequire(obj)){
  15. obj.submit();
  16. }
  17. //如果不需要check, 直接提交
  18. if(!check){
  19. obj.submit();
  20. }
  21. }
  22. }
  23. //展示遮罩
  24. function showMark(state){
  25. if(jQuery('#markDiv').size() == 0){
  26. var newMask=document.createElement("div");
  27. newMask.id="markDiv";
  28. newMask.style.position="absolute";
  29. newMask.style.zIndex="900";
  30. _scrollWidth=Math.max(document.body.scrollWidth,document.documentElement.scrollWidth);
  31. _scrollHeight=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);
  32. // _scrollHeight = Math.max(document.body.offsetHeight,document.documentElement.scrollHeight);
  33. newMask.style.width=_scrollWidth+"px";
  34. newMask.style.height=_scrollHeight+"px";
  35. newMask.style.top="0px";
  36. newMask.style.left="0px";
  37. newMask.style.background="#33393C";
  38. //newMask.style.background = "#FFFFFF";
  39. newMask.style.filter="alpha(opacity=40)";
  40. newMask.style.opacity="0.40";
  41. newMask.style.display='none';
  42. document.body.appendChild(newMask);
  43. }
  44. if(state == true){
  45. jQuery('#markDiv').css("display","");
  46. }else{
  47. jQuery('#markDiv').css("display", "none");
  48. }
  49. }
  50. //检查checkBox是否勾选
  51. function checkRadio(ff, targetId, tp){
  52. if (tp == 'radio') {
  53. var obj = ff.elements[targetId];
  54. if (obj == null || obj == undefined) {
  55. return false;
  56. }
  57. if (obj.length == undefined) {
  58. return obj.checked;
  59. }
  60. var isExist = false;
  61. for (i = 0; i < obj.length; i++) {
  62. if (obj[i].checked == true) {
  63. isExist = true;
  64. break;
  65. }
  66. }
  67. return isExist;
  68. }else{
  69. var obj = ff.elements[targetId];
  70. if (obj == null || obj == undefined) {
  71. return false;
  72. }
  73. if(obj.value == ''){
  74. return false;
  75. }
  76. return true;
  77. }
  78. }
  79. function ext_selectTree(){
  80. }
  81. //改变box close图标
  82. function chgCloseIcon(ts, target){
  83. var st = ts.getAttribute("state");
  84. if(st == 2){
  85. ts.src = "../ext-res/image/plus.gif";
  86. ts.setAttribute("state", 1);
  87. $(target).show();
  88. }else{
  89. ts.src = "../ext-res/image/minus.gif";
  90. ts.setAttribute("state", 2);
  91. $(target).hide();
  92. }
  93. }
  94. //全选
  95. function selectAll(ts, targId){
  96. var o = ts.form.elements[targId];
  97. if(o.length == undefined){
  98. o.checked = ts.checked;
  99. return;
  100. }
  101. for(i=0; i<o.length; i++){
  102. o[i].checked = ts.checked;
  103. }
  104. }
  105. //分页提交
  106. function gotopage(vf,str,cp,fromId){
  107. var ff = document.forms[vf.formId];
  108. ff.elements[cp].value=str;
  109. ff.elements[vf.sidKey].value = vf.sidValue;
  110. ff.elements[vf.midKey].value = vf.midValue;
  111. ff.elements[vf.fromId].value = fromId;
  112. ff.method = "post";
  113. ff.submit();
  114. }
  115. //返回日历格式mm/dd/yyyy
  116. function convertDate(inp, type){
  117. var str1,str2,str3;
  118. if(inp != ''){
  119. str1 = inp.substring(0,4);
  120. str2 = inp.substring(4,6);
  121. str3 = inp.substring(6,8);
  122. }else{
  123. var d = new Date();
  124. str1 = d.getFullYear();
  125. str2 = d.getMonth() + 1;
  126. str3 = d.getDate();
  127. }
  128. if(type == 1){
  129. return str2 +'/'+str1;
  130. }else{
  131. return str2 + '/' + str3 + '/' + str1;
  132. }
  133. }
  134. //级联获取select
  135. function cascadeParam(url, targ, sel, params){
  136. jQuery('#'+targ).bind('change',function(event){
  137. jQuery.ajax({'url':url + "&cascade="+sel, type:'post',dataType:'json', data:params+jQuery('#' + targ).val(), success:function(opts){
  138. document.getElementById(sel).options.length = 0;
  139. for(i=0; i<opts.length; i++){
  140. var vl = opts[i].value ? opts[i].value : opts[i].VALUE;
  141. if(vl == null){
  142. vl = "";
  143. }
  144. var varItem = new Option(opts[i].text ? opts[i].text : opts[i].TEXT, vl);
  145. document.getElementById(sel).options.add(varItem);
  146. }
  147. }});
  148. });
  149. }
  150. //table ajax 分页
  151. function gotobyajax(pinfo,dgId, pageSize, currPage, params, fromMVId){
  152. var url = "";
  153. if(pinfo == null){
  154. url = "../control/extControl?serviceid=ext.sys.fenye.ajax&currPage="+currPage+"&id="+dgId+"&pageSize="+pageSize+"&t_from_id="+fromMVId;
  155. }else{
  156. url = pinfo.resPath + "control/" + pinfo.extAction+"?"+pinfo.sidKey+"=ext.sys.fenye.ajax&currPage="+currPage+"&id="+dgId+"&pageSize="+pageSize+"&"+pinfo.fromId+"="+fromMVId;
  157. }
  158. __showLoading();
  159. jQuery.ajax({
  160. type: "POST",
  161. url: url,
  162. dataType:"html",
  163. data: params,
  164. success: function(resp){
  165. __hideLoading();
  166. jQuery("#" + dgId).html(resp);
  167. },
  168. error:function(resp){
  169. __hideLoading();
  170. jQuery.messager.alert('出错了','系统出错,请联系管理员。','error');
  171. }
  172. });
  173. }
  174. function keygoto(evt, pinfo, dgId, pageSize, currPage, params, fromMVId){
  175. evt = window.event || evt;
  176. if(evt.keyCode==13){//如果取到的键值是回车
  177. gotobyajax(pinfo, dgId, pageSize, currPage, params, fromMVId);
  178. }
  179. }
  180. function keygoto2(evt, vf,str,cp,fromId){
  181. evt = window.event || evt;
  182. if(evt.keyCode==13){//如果取到的键值是回车
  183. var ff = document.forms[vf.formId];
  184. ff.elements[cp].value=str;
  185. ff.elements[vf.sidKey].value = vf.sidValue;
  186. ff.elements[vf.midKey].value = vf.midValue;
  187. ff.elements[vf.fromId].value = fromId;
  188. ff.method = "post";
  189. //ff.submit();
  190. }
  191. }
  192. //交叉表的body进行滚动时,header也进行滚动
  193. function tableBodyscroll(id){
  194. $("#"+id+" .lock-dg-body").scroll(function(){
  195. var left = $(this).scrollLeft();
  196. $("#"+id+" .lock-dg-header").css("margin-left", "-"+left+"px");
  197. });
  198. }
  199. function linkbycol(url, targetHtml){
  200. if(jQuery("#"+targetHtml).size() == 0){
  201. alert('配置的 htmlTarget :' + targetHtml + '未在页面定义.');
  202. return;
  203. }
  204. jQuery("#"+targetHtml).load(url);
  205. }
  206. //table的head排序操作
  207. function extColOrder(dgId, order, fromMVId, params){
  208. if(jQuery('#ext_order_state').val() == 'a'){
  209. jQuery('#ext_order_state').val('d');
  210. }else{
  211. jQuery('#ext_order_state').val('a');
  212. }
  213. var url = extAction+"?"+sidKey+"=ext.sys.fenye.ajax&ext_col_order="+order+"&id="+dgId+"&ext_order_state="+jQuery('#ext_order_state').val()+"&"+fromId+"="+fromMVId;
  214. jQuery.post(url, params, function(resp){
  215. jQuery("#"+dgId).html(resp);
  216. }, "html");
  217. }
  218. /**
  219. 提交到多个组件
  220. **/
  221. function post2Comps(ids, urls, paramNames){
  222. for(k=0; k<ids.length; k++){
  223. var t = ids[k];
  224. var u = urls[k];
  225. post2Comp(t, u, null, paramNames);
  226. }
  227. }
  228. /**
  229. * 提交到一个组件
  230. * @param mvId
  231. * @param params
  232. * @return
  233. */
  234. function post2Comp(targetId, url, ff, paramNames){
  235. var parms = '';
  236. for(var i=0; i<paramNames.length; i++){
  237. var p = paramNames[i];
  238. //采用jQuery方式取值
  239. if(jQuery('#'+p).attr('type') == 'radio'){
  240. var val = jQuery('input:radio[name='+p+']:checked').val();
  241. parms = parms + p + "=" + (val?val:"") + "&";
  242. }else if(jQuery('#'+p).attr('type') == 'checkbox'){
  243. jQuery("input[name='"+p+"']:checkbox:checked").each(function(){
  244. parms = parms + p + "=" + jQuery(this).val() + "&";
  245. });
  246. }else{
  247. var val = jQuery('#'+p).val();
  248. parms = parms + p + "=" + val + "&";
  249. }
  250. /**
  251. var rets = document.forms[ff.name].elements[p];
  252. if(rets.length == 1){
  253. parms = parms + p + "=" + rets.value+"&";
  254. }else{
  255. //是checkbox或radio
  256. for(var j=0; j<rets.length; j++){
  257. if(rets[j].checked){
  258. parms = parms + p + "=" + rets[j].value+"&";
  259. }
  260. }
  261. }
  262. **/
  263. }
  264. $("#"+targetId).html("<div align='center'><img src='../ext-res/image/large-loading.gif'></div>");
  265. jQuery.post(url, parms, function(resp){
  266. jQuery("#"+targetId).html(resp);
  267. }, "html");
  268. }
  269. /***
  270. * 提交到一个MV
  271. */
  272. function post2MV(config){
  273. for(i=0; i<config.length; i++){
  274. __post2MV(config[i].target, config[i].url, config[i].paramNames, config[i].fname);
  275. }
  276. }
  277. function __post2MV(targetId, url, paramNames, fname){
  278. var parms = "";
  279. for(var i=0; i<paramNames.length; i++){
  280. var tp = paramNames[i].type;
  281. var p = paramNames[i].name;
  282. //采用jQuery方式取值
  283. if(tp == 'radio'){
  284. var val = jQuery('input:radio[name='+p+']:checked').val();
  285. if(!val){
  286. val = "";
  287. }
  288. parms = parms + p + "=" + val + "&";
  289. }else if(tp == 'checkBox'){
  290. $("input[name=\""+p+"\"]:checked").each(function(a, b){
  291. var v = $(b).val();
  292. parms = parms + p + "=" + v + "&";
  293. });
  294. }else{
  295. var val = null;
  296. if(paramNames[i].type == 'mselect'){ //多选需要特殊处理
  297. val = jQuery('#'+p).combobox("getValues");
  298. jQuery('#'+p).combobox("destroy");
  299. }else if(paramNames[i].type == 'tree'){ //tree类型参数特殊处理
  300. val = jQuery('#'+p).combobox("getValue");
  301. //选择完后需要destory组件, 防止以前的HTML在页面堆积
  302. jQuery('#'+p).combobox("destroy");
  303. }else{
  304. val = jQuery('#'+p).val();
  305. }
  306. parms = parms + p + "=" + val + "&";
  307. }
  308. /**
  309. var rets = document.forms[fname].elements[p];
  310. var tp = jQuery(rets).attr('type');
  311. if(tp != 'radio' && tp != 'checkbox'){
  312. parms = parms + p + "=" + rets.value+"&";
  313. }else{
  314. //是checkbox或radio
  315. for(var j=0; j<rets.length; j++){
  316. if(rets[j].checked){
  317. parms = parms + p + "=" + rets[j].value+"&";
  318. }
  319. }
  320. }
  321. **/
  322. }
  323. jQuery(document.getElementById(targetId)).html("数据重新加载中...");
  324. jQuery.ajax({
  325. type: "POST",
  326. url: url,
  327. dataType:"html",
  328. data: parms,
  329. success: function(resp){
  330. jQuery(document.getElementById(targetId)).html(resp);
  331. },
  332. error:function(resp){
  333. jQuery.messager.alert('出错了','系统出错,请联系管理员。','error');
  334. }
  335. });
  336. }
  337. /**
  338. * 通过点击表格更新组件
  339. * @return
  340. */
  341. function tableUpdateComp(config){
  342. var obj = jQuery('#' + config.id + ' .row-link');
  343. obj.live('click', function(e){
  344. var tz = jQuery(this);
  345. var a = tz.find('a.lka');
  346. if(a.size() > 0){
  347. jQuery('#' + config.id + " .row-link").removeClass('link-selected');
  348. tz.addClass('link-selected');
  349. for(i=0; i<config.url.length; i++){
  350. u = config.url[i].url;
  351. t = config.url[i].target;
  352. tp = config.url[i].type;
  353. var pp = {};
  354. var p = a.attr('parms' + i).split("&");
  355. for(j=0; j<p.length; j++){
  356. var tmp = p[j].split("=");
  357. var k = tmp[0];
  358. var v = tmp[1];
  359. pp[k] = v;
  360. }
  361. jQuery("#"+(tp=="chart"?"p":"")+t).load(u, pp);
  362. }
  363. }
  364. });
  365. }
  366. function tableCell2MV(config){
  367. var obj = jQuery('#' + config.id + ' .cell-link');
  368. obj.live('click', function(e){
  369. var tz = jQuery(this);
  370. location.href = config.url + '&'+ tz.attr('parms');
  371. });
  372. }
  373. function tableCellUpdateComp(config){
  374. var obj = jQuery('#' + config.id + ' .cell-link');
  375. obj.live('click', function(e){
  376. var tz = jQuery(this);
  377. for(i=0; i<config.url.length; i++){
  378. url = config.url[i].url;
  379. t = config.url[i].target;
  380. tp = config.url[i].type;
  381. __showLoading();
  382. jQuery.post(url, tz.attr('parms'), function(resp){
  383. __hideLoading();
  384. jQuery("#"+(tp=="chart"?"p":"")+t).html(resp);
  385. }, "html");
  386. }
  387. });
  388. }
  389. function changeTabId(tabId, value){
  390. jQuery('#' + tabId).val(value);
  391. }
  392. /**
  393. * 可以点击的radio
  394. * @return
  395. */
  396. function radiolink(url, target, divId){
  397. var pms = target+"="+jQuery("input[name='"+target+"']:checked").val();
  398. jQuery.post(url, pms, function(resp){
  399. jQuery("#"+divId).html(resp);
  400. }, "html");
  401. }
  402. function goto2(ff,str,count){
  403. if(isNaN(str)){
  404. str = 1;
  405. }
  406. if(str == ''){
  407. str = 1;
  408. }
  409. if(str>count){
  410. str = count;
  411. }
  412. str = str -1;
  413. gotopage(ff,str);
  414. }
  415. /**
  416. 图形钻取(地图)
  417. **/
  418. function chart_Drill(x, xval, url, pms, compId){
  419. pms = pms + x+"="+xval;
  420. var pp = {};
  421. var p = pms.split("&");
  422. for(i=0; i<p.length; i++){
  423. var tmp = p[i].split("=");
  424. var k = tmp[0];
  425. var v = tmp[1];
  426. pp[k] = v;
  427. }
  428. //设置钻取的字段,用该字段来区分当前是钻取还是未钻取
  429. pp.drillDim = x;
  430. var u = url;
  431. var d = compId;
  432. __showLoading();
  433. jQuery("#p"+d).load(u, pp, function(){
  434. __hideLoading();
  435. });
  436. }
  437. /**
  438. 图形上卷
  439. **/
  440. function chart_drillUp(url, pms, compId){
  441. __showLoading();
  442. jQuery("#p"+compId).load(url, pms, function(){
  443. __hideLoading();
  444. });
  445. }
  446. /**
  447. * 图形,表格连接
  448. **/
  449. function chartComp_Link(x, xval, url, pms, compId, tps){
  450. if(url == null || url == 'null'){
  451. alert("未定义接收组件。");
  452. return;
  453. }
  454. pms = pms + x+"="+xval;
  455. var pp = {};
  456. var p = pms.split("&");
  457. for(i=0; i<p.length; i++){
  458. var tmp = p[i].split("=");
  459. var k = tmp[0];
  460. var v = tmp[1];
  461. pp[k] = v;
  462. }
  463. for(i=0; i<url.length; i++){
  464. var u = url[i];
  465. var d = compId[i];
  466. __showLoading();
  467. jQuery("#"+(tps[i]=="chart"?"p":"")+d).load(u, pp, function(){
  468. __hideLoading();
  469. });
  470. }
  471. }
  472. /**
  473. * 维度钻取
  474. * @return
  475. */
  476. function fieldDirll(config){
  477. var fields = jQuery('#' + config.table + " td[drillid='"+config.pid+"'] .crossDirll").bind('click', function(e){
  478. var thiz = jQuery(this);
  479. if(thiz.attr('isopen') == 0){
  480. var tabTr = thiz.parent().css('font-weight', 'bold').parents("tr.tr-row1,tr.tr-row2");
  481. //获取内容
  482. __showLoading();
  483. var parms = thiz.attr('parms');
  484. if(config.text != undefined && config.text != ""){
  485. parms = parms + '&text=' + jQuery.fn.toJSON(config.text);
  486. }
  487. jQuery.ajax({url: config.url, data: parms, type:'POST', dataType:'html', success: function(resp){
  488. jQuery(resp).insertAfter(tabTr);
  489. __hideLoading();
  490. }});
  491. thiz.addClass('crossDirll-open');
  492. thiz.attr('isopen', '1');
  493. }else{
  494. __nodeRemove(thiz.parent().css('font-weight', 'normal'), config);
  495. thiz.removeClass('crossDirll-open');
  496. thiz.attr('isopen', '0');
  497. }
  498. });
  499. }
  500. function __nodeRemove(target, config){
  501. var pid = target.children('.crossDirll').attr('pid');
  502. jQuery('#' + config.table+' td[drillid="'+pid+'"]').each(function(a, b){
  503. __nodeRemove(jQuery(b), config);
  504. jQuery(b).parent().remove();
  505. });
  506. }
  507. function __showLoading(){
  508. var sload = jQuery('#ext2_Loading');
  509. if(sload.size() == 0){
  510. sload = jQuery('<div id="ext2_Loading" class="ext-el-mask-msg x-mask-loading"><div>请稍后...</div></div>').appendTo('body');
  511. }
  512. var doc = jQuery(document);
  513. var win = jQuery(window);
  514. var t = doc.scrollTop() + win.height()/2 - 50;
  515. var l = doc.scrollLeft() + win.width()/2 - 50;
  516. sload.css({'top':t, 'left':l});
  517. sload.show();
  518. }
  519. function __hideLoading(){
  520. jQuery('#ext2_Loading').hide();
  521. }
  522. /**
  523. * 列上加链接
  524. * 连接面板在页面中只存在一个,id为compLinkPanel
  525. * @param url
  526. * @return
  527. */
  528. function rowLinkFireTR(config){
  529. jQuery('#' + config.id + ' .row-link a.lka').bind('click', function(e){
  530. var tz = jQuery(this);
  531. if(config.type == 'open'){
  532. var panel = null;
  533. if(Ext.get('compLinkPanel') == null){
  534. //创建面板
  535. panel = new Ext.Window({
  536. id: 'compLinkPanel',
  537. title: '指标分析',
  538. renderTo: document.body,
  539. layout: {type: 'absolute'},
  540. width: 590,
  541. height: 410,
  542. draggable: true,
  543. resizable: false,
  544. closeAction : 'hide',
  545. shadow: false,
  546. autoScroll : true,
  547. html: "<div id='compLinkPanelctx'></div>"
  548. });
  549. panel.render();
  550. }else{
  551. panel = Ext.getCmp('compLinkPanel');
  552. }
  553. panel.show();
  554. }else if(config.type == 'new'){
  555. location.href = config.url;
  556. return;
  557. }else{
  558. var tabTr = tz.parent().parent();
  559. jQuery('#compLinkPanelctxTr').remove();
  560. jQuery("<tr class='row-link' id='compLinkPanelctxTr'><td colspan='"+config.colspan+"'><div class='linkPanelClose' id='linkPanelClose'></div><div id='compLinkPanelctx'></div></td></tr>").insertAfter(tabTr);
  561. jQuery('#linkPanelClose').bind('click', function(){
  562. jQuery('#compLinkPanelctxTr').remove();
  563. });
  564. }
  565. jQuery("#compLinkPanelctx").load(config.url, tz.attr('parms'));
  566. });
  567. }
  568. function formatCol(val, row){
  569. var fmt = crtfmt[this.field];
  570. var ret = formatNumber(val, fmt);
  571. if(this.finfmt && this.finfmt==true){
  572. if(val > 0){
  573. ret = "<font class=\"kpi_up\">"+ret+"</font>";
  574. }else if(val < 0){
  575. ret = "<font class=\"kpi_down\">"+ret+"</font>";
  576. }
  577. }
  578. return ret;
  579. }
  580. /**
  581. 配置气泡大小
  582. 转换到 10 到 50
  583. **/
  584. function bubbleSize(maxval, minval, val, targetMax){
  585. if(maxval == minval){
  586. return 40;
  587. }
  588. if(!targetMax){
  589. targetMax = 50;
  590. }
  591. var r = (targetMax-10)/(maxval-minval)*(val-minval)+10;
  592. return r;
  593. }
  594. function formatNumber(num,pattern, shortname){
  595. if(!pattern || pattern.length == 0){
  596. return num;
  597. }
  598. var shortdw;
  599. if(shortname && num > 1000000){
  600. num = num / 1000000;
  601. shortdw = "百万";
  602. }else if(shortname && num > 10000){
  603. num = num / 10000;
  604. shortdw = "万";
  605. }else if(shortname && num > 1000){
  606. num = num / 1000;
  607. shortdw = "千";
  608. }
  609. if(pattern.indexOf("%") > 0){
  610. num = num * 100;
  611. }
  612. var fmtarr = pattern?pattern.split('.'):[''];
  613. var retstr='';
  614. //先对数据做四舍五入
  615. var xsw = 0;
  616. if(fmtarr.length > 1){
  617. xsw = fmtarr[1].length;
  618. }
  619. var bl = 1;
  620. for(i=0; i<xsw; i++){
  621. bl = bl * 10;
  622. }
  623. num = num * bl;
  624. num = Math.round(num);
  625. num = num / bl;
  626. var strarr = num?num.toString().split('.'):['0'];
  627. // 整数部分
  628. var str = strarr[0];
  629. var fmt = fmtarr[0];
  630. var i = str.length-1;
  631. var comma = false;
  632. for(var f=fmt.length-1;f>=0;f--){
  633. switch(fmt.substr(f,1)){
  634. case '#':
  635. if(i>=0 ) retstr = str.substr(i--,1) + retstr;
  636. break;
  637. case '0':
  638. if(i>=0) retstr = str.substr(i--,1) + retstr;
  639. else retstr = '0' + retstr;
  640. break;
  641. case ',':
  642. comma = true;
  643. retstr=','+retstr;
  644. break;
  645. }
  646. }
  647. if(i>=0){
  648. if(comma){
  649. var l = str.length;
  650. for(;i>=0;i--){
  651. retstr = str.substr(i,1) + retstr;
  652. if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;
  653. }
  654. }
  655. else retstr = str.substr(0,i+1) + retstr;
  656. }
  657. retstr = retstr+'.';
  658. // 处理小数部分
  659. str=strarr.length>1?strarr[1]:'';
  660. fmt=fmtarr.length>1?fmtarr[1]:'';
  661. i=0;
  662. for(var f=0;f<fmt.length;f++){
  663. switch(fmt.substr(f,1)){
  664. case '#':
  665. if(i<str.length) retstr+=str.substr(i++,1);
  666. break;
  667. case '0':
  668. if(i<str.length) retstr+= str.substr(i++,1);
  669. else retstr+='0';
  670. break;
  671. }
  672. }
  673. var r = retstr.replace(/^,+/,'').replace(/\.$/,'');
  674. if(pattern.indexOf("%") > 0){
  675. r = r + "%";
  676. }
  677. if(shortdw){
  678. r = r + shortdw;
  679. }
  680. return r;
  681. }
  682. function getCalendar(divId, dt, minval, maxval){
  683. var url = '../control/Calendar.action';
  684. $("#"+divId).load(url, {dt:dt, "max":maxval, "min":minval});
  685. }
  686. /**
  687. 日历提交
  688. **/
  689. function calendarPost(event, ts,value, cb){
  690. $("table.calen td").removeClass("curdt");
  691. $(ts).parent().addClass("curdt");
  692. if(cb){
  693. cb(event, ts, value);
  694. }
  695. }
  696. function selectyearmonth(){
  697. var isopen = $("#selyearmonth").attr("isopen");
  698. if(isopen && "y" == isopen){
  699. $("#selyearmonth").css("display","none").attr("isopen", "n");
  700. }else{
  701. $("#selyearmonth").css("display","block").attr("isopen", "y");
  702. }
  703. }