vip_comm.js 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. /**
  2. * @name: vip-admin 后台模板主入口
  3. * @author: 随丶
  4. */
  5. // 配置
  6. layui.config({
  7. base: './frame/static/js/' // 模块目录
  8. }).extend({ // 模块别名
  9. vip_nav: 'vip_nav'
  10. , vip_tab: 'vip_tab'
  11. , vip_table: 'vip_table'
  12. });
  13. // 主入口方法
  14. layui.use(['layer', 'element', 'util'], function () {
  15. // 操作对象
  16. var device = layui.device()
  17. , element = layui.element
  18. , layer = layui.layer
  19. , util = layui.util
  20. , $ = layui.jquery
  21. , cardIdx = 0
  22. , cardLayId = 0
  23. , side = $('.my-side')
  24. , body = $('.my-body')
  25. , footer = $('.my-footer');
  26. //阻止IE7以下访问
  27. if (device.ie && device.ie < 8) {
  28. layer.alert('如果您非得使用ie浏览vip-admin 后台模板,那么请使用ie8+');
  29. }
  30. // 导航栏收缩
  31. function navHide(t, st) {
  32. var time = t ? t : 50;
  33. st ? localStorage.log = 1 : localStorage.log = 0;
  34. side.animate({'left': -200}, time);
  35. body.animate({'left': 0}, time);
  36. footer.animate({'left': 0}, time);
  37. }
  38. // 导航栏展开
  39. function navShow(t, st) {
  40. var time = t ? t : 50;
  41. st ? localStorage.log = 0 : localStorage.log = 1;
  42. side.animate({'left': 0}, time);
  43. body.animate({'left': 200}, time);
  44. footer.animate({'left': 200}, time);
  45. }
  46. // 监听导航栏收缩
  47. $('.btn-nav').on('click', function () {
  48. if (localStorage.log == 0) {
  49. navShow(50);
  50. } else {
  51. navHide(50);
  52. }
  53. });
  54. // 根据导航栏text获取lay-id
  55. function getTitleId(card, title) {
  56. var id = -1;
  57. $(document).find(".layui-tab[lay-filter=" + card + "] ul li").each(function () {
  58. if (title === $(this).find('span').html()) {
  59. id = $(this).attr('lay-id');
  60. }
  61. });
  62. return id;
  63. }
  64. // 添加TAB选项卡
  65. window.addTab = function (elem, tit, url) {
  66. var card = 'card'; // 选项卡对象
  67. var title = tit ? tit : elem.children('a').html(); // 导航栏text
  68. var src = url ? url : elem.children('a').attr('href-url'); // 导航栏跳转URL
  69. var id = new Date().getTime(); // ID
  70. var flag = getTitleId(card, title);
  71. $('#iframe').attr('src',src);
  72. return; // 是否有该选项卡存在
  73. // 大于0就是有该选项卡了
  74. if (flag > 0) {
  75. id = flag;
  76. } else {
  77. if (src) {
  78. //新增
  79. element.tabAdd(card, {
  80. title: '<span>' + title + '</span>'
  81. , content: '<iframe src="' + src + '" frameborder="0"></iframe>'
  82. , id: id
  83. });
  84. // 关闭弹窗
  85. layer.closeAll();
  86. }
  87. }
  88. // 切换相应的ID tab
  89. element.tabChange(card, id);
  90. // 提示信息
  91. // layer.msg(title);
  92. };
  93. // 监听顶部左侧导航
  94. element.on('nav(side-top-left)', function (elem) {
  95. // 添加tab方法
  96. window.addTab(elem);
  97. });
  98. // 监听顶部右侧导航
  99. element.on('nav(side-top-right)', function (elem) {
  100. // 修改skin
  101. if ($(this).attr('data-skin')) {
  102. localStorage.skin = $(this).attr('data-skin');
  103. skin();
  104. } else {
  105. // 添加tab方法
  106. window.addTab(elem);
  107. }
  108. });
  109. // 监听导航(side-main)点击切换页面
  110. element.on('nav(side-main)', function (elem) {
  111. // 添加tab方法
  112. window.addTab(elem);
  113. });
  114. // 删除选项卡
  115. window.delTab = function (layId) {
  116. // 删除
  117. element.tabDelete('card', layId);
  118. };
  119. // 删除所有选项卡
  120. window.delAllTab = function () {
  121. // 选项卡对象
  122. layui.each($('.my-body .layui-tab-title > li'), function (k, v) {
  123. var layId = $(v).attr('lay-id');
  124. if (layId > 1) {
  125. // 删除
  126. element.tabDelete('card', layId);
  127. }
  128. });
  129. };
  130. // 获取当前选中选项卡lay-id
  131. window.getThisTabID = function () {
  132. // 当前选中的选项卡id
  133. return $(document).find('body .my-body .layui-tab-card > .layui-tab-title .layui-this').attr('lay-id');
  134. };
  135. // 双击关闭相应选项卡
  136. $(document).on('dblclick', '.my-body .layui-tab-card > .layui-tab-title li', function () {
  137. // 欢迎页面以外,删除选项卡
  138. if ($(this).index() > 0) {
  139. element.tabDelete('card', $(this).attr('lay-id'));
  140. } else {
  141. layer.msg('欢迎页面不能关闭')
  142. }
  143. });
  144. // 选项卡右键事件阻止
  145. $(document).on("contextmenu", '.my-body .layui-tab-card > .layui-tab-title li', function () {
  146. return false;
  147. });
  148. // 选项卡右键事件
  149. $(document).on("mousedown", '.my-body .layui-tab-card > .layui-tab-title li', function (e) {
  150. // 判断是右键点击事件并且不是欢迎页面选项卡
  151. if (3 == e.which && $(this).index() > 0) {
  152. // 赋值
  153. cardIdx = $(this).index();
  154. cardLayId = $(this).attr('lay-id');
  155. // 选择框
  156. layer.tips($('.my-dblclick-box').html(), $(this), {
  157. skin: 'dblclick-tips-box',
  158. tips: 3,
  159. time: false
  160. });
  161. }
  162. });
  163. // 点击body关闭tips
  164. $(document).on('click', 'html', function () {
  165. layer.closeAll('tips');
  166. });
  167. // 右键提示框菜单操作-刷新页面
  168. $(document).on('click', '.card-refresh', function () {
  169. // 窗体对象
  170. var ifr = $(document).find('.my-body .layui-tab-content .layui-tab-item iframe').eq(cardIdx);
  171. // 刷新当前页
  172. ifr.attr('src', ifr.attr('src'));
  173. // 切换到当前选项卡
  174. element.tabChange('card', cardLayId);
  175. });
  176. // 右键提示框菜单操作-关闭页面
  177. $(document).on('click', '.card-close', function () {
  178. // 删除
  179. window.delTab(cardLayId);
  180. });
  181. // 右键提示框菜单操作-关闭所有页面
  182. $(document).on('click', '.card-close-all', function () {
  183. // 删除
  184. window.delAllTab();
  185. });
  186. // 打赏
  187. $('.pay').on('click', function () {
  188. layer.open({
  189. type: 1,
  190. title: false, // 标题不显示
  191. closeBtn: false, // 关闭按钮不显示
  192. shadeClose: true, // 点击遮罩关闭
  193. area: ['auto', 'auto'], // 宽高
  194. content: $('.my-pay-box') // 弹出内容
  195. });
  196. });
  197. // 皮肤
  198. function skin() {
  199. var skin = localStorage.skin ? localStorage.skin : 0;
  200. var body = $('body');
  201. body.removeClass('skin-0');
  202. body.removeClass('skin-1');
  203. body.removeClass('skin-2');
  204. body.addClass('skin-' + skin);
  205. }
  206. // 工具
  207. function _util() {
  208. var bar = $('.layui-fixbar');
  209. // 分辨率小于1023 使用内部工具组件
  210. if ($(window).width() < 1023) {
  211. util.fixbar({
  212. bar1: '&#xe602;'
  213. , css: {left: 10, bottom: 54}
  214. , click: function (type) {
  215. if (type === 'bar1') {
  216. //iframe层
  217. layer.open({
  218. type: 1, // 类型
  219. title: false, // 标题
  220. offset: 'l', // 定位 左边
  221. closeBtn: 0, // 关闭按钮
  222. anim: 0, // 动画
  223. shadeClose: true, // 点击遮罩关闭
  224. shade: 0.8, // 半透明
  225. area: ['150px', '100%'], // 区域
  226. skin: 'my-mobile', // 样式
  227. content: $('body .my-side').html() // 内容
  228. });
  229. }
  230. element.init();
  231. }
  232. });
  233. bar.removeClass('layui-hide');
  234. bar.addClass('layui-show');
  235. } else {
  236. bar.removeClass('layui-show');
  237. bar.addClass('layui-hide');
  238. }
  239. };
  240. // 自适应
  241. $(window).on('resize', function () {
  242. if ($(window).width() > 1023) {
  243. navShow(10);
  244. } else {
  245. navHide(10);
  246. }
  247. _util();
  248. });
  249. // 监听控制content高度
  250. function init() {
  251. // 起始判断-收缩/展开
  252. if (!localStorage.log) {
  253. if ($(window).width() > 1023) {
  254. if (localStorage.log == 0) {
  255. navHide(10);
  256. } else {
  257. navShow(10);
  258. }
  259. } else {
  260. navHide(10);
  261. }
  262. } else {
  263. if (localStorage.log == 0) {
  264. navHide(10);
  265. } else {
  266. navShow(10);
  267. }
  268. }
  269. // 工具
  270. _util();
  271. // skin
  272. skin();
  273. // 选项卡高度
  274. cardTitleHeight = $(document).find(".layui-tab[lay-filter='card'] ul.layui-tab-title").height();
  275. // 需要减去的高度
  276. height = $(window).height() - $('.layui-header').height() - cardTitleHeight - $('.layui-footer').height();
  277. // 设置高度
  278. $(document).find(".layui-tab[lay-filter='card'] div.layui-tab-content").height(height - 2);
  279. }
  280. // 初始化
  281. init();
  282. });