`
bjzk_2012_zk
  • 浏览: 533 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

extjs3.4帮助类组件

 
阅读更多
/**
 * 公共帮助类
 * 提供openTab,swapStyle,getWin,AjaxRequest,ExceptionWindow等方法
 */
Ext.onReady(function(){
	Ext.ns("Ext.Authority.share");
	share = Ext.Authority.share;
	if(Ext.lib.Ajax.defaultPostHeader.indexOf(";charset=utf-8")<0){
		Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";
	}
	share.getPageSize = function(){
		return 15;
	};
	share.getPagecombodata = function(){
		return [ [ 10, '每页10条' ], [ 15, '每页15条' ], [ 30, '每页30条' ], [ 50, '每页50条' ] ];
	};
	/**
	 * 验证session状态
	 */
	share.doAjaxAndSubmitFun = function(response){
		if (typeof response.getResponseHeader == "function") {
			var sessionStatus = response.getResponseHeader("session-status");
			// 登陆超时
			if (sessionStatus == "timeout") {
				var win = window;
				share.showMessage({
					message:"很抱歉,登录超时,请返回登录页重新登录!",
					fn:function(){
						win.location = ctx + "/login/" + login_enterpriseId;
					}
				});
				return false;
			}
	  	// 时间戳异常
			if (sessionStatus == "authtimeout") {
				var win = window;
				share.showMessage({
					message:"操作失败,请重试!",
					fn:function(){
						win.location = ctx + "/login/" + login_enterpriseId;
					}
				});
			  return false;
	  	}
			// 服务器出错
			if (sessionStatus == "pagenotfind") {
				share.showMessage({message: "很抱歉,您要访问的资源不存在!"});
				return false;
			}
			// 无此权限
			// 企业越权
			if(sessionStatus == "noauthority" || sessionStatus == "illegalauthority"){
				share.showMessage({message: "很抱歉,您无权访问此资源!"});
				return false;
			}
	  }
		return true;
	};
	/**
	 * 执行Ajax和Form的提交方法消息显示
	 */
	share.showAjaxAndForm2SubmitMessage = function(options, success, response, settings){
		if (settings.waiting) {
			settings.waiting.hide();
		}
		var json = Ext.util.JSON.decode(response.responseText == "<pre></pre>" ? "" : response.responseText);
		if(json && json.o == 'timeout'){
			var win = window;
			share.showMessage({
				message:"很抱歉,登录超时,请返回登录页重新登录!",
				fn:function(){
				  win.location = ctx + "/login/" + login_enterpriseId;
			  }
			});
			return;
		}
		if(success){
			var sign = share.doAjaxAndSubmitFun(response);
			if(!sign){
				return false;
			}
			if (json.success) {
				// 执行成功
				if (settings.showMsg) {
			 		// 显示提示信息
					var message = '执行成功.';
					if (json.msg) {
						// 服务器端传回的提示文字
						message = json.msg;
					}
					// 提示信息
					share.showMessage({
						sign : true,
						message : message,
						fn : function(){
							if (settings.success && typeof settings.success == "function") {
					  		// 成功回调函数
					  		settings.success(json, settings.form);
					  	} else if(settings.exception && typeof settings.exception == "function"){
					  		// 失败回调函数
					  		settings.exception(json, settings.form);
							}
						}
					});
			  }else{
					if (settings.success && typeof settings.success == "function") {
			  		// 成功回调函数
			  		settings.success(json, settings.form);
			  	} else if(settings.exception && typeof settings.exception == "function"){
			  		// 失败回调函数
			  		settings.exception(json, settings.form);
					}
				}
	  	}
		} else {
	  	var sign = share.doAjaxAndSubmitFun(response);
	  	if(!sign){
	  		return false;
	  	}
	  	if(json){
	  		share.ExceptionWindow(json.exceptionMessage, json.solutionMsg);
			}
			if (settings.failure && typeof settings.failure == "function") {
		  	// 成功回调函数
		  	settings.failure(settings.form);
		  }
		}
	};
	/**
	 * 打开tabs
	 */
	share.openTab = function (node, path, parentTab, iconCls) {
		var id = node.id;
		var title = node.text;
		// 设置在哪个元素打开
		var tabPanel = parentTab === undefined ? main.mainTabPanel : parentTab;
		var css = iconCls === undefined ? node.attributes.iconCls : iconCls;
		// 参数验证
		if (!tabPanel || title == "" || path == "" || id == "") {
			share.showMessage({
				sign : false,
				msg : "参数错误"
			});
			return;
	  }
		var url = encodeURI(encodeURI(path));
		// tab页不存在的场合
		var tab = tabPanel.get(id);
		var autoLoad = {
			url: url,
			params: {
				id: id + "_div"
			},
			method: "GET",
			scripts: true,
			scope : this,
			nocache: true
		};
		if (!tab) {
			var newTab = {
				id: id,
				title: title,
				iconCls: css,
				animate: true,
				closable: true,
				closeAction: 'hide',
				resizeTabs: true,
				hideBorders: true,
				autoLoad: autoLoad,
				tabWidth:150,
				layout: 'fit',
				listeners:{
					close : function(){
						if(id == 'enterprise_enterprise_self_go'){
							share.swapStyle(style);
						}
					}
				}
			};
			tabPanel.add(newTab).show();
			// 限制最多能开30个tab
			if (tabPanel.items.length > 30) {
				var firstTab = tabPanel.get(tabPanel.items.items[1]);
				if (firstTab) {
					tabPanel.remove(firstTab);
				}
			}
		} else {
			// tab页已经存在的场合
			tab.getUpdater().update(autoLoad);
			tabPanel.setActiveTab(tab);
			tab.show();
		}
	};
	
	/**
	 * 设置系统主题
	 */
	share.swapStyle = function (themeCss) {
		// 初始化提示方式
		Ext.QuickTips.init();
		// 设置表单项提示方式
		Ext.form.Field.prototype.msgTarget = 'side';
		// Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
		// 设置主题
		var theme = themeCss === undefined ? Ext.state.Manager.get('Cxjava_theme') : themeCss;
		if (theme && theme != '') {
			// 实际改变风格样式的处理
			Ext.util.CSS.swapStyleSheet('theme', ctx + '/resources/extjs/resources/css/xtheme-' + theme + ".css");
		} else {
			Ext.util.CSS.swapStyleSheet('theme',ctx + '/resources/extjs/resources/css/xtheme-gray.css');
		}
	};
	
	/**
	 * 获取顶级窗口
	 */ 
	share.getWin = function () {
		var win = window;
		while (win != win.parent) {
			win = win.parent;
		}
		return win;
	};
	/**
	 * 封装Ext.form.BasicForm的submit方法
	 */
	share.FormSubmit = function (settings) {
		// 表单对象
		var form = settings.form === undefined ? {} : settings.form;
		// 参数对象
		var method = settings.method === undefined ? 'GET' : settings.method;
		var timeout = settings.timeout === undefined ? 10000 : settings.timeout;
		settings.showWaiting = settings.showWaiting === undefined?true:settings.showWaiting;
		settings.showMsg = settings.showMsg === undefined?true:settings.showMsg;
		if(form && typeof(form) != "string" && !form.isValid()){
			return;
		}
		// 发送请求
		if (settings.showWaiting) {
			settings.waiting = Ext.Msg.wait('正在处理,请稍等...', '加载提示', '');
		}
		form.submit({
			url : settings.url,
			method : method,
			timeout : timeout,
			success : function (form, action) {
				share.showAjaxAndForm2SubmitMessage(action.options, true, action.response, settings);
			},
			failure: function (form, action) {
				share.showAjaxAndForm2SubmitMessage(action.options, false, action.response, settings);
			}
		});
	};
	/**
	 * 封装Ext.Ajax对象
	 */ 
	share.AjaxRequest = function (settings) {
		// 参数对象
		var params = settings.params === undefined ? {} : settings.params;
		var timeout = settings.timeout === undefined ? 12 * 1000 : settings.timeout;
		var method = settings.method === undefined ? 'GET' : settings.method;
		var isUpload = settings.isUpload === undefined ?false:settings.isUpload;
		var async = settings.async === undefined ?true:settings.async;
		var form = settings.form === undefined?'form':settings.form;
		var scope = settings.scope === undefined?'form':settings.scope;
		// 发送请求
		if (settings.showWaiting) {
			settings.waiting = Ext.Msg.wait('正在处理,请稍等...', '加载提示', '');
		}
		Ext.Ajax.request({
			url: settings.url,
			params: params,
			method: method,
			isUpload: isUpload,
			form: form,
			async: async,
			scope: scope,
			timeout: timeout,
			callback: function (options, success, response) {
				share.showAjaxAndForm2SubmitMessage(options, success, response, settings);
			}
		});
	};
	
	/**
	 * 异常显示
	 */
	share.ExceptionWindow = function (message, solution) {
		var exceptionMessage = message === undefined ? '执行发生异常!' : message == '' ? '执行发生异常!' : message;
		var solutionMessage = solution === undefined ? '请稍后访问,若问题还未解决请联系技术人员!' : solution == '' ? '请稍后访问,若问题还未解决请联系技术人员!' : solution;
		var exceptionWindow = Ext.getCmp('exceptionWindow');
		if (!exceptionWindow) {
			exceptionWindow = new Ext.Window({
				id: 'exceptionWindow',
				title: '错误提示',
				width: 400,
				constrain: true,
				autoHeight: true,
				modal: true,
				layout: 'fit',
				items: [
					new Ext.form.Label({
						html: '<div style="padding:5px;color:red;">' + exceptionMessage + '</div>'
					}),
					new Ext.Panel({
						title: '错误明细',
						autoScroll: true,
						height: 200,
						html: solutionMessage
					})
				]
			}).show();
		} else {
			exceptionWindow.show();
		}
	};
	
	/**
	 * 显示消息
	 */
	share.showMessage = function(setting, closable){
		Ext.Msg.show({
			title: setting.sign?'操作提示':'错误提示',
			msg: setting.message,
			closable: !closable,
			buttons: Ext.Msg.OK,
			animEl: 'elId',
			icon: setting.sign?Ext.MessageBox.INFO:Ext.MessageBox.ERROR,
			fn:setting.fn
		});
	};
	
	/**
	 * 毫秒数转为时间格式
	 */
	share.milliseconds2date = function(value, fmt){
		if(!value){
			return "";
		};
		fmt = fmt?fmt:"yyyy-MM-dd HH:mm:ss";
		var date = new Date();
		date.setFullYear(1970,1,1);
		date.setTime(0);
		date.setMilliseconds(value); 
		return date.pattern(fmt);
	};
	
	/**
	 * 获取权限
	 */
	share.getAuthoritys = function(){
		if(!share.authoritys){
			share.AjaxRequest({
				url : '../authority/all',
				method:'GET',
				async: false,
				success: function(action){
					share.authoritys = action.entity;
				}
			});
		}
	};
	
	/**
	 * 获取系统参数
	 */
	share.getParameters = function(type){
		var result = null;
		share.AjaxRequest({
			url : '../parametermaps/' + type,
			method:'GET',
			async: false,
			success: function(action){
				result = action.entity;
			}
		});
		return result;
	};
	
	/**
	 * 鉴权--主方法
	 */
	share.authentication = function(authname){
		if(!share.authoritys){
			share.getAuthoritys();
		}
		for(var i = 0; i < share.authoritys.length; i++){
			if(authname == share.authoritys[i]){
				return true;
			} else if(authname == share.authoritys[i].substring(0,share.authoritys[i].length-1)){
				return true;
			}
		}
		return false;
	};
	
	/**
	 * 鉴权--控件是否隐藏
	 */
	share.authdomishidden = function(authname){
		return !share.authentication(authname);
	};
	
	/**
	 * 鉴权--分隔符是否显示
	 */
	share.authdistisshow = function(authname){
		return share.authentication(authname)?'-':'';
	};
	
	/**
	 * 内部方法给格式化的月日补0
	 */
	share.fix = function(n){
		return n<10?"0"+n:n;
	};
	
	/**
	 * 时间格式化
	 */
	share.dateformat = function(fmt,time){
		var year = time.getFullYear();
		var month = time.getMonth()+1;
		var date = time.getDate();
		var hour = time.getHours();
		var minute = time.getMinutes();
		var second = time.getSeconds();
		fmt = fmt.replace("yyyy",year);
		fmt = fmt.replace("yy",year%100);
		fmt = fmt.replace("MM",share.fix(month));
		fmt = fmt.replace("dd",share.fix(date));
		fmt = fmt.replace("hh",share.fix(hour));
		fmt = fmt.replace("mm",share.fix(minute));
		fmt = fmt.replace("ss",share.fix(second));
		return fmt;
	};
	
	/**
	 * 用状态鉴别
	 */
	share.checkStauts = function(array, value){
		if(array && array.length>0){
			for(var i=0;i<array.length;i++){
				if(value == array[i]){
					return true;
				}
			}
		}
		return false;
	};
	
	/**
	 * 按照状态提交信息(批量)
	 */
	share.checkStautsArray = function(setting){
		var result = {
			params: new Array(),
			message: ''
		};
		var smsc = setting.sm.getSelections();
		if(!smsc.length){
			share.showMessage({message:"对不起,请选择"+setting.title+"后再进行提交!"});
			return;
		}
		for(var i = 0; i<smsc.length; i++){
			var status = smsc[i].get(setting.fieldstatus);
			if(share.checkStauts(setting.array,status)){
				result.params.push(smsc[i].get(setting.fieldid));
			}else{
				result.message+=smsc[i].get(setting.fieldname)+",";
			}
		}
		if(result.params.length){
			if(result.message){
				share.showMessage({
					message:result.message+"等"+setting.title+"状态不符,将取消这些"+setting.title+"的操作!"
				});
			}else{
				setting.fn(result.params);
			}
		}else if(result.params.length==1){
			share.showMessage({message:"对不起,"+setting.title+result.message+"状态不符!"});
		}else {
			share.showMessage({message:"对不起,所选全部"+setting.title+"状态不符!"});
		}
	};
	
	/**
	 * 将gridPanel中的数据导出到Excel文件中
	 */
	share.ExportExcel = function(setting) {
		var url = setting.url?setting.url:ctx + '/clientUser/clientUsers.xls/';
		var ds = setting.ds;
		if(!ds){
			share.showMessage({
				sign : false,
				message : '对不起,要导出的数据源不存在'
			});
			return;
		}
		var tmpParam = Ext.ux.clone(ds.lastOptions);
		var isall = setting.isall === undefined ? true : setting.isall;
		if(!tmpParam.params){
			tmpParam.params = ds.baseParams;
		}
		tmpParam.params.ignorepage = isall;
		if (!Ext.fly('frmDummy')) {
			var frm = document.createElement('form');
			frm.id = 'frmDummy';
			frm.name = id;
			frm.className = 'x-hidden';
			document.body.appendChild(frm);
		}
		Ext.Ajax.request({
			url: url, //将生成的xml发送到服务器端
			method: 'GET',
			form: Ext.fly('frmDummy'),
			callback: function (option, success, response) {
				var json = Ext.util.JSON.decode(response.responseText);
				if(json.success){
					document.location = ctx.substring(0,ctx.lastIndexOf('/')+1)+json.entity;
				}else{
					share.showMessage({
						sign : false,
						message : '对不起,要导出的数据源不存在'
					});
				}
			},
			params: tmpParam.params
		});
	};
	share.toColor16 = function(value){
		return value.length==1?('0'+value):value;
	};
});
分享到:
评论

相关推荐

    extjs_3.4官方离线API

    extjs_3.4官方离线API,方便查询所有组件属性

    ExtJS-3.4.0系列目录

    一、基础篇 1、Ext JS下载及配置 2、基本功能  2.1、Ext.MessageBox消息框  2.2、Ext.window.MessageBox 3、工具栏和菜单栏  3.1、Ext.toolbar.Toolbar工具栏  3.2、Ext.menu.Menu菜单栏 4、表单

    ext 下拉菜单。(不要下,不能用)

    这个不能用。不要吓。这个不能用。不要吓。

    Javascript、Css、Html下拉式折叠菜单

    采用Javascript 、Css、Html脚本经典的折叠下拉式菜单。在此供大家参考,若有不足之处希望高手指点!

    extjs视频-- 表单组件

    通过这个观看视频会让你很快的了解到extjs,并且能够很快的进入ext的使用

    基于ExtJS3的后台管理系统模板

    1、基于ExtJS 3.4版本实现,采用默认的样式风格,中文语言; 2、演示了登录页和主页面之间的相互切换; 3、通过实现角色管理、用户管理、部门管理三个基础的功能模块,演示了Viewport、Container、Panel、Grid、...

    Toolbar Menu 菜单(实例分享)

    一款简洁大气的div+css菜单。经常可以用的到的

    Extjs学习笔记之五 一个小细节renderTo和applyTo的区别

    Extjs的组件有两个看起来类似的配置项,applyTo和renderTo,这两个配置项都是用来指定将该extjs组件加载到什么位置。那他们到底有什么区别呢,网上搜了下,有两篇博文也是关于这个的。

    extjs两个tbar问题探讨

    版本:extjs3.4 接触过extjs的同志们都知道每个panel都有一个tbar(top bar 上面工具栏) ,bbar(bottom bar 底部工具栏) 大家做查询页面,一般都是啥样子的? 最基本的是一个table,来显示数据。 再进一步: 添加对...

    ExtJSWeb应用程序开发指南(第2版)

    3.1.2 ExtJS组件配置方式介绍 3.2 信息提示框组件介绍 3.2.1 认识Ext.window.MessageBox 3.2.2 Ext.MessageBox.alert() 3.2.3 Ext.MessageBox.confirm() 3.2.4 Ext.MessageBox.prompt() 3.2.5 Ext....

    深入浅出ExtJS第2版

    深入浅出ExtJS第2版+源码..1 下载EXT发布包 1 1.2 如何查看EXT自带的API和示例 1 1.3 为什么有些示例必须放在服务器上 才能看到效果 2 1.4 Hello World 2 1.4.1 直接使用下载的发布包 2 1.4.2 在项目中使用EXT...

    log4Net详解(共2讲)

    2、ExtJs进阶篇:主要介绍ExtJs里的常用组件,容器及布局 3、ExtJs数据篇:主要介绍和数据库交互的相关组件及CRUD功能 4、项目实战篇: Extjs3.2+ASP.NET七层架构+设计模式+ log4j+WebSerice等技术国讯教育通用...

    Ext带图标Combobox

    基于Ext3.4的一个扩展Combobox组件

    Ext.js教程完整版

    添加新的组件、重命名组件用来重新组织结构等等。这使得 1.x 和 2.x 兼容性很低。 3.x 版 本则不然,他对 2.x 有很强的兼容性,可以很好的联合本书中所设计的内容。 Ext 的 开发组决定在日后的版本发布中都做到向前...

    Ext Js权威指南(.zip.001

    8.3.8 其他的组件辅助功能类 / 423 8.4 组件的管理 / 423 8.4.1 组件管理及查询:ext.componentmanager与ext.componentquery / 423 8.4.2 焦点管理:ext.focusmanager / 424 8.4.3 z-order管理:ext....

    ext中文api文档

    ExtJS是一个跨浏览器,用于开发RIA(Rich iInternet Application)应用的JavaScript框架。提供:高性,可定制的Web UI控件库。良好的设计、丰富的文档和可扩展的组件模型。

Global site tag (gtag.js) - Google Analytics