extjs6 基础组件扩展和自定义组件封装--03全局方法、变量介绍

来源:互联网 发布:中国无风险利率数据 编辑:程序博客网 时间:2024/06/08 07:46

最先讲解全局方法,因为在后续的讲解中会常用。

Config.js  :  全局变量 cfg  ,系统的基础配置变量  systemname(系统名称) 、sub(登录人员信息)、language(语言)、theme(主题风格)、crossdomain(是否跨域)。

CommonUtils.js   : 全局变量 CU,js中辅组类,主要方法有getUUID 、 getBoolean、getRandomColor、getDate、getBeforeDateString 。

Loader.js  :全局变量 Loader,JS、CSS加载器 ,使用 Loader.request(url); 即可加载需要的js或css。

localStorage.js :全局变量 local,项目永久存储信息服务类。 因为 localStorage只能存储字符串。此类把对象转字符串存储和根据key取数据为对象。

sessionStorage.js :  全局变量 session,项目临时存储信息,浏览器关闭自动清除。使用方式,session.get(key); session.set(key,object);

ExtUtils.js :  全局变量 EU ,ext服务类,主要方法:redirectTo(全局路由) 、toastInfo(系统提醒)、RS(数据交互ajax、jsonp)、RSView(试图读取,包含缓存机制)

ProjectUtils.js :全局变量 PU ,框架服务类,主要方法:openTabModule(在框架中tabPanel增加tab页签)、openModule(系统弹出窗口)、openAttachWindow(附件上传/下载组件)  download(文件下载)


全局变量

Ext.Panel                    主窗口ViewController对象

Ext.Viewport                    主窗口ViewporExt.FramePanel              

Ext.FramePanel            业务Panel面板

Ext.lockPanel                 锁屏Panel面板

Ext.SystemTabPanel           当前业务Panel面板中TabPanel对象

Ext.SystemTabPanelAutoOpens  当前业务Panel面板中TabPanel对象自动打开菜单窗口Map对象{menuid:obj}  //系统菜单加载时候提取数据

Ext.SystemFavorites          我的收藏菜单Map对象{menuid:obj}   //系统菜单加载时候提取数据

Ext.SystemLimits        我的界面权限Map对象  //执行PU.openTabModule时候创建新的tab,判断当前界面modelurl在SystemLimits是否存在,如果没有且加载并且保存在SystemLimits中


/*** 辅组方法*/Ext.define('app.utils.ExtUtils', {alternateClassName: 'EU',statics: {redirectTo :function(xtype){Ext.Panel.redirectTo(xtype);},        toastInfo : function( text, config){     var param = {title : '提示信息',html : text,border : true,saveDelay : 10,align : 'tr',closable : true,minWidth : 200,useXAxis : false,slideInDuration : 800,slideBackDuration : 1500,iconCls : 'ux-notification-icon-smile',autoCloseDelay : 4000,slideInAnimation : 'elasticIn',slideBackAnimation : 'elasticIn'};Ext.apply(param, config);Ext.toast(param);        },                toastWarn :function(text, config){        var param = {title : '警告信息',html : text,border : true,saveDelay : 10,align : 'tr',closable : true,minWidth : 200,useXAxis : false,slideInDuration : 800,slideBackDuration : 1500,iconCls : 'ux-notification-icon-warn',autoCloseDelay : 4000,slideInAnimation : 'elasticIn',slideBackAnimation : 'elasticIn'};Ext.apply(param, config);Ext.toast(param);        },                toastErrorInfo :function(text, config){        var param = {title : '错误信息',html : text,border : true,saveDelay : 10,align : 'tr',closable : true,minWidth : 200,useXAxis : false,slideInDuration : 800,slideBackDuration : 1500,iconCls : 'ux-notification-icon-error',autoCloseDelay : 5000,slideInAnimation : 'elasticIn',slideBackAnimation : 'elasticIn'};Ext.apply(param, config);Ext.toast(param);        },                /**         * 弹出消息框         * prompt 缺省:false   true:可以输入 false不可以输入         */        showMsg:function(config){        config = config || {};        config.title = config.title || "消息";        config.message = config.message|| config.msg || "";        config.option = config.option || -1;        config.fn = config.callback;if (Ext.isEmpty(config.buttons)) {switch (config.option) {case 1 :{config.icon = Ext.MessageBox.QUESTION;config.buttons = Ext.MessageBox.YESNO;break;}case 2 :config.buttons = Ext.MessageBox.YESNOCANCEL;break;case 3 :config.buttons = Ext.MessageBox.OKCANCEL;break;default :config.buttons = Ext.MessageBox.OK;break;}}        Ext.Msg.show(config);        },                /**         * 远程访问         * @param {} config         */        RS:function(config){        var thiz = this;        if(config.service && config.method){        config.url = CU.getURL(config.service,config.method);        delete config.method;        }var params = Ext.isEmpty(config.params)?{}:config.params;for (var key in params){var data=params[key];if(Ext.isArray(data))params[key] = CU.toString(data);}//转换为spring @RequestList接受的转码格式config.params = CU.toParams(params);//转换为spring mvc参数接受方式        config.async = Ext.isEmpty(config.async)?true:config.async; // true=异步 , false=同步        config.scope = config.scope || thiz;        config.dataType = config.dataType || "json";         config.timeout = config.timeout || 30000;        config.method  = 'POST';        var msg = Ext.isEmpty(config.msg)? config.async :config.msg;        config.message = config.message || '正在访问服务器, 请稍候...';        config.target =  config.target || Ext.Viewport;        thiz.myMask = null;if (msg){thiz.myMask = new Ext.LoadMask({msg:config.message,target:config.target,removeMask:true}); //,style:'background-color: rgba(208, 208, 208, 0.5);'thiz.myMask.show();}var caller_callback = config.callback;var caller_errorcallback = config.errorcallback;var result = null;var callback = function(type,scope,success,result,response, options){if(msg)thiz.myMask.hide();if(success){if (Ext.isFunction(caller_callback)) { Ext.callback(caller_callback,config.scope,[result]);}}else{if(type=='json' && response.status=="999")return;if(Ext.isFunction(caller_errorcallback)){  Ext.callback(caller_errorcallback,config.scope,[response,options]);}else{thiz.toastErrorInfo("访问远程服务器失败!");}}}if(cfg.crossdomain){config.url =  cfg.requestUrl + config.url;config.callback = function(success, result,errortype) {Ext.callback(callback,this,['jsonp',config.scope,success,result])}Ext.data.JsonP.request(config);}else{config.callback = function(options, success, response) {var text = response.responseText;var result = CU.toObject(text);Ext.callback(callback,this,['json',config.scope,success,result,response,options])};Ext.Ajax.request(config);}return result;        },                /**         * 常用的view转码数据查询(带缓存机制)。         * @param {} config 对象或viewname         * @return {}         */        RSView:function(config,callback){        var thiz = this;        if(Ext.isString(config))config = {params:{viewname:config}};        var cache = Ext.isEmpty(config.cache)?true:config.cache;//是否缓存,缺省true        var key = config.params.viewname;        var data = cache?session.get(key):null;        callback = callback || config.callback;        var scope = config.scope || thiz;        if(!Ext.isEmpty(data) && Ext.isArray(data)){        if(Ext.isFunction(callback))Ext.callback(callback,scope,[data]);        return data;        }        var url = "platform/basecode/getviewlist.do";        var params = {viewname:config.params.viewname,ids:config.ids,idfield:config.idfield,orderbyfield:config.orderbyfield};        thiz.RS({url:url,params:params,callback:function(result){        if(cache)session.set(key,result);        data = result;        if(Ext.isFunction(callback))Ext.callback(callback,scope,[data]);        }});        return data;        },                /**         * 查询配置文件列表信息         * @param {} config         * @param {} callback         * @return {}         */        RScfgList:function(config,callback){        var params = {};        if(Ext.isString(config))config = {params:{type:config}};        config.msg = false;        config.url = "platform/systemcfg/getlist.do";        if(Ext.isFunction(callback))config.callback = callback;        return this.RS(config);        },                /**         * 获取系统配置文件信息         * @param {} config  对象或主键id         * @param {} callback         * @return {}         */        RScfgInfo:function(config,callback){        var params = {};        if(Ext.isString(config))config = {params:{id:config}};        config.msg = false;        config.url = "platform/systemcfg/getinfo.do";        if(Ext.isFunction(callback))config.callback = callback;        return this.RS(config);        },                /**         * 删除系统配置文件信息         * @param {} config 对象或主键id         * @param {} callback         * @return {}         */        RScfgDel:function(config,callback){        var params = {};        if(!Ext.isObject(config))config = {params:{id:config}};        config.msg = false;        config.url = "platform/systemcfg/delete.do";        if(Ext.isFunction(callback))config.callback = callback;        return this.RS(config);        },                /**         * 新增系统配置文件信息         * @param {} config         * @param {} callback         * @return {}         */        RScfgSave:function(config,callback){        var params = {};        config.msg = false;        config.url = "platform/systemcfg/saveorupdate.do";        if(Ext.isFunction(callback))config.callback = callback;        return this.RS(config);        }}});


/*** 辅组方法*/Ext.define('app.utils.ProjectUtils', { alternateClassName: 'PU', requires: [        'app.view.platform.systemattach.FileBatchUpload',        'app.view.platform.systemattach.FileBatchPreview'     ], statics: { wins:{},  operateLimits:{},                getHeight:function(){        return Ext.FramePanel.getEl().getHeight()        },                getWidth:function(){        return Ext.FramePanel.getEl().getWidth()        },                openTabModule:function(config,tabcfg){    if(Ext.isEmpty(config.type) || config.type =='00')return;        var tabcfg = tabcfg || {}        var contentPanel = Ext.SystemTabPanel;        if(Ext.isEmpty(contentPanel) || !(contentPanel instanceof Ext.tab.Panel)){        EU.toastErrorInfo("TabPanel为空,请与管理员联系。");        return;        }     var id = config.id;        var tabPanel = contentPanel.getComponent("TAB_"+id);        if(Ext.isEmpty(tabPanel)){      if(config.type=='02'){      var html = '<iframe src ="'+config.url+'" scrolling="auto" frameborder="0" width="100%" height="100%"></iframe>';      tabPanel = {id:"TAB_"+id,title:config.text,border:false,closable: true,html:html};      }else {      tabPanel = Ext.create(config.url,{id:"TAB_"+id,title:config.text,closable:true,margin: '1 0 0 0'});      }      tabPanel.menuid = id;      if(!Ext.isEmpty(config.glyph))tabPanel.glyph = config.glyph;      if(!Ext.isEmpty(config.iconCls))tabPanel.iconCls = config.iconCls;     tabPanel = contentPanel.add(tabPanel);     tabPanel.tab.setClosable(!(tabcfg.checked === false));     this.systemLimits(tabPanel);     }     return contentPanel.setActiveTab(tabPanel);        },  openModule:function(config){ var me = this; if(Ext.isEmpty(config)){EU.toastErrorInfo("错误请求!");return;} if(Ext.isEmpty(config.url)&&Ext.isEmpty(config.xtype)){EU.toastWarn("url和xtype不能同时为null!");return;}config.modal = Ext.isEmpty(config.modal)?true:config.modal;config.layout = Ext.isEmpty(config.layout)?"fit":config.layout;var xtype = config.xtype; delete config.xtype;var url = config.url; delete config.url;Ext.apply(config,{maximizable: true});var item = null;var pscope = config.scope;config.resizable = Ext.isEmpty(config.resizable)?false:config.resizable;config.closable = false;config.height = config.height>me.getHeight()?me.getHeight():config.height;config.width = config.width>me.getWidth()?me.getWidth():config.width;var dialog = Ext.create('Ext.window.Window',config);if(!Ext.isEmpty(url)){      item = Ext.create("Ext.ux.IFrame",{src:url});//item.iframeEl.dom.contentWindow = iframe对象      }else {      item = Ext.create(xtype,{params:config.params,pscope:pscope,callback:config.callback,fn:config.fn});      }      dialog.add(item);      dialog.show();      dialog.on("close",function(panel, eOpts ){delete me.wins[dialog.id];}, this);      dialog.addTool({xtype:'tool',type:'close',tooltip:'关闭窗口',scope:this,handler:function(){if(Ext.isFunction(item.closeWindowVerify)){item.closeWindowVerify();}else{dialog.close();}}});me.wins[dialog.id] = dialog;return dialog; },  /** * 附件上传/下载组件 * @param {} config * @param disabeld 是否不可上传 缺省false * */ openAttachWindow : function(config){config.disabeld = Ext.isEmpty(config.disabeld)?false:config.disabeld;config.scope = config.scope || this;config.title = config.title || (config.disabeld?"附件预览":"附件上传");config.modal = Ext.isEmpty(config.modal) ? true : config.modal;if(Ext.isEmpty(config.tablename)){EU.toastErrorInfo("参数:tablename不能为空!");return;}else if(Ext.isEmpty(config.fieldname)){EU.toastErrorInfo("参数:fieldname不能为空!");return;}else if(Ext.isEmpty(config.fieldvalue)){EU.toastErrorInfo("参数:fieldvalue不能为空!");return;}var xtype='FileBatchUpload',width=1000,height=600;if(config.disabeld){width = 800;xtype = 'FileBatchPreview';}this.openModule({xtype:xtype,title:config.title,width:width,height:height,params:config,modal:config.modal,scope:config.scope,callback:config.callback});},download : function(cfg,timeout){ var me = this;var params = Ext.isEmpty(cfg.params)?{}:cfg.params;var url = Ext.isEmpty(cfg.url)?"platform/fileattach/downloadfile.do":cfg.url;for (var key in params){var data=params[key];if(Ext.isArray(data))params[key] = CU.toString(data);}//转换为spring @RequestList接受的转码格式            params = CU.toParams(params);//转换为spring mvc参数接受方式            url+= (url.indexOf("?")>0?"&":"?")+CU.parseParams(params);var width = Ext.isEmpty(cfg.width)?650:cfg.width; //350            var height = Ext.isEmpty(cfg.height)?500:cfg.height; //300var bodyWidth =Ext.getBody().getWidth()            var bodyHeight = Ext.getBody().getHeight();            var iLeft = bodyWidth/2-(width/2);            var iTop = bodyHeight/2-(height/2);            window.open(url,'fullscreen=0,menubar=0,toolbar=0,location=0,scrollbars=0,resizable=0,status=1,left='+iLeft+',top='+iTop+',width='+width+',height='+height);            if(Ext.isFunction(cfg.callback))cfg.callback();        },/** * 系统刷新 * @param {} xtype */        onAppUpdate:function(xtype){        Ext.Msg.confirm('应用更新', '应用程序有一个更新,是否重新加载界面?',            function (choice) {                if (choice === 'yes') {                    if(xtype){                    EU.redirectTo(xtype);                    }else{                   window.location.reload();                    }                }            }        );        },                /**         * 退出系统         * @param {} btn         */        onLogout:function(btn){    EU.showMsg({title:"退出系统",message:"您确定要退出吗?",animateTarget:btn,option:1,callback:function(result){    if(result != 'yes')return;        EU.RS({url:"login/logout.do",callback:function(result){        if(CU.getBoolean(result)){        session.remove("isLogin");        EU.redirectTo(cfg.xtypeLogin);        }        }});    }});    },        /**     * 获取系统全部的url连接     * @param {} callback     * @param {} scope     */    createUrlFunction:function(systemurls){    if(Ext.isEmpty(systemurls))return;    for(key in systemurls){        var rec = systemurls[key];        if(EU[rec.beanname] == null)EU[rec.beanname] = {};        EU[rec.beanname][rec.methodname] = new Function("cfg","cfg.url='"+rec.url+"';return EU.RS(cfg);");        }    },        /**     * 系统按钮权限控制     * @param {} panel 获取reference的容器     * @param {} xtype 权限获取的父容器     */    systemLimits:function(panel,modulurl,callback){    if(!Ext.isFunction(panel.lookupReference))return;    modulurl  = modulurl || panel.$className;    var url = "platform/systemframe/getsystemlimits.do";    var operateLimits = cfg.sub.systemlimits[modulurl];    if(!Ext.isArray(operateLimits))return;     Ext.each(operateLimits,function(rec){     if(rec.islimit > 0)return;     var object = panel.lookupReference(rec.operatecode);     if(Ext.isEmpty(object))return;     object.hide();     });     if(Ext.isFunction(callback))Ext.callback(callback)    } }});


/*** 辅组方法*/Ext.define('app.utils.CommonUtils', { alternateClassName: 'CU', statics: { /**  * 获取UUID  * @param {} len  * @param {} radix  * @return {}  */getUUID : function(len, radix){var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var chars = CHARS, uuid = [], i;radix = radix || chars.length;if (len){for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];} else { var r; uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';uuid[14] = '4'; for (i = 0; i < 36; i++) {if (!uuid[i]) {r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r];}}} return uuid.join(''); }, /** * 转换为boolean类型 * @param {} v * @return {} */getBoolean : function(v){return v==true||v=='1'||v==1||v=='true'},    /** * 数据对象转换为string值(url参数) * @param paramsobj  数据对象{a:1,b=2} * @return string(&a=1&b=2) */    parseParams:function(paramsobj){var paramsstr = "";for(var key in paramsobj) {var value = paramsobj[key];if(Ext.isEmpty(value, true)) continue;if(Ext.isArray(value)) {for(var i=0; i<value.length; i++) {paramsstr += "&" + key + "=" + value[i];}}else {paramsstr += "&" + key + "=" + value;}}return paramsstr;},        /**     * 字符串转对象     * @param {} v 字符串     * @return {}     */    toObject : function(v) {return Ext.isEmpty(v)?v:Ext.decode(v);},        /**     * 对象转字符串     * @param {} v 对象     * @return {}     */    toString:function(v){return Ext.encode(v)},        /**     * 数据为{user:{name:"111"}};转换数据为{"user.name": "111"}。     * @param {} obj     * @param {} name     * @param {} map     * @return {}     */    toParams : function(obj,name,map) {if(!Ext.isObject(obj))return obj;map = map?map:{};for(key in obj){var o = obj[key];if(Ext.isObject(o)){CU.toParams(o,key,map);}else{if(Ext.isEmpty(name)){map[key] = o;}else{map[name+"."+key] = o;}}}return map;},        /**     * 对象日志     * */    log:function(obj){console.log(obj);},        /**     * 根据类和方法获取url     */    getURL:function(service,method){var key = service+"_"+method;return cfg.urls[key.toUpperCase()].url},        /*** 将数值四舍五入后格式化. * @param num 数值(Number或者String)* @param cent 要保留的小数位(Number)* @param isThousand 是否需要千分位 0:不需要,1:需要(数值类型);* @return 格式的字符串,如'1,234,567.45'* @type String*/formatNumber:function(num,cent,isThousand) {num = num.toString().replace(/\$|\,/g,'');if(isNaN(num))num = "0";if(isNaN(cent))cent = 0;cent = parseInt(cent);cent = Math.abs(cent);if(typeof isThousand == 'boolean')isThousand = isThousand?"1":"0";if(isNaN(isThousand))isThousand = 0;isThousand = parseInt(isThousand);if(isThousand < 0)isThousand = 0;if(isThousand >=1)isThousand = 1;sign = (num == (num = Math.abs(num)));num = Math.floor(num*Math.pow(10,cent)+0.50000000001);cents = num%Math.pow(10,cent);num = Math.floor(num/Math.pow(10,cent)).toString();cents = cents.toString();while(cents.length<cent) cents = "0" + cents;if(isThousand == 0)return (cent==0)?(((sign)?'':'-') + num):(((sign)?'':'-') + num + '.' + cents);for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));return (cent==0)?(((sign)?'':'-') + num):(((sign)?'':'-') + num + '.' + cents);},/**     * 获取中位数     */    getMd:function(datas){Ext.Array.sort(datas);var index = parseInt((datas.length+1)/2);return datas[index];},        /**     * 获取众数     */    getMo:function(datas){var countArray = [datas.length];for (var i = 0; i < datas.length; i++) {var val = datas[i];var num = 0;for (var j = 0; j < datas.length; j++) {if(datas[j]==val)num++;}countArray[i] = num;}var count=0,val = "";for(var i = 0;i<countArray.length;i++){if(countArray[i]>1 && countArray[i]>count){count = countArray[i];val = datas[i];}}return val;},        /**     * 获取平方差     * @param {} datas 数据数组     * @param {} format 小数位 缺省:0.00     * @return {}     */    getS2:function(datas,format){format = format||'0.00';var m = Ext.Array.mean(datas);var val = 0,n=datas.length;for (var i = 0; i < n; i++) {var x = datas[i];val+=Math.pow(x-m,2);}return Ext.util.Format.number(val/n,format);},        /**     * 获取标准差     * @param {} datas 数据数组     * @param {} format 小数位 缺省:0.00     * @return {}     */    getSd:function(datas,format){format = format||'0.00';var m = Ext.Array.mean(datas);var val = 0,n=datas.length;for (var i = 0; i < n; i++) {var x = datas[i];val+=Math.pow(x-m,2);}return Ext.util.Format.number(Math.sqrt(val/n),format);},        /**     * 替换字符串     * @param {} str 字符串     * @param {} s1  替换字符串      * @param {} s2  替换为     * @return {}     */    replaceAll: function (str,s1,s2){return str.replace(new RegExp(s1,"gm"),s2);},    /**     * 获取数字型数据     * @param {} value     * @return {}     */    getNumber:function(value){return Ext.isNumber(value)?value:isNaN(Number(value))?0:Number(value);},    /** * 获取随机颜色 * @return {} */getRandomColor : function (){return "#"+("00000"+((Math.random()*16777215+0.5)>>0).toString(16)).slice(-6);},/** * 获取当前客户端日期 * @return 日期格式(yyyy-MM-dd) */getDate : function() {return CU.toDateString(new Date());},/** * 获取当前客户端时间 * @return 时间格式(yyyy-MM-dd hh:mm:ss) */getTime : function() {return CU.toTimeString(new Date());},/** * 自动补全日期字符串格式 * @param {} value  2015=2015-01-01、2015-02 = 2015-02-01 * @return {} */toDateStringSupply : function(value) {value = value+"";var length = value.length;value = length == 4 ? value += "-01-01" : length == 7? value += '-01': value;return value;},/** * 字符串转换为日期格式 * @param value 字符串数据(例如:2013-02-27) * @return 日期对象 */toDate : function(value) {return new Date(CU.toDateStringSupply(value).replace(/-/g,"/"));},/** * 日期转换为字符串 * @param date 日期 * @return 字符串日期(2013-02-27) */toDateString : function(date) {var y = date.getFullYear();var m = date.getMonth()+1;if(m < 10) m = "0"+m;var d = date.getDate();if(d < 10) d = "0"+d;return y+"-"+m+"-"+d;},/** * 日期转换为字符串 * @param  date 日期  * @return 字符串时间(2013-02-27 17:10:00) */toTimeString : function(date) {var y = date.getFullYear();var m = date.getMonth()+1;if(m < 10) m = "0"+m;var d = date.getDate();if(d < 10) d = "0"+d;var h = date.getHours();if(h < 10) h = "0"+h;var mi = date.getMinutes();if(mi < 10) mi = "0"+mi;var s = date.getSeconds();if(s < 10) s = "0"+s;return y+"-"+m+"-"+d+" "+h+":"+mi+":"+s;},/** * 获取日期差异 * @param small  开始日期long * @param big    结束日期long * @return 天 */getDateDiff : function(small, big) {return (big-small)/1000/60/60/24;},/** * 几天以前的日期 * @param day 天数 * @return 日期对象 */getBeforeDate : function(date,day) {date == date || new Date(); return new Date(date.getTime()-1000*60*60*24*day);},/** * 几天以前的日期 * @param day 天数 * @return 字符串(2013-02-27) */getBeforeDateString : function(date,day) {var date = CU.getBeforeDate(date,day);var y = date.getFullYear();var m = date.getMonth()+1;var d = date.getDate();if(m < 10) m = "0"+m;if(d < 10) d = "0"+d;return y+"-"+m+"-"+d;},/** * 几天以后的日期 * @param day 天数 * @return 日期对象 */getAfterDate : function(day) {return new Date(new Date().getTime()+1000*60*60*24*day);},/** * 几天某日期以后几天的日期 * @param data 日期对象 * @param day 天数 * @return 日期对象 */getAfterDate : function(date,day) {date = date || new Date(); return new Date(date.getTime()+1000*60*60*24*day);},/** * 几天以后的日期 * @param day 天数 * @return 字符串(2013-02-27) */getAfterDateString : function(date,day) {var date = CU.getAfterDate(date,day);var y = date.getFullYear();var m = date.getMonth()+1;var d = date.getDate();if(m < 10) m = "0"+m;if(d < 10) d = "0"+d;return y+"-"+m+"-"+d;},/** * 获取某年某月的天数 * @param year 年份 * @param month 月份 * @return Number 天数 */getDaysInMonth : function(year, month) {switch (month) {case 1:case 3:case 5:case 7:case 8:case 10:case 12: return 31;case 4:case 6:case 9:case 11: return 30;case 2: return ((year%4==0 && year%100!=0) || (year%400==0)) ? 29 : 28;default: return -1;}},/** * 获取当前(指定)日期的月份  * @param  date 日期格式 * @return 字符串 (2013-03) */getYearMonth : function(date){date = Ext.isEmpty(date)?date = new Date():date;var y = date.getFullYear();var m = date.getMonth()+1;if(m < 10) m = "0"+m; return y+"-"+m;}, /** * 获取指定日期几个月以后的时间 * @param  date 日期格式 * @param  count 月数 * @return 字符串 (2013-03) */getAfterYearMonth : function(date,count){date = Ext.isEmpty(date)?date = new Date():date;var y = date.getFullYear();var m = date.getMonth()+1;count = Ext.isEmpty(count)?1:count;m = m+count;if(m%12==0){y+=m/12-1;m=12;}else if(m>12){y+= parseInt(m/12);m=m%12;}if(m < 10) m = "0"+m;return y+"-"+m;},/** * 获取指定日期几个月以前的时间 * @param  date  日期格式 * @param  count 月数 * @return 字符串 (2013-03) */getBeforeYearMonth : function(date,count){date = Ext.isEmpty(date)?date = new Date():date;var y = date.getFullYear();var m = date.getMonth()+1;var sum = (y*12+m) -count;if(sum%12==0){y = parseInt(sum/12)-1;m = 12;}else{y = parseInt(sum/12);m = sum%12;}if(m < 10) m = "0"+m;return y+"-"+m;},/** * 根据文件类型获取iconCls图标 * @param {} v * @return {} */getFileTypeIconCls : function(v){var iconCls = "x-fa fa-file";v = Ext.isEmpty(v)?"":v;switch(v.toUpperCase()){case 'DOC':case 'DOCX':iconCls = 'x-fa fa-file-word-o';break;case 'TXT':iconCls = 'x-fa fa-file-text';break;case 'PDF':iconCls = 'x-fa fa-file-pdf-o';break;case 'MP3':iconCls = 'x-fa fa-file-audio-o';break;case 'XLS':case 'XLSX': iconCls = 'x-fa fa-file-excel-o';break;case 'ZIP':case 'RAR': iconCls = 'x-fa fa-file-archive-o';break;case 'JPG':case 'GIF': case 'PNG' : iconCls = 'x-fa fa-file-image-o';break;}return iconCls;},/** * 获取文件后侧名 * @param {} file * @return {} */getFileSuffix:function(file){if(Ext.isEmpty(file))return "";var beginIndex  = file.lastIndexOf(".");return file.substring(beginIndex+1,file.length);},/** * 递归读取全部数据 * @param {} datas  数据集合 * @param {} callback  回调方法 * @param {} scope   * @param {} childname  子节点名称 缺省children */eachChild:function(datas,callback,scope,childname){scope = scope || this;var child = childname || 'children';var nextChildNode  = function(nodes){Ext.each(nodes,function(data){Ext.callback(callback,scope,[data]);var children = data[child];if(Ext.isArray(children) && children.length>0){nextChildNode(children,callback,scope,child);}});};nextChildNode(datas,callback,scope,child);} }});



0 0
原创粉丝点击