123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363 |
- /**
- * date:2020/02/27
- * author:Mr.Chung
- * version:2.0
- * description:layuimini 主体框架扩展
- */
- layui.define(["jquery", "miniMenu", "element", "miniTab", "miniTheme"], function (exports) {
- var $ = layui.$,
- layer = layui.layer,
- miniMenu = layui.miniMenu,
- miniTheme = layui.miniTheme,
- element = layui.element,
- miniTab = layui.miniTab;
- // if (!/http(s*):\/\//.test(location.href)) {
- // var tips = "请先将项目部署至web容器(Apache/Tomcat/Nginx/IIS/等),否则部分数据将无法显示";
- // return layer.alert(tips);
- // }
- var miniAdmin = {
- /**
- * 后台框架初始化
- * @param options.iniUrl 后台初始化接口地址
- * @param options.clearUrl 后台清理缓存接口
- * @param options.urlHashLocation URL地址hash定位
- * @param options.bgColorDefault 默认皮肤
- * @param options.multiModule 是否开启多模块
- * @param options.menuChildOpen 是否展开子菜单
- * @param options.loadingTime 初始化加载时间
- * @param options.pageAnim iframe窗口动画
- * @param options.maxTabNum 最大的tab打开数量
- */
- render: function (options, status) {
- options.iniUrl = options.iniUrl || null;
- options.clearUrl = options.clearUrl || null;
- options.urlHashLocation = options.urlHashLocation || false;
- options.bgColorDefault = options.bgColorDefault || 0;
- options.multiModule = options.multiModule || false;
- options.menuChildOpen = options.menuChildOpen || false;
- options.loadingTime = options.loadingTime || 1;
- options.pageAnim = options.pageAnim || false;
- options.maxTabNum = options.maxTabNum || 20;
- if (!status) {
- miniAdmin.error('暂无菜单信息')
- } else {
- miniAdmin.renderLogo(options.logoInfo);
- miniAdmin.renderClear(options.clearUrl);
- miniAdmin.renderHome(options.homeInfo);
- miniAdmin.renderAnim(options.pageAnim);
- miniAdmin.listen();
- miniMenu.render({
- menuList: options.menuInfo,
- multiModule: options.multiModule,
- menuChildOpen: options.menuChildOpen
- });
- miniTab.render({
- filter: 'layuiminiTab',
- urlHashLocation: options.urlHashLocation,
- multiModule: options.multiModule,
- menuChildOpen: options.menuChildOpen,
- maxTabNum: options.maxTabNum,
- menuList: options.menuInfo,
- homeInfo: options.homeInfo,
- listenSwichCallback: function () {
- miniAdmin.renderDevice();
- }
- });
- miniTheme.render({
- bgColorDefault: options.bgColorDefault,
- listen: true,
- });
- miniAdmin.deleteLoader(options.loadingTime);
- }
- },
- /**
- * 初始化logo
- * @param data
- */
- renderLogo: function (data) {
- var html = '<a href="' + data.href + '"><img src="' + data.image + '" alt="logo"><h1>' + data.title + '</h1></a>';
- $('.layuimini-logo').html(html);
- },
- /**
- * 初始化首页
- * @param data
- */
- renderHome: function (data) {
- sessionStorage.setItem('layuiminiHomeHref', data.href);
- $('#layuiminiHomeTabId').html('<span class="layuimini-tab-active"></span><span class="disable-close">' + data.title + '</span><i class="layui-icon layui-unselect layui-tab-close">ဆ</i>');
- $('#layuiminiHomeTabId').attr('lay-id', data.href);
- $('#layuiminiHomeTabIframe').html('<iframe width="100%" height="100%" frameborder="no" border="0" marginwidth="0" marginheight="0" src="' + data.href + '"></iframe>');
- },
- /**
- * 初始化缓存地址
- * @param clearUrl
- */
- renderClear: function (clearUrl) {
- $('.layuimini-clear').attr('data-href', clearUrl);
- },
- /**
- * 初始化iframe窗口动画
- * @param anim
- */
- renderAnim: function (anim) {
- if (anim) {
- $('#layuimini-bg-color').after('<style id="layuimini-page-anim">' +
- '.layui-tab-item.layui-show {animation:moveTop 1s;-webkit-animation:moveTop 1s;animation-fill-mode:both;-webkit-animation-fill-mode:both;position:relative;height:100%;-webkit-overflow-scrolling:touch;}\n' +
- '@keyframes moveTop {0% {opacity:0;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px);}\n' +
- ' 100% {opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}\n' +
- '}\n' +
- '@-o-keyframes moveTop {0% {opacity:0;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px);}\n' +
- ' 100% {opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}\n' +
- '}\n' +
- '@-moz-keyframes moveTop {0% {opacity:0;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px);}\n' +
- ' 100% {opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}\n' +
- '}\n' +
- '@-webkit-keyframes moveTop {0% {opacity:0;-webkit-transform:translateY(30px);-ms-transform:translateY(30px);transform:translateY(30px);}\n' +
- ' 100% {opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);}\n' +
- '}' +
- '</style>');
- }
- },
- fullScreen: function () {
- var el = document.documentElement;
- var rfs = el.requestFullScreen || el.webkitRequestFullScreen;
- if (typeof rfs != "undefined" && rfs) {
- rfs.call(el);
- } else if (typeof window.ActiveXObject != "undefined") {
- var wscript = new ActiveXObject("WScript.Shell");
- if (wscript != null) {
- wscript.SendKeys("{F11}");
- }
- } else if (el.msRequestFullscreen) {
- el.msRequestFullscreen();
- } else if (el.oRequestFullscreen) {
- el.oRequestFullscreen();
- } else if (el.webkitRequestFullscreen) {
- el.webkitRequestFullscreen();
- } else if (el.mozRequestFullScreen) {
- el.mozRequestFullScreen();
- } else {
- miniAdmin.error('浏览器不支持全屏调用!');
- }
- },
- /**
- * 退出全屏
- */
- exitFullScreen: function () {
- var el = document;
- var cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.exitFullScreen;
- if (typeof cfs != "undefined" && cfs) {
- cfs.call(el);
- } else if (typeof window.ActiveXObject != "undefined") {
- var wscript = new ActiveXObject("WScript.Shell");
- if (wscript != null) {
- wscript.SendKeys("{F11}");
- }
- } else if (el.msExitFullscreen) {
- el.msExitFullscreen();
- } else if (el.oRequestFullscreen) {
- el.oCancelFullScreen();
- } else if (el.mozCancelFullScreen) {
- el.mozCancelFullScreen();
- } else if (el.webkitCancelFullScreen) {
- el.webkitCancelFullScreen();
- } else {
- miniAdmin.error('浏览器不支持全屏调用!');
- }
- },
- /**
- * 初始化设备端
- */
- renderDevice: function () {
- if (miniAdmin.checkMobile()) {
- $('.layuimini-tool i').attr('data-side-fold', 1);
- $('.layuimini-tool i').attr('class', 'fa fa-outdent');
- $('.layui-layout-body').removeClass('layuimini-mini');
- $('.layui-layout-body').addClass('layuimini-all');
- }
- },
- /**
- * 初始化加载时间
- * @param loadingTime
- */
- deleteLoader: function (loadingTime) {
- setTimeout(function () {
- $('.layuimini-loader').fadeOut();
- }, loadingTime * 100)
- },
- /**
- * 成功
- * @param title
- * @returns {*}
- */
- success: function (title) {
- return layer.msg(title, { icon: 1, shade: this.shade, scrollbar: false, time: 2000, shadeClose: true });
- },
- /**
- * 失败
- * @param title
- * @returns {*}
- */
- error: function (title) {
- return layer.msg(title, { icon: 2, shade: this.shade, scrollbar: false, time: 3000, shadeClose: true });
- },
- /**
- * 判断是否为手机
- * @returns {boolean}
- */
- checkMobile: function () {
- var ua = navigator.userAgent.toLocaleLowerCase();
- var pf = navigator.platform.toLocaleLowerCase();
- var isAndroid = (/android/i).test(ua) || ((/iPhone|iPod|iPad/i).test(ua) && (/linux/i).test(pf))
- || (/ucweb.*linux/i.test(ua));
- var isIOS = (/iPhone|iPod|iPad/i).test(ua) && !isAndroid;
- var isWinPhone = (/Windows Phone|ZuneWP7/i).test(ua);
- var clientWidth = document.documentElement.clientWidth;
- if (!isAndroid && !isIOS && !isWinPhone && clientWidth > 1024) {
- return false;
- } else {
- return true;
- }
- },
- /**
- * 监听
- */
- listen: function () {
- /**
- * 清理
- */
- $('body').on('click', '[data-clear]', function () {
- var loading = layer.load(0, { shade: false, time: 2 * 1000 });
- sessionStorage.clear();
- // 判断是否清理服务端
- var clearUrl = $(this).attr('data-href');
- if (clearUrl != undefined && clearUrl != '' && clearUrl != null) {
- $.getJSON(clearUrl, function (data, status) {
- layer.close(loading);
- if (data.code != 1) {
- return miniAdmin.error(data.msg);
- } else {
- return miniAdmin.success(data.msg);
- }
- }).fail(function () {
- layer.close(loading);
- return miniAdmin.error('清理缓存接口有误');
- });
- } else {
- layer.close(loading);
- return miniAdmin.success('清除缓存成功');
- }
- });
- /**
- * 刷新
- */
- $('[data-refresh]').click(function () {
- $(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
- miniAdmin.success('刷新成功');
- })
- // $('body').on('click', '[data-refresh]', function () {
- // console.log('adasd')
- // $(".layui-tab-item.layui-show").find("iframe")[0].contentWindow.location.reload();
- // miniAdmin.success('刷新成功');
- // });
- /**
- * 监听提示信息
- */
- $("body").on("mouseenter", ".layui-nav-tree .menu-li", function () {
- if (miniAdmin.checkMobile()) {
- return false;
- }
- var classInfo = $(this).attr('class'),
- tips = $(this).prop("innerHTML"),
- isShow = $('.layuimini-tool i').attr('data-side-fold');
- if (isShow == 0 && tips) {
- tips = "<ul class='layuimini-menu-left-zoom layui-nav layui-nav-tree layui-this'><li class='layui-nav-item layui-nav-itemed'>" + tips + "</li></ul>";
- window.openTips = layer.tips(tips, $(this), {
- tips: [2, 'white'],
- time: 300000,
- skin: "popup-tips",
- success: function (el) {
- var left = $(el).position().left - 10;
- $(el).css({ left: left });
- element.render();
- }
- });
- }
- });
- $("body").on("mouseleave", ".popup-tips", function () {
- if (miniAdmin.checkMobile()) {
- return false;
- }
- var isShow = $('.layuimini-tool i').attr('data-side-fold');
- if (isShow == 0) {
- try {
- layer.close(window.openTips);
- } catch (e) {
- console.log(e.message);
- }
- }
- });
- /**
- * 全屏
- */
- $('[data-check-screen]').click(function () {
- var check = $(this).attr('data-check-screen');
- if (check == 'full') {
- miniAdmin.fullScreen();
- $(this).attr('data-check-screen', 'exit');
- $(this).html('<i class="fa fa-compress"></i>');
- } else {
- miniAdmin.exitFullScreen();
- $(this).attr('data-check-screen', 'full');
- $(this).html('<i class="fa fa-arrows-alt"></i>');
- }
- })
- // $('body').on('click', '[data-check-screen]', function () {
- // var check = $(this).attr('data-check-screen');
- // if (check == 'full') {
- // miniAdmin.fullScreen();
- // $(this).attr('data-check-screen', 'exit');
- // $(this).html('<i class="fa fa-compress"></i>');
- // } else {
- // miniAdmin.exitFullScreen();
- // $(this).attr('data-check-screen', 'full');
- // $(this).html('<i class="fa fa-arrows-alt"></i>');
- // }
- // });
- /**
- * 点击遮罩层
- */
- $('body').on('click', '.layuimini-make', function () {
- miniAdmin.renderDevice();
- });
- }
- };
- exports("miniAdmin", miniAdmin);
- });
|