735c202af5fbcbcd5d5145956cde78db3a430953.svn-base 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. /**
  2. *
  3. * @class 系统主框架 主框架函数
  4. * 1、初始化函数,调用此函数可以对整个框架进行初始化。
  5. * 2、布局切换具体操作界面
  6. * 3、获取主框架对象
  7. * 4、展开框架布局
  8. * 5、收起框架布局
  9. * 6、设置框架标题
  10. * 7、弹出window
  11. * 8、关闭window
  12. *
  13. * @author 徐杨
  14. * @date 2014-7-6
  15. *
  16. */
  17. com.sinosoft.common.frameWork.FrameWork = function() {
  18. var _this = this;
  19. /* 主框架、北部面板、南部面板、西部面板、东部面板、中间面板、tab内容面板、 中间内容面板 */
  20. var $framework, $northPanel, $southPanel, $westPanel,
  21. $eastPanel, $centerPanel, $tabContentPanel, $centerContentPanel;
  22. var $win;
  23. /**************
  24. * 内部私有方法
  25. **************/
  26. /**
  27. * 功能:获取panel是否是收缩状态
  28. */
  29. var isCollapsed = function(el){
  30. return typeof el == 'string' ?
  31. $(el).css('display') == 'none' : el.css('display') == 'none';
  32. };
  33. /**
  34. * 功能:根据区域字符串获得相应对象
  35. * @param region 变量名称
  36. */
  37. var getObjByRegion = function(region){
  38. return eval('($' + region + ')');
  39. };
  40. /***
  41. *
  42. */
  43. var addTab = function(title, url){
  44. $tabContentPanel.tabs({
  45. fit : true,
  46. border : true
  47. });
  48. if ($tabContentPanel.tabs('exists', title)){
  49. $tabContentPanel.tabs('select', title);
  50. } else {
  51. $tabContentPanel.tabs('add',{
  52. border : false,
  53. title : title,
  54. href : url,
  55. closable : true,
  56. /* 加入tabpanel标题上手动刷新的功能 */
  57. tools:[{
  58. iconCls : 'icon-mini-refresh',
  59. handler : function(){
  60. $tabContentPanel.tabs('getSelected').panel('refresh');
  61. }
  62. }]
  63. });
  64. }
  65. };
  66. return {
  67. /**
  68. * 功能:框架初始化函数,只初始化框架部分
  69. * @param hasWest 是否初始化左侧布局
  70. * @param hasEast 是否初始化右侧布局
  71. * @param hasSouth 是否初始化底部布局
  72. * @param hasMap 是否初始化地图布局
  73. */
  74. init : function(options) {
  75. //初始化框架配置信息
  76. var settings = $.extend({
  77. hasWest : true,
  78. hasEast : false,
  79. hasSouth : false,
  80. hasMap : false
  81. }, options || {});
  82. //根据配置信息,初始化各布局对象
  83. $framework = $framework || $('#framework').layout();
  84. $northPanel = $northPanel || $('#framework_layout_north');
  85. $centerPanel = $centerPanel || $('#framework_layout_center');
  86. $tabContentPanel = $tabContentPanel || $('#framework_layout_tab_content');
  87. $centerContentPanel = $centerContentPanel || $('#framework_layout_center_content');
  88. //初始化左侧布局
  89. if(settings.hasWest){
  90. _leftPanel = $framework.layout('add', {
  91. id : 'framework_layout_west',
  92. region : 'west',
  93. width : 220,
  94. title : 'West Title',
  95. split : true
  96. });
  97. $westPanel = $('#framework_layout_west');
  98. }
  99. //初始化右侧布局
  100. if(settings.hasEast){
  101. $framework.layout('add', {
  102. id : 'framework_layout_east',
  103. region : 'east',
  104. width : 150,
  105. title : 'East Title',
  106. split : true
  107. });
  108. $eastPanel = $('#framework_layout_east');
  109. }
  110. //初始化底部布局
  111. if(settings.hasSouth){
  112. $framework.layout('add', {
  113. id : 'framework_layout_south',
  114. region : 'south',
  115. height : 150,
  116. title : 'South Title',
  117. split : true
  118. });
  119. $southPanel = $('#framework_layout_south');
  120. }
  121. },
  122. /**
  123. * 功能:获取主框架
  124. */
  125. getFrameWork : function(){
  126. return $framework;
  127. },
  128. /**
  129. * 功能:展开面板
  130. * @param region 所要展开哪部分框架的面板,取值范围:west、 east、 south
  131. * 调用方式:com.sinosoft.common.frameWork.FrameWork.expand('west');
  132. */
  133. expand : function(region){
  134. var obj = getObjByRegion(region + 'Panel');
  135. if(obj && isCollapsed(obj)){
  136. $framework.layout('expand', region);
  137. }
  138. },
  139. /**
  140. * 功能:收起面板
  141. * @param region 所要展开哪部分框架的面板,取值范围:west、 east、 south
  142. * 调用方式:com.sinosoft.common.frameWork.FrameWork.collapse('west');
  143. */
  144. collapse : function(region){
  145. var obj = getObjByRegion(region + 'Panel');
  146. if(obj && !isCollapsed(obj)) $framework.layout('collapse', region);
  147. },
  148. /**
  149. * 功能:设置面板标题
  150. * @param region 设置哪部分框架面板的标题,取值范围:west、 east、 south
  151. * @param title 标题名称
  152. * 调用方式:com.sinosoft.common.frameWork.FrameWork.setTitle('west', '左侧面板标题');
  153. */
  154. setTitle : function(region, title, icon){
  155. var obj = getObjByRegion(region + 'Panel');
  156. if(obj) obj.panel('setTitle', title);
  157. },
  158. /**
  159. * 功能:改变布局框架内容
  160. * @param region 改变那部分框架内容,取值范围:west、 east、 south、center
  161. * @param url 跳转的页面地址
  162. * 调用方式:com.sinosoft.common.frameWork.FrameWork.change('west', 'user.html');
  163. */
  164. change : function(region, url, title){
  165. //alert("region=="+region);
  166. //alert("url="+url);
  167. //tab形式改变center内容
  168. if(region == 'tab' ){
  169. //隐藏center内容面板
  170. //$centerContentPanel.hide();
  171. //显示tab内容面板
  172. if($tabContentPanel) {
  173. $tabContentPanel.show();
  174. addTab(title, url);
  175. }
  176. //非tab形式改变center内容
  177. }else if(region=='undefind' || region == 'center'){
  178. //alert("url="+url);
  179. //隐藏tab内容面板
  180. //$tabContentPanel.hide();
  181. //显示center内容面板
  182. if($centerContentPanel) $centerContentPanel.show().panel({href : url});
  183. //改变其他布局面板中的内容
  184. }else{
  185. region = 'center';
  186. var obj = getObjByRegion(region + 'Panel');
  187. if(obj) obj.panel({href : url});
  188. }
  189. },
  190. /**
  191. * 功能:系统消息提示
  192. * @param icon 提示图标,取值范围:error,question,info,warning
  193. * @param msgtext 提示的内容
  194. */
  195. showMsg : function(icon, msgtext){
  196. $.messager.alert('系统提示消息', msgtext, icon);
  197. },
  198. /**
  199. * 功能:系统异常消息提示
  200. * @param e 事件源
  201. */
  202. showExceptionMsg : function(e) {
  203. this.showMsg('error', e.number + "<br/>" + e.description);
  204. },
  205. // /**
  206. // * 功能:打开窗口,只创建一个窗口对象
  207. // * @param title 窗口标题
  208. // * @param width 窗口宽度
  209. // * @param height 窗口长度
  210. // * @param obj 内容对象
  211. // *
  212. // */
  213. // getWin : function(options){
  214. // var settings = {modal : true};
  215. // settings = $.extend(settings, options || {});
  216. //
  217. // //判断是否已经创建过窗口对象
  218. // if($win == null){
  219. // $win = $('<div>');
  220. // }
  221. //
  222. // $win.dialog(settings).find('.dialog-content').empty().append(settings.obj).end();
  223. //
  224. //// else{
  225. //// //如已经有窗口对象,则清除内容再打开
  226. //// $win.find('.dialog-content').empty().append(obj).end().dialog('open');
  227. //// }
  228. //
  229. //
  230. // },
  231. // /**
  232. // * 功能:关闭窗口
  233. // */
  234. // closeWin : function(){
  235. // if($win != null) $win.dialog('close');
  236. // },
  237. /**
  238. * 功能:创建带有默认
  239. * 参数:options obj 格式:{tpl : 模板格式, data : 数据, [style : 标题单元格的样式]}
  240. * (注意:style属性如果不设置,则用默认值;整体的表格样式在“framework.css”文件中定义)
  241. * @return 该模板query对象
  242. */
  243. detailInfoTpl : function(options){
  244. var settings = {
  245. style : {background : '#8AC2E3', color : 'white'}
  246. };
  247. settings = $.extend(settings, options || {});
  248. //格式化字符串,如:{name} 获取row.name的值
  249. for(var k in settings.data){
  250. settings.tpl = settings.tpl.replace('{' + k + '}',
  251. settings.data[k] == null ? '' : settings.data[k]);
  252. }
  253. //增加表格的样式
  254. return $(settings.tpl).addClass('detailInfo').find('td:even').css(settings.style).end();
  255. },
  256. /**
  257. * 功能:
  258. * 打开窗口,窗口中有按钮的点击事件时使用,frame形式
  259. * 用法:
  260. * var options = {
  261. * title : "新增",
  262. * url : "",//****必填项
  263. * width : 630,
  264. * height : 400
  265. * };
  266. * $.framework.getWin(options,fn);
  267. */
  268. getWin : function(options,fn){
  269. var diag = new top.Dialog();
  270. diag.Title = options.title != undefined ? options.title : "窗口";
  271. diag.URL = options.url;
  272. diag.ShowMaxButton = options.ShowMaxButton != undefined ? options.ShowMaxButton : true;
  273. diag.ShowMinButton = options.ShowMinButton != undefined ? options.ShowMinButton : true;
  274. diag.ShowOkButton = false;
  275. diag.Drag = options.Drag != undefined ? options.Drag : true;
  276. diag.ShowCancelButton = options.ShowCancelButton != undefined ? options.ShowCancelButton : true;
  277. diag.OkButtonText = options.okButtonText != undefined ? options.okButtonText : "保存";
  278. if(fn!=undefined){
  279. diag.ShowOkButton = true;
  280. diag.OKEvent = function(){
  281. fn(diag);
  282. };
  283. }
  284. diag.Width = options.width != undefined ? options.width : 550;
  285. diag.Height = options.height != undefined ? options.height : 380;
  286. diag.ButtonAlign = options.buttAlign != undefined ? options.buttAlign : "center";
  287. diag.show();
  288. return diag;
  289. }
  290. };
  291. }();
  292. //定义框架对象别名,方便调用
  293. $.framework = com.sinosoft.common.frameWork.FrameWork;