index.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*!
  2. * 界面入口模块
  3. */
  4. layui.extend({
  5. setter: 'config' //配置模块
  6. ,admin: 'lib/admin' //核心模块
  7. ,view: 'lib/view' //视图渲染模块
  8. }).define(['setter', 'admin'], function(exports){
  9. var setter = layui.setter
  10. ,element = layui.element
  11. ,admin = layui.admin
  12. ,tabsPage = admin.tabsPage
  13. ,view = layui.view
  14. //打开标签页
  15. ,openTabsPage = function(url, text){
  16. //遍历页签选项卡
  17. var matchTo
  18. ,tabs = $('#LAY_app_tabsheader>li')
  19. ,path = url.replace(/(^http(s*):)|(\?[\s\S]*$)/g, '');
  20. tabs.each(function(index){
  21. var li = $(this)
  22. ,layid = li.attr('lay-id');
  23. if(layid === url){
  24. matchTo = true;
  25. tabsPage.index = index;
  26. }
  27. });
  28. text = text || '新标签页';
  29. //定位当前tabs
  30. var setThisTab = function(){
  31. element.tabChange(FILTER_TAB_TBAS, url);
  32. admin.tabsBodyChange(tabsPage.index, {
  33. url: url
  34. ,text: text
  35. });
  36. };
  37. if(setter.pageTabs){
  38. //如果未在选项卡中匹配到,则追加选项卡
  39. if(!matchTo){
  40. //延迟修复 Firefox 空白问题
  41. setTimeout(function(){
  42. $(APP_BODY).append([
  43. '<div class="layadmin-tabsbody-item layui-show">'
  44. ,'<iframe src="'+ url +'" frameborder="0" class="layadmin-iframe"></iframe>'
  45. ,'</div>'
  46. ].join(''));
  47. setThisTab();
  48. }, 10);
  49. tabsPage.index = tabs.length;
  50. element.tabAdd(FILTER_TAB_TBAS, {
  51. title: '<span>'+ text +'</span>'
  52. ,id: url
  53. ,attr: path
  54. });
  55. } else if (admin.tabsPage.old_index == admin.tabsPage.index) {
  56. var iframe = admin.tabsBody(admin.tabsPage.index).find('.layadmin-iframe');
  57. iframe[0].contentWindow.location.href = url;
  58. }
  59. } else {
  60. var iframe = admin.tabsBody(admin.tabsPage.index).find('.layadmin-iframe');
  61. iframe[0].contentWindow.location.href = url;
  62. }
  63. setThisTab();
  64. }
  65. ,APP_BODY = '#LAY_app_body', FILTER_TAB_TBAS = 'layadmin-layout-tabs'
  66. ,$ = layui.$, $win = $(window);
  67. //初始
  68. if(admin.screen() < 2) admin.sideFlexible();
  69. //将模块根路径设置为 controller 目录
  70. layui.config({
  71. base: setter.base + 'modules/'
  72. });
  73. //扩展 lib 目录下的其它模块
  74. layui.each(setter.extend, function(key, value){
  75. var mods = {}
  76. ,_isArray = setter.extend.constructor === Array;
  77. mods[_isArray ? value : key] = '{/}' + setter.base + 'lib/extend/' + value;
  78. layui.extend(mods);
  79. });
  80. view().autoRender();
  81. //加载公共模块
  82. layui.use('common');
  83. //对外输出
  84. exports('index', {
  85. openTabsPage: openTabsPage
  86. });
  87. });