From: Xia Kaixiang Date: Mon, 8 Jul 2019 11:28:08 +0000 (+0800) Subject: 防止sql注入,xss攻击 X-Git-Tag: 1.0.0^2~96 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=28dabfb2e466d4ff26db9ddc88772d7cad8bdf2c;p=epayment%2Ffood_payapi.git 防止sql注入,xss攻击 --- diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java index 1254d326..7fc2400a 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java @@ -90,8 +90,10 @@ public class UserDataServiceImpl implements UserDataService { if (StringUtil.isEmpty(person.getStatus())) { person.setStatus(TradeDict.STATUS_NORMAL); } + person.setLastsaved(systemUtilService.getSysdatetime().getHostdatetime()); person.setTenantid(TenantContext.getTenantSchema()); personDao.save(person); + return JsonResult.ok("修改成功"); } else { TPerson has = personDao.findByIdentity(person.getIdtype(), person.getIdno()); if (has != null) { diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt index c2d2a32a..8632b7ff 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt @@ -6,6 +6,8 @@ import org.springframework.boot.SpringApplication import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.boot.autoconfigure.data.redis.RedisProperties import org.springframework.boot.builder.SpringApplicationBuilder +import org.springframework.boot.runApplication +import org.springframework.boot.web.servlet.ServletComponentScan import org.springframework.boot.web.servlet.support.SpringBootServletInitializer import org.springframework.cache.annotation.EnableCaching import org.springframework.cloud.client.discovery.EnableDiscoveryClient @@ -64,6 +66,7 @@ class HttpSessionConfig { @EnableDiscoveryClient @EnableScheduling @EnableCaching +@ServletComponentScan class PayApiApplication : SpringBootServletInitializer() { override fun configure(builder: SpringApplicationBuilder): SpringApplicationBuilder { diff --git a/payapi/src/main/resources/application.properties b/payapi/src/main/resources/application.properties index cee20f16..17217f90 100644 --- a/payapi/src/main/resources/application.properties +++ b/payapi/src/main/resources/application.properties @@ -23,6 +23,11 @@ spring.thymeleaf.encoding=UTF-8 spring.thymeleaf.mode=HTML5 spring.thymeleaf.cache=false spring.thymeleaf.enabled=true +################## 全局字符编码设置 ###################### +spring.http.encoding.force=true +spring.http.encoding.charset=UTF-8 +spring.http.encoding.enabled=true +server.tomcat.uri-encoding=UTF-8 ################################################## ## quartz task scheduler shopbalance.updater.cron=10/* * * * * diff --git a/payapi/src/main/resources/static/custom/module/admin.js b/payapi/src/main/resources/static/custom/module/admin.js index cbdbc36e..16942866 100755 --- a/payapi/src/main/resources/static/custom/module/admin.js +++ b/payapi/src/main/resources/static/custom/module/admin.js @@ -1,387 +1,399 @@ -layui.define(['layer'], function (exports) { - var layer = layui.layer; - var popupRightIndex, popupCenterIndex, popupCenterParam; - var baseUrl = window.location.pathname; - - var admin = { - isRefresh: false, - // 设置侧栏折叠 - flexible: function (expand) { - var isExapnd = $('.layui-layout-admin').hasClass('admin-nav-mini'); - if (isExapnd == !expand) { - return; - } - if (expand) { - $('.layui-layout-admin').removeClass('admin-nav-mini'); - } else { - $('.layui-layout-admin').addClass('admin-nav-mini'); - } - }, - // 设置导航栏选中 - activeNav: function (url) { - $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child dd').removeClass('layui-this'); - $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-this'); - if (url && url != '') { - $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-nav-itemed'); - var $a = $('.layui-layout-admin .layui-side .layui-nav a[href="#!' + url + '"]'); - $a.parent('li').addClass('layui-this'); - $a.parent('dd').addClass('layui-this'); - $a.parent('dd').parent('.layui-nav-child').parent('.layui-nav-item').addClass('layui-nav-itemed'); - } - }, - // 右侧弹出 - popupRight: function (path) { - var param = new Object(); - param.path = path; - param.id = 'adminPopupR'; - param.title = false; - param.anim = 2; - param.isOutAnim = false; - param.closeBtn = false; - param.offset = 'r'; - param.shadeClose = true; - param.area = '336px'; - param.skin = 'layui-layer-adminRight'; - param.end = function () { - layer.closeAll('tips'); - }; - popupRightIndex = admin.open(param); - return popupRightIndex; - }, - // 关闭右侧弹出 - closePopupRight: function () { - layer.close(popupRightIndex); - }, - // 中间弹出 - popupCenter: function (param) { - param.id = 'adminPopupC'; - popupCenterParam = param; - popupCenterIndex = admin.open(param); - return popupCenterIndex; - }, - // 关闭中间弹出并且触发finish回调 - finishPopupCenter: function () { - layer.close(popupCenterIndex); - popupCenterParam.finish ? popupCenterParam.finish() : ''; - }, - // 关闭中间弹出 - closePopupCenter: function () { - layer.close(popupCenterIndex); - }, - // 封装layer.open - open: function (param) { - var sCallBack = param.success; - param.type = 1; - param.area = param.area ? param.area : '450px'; - param.offset = param.offset ? param.offset : '120px'; - param.resize ? param.resize : false; - param.shade ? param.shade : .2; - param.success = function (layero, index) { - sCallBack ? sCallBack(layero, index) : ''; - admin.ajax({ - url: param.path, - type: 'GET', - dataType: 'html', - success: function (result, status, xhr) { - $(layero).children('.layui-layer-content').html(result); - } - }); - }; - return layer.open(param); - }, - - go:function(url,data,success,error){ - $.ajax({ - url: url, - data: data, - async: false, - dataType: 'json', - type: 'post', - success: success, - error:error - }) - }, - dgo:function(url,data,success,error){ - $.ajax({ - url: url, - data: data, - async: false, - dataType: 'json', - type: 'get', - success: success, - error:error - }) - }, - // 封装ajax请求,返回数据类型为json - req: function (url, data, success, method) { - admin.ajax({ - url: url, - data: data, - async: false, - type: method, - dataType: 'json', - success: success - }); - }, - // 封装ajax请求 - ajax: function (param) { - console.log(param); - var successCallback = param.success; - param.success = function (result, status, xhr) { - // 判断登录过期和没有权限 - var jsonRs; - if ('json' == param.dataType.toLowerCase()) { - jsonRs = result; - } else if ('html' == param.dataType.toLowerCase() || 'text' == param.dataType.toLowerCase()) { - jsonRs = admin.parseJSON(result); - } - if (jsonRs) { - if (jsonRs.code == 401) { - layer.msg(jsonRs.msg, {icon: 2, time: 1500}, function () { - location.replace('/login'); - }, 1000); - return; - } else if ('html' == param.dataType.toLowerCase() && jsonRs.code == 403) { - layer.msg(jsonRs.msg, {icon: 2}); - } - } - successCallback(result, status, xhr); - }; - param.error = function (xhr) { - //{code: xhr.status, msg: xhr.statusText} - param.success(xhr.responseText,xhr.status,xhr); - }; - $.ajax(param); - }, - // 显示加载动画 - showLoading: function (element) { - $(element).append(''); - }, - // 移除加载动画 - removeLoading: function (element) { - $(element + '>.admin-loading').remove(); - }, - // 缓存临时数据 - putTempData: function (key, value) { - if (value) { - layui.sessionData('tempData', {key: key, value: value}); - } else { - layui.sessionData('tempData', {key: key, remove: true}); - } - }, - // 获取缓存临时数据 - getTempData: function (key) { - return layui.sessionData('tempData')[key]; - }, - // 滑动选项卡 - rollPage: function (d) { - var $tabTitle = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title'); - var left = $tabTitle.scrollLeft(); - if ('left' === d) { - $tabTitle.scrollLeft(left - 120); - } else if ('auto' === d) { - var autoLeft = 0; - $tabTitle.children("li").each(function () { - if ($(this).hasClass('layui-this')) { - return false; - } else { - autoLeft += $(this).outerWidth(); - } - }); - $tabTitle.scrollLeft(autoLeft - 47); - } else { - $tabTitle.scrollLeft(left + 120); - } - }, - // 刷新主题部分 - refresh: function () { - admin.isRefresh = true; - Q.refresh(); - }, - // 判断是否为json - parseJSON: function (str) { - if (typeof str == 'string') { - try { - var obj = JSON.parse(str); - if (typeof obj == 'object' && obj) { - return obj; - } - } catch (e) { - } - } - }, - formatDate:function (str) { - if (str == null || str == "") { - return; - } - switch (str.length) { - case 8: - str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8); - return str; - case 12: - str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10) - + ":" + str.substring(10, 12); - return str; - case 14: - str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10) - + ":" + str.substring(10, 12) + ":" + str.substring(12, 14); - return str; - default: - return str; - } - }, - errorBack: function (err) { - layer.closeAll('loading'); - if (403 == err.status) { - layer.msg("无资源权限!", {icon: 2, time: 1500}); - return; - } - if (200 == err.status) { - layer.msg("请求异常,请刷新页面重新操作", {icon: 2, time: 1500}); - return; - } else { - layer.msg("请求服务器失败!", {icon: 2}); - } - } - }; - - // ewAdmin提供的事件 - admin.events = { - // 折叠侧导航 - flexible: function (e) { - var expand = $('.layui-layout-admin').hasClass('admin-nav-mini'); - admin.flexible(expand); - }, - // 刷新主体部分 - refresh: function () { - admin.refresh(); - }, - //后退 - back: function () { - history.back(); - }, - // 设置主题 - theme: function () { - admin.popupRight(baseUrl+'home/theme'); - }, - // 全屏 - fullScreen: function (e) { - var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore'; - var ti = $(this).find('i'); - - var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false; - if (isFullscreen) { - var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen; - if (efs) { - efs.call(document); - } else if (window.ActiveXObject) { - var ws = new ActiveXObject('WScript.Shell'); - ws && ws.SendKeys('{F11}'); - } - ti.addClass(ac).removeClass(ic); - } else { - var el = document.documentElement; - var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen; - if (rfs) { - rfs.call(el); - } else if (window.ActiveXObject) { - var ws = new ActiveXObject('WScript.Shell'); - ws && ws.SendKeys('{F11}'); - } - ti.addClass(ic).removeClass(ac); - } - }, - // 左滑动tab - leftPage: function () { - admin.rollPage("left"); - }, - // 右滑动tab - rightPage: function () { - admin.rollPage(); - }, - // 关闭当前选项卡 - closeThisTabs: function () { - var $title = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title'); - if ($title.find('li').first().hasClass('layui-this')) { - return; - } - $title.find('li.layui-this').find(".layui-tab-close").trigger("click"); - }, - // 关闭其他选项卡 - closeOtherTabs: function () { - $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0):not(.layui-this)').find('.layui-tab-close').trigger('click'); - }, - // 关闭所有选项卡 - closeAllTabs: function () { - $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0)').find('.layui-tab-close').trigger('click'); - }, - // 关闭所有弹窗 - closeDialog: function () { - layer.closeAll('page'); - }, - //刷新字典 - refreshDict: function (){ - layer.confirm('确定要刷新数据字典吗?', { - btn: ['确定', '取消'] - }, function (index, layero) { - layer.closeAll('dialog'); //加入这个信息点击确定 会关闭这个消息框 - admin.dgo(baseUrl+"dictrefresh", {}, function (data) { - if (data.code == 200) { - layer.msg("刷新数据字典成功!", {icon: 1, time: 1000}); - DictPoolToolkit().initAll(baseUrl+"dictpool"); - } else if (data.code == 401) { - layer.msg(data.msg, {icon: 2, time: 1500}, function () { - location.replace('/login'); - }, 1000); - return; - } else { - layer.msg(data.msg, {icon: 2, time: 1500}); - } - }, function () { - layer.msg("数据字典刷新失败,访问服务器失败!", {icon: 2, time: 1500}); - }); - }); - } - }; - - // 所有ew-event - $('body').on('click', '*[ew-event]', function () { - var event = $(this).attr('ew-event'); - var te = admin.events[event]; - te && te.call(this, $(this)); - }); - - // 移动设备遮罩层点击事件 - $('.site-mobile-shade').click(function () { - admin.flexible(true); - }); - - // 侧导航折叠状态下鼠标经过显示提示 - $('body').on('mouseenter', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { - var tipText = $(this).find('cite').text(); - if (document.body.clientWidth > 750) { - layer.tips(tipText, this); - } - }).on('mouseleave', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { - layer.closeAll('tips'); - }); - - // 侧导航折叠状态下点击展开 - $('body').on('click', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { - if (document.body.clientWidth > 750) { - layer.closeAll('tips'); - admin.flexible(true); - } - }); - - // 所有lay-tips处理 - $('body').on('mouseenter', '*[lay-tips]', function () { - var tipText = $(this).attr('lay-tips'); - var dt = $(this).attr('lay-direction'); - layer.tips(tipText, this, {tips: dt || 1, time: -1}); - }).on('mouseleave', '*[lay-tips]', function () { - layer.closeAll('tips'); - }); - - exports('admin', admin); -}); +layui.define(['layer'], function (exports) { + var layer = layui.layer; + var popupRightIndex, popupCenterIndex, popupCenterParam; + var baseUrl = window.location.pathname; + + var admin = { + isRefresh: false, + // 设置侧栏折叠 + flexible: function (expand) { + var isExapnd = $('.layui-layout-admin').hasClass('admin-nav-mini'); + if (isExapnd == !expand) { + return; + } + if (expand) { + $('.layui-layout-admin').removeClass('admin-nav-mini'); + } else { + $('.layui-layout-admin').addClass('admin-nav-mini'); + } + }, + // 设置导航栏选中 + activeNav: function (url) { + $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item .layui-nav-child dd').removeClass('layui-this'); + $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-this'); + if (url && url != '') { + $('.layui-layout-admin .layui-side .layui-nav .layui-nav-item').removeClass('layui-nav-itemed'); + var $a = $('.layui-layout-admin .layui-side .layui-nav a[href="#!' + url + '"]'); + $a.parent('li').addClass('layui-this'); + $a.parent('dd').addClass('layui-this'); + $a.parent('dd').parent('.layui-nav-child').parent('.layui-nav-item').addClass('layui-nav-itemed'); + } + }, + // 右侧弹出 + popupRight: function (path) { + var param = new Object(); + param.path = path; + param.id = 'adminPopupR'; + param.title = false; + param.anim = 2; + param.isOutAnim = false; + param.closeBtn = false; + param.offset = 'r'; + param.shadeClose = true; + param.area = '336px'; + param.skin = 'layui-layer-adminRight'; + param.end = function () { + layer.closeAll('tips'); + }; + popupRightIndex = admin.open(param); + return popupRightIndex; + }, + // 关闭右侧弹出 + closePopupRight: function () { + layer.close(popupRightIndex); + }, + // 中间弹出 + popupCenter: function (param) { + param.id = 'adminPopupC'; + popupCenterParam = param; + popupCenterIndex = admin.open(param); + return popupCenterIndex; + }, + // 关闭中间弹出并且触发finish回调 + finishPopupCenter: function () { + layer.close(popupCenterIndex); + popupCenterParam.finish ? popupCenterParam.finish() : ''; + }, + // 关闭中间弹出 + closePopupCenter: function () { + layer.close(popupCenterIndex); + }, + // 封装layer.open + open: function (param) { + var sCallBack = param.success; + param.type = 1; + param.area = param.area ? param.area : '450px'; + param.offset = param.offset ? param.offset : '120px'; + param.resize ? param.resize : false; + param.shade ? param.shade : .2; + param.success = function (layero, index) { + sCallBack ? sCallBack(layero, index) : ''; + admin.ajax({ + url: param.path, + type: 'GET', + dataType: 'html', + success: function (result, status, xhr) { + $(layero).children('.layui-layer-content').html(result); + } + }); + }; + return layer.open(param); + }, + + go:function(url,data,success,error){ + $.ajax({ + url: url, + data: data, + async: false, + dataType: 'json', + type: 'post', + success: success, + error:error + }) + }, + dgo:function(url,data,success,error){ + $.ajax({ + url: url, + data: data, + async: false, + dataType: 'json', + type: 'get', + success: success, + error:error + }) + }, + // 封装ajax请求,返回数据类型为json + req: function (url, data, success, method) { + admin.ajax({ + url: url, + data: data, + async: false, + type: method, + dataType: 'json', + success: success + }); + }, + // 封装ajax请求 + ajax: function (param) { + console.log(param); + var successCallback = param.success; + param.success = function (result, status, xhr) { + // 判断登录过期和没有权限 + var jsonRs; + if ('json' == param.dataType.toLowerCase()) { + jsonRs = result; + } else if ('html' == param.dataType.toLowerCase() || 'text' == param.dataType.toLowerCase()) { + jsonRs = admin.parseJSON(result); + } + if (jsonRs) { + if (jsonRs.code == 401) { + layer.msg(jsonRs.msg, {icon: 2, time: 1500}, function () { + location.replace('/login'); + }, 1000); + return; + } else if ('html' == param.dataType.toLowerCase() && jsonRs.code == 403) { + layer.msg(jsonRs.msg, {icon: 2}); + } + } + + if(result.indexOf("统一身份认证")!=-1){ + layer.msg("登录过期,请重新登录!", {icon: 2, time: 1500}, function () { + location.replace(baseUrl + 'login'); + }, 500); + return; + }else if(result.indexOf("403 无权限")!=-1){ + layer.close(popupCenterIndex); + layer.msg("无资源权限", {icon: 2, time:2000}); + return; + } + + successCallback(result, status, xhr); + }; + param.error = function (xhr) { + //{code: xhr.status, msg: xhr.statusText} + param.success(xhr.responseText,xhr.status,xhr); + }; + $.ajax(param); + }, + // 显示加载动画 + showLoading: function (element) { + $(element).append(''); + }, + // 移除加载动画 + removeLoading: function (element) { + $(element + '>.admin-loading').remove(); + }, + // 缓存临时数据 + putTempData: function (key, value) { + if (value) { + layui.sessionData('tempData', {key: key, value: value}); + } else { + layui.sessionData('tempData', {key: key, remove: true}); + } + }, + // 获取缓存临时数据 + getTempData: function (key) { + return layui.sessionData('tempData')[key]; + }, + // 滑动选项卡 + rollPage: function (d) { + var $tabTitle = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title'); + var left = $tabTitle.scrollLeft(); + if ('left' === d) { + $tabTitle.scrollLeft(left - 120); + } else if ('auto' === d) { + var autoLeft = 0; + $tabTitle.children("li").each(function () { + if ($(this).hasClass('layui-this')) { + return false; + } else { + autoLeft += $(this).outerWidth(); + } + }); + $tabTitle.scrollLeft(autoLeft - 47); + } else { + $tabTitle.scrollLeft(left + 120); + } + }, + // 刷新主题部分 + refresh: function () { + admin.isRefresh = true; + Q.refresh(); + }, + // 判断是否为json + parseJSON: function (str) { + if (typeof str == 'string') { + try { + var obj = JSON.parse(str); + if (typeof obj == 'object' && obj) { + return obj; + } + } catch (e) { + } + } + }, + formatDate:function (str) { + if (str == null || str == "") { + return; + } + switch (str.length) { + case 8: + str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8); + return str; + case 12: + str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10) + + ":" + str.substring(10, 12); + return str; + case 14: + str = str.substring(0, 4) + "-" + str.substring(4, 6) + "-" + str.substring(6, 8) + " " + str.substring(8, 10) + + ":" + str.substring(10, 12) + ":" + str.substring(12, 14); + return str; + default: + return str; + } + }, + errorBack: function (err) { + layer.closeAll('loading'); + if (403 == err.status) { + layer.msg("无资源权限!", {icon: 2, time: 1500}); + return; + } + if (200 == err.status) { + layer.msg("请求异常,请刷新页面重新操作", {icon: 2, time: 1500}); + return; + } else { + layer.msg("请求服务器失败!", {icon: 2}); + } + } + }; + + // ewAdmin提供的事件 + admin.events = { + // 折叠侧导航 + flexible: function (e) { + var expand = $('.layui-layout-admin').hasClass('admin-nav-mini'); + admin.flexible(expand); + }, + // 刷新主体部分 + refresh: function () { + admin.refresh(); + }, + //后退 + back: function () { + history.back(); + }, + // 设置主题 + theme: function () { + admin.popupRight(baseUrl+'home/theme'); + }, + // 全屏 + fullScreen: function (e) { + var ac = 'layui-icon-screen-full', ic = 'layui-icon-screen-restore'; + var ti = $(this).find('i'); + + var isFullscreen = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement || false; + if (isFullscreen) { + var efs = document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen; + if (efs) { + efs.call(document); + } else if (window.ActiveXObject) { + var ws = new ActiveXObject('WScript.Shell'); + ws && ws.SendKeys('{F11}'); + } + ti.addClass(ac).removeClass(ic); + } else { + var el = document.documentElement; + var rfs = el.requestFullscreen || el.webkitRequestFullscreen || el.mozRequestFullScreen || el.msRequestFullscreen; + if (rfs) { + rfs.call(el); + } else if (window.ActiveXObject) { + var ws = new ActiveXObject('WScript.Shell'); + ws && ws.SendKeys('{F11}'); + } + ti.addClass(ic).removeClass(ac); + } + }, + // 左滑动tab + leftPage: function () { + admin.rollPage("left"); + }, + // 右滑动tab + rightPage: function () { + admin.rollPage(); + }, + // 关闭当前选项卡 + closeThisTabs: function () { + var $title = $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title'); + if ($title.find('li').first().hasClass('layui-this')) { + return; + } + $title.find('li.layui-this').find(".layui-tab-close").trigger("click"); + }, + // 关闭其他选项卡 + closeOtherTabs: function () { + $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0):not(.layui-this)').find('.layui-tab-close').trigger('click'); + }, + // 关闭所有选项卡 + closeAllTabs: function () { + $('.layui-layout-admin .layui-body .layui-tab .layui-tab-title li:gt(0)').find('.layui-tab-close').trigger('click'); + }, + // 关闭所有弹窗 + closeDialog: function () { + layer.closeAll('page'); + }, + //刷新字典 + refreshDict: function (){ + layer.confirm('确定要刷新数据字典吗?', { + btn: ['确定', '取消'] + }, function (index, layero) { + layer.closeAll('dialog'); //加入这个信息点击确定 会关闭这个消息框 + admin.dgo(baseUrl+"dictrefresh", {}, function (data) { + if (data.code == 200) { + layer.msg("刷新数据字典成功!", {icon: 1, time: 1000}); + DictPoolToolkit().initAll(baseUrl+"dictpool"); + } else if (data.code == 401) { + layer.msg(data.msg, {icon: 2, time: 1500}, function () { + location.replace('/login'); + }, 1000); + return; + } else { + layer.msg(data.msg, {icon: 2, time: 1500}); + } + }, function () { + layer.msg("数据字典刷新失败,访问服务器失败!", {icon: 2, time: 1500}); + }); + }); + } + }; + + // 所有ew-event + $('body').on('click', '*[ew-event]', function () { + var event = $(this).attr('ew-event'); + var te = admin.events[event]; + te && te.call(this, $(this)); + }); + + // 移动设备遮罩层点击事件 + $('.site-mobile-shade').click(function () { + admin.flexible(true); + }); + + // 侧导航折叠状态下鼠标经过显示提示 + $('body').on('mouseenter', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { + var tipText = $(this).find('cite').text(); + if (document.body.clientWidth > 750) { + layer.tips(tipText, this); + } + }).on('mouseleave', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { + layer.closeAll('tips'); + }); + + // 侧导航折叠状态下点击展开 + $('body').on('click', '.layui-layout-admin.admin-nav-mini .layui-side .layui-nav .layui-nav-item>a', function () { + if (document.body.clientWidth > 750) { + layer.closeAll('tips'); + admin.flexible(true); + } + }); + + // 所有lay-tips处理 + $('body').on('mouseenter', '*[lay-tips]', function () { + var tipText = $(this).attr('lay-tips'); + var dt = $(this).attr('lay-direction'); + layer.tips(tipText, this, {tips: dt || 1, time: -1}); + }).on('mouseleave', '*[lay-tips]', function () { + layer.closeAll('tips'); + }); + + exports('admin', admin); +}); \ No newline at end of file diff --git a/payapi/src/main/resources/templates/index.html b/payapi/src/main/resources/templates/index.html index bfea46b4..302af3ac 100755 --- a/payapi/src/main/resources/templates/index.html +++ b/payapi/src/main/resources/templates/index.html @@ -3,8 +3,8 @@ 首页 - - + + @@ -36,7 +36,7 @@ - +
  • @@ -50,7 +50,7 @@
    基本资料
    修改密码

    -
    退出
    +
    退出
  • @@ -73,7 +73,7 @@
    [[${temp.menuName}]] - +
    @@ -81,16 +81,16 @@
  • - - - - - - - - - - + + + + + + + + + + @@ -122,7 +122,8 @@ -