`
bjzk_2012_zk
  • 浏览: 555 次
  • 性别: 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 开发前准备

    3.4版本是EXTJS的一个重要里程碑,它提供了稳定的基础和丰富的组件库。本文将详细介绍EXTJS 3.4的开发前准备,包括EXTJS的基本知识、下载、开发环境的搭建以及开发工具的选择。 1. EXTJS 下载与版本结构 EXTJS 3.4...

    spket1.6和extjs3.4

    标题"spket1.6和extjs3.4"指的是两个不同的JavaScript开发工具和库。Spket是一个集成开发环境(IDE),主要用于JavaScript、JSON和AJAX开发,而ExtJS是一个用于构建富客户端Web应用的JavaScript框架。这里的版本号...

    Extjs3.4+Ext-core.pdf+轻松搞定Extjs.pdf

    本资源包包含了与ExtJS 3.4相关的学习资料,包括`Ext-core.pdf`、`轻松搞定Extjs.pdf`以及`Extjs学习笔记.docx`,旨在帮助初学者或有经验的开发者更好地理解和掌握ExtJS 3.4。 `Ext-core.pdf` 是关于Ext Core的文档...

    ExtJS 3.4 源码包

    - **类参考**:文档详细列出了每个类的属性、方法和事件,帮助开发者快速查找和使用特定功能。 - **配置选项**:每个组件都可以通过配置项进行定制,API文档提供了所有可用的配置选项。 4. **官方实例** - **...

    extjs_3.4官方离线API

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

    ExtJS3.4和VS2010上传文件的进度条

    在ExtJS3.4版本中,它提供了丰富的UI组件和强大的数据管理功能,包括网格、表格、表单、树形结构等,以及各种视觉效果和交互控件。 在这个例子中,关键组件是“进度条”(ProgressBar)。ExtJS的进度条组件可以用来...

    extjs3.4如何创建对象

    在EXTJS 3.4版本中,创建对象是框架中非常基础且重要的操作,它涉及到类的实例化、配置项的使用以及对象间的交互。EXTJS是一个基于JavaScript的富客户端应用开发框架,提供了丰富的组件库和强大的数据管理能力。下面...

    ExtJs3.4 扩展的Tags控件

    在本主题中,我们关注的是ExtJs3.4版本中的一个扩展——Tags控件。这个控件允许用户在界面上以标签的形式输入和展示数据,常见于关键词选择或者多值输入的场景。 `Tags控件`是基于`DataView`组件进行扩展的。`...

    extjs3.4+swfupload上传

    在IT行业中,Web开发经常会遇到文件上传的需求,而"extjs3.4+swfupload上传"就是一个典型的前端文件上传解决方案。EXT JS 3.4是一款强大的JavaScript框架,用于构建富客户端应用程序,提供了丰富的组件库和强大的...

    spring mvc mybatis extjs 3.4 权限管理

    ### Spring MVC MyBatis ExtJS 3.4 权限管理系统关键知识点解析 #### 一、项目背景与架构概述 本系统采用Spring MVC框架作为控制层,MyBatis作为持久层框架,ExtJS 3.4作为前端界面展示工具,实现了权限管理功能,...

    EXT3.4 中的帮助文件(docs)

    11. **EXT JS API**:帮助文件中的API文档详细列出了所有可用的类、方法、属性和事件,是开发者查阅和学习EXT3.4的关键资源。 12. **示例和教程**:除了API,帮助文件还可能包含许多示例代码和教程,这些实例通常...

    ExtJs3.0中文帮助文档(chm格式)

    通过阅读这个中文帮助文档,开发者可以学习到如何创建、配置和使用ExtJS 3.0的各种组件,以及如何组织和管理应用程序的结构。同时,文档还可能包含示例代码和故障排查指南,有助于解决开发过程中遇到的问题。总之,...

    ExtJS-3.4.0系列目录

    在ExtJS框架中,3.4.0版本提供了丰富的组件和功能,适合构建复杂的Web应用程序。以下是对标题和描述中提及的几个关键知识点的详细解释: 1. **Ext JS 下载及配置** 在开始使用Ext JS前,你需要从官方网站下载相应...

    ExtJS 3.4.0

    1. **组件化**:ExtJS 强调的是组件化的开发模式,它提供了多种预定义的UI组件,如表格(Grid)、树形视图(Tree)、表单(Form)、面板(Panel)等,这些组件可以独立使用,也可以组合起来创建更复杂的应用界面。...

    ExtJS-3.4.0系列 — ExtJS下载使用

    在ExtJS 3.4.0版本中,它提供了一系列的功能和组件,使得开发者能够创建功能丰富的、交互性强的用户界面。以下是对该版本的一些关键知识点的详细说明: 1. **目录结构**: - **adapter**:此目录包含了EXT的核心...

    extjs3.4

    标题 "extjs3.4" 暗示我们要讨论的是Ext JS这个JavaScript库的一个特定版本,3.4。Ext JS是一个用于构建富客户端Web应用程序的框架,它提供了丰富的组件库和强大的数据绑定机制。在3.4版本中,开发者可以利用其强大...

    Extjs3.0 cookbook

    EXTJS 3.0 Cookbook 是一本专注于EXTJS框架的教程,旨在帮助开发者深入学习并掌握EXTJS 3.0版本的各项功能和最佳实践。EXTJS是一个强大的JavaScript库,用于构建富客户端Web应用程序,以其丰富的组件库、强大的数据...

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

    EXT JS中的下拉菜单主要通过`Ext.menu.Menu`类来创建。创建一个基本的下拉菜单通常涉及以下几个步骤: 1. **定义菜单项**:首先,你需要定义菜单项,这可以通过`Ext.menu.Item`或其子类如`Ext.menu.CheckItem`、`...

    extjs 导入导出 Exel

    文本文件通常会提供更详细的代码片段,帮助开发者理解EXTJS 导出功能的实现细节。 总结,EXTJS 导入导出Excel 功能涉及前后端的协作,通常需要服务器端支持,但也有一些库提供了纯前端的解决方案。了解这些方法可以...

    Ext3.4 demo

    在Ext3.4中,Tree Grid是一种特殊的组件,它同时具备了Tree和Grid的功能。Tree用于展示层次结构的数据,而Grid则用于展示行列布局的数据。Tree Grid将这两者融合,使得用户可以方便地查看和操作具有复杂层级关系的...

Global site tag (gtag.js) - Google Analytics