forked from kidgrow-microservices-platform

luliqiang
2020-12-31 6fb14149d62199cfcc0448c82eb2f51f9c5181de
kidgrow-web/kidgrow-web-manager/src/main/resources/static/assets/js/common.js
@@ -4,11 +4,33 @@
}).extend({
    formSelects: 'formSelects/formSelects-v4',
    treetable: 'treetable-lay/treetable',
    treetable2: 'treetable2/TreeTable',
    autocomplete: 'complete/autocomplete',
    step: 'step-lay/step'
}).use(['layer'], function () {
}).use(['layer', 'config', 'index', 'element'], function () {
    var $ = layui.jquery;
    var layer = layui.layer;
    let config = layui.config;
    let index = layui.index;
    let element = layui.element;
    // 检查是否登录
    if (!config.getToken() || config.getToken() == '') {
        location.replace('login.html');
        return;
    }
    // 检查多标签功能是否开启
    index.checkPageTabs();
    // 获取当前用户信息
    index.getUser(function (user) {
        $('.layui-layout-admin .layui-header').vm(user);
        index.initLeftNav();
        element.render('nav');
        index.initRouter();
        index.bindEvent();
    });
    // 加载设置的主题
    var theme = layui.data('easyweb').theme;
    if (theme) {
@@ -24,4 +46,271 @@
// 移除主题
function removeTheme() {
    layui.jquery('link[id^=layuicss-assetscsstheme]').remove();
}
/**
 * js常用工具类
 */
/**
 * 方法作用:【格式化时间】
 * 使用方法
 * 示例:
 *      使用方式一:
 *      var now = new Date();
 *      var nowStr = now.dateFormat("yyyy-MM-dd hh:mm:ss");
 *      使用方式二:
 *      new Date().dateFormat("yyyy年MM月dd日");
 *      new Date().dateFormat("MM/dd/yyyy");
 *      new Date().dateFormat("yyyyMMdd");
 *      new Date().dateFormat("yyyy-MM-dd hh:mm:ss");
 * @param format {date} 传入要格式化的日期类型
 * @returns {2015-01-31 16:30:00}
 */
Date.prototype.dateFormat = function (format) {
    var o = {
        "M+": this.getMonth() + 1, //month
        "d+": this.getDate(), //day
        "h+": this.getHours(), //hour
        "m+": this.getMinutes(), //minute
        "s+": this.getSeconds(), //second
        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
        "S": this.getMilliseconds() //millisecond
    }
    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}
/***********************************************************************
 *                           日期时间工具类                            *
 *                     注:调用方式,deteUtil.方法名                   *
 * ********************************************************************/
var dateUtil = {
    /*
     * 方法作用:【取传入日期是星期几】
     * 使用方法:dateUtil.nowFewWeeks(new Date());
     * @param date{date} 传入日期类型
     * @returns {星期四,...}
     */
    nowFewWeeks: function (date) {
        if (date instanceof Date) {
            var dayNames = new Array("星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
            return dayNames[date.getDay()];
        } else {
            return "Param error,date type!";
        }
    },
    /**
     * 比较第一个时间值和第二个时间值的大小  如果第一个大 返回true  否则返回false
     * **/
    compareDate: function (datebegin, dateend) {
        var datebegindate = dateUtil.strTurnDate(datebegin);
        var dateenddate = dateUtil.strTurnDate(dateend);
        if (datebegindate > dateenddate) {
            return true;
        } else {
            return false;
        }
    },
    /***
     * 获取今天的时间字符串
     */
    getNowDate: function () {
        var dayTime = new Date();
        dayTime.setTime(dayTime.getTime());
        return dayTime.getFullYear() + "-" + (dayTime.getMonth() + 1) + "-" + dayTime.getDate();
    },
    /*
     * 方法作用:【字符串转换成日期】
     * 使用方法:dateUtil.strTurnDate("2010-01-01");
     * @param str {String}字符串格式的日期,传入格式:yyyy-mm-dd(2015-01-31)
     * @return {Date}由字符串转换成的日期
     */
    strTurnDate: function (str) {
        var re = /^(\d{4})\S(\d{1,2})\S(\d{1,2})$/;
        var dt;
        if (re.test(str)) {
            dt = new Date(RegExp.$1, RegExp.$2 - 1, RegExp.$3);
        }
        return dt;
    },
    /*
     * 方法作用:【计算2个日期之间的天数】
     * 传入格式:yyyy-mm-dd(2015-01-31)
     * 使用方法:dateUtil.dayMinus(startDate,endDate);
     * @startDate {Date}起始日期
     * @endDate {Date}结束日期
     * @return endDate - startDate的天数差
     */
    dayMinus: function (startDate, endDate) {
        if (startDate instanceof Date && endDate instanceof Date) {
            var days = Math.floor((endDate - startDate) / (1000 * 60 * 60 * 24));
            return days;
        } else {
            return "Param error,date type!";
        }
    },
    /**
     * 判断一个字符串是否日期
     * @param {字符串} strDate
     */
    isDate: function (strDate) {
        if (!strUtil.isEmpty(strDate) && !isNaN(Date.parse(strDate))) {
            return true;
        }
        return false;
    }
};
/***********************************************************************
 *                           加载工具类                                *
 *                     注:调用方式,loadUtil.方法名                   *
 * ********************************************************************/
var loadUtil = {
    /*
     * 方法说明:【动态加载js文件css文件】
     * 使用方法:loadUtil.loadjscssfile("http://XXXXXXXXXXXXXXXXXX/jquery.js","js")
     * @param fileurl 文件路径,
     * @param filetype 文件类型,支持传入类型,js、css
     */
    loadjscssfile: function (fileurl, filetype) {
        if (filetype == "js") {
            var fileref = document.createElement('script');
            fileref.setAttribute("type", "text/javascript");
            fileref.setAttribute("src", fileurl);
        } else if (filetype == "css") {
            var fileref = document.createElement('link');
            fileref.setAttribute("rel", "stylesheet");
            fileref.setAttribute("type", "text/css");
            fileref.setAttribute("href", fileurl);
        }
        if (typeof fileref != "undefined") {
            document.getElementsByTagName("head")[0].appendChild(fileref);
        } else {
            alert("loadjscssfile method error!");
        }
    }
};
/***********************************************************************
 *                           字符串操作工具类                          *
 *                     注:调用方式,strUtil.方法名                   *
 * ********************************************************************/
var strUtil = {
    /*
     * 判断字符串是否为空
     * @param str 传入的字符串
     * @returns {}
     */
    isEmpty: function (str) {
        if (str != '' && str != undefined && str != null) {
            return false;
        } else {
            return true;
        }
    },
    /*
     * 判断两个字符串子否相同
     * @param str1
     * @param str2
     * @returns {Boolean}
     */
    isEquals: function (str1, str2) {
        if (str1 == str2) {
            return true;
        } else {
            return false;
        }
    },
    /*
     * 忽略大小写判断字符串是否相同
     * @param str1
     * @param str2
     * @returns {Boolean}
     */
    isEqualsIgnorecase: function (str1, str2) {
        if (str1.toUpperCase() == str2.toUpperCase()) {
            return true;
        } else {
            return false;
        }
    },
    /**
     * 判断是否是数字
     * @param value
     * @returns {Boolean}
     */
    isNum: function (value) {
        if (value != null && value.length > 0 && isNaN(value) == false) {
            return true;
        } else {
            return false;
        }
    },
    /**
     * 判断是否是中文
     * @param str
     * @returns {Boolean}
     */
    isChine: function (str) {
        var reg = /^([u4E00-u9FA5]|[uFE30-uFFA0])*$/;
        if (reg.test(str)) {
            return false;
        }
        return true;
    }
};
//从当前页面的url地址中获取参数数据
function getRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}
    /**
     * 1.判断用户是否在登录状态
 * 2.自动将没权限的按钮隐藏
 * 如果页面有列表,则在列表的 done事件内调用
 * 如果页面没有列表,则在页面所有js执行的最后调用此函数
 *
 * 所有需要权限控制显示的按钮,需要在class内加上permissions,
 * 同时在控件上增加permissions="user-btn-import"这样的自定义属性
 * 其中引号内是菜单管理--里面对应的资源的菜单path
 */
function permissionsInput(res,config) {
    if(!strUtil.isEmpty(res)&&res.code==401){
        config.removeToken();
        if(res.msg.includes("Access token expired")){
            layer.msg('登录过期', {icon: 2, time: 1500}, function () {
                location.replace('/login.html');
            }, 5000);
        }else if(res.msg.includes("Invalid access token")){
            layer.msg('您的账号在其他地方登陆,请重新登录或修改密码', {icon: 2, time: 1500}, function () {
                location.replace('/login.html');
            }, 5000);
        }
        return;
    }
    var needpPermissions = $(".permissions");
    var permissions = layui.sessionData('tempData')['permissions'];
    needpPermissions.each(function () {
        var item = $(this);
        if (permissions.indexOf(item.attr("permissions")) < 0) {
            item.hide();
        }
    })
}