若依开源1.1.1发布
This commit is contained in:
117
src/main/resources/static/ruoyi/css/RuoYi.css
Normal file
117
src/main/resources/static/ruoyi/css/RuoYi.css
Normal file
@ -0,0 +1,117 @@
|
||||
/*!
|
||||
* ruoyi.css v1.1.1
|
||||
* Author: Ruoyi
|
||||
*/
|
||||
|
||||
/** <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD> */
|
||||
|
||||
.box {
|
||||
position: relative;
|
||||
border-radius: 3px;
|
||||
background: #ffffff;
|
||||
border-top: 3px solid #d2d6de;
|
||||
margin-bottom: 20px;
|
||||
width: 100%;
|
||||
box-shadow: 0 1px 1px rgba(0,0,0,0.1)
|
||||
}
|
||||
|
||||
.box-header:before,.box-body:before,.box-footer:before,.box-header:after,.box-body:after,.box-footer:after {
|
||||
content: " ";
|
||||
display: table
|
||||
}
|
||||
|
||||
.box-header:after,.box-body:after,.box-footer:after {
|
||||
clear: both
|
||||
}
|
||||
|
||||
.btn-box-tool {
|
||||
padding: 5px;
|
||||
font-size: 12px;
|
||||
background: transparent;
|
||||
color: #97a0b3;
|
||||
}
|
||||
.open .btn-box-tool,
|
||||
.btn-box-tool:hover {
|
||||
color: #606c84;
|
||||
}
|
||||
|
||||
.box-main {
|
||||
margin: 0;
|
||||
border: 0;
|
||||
padding-top: 2px;
|
||||
border-radius: 0;
|
||||
box-shadow: none
|
||||
}
|
||||
|
||||
.box-main>.box-header {
|
||||
border-bottom: 1px solid #eee;
|
||||
padding: 12px 10px 2px 15px
|
||||
}
|
||||
|
||||
.box-header .box-title {
|
||||
display: inline-block;
|
||||
font-size: 18px;
|
||||
margin: 0;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.box-main>.box-header .box-title {
|
||||
font-size: 16px;
|
||||
margin-bottom: 13px;
|
||||
float: left
|
||||
}
|
||||
|
||||
.box-main>.box-header .box-title .fa {
|
||||
font-size: 14px;
|
||||
padding-right: 3px;
|
||||
margin-top: -2px
|
||||
}
|
||||
|
||||
.box-main>.box-header .box-tools {
|
||||
position: relative;
|
||||
top: -5px;
|
||||
right: 0
|
||||
}
|
||||
|
||||
.box-main>.box-header .box-tools .btn {
|
||||
padding: 3px 10px 5px 10px;
|
||||
font-size: 14px;
|
||||
margin-bottom: 2px
|
||||
}
|
||||
|
||||
.box-main>.box-header .box-tools .btn-box-tool {
|
||||
padding: 4px 2px
|
||||
}
|
||||
|
||||
.box-main form>.box-footer,.nav-main form>.box-footer {
|
||||
background: #fafafa
|
||||
}
|
||||
|
||||
.box-main form>.box-footer .row,.nav-main form>.box-footer .row {
|
||||
margin: 5px 0 5px -25px
|
||||
}
|
||||
|
||||
|
||||
/** select2 <20><>ʽ<EFBFBD><EFBFBD> */
|
||||
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice {
|
||||
background-color: #1AB394;
|
||||
border-color: #1AB394;
|
||||
padding: 1px 10px;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove {
|
||||
margin-right: 5px;
|
||||
color: rgba(255,255,255,0.7)
|
||||
}
|
||||
|
||||
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
|
||||
color: #fff
|
||||
}
|
||||
|
||||
.select2-container .select2-selection--single .select2-selection__rendered {
|
||||
padding-right: 10px
|
||||
}
|
||||
|
||||
|
187
src/main/resources/static/ruoyi/js/common.js
Normal file
187
src/main/resources/static/ruoyi/js/common.js
Normal file
@ -0,0 +1,187 @@
|
||||
/**
|
||||
* 通用方法封装处理
|
||||
* Copyright (c) 2018 ruoyi
|
||||
*/
|
||||
/*
|
||||
参数解释:
|
||||
title 标题
|
||||
url 请求的url
|
||||
w 弹出层宽度(缺省调默认值)
|
||||
h 弹出层高度(缺省调默认值)
|
||||
*/
|
||||
function layer_show(title, url, w, h) {
|
||||
if (title == null || title == '') {
|
||||
title = false;
|
||||
};
|
||||
if (url == null || url == '') {
|
||||
url = "404.html";
|
||||
};
|
||||
if (w == null || w == '') {
|
||||
w = 800;
|
||||
};
|
||||
if (h == null || h == '') {
|
||||
h = ($(window).height() - 50);
|
||||
};
|
||||
layer.open({
|
||||
type: 2,
|
||||
area: [w + 'px', h + 'px'],
|
||||
fix: false,
|
||||
//不固定
|
||||
maxmin: true,
|
||||
shade: 0.4,
|
||||
title: title,
|
||||
content: url
|
||||
});
|
||||
}
|
||||
|
||||
function layer_showAuto(title, url) {
|
||||
layer_show(title, url, '', '');
|
||||
}
|
||||
|
||||
/*关闭弹出框口*/
|
||||
function layer_close() {
|
||||
var index = parent.layer.getFrameIndex(window.name);
|
||||
parent.layer.close(index);
|
||||
}
|
||||
|
||||
//状态码
|
||||
web_status = {
|
||||
SUCCESS: 0,
|
||||
FAIL: 500
|
||||
};
|
||||
|
||||
//对ajax的post方法再次封装
|
||||
_ajax_save = function(url, data) {
|
||||
var config = {
|
||||
url: url,
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: data,
|
||||
success: function(result) {
|
||||
handleSuccess(result);
|
||||
}
|
||||
};
|
||||
$.ajax(config)
|
||||
};
|
||||
|
||||
//对jquery的ajax方法再次封装
|
||||
_ajax = function(url, data, type, r) {
|
||||
if (!r) {
|
||||
return;
|
||||
}
|
||||
var config = {
|
||||
url: url,
|
||||
type: type,
|
||||
dataType: "json",
|
||||
data: data,
|
||||
success: function(result) {
|
||||
simpleSuccess(result);
|
||||
}
|
||||
};
|
||||
$.ajax(config)
|
||||
};
|
||||
|
||||
/** 返回结果处理 */
|
||||
function simpleSuccess(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
$.modalMsg(result.msg, "success");
|
||||
$.refreshTable();
|
||||
} else {
|
||||
$.modalAlert(result.msg, "error");
|
||||
}
|
||||
}
|
||||
|
||||
/** 操作结果处理 */
|
||||
function handleSuccess(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
parent.layer.msg("新增成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
|
||||
$.parentReload();
|
||||
});
|
||||
} else {
|
||||
$.modalAlert(result.msg, "error");
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
$(".onoffswitch-checkbox").on('click', function(){
|
||||
clickSwitch()
|
||||
});
|
||||
|
||||
var clickSwitch = function() {
|
||||
if ($(".onoffswitch-checkbox").is(':checked')) {
|
||||
alert("在ON的状态下");
|
||||
} else {
|
||||
alert("在OFF的状态下");
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
/** 时间格式化 */
|
||||
function formatDate(_date, _pattern) {
|
||||
var date = new Date(_date);
|
||||
var newDate = date.format(_pattern);
|
||||
return newDate;
|
||||
}
|
||||
|
||||
Date.prototype.format = function(format) {
|
||||
var date = {
|
||||
"M+" : this.getMonth() + 1,
|
||||
"d+" : this.getDate(),
|
||||
"h+" : this.getHours(),
|
||||
"m+" : this.getMinutes(),
|
||||
"s+" : this.getSeconds(),
|
||||
"q+" : Math.floor((this.getMonth() + 3) / 3),
|
||||
"S+" : this.getMilliseconds()
|
||||
};
|
||||
if (/(y+)/i.test(format)) {
|
||||
format = format.replace(RegExp.$1, (this.getFullYear() + '')
|
||||
.substr(4 - RegExp.$1.length));
|
||||
}
|
||||
for ( var k in date) {
|
||||
if (new RegExp("(" + k + ")").test(format)) {
|
||||
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? date[k]
|
||||
: ("00" + date[k]).substr(("" + date[k]).length));
|
||||
}
|
||||
}
|
||||
return format;
|
||||
}
|
||||
|
||||
// 创建选项卡
|
||||
function createMenuItem(dataUrl, menuName) {
|
||||
dataIndex = Math.floor(Math.random()*100),
|
||||
flag = true;
|
||||
if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
|
||||
|
||||
// 选项卡菜单已存在
|
||||
$('.menuTab', window.parent.document).each(function() {
|
||||
if ($(this).data('id') == dataUrl) {
|
||||
if (!$(this).hasClass('active')) {
|
||||
$(this).addClass('active').siblings('.menuTab').removeClass('active');
|
||||
scrollToTab(this);
|
||||
// 显示tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe', window.parent.document).each(function() {
|
||||
if ($(this).data('id') == dataUrl) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
flag = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
// 选项卡菜单不存在
|
||||
if (flag) {
|
||||
var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
|
||||
$('.menuTab', window.parent.document).removeClass('active');
|
||||
|
||||
// 添加选项卡对应的iframe
|
||||
var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
|
||||
$('.mainContent', window.parent.document).find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
|
||||
|
||||
// 添加选项卡
|
||||
$('.menuTabs .page-tabs-content', window.parent.document).append(str);
|
||||
scrollToTab($('.menuTab.active'));
|
||||
}
|
||||
return false;
|
||||
}
|
382
src/main/resources/static/ruoyi/js/index.js
Normal file
382
src/main/resources/static/ruoyi/js/index.js
Normal file
@ -0,0 +1,382 @@
|
||||
/**
|
||||
* 菜单处理
|
||||
*/
|
||||
$(function() {
|
||||
// MetsiMenu
|
||||
$('#side-menu').metisMenu();
|
||||
|
||||
//固定菜单栏
|
||||
$(function() {
|
||||
$('.sidebar-collapse').slimScroll({
|
||||
height: '100%',
|
||||
railOpacity: 0.9,
|
||||
alwaysVisible: false
|
||||
});
|
||||
});
|
||||
|
||||
// 菜单切换
|
||||
$('.navbar-minimalize').click(function() {
|
||||
$("body").toggleClass("mini-navbar");
|
||||
SmoothlyMenu();
|
||||
});
|
||||
|
||||
$('#side-menu>li').click(function() {
|
||||
if ($('body').hasClass('mini-navbar')) {
|
||||
NavToggle();
|
||||
}
|
||||
});
|
||||
$('#side-menu>li li a').click(function() {
|
||||
if ($(window).width() < 769) {
|
||||
NavToggle();
|
||||
}
|
||||
});
|
||||
|
||||
$('.nav-close').click(NavToggle);
|
||||
|
||||
//ios浏览器兼容性处理
|
||||
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
|
||||
$('#content-main').css('overflow-y', 'auto');
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$(window).bind("load resize",
|
||||
function() {
|
||||
if ($(this).width() < 769) {
|
||||
$('body').addClass('mini-navbar');
|
||||
$('.navbar-static-side').fadeIn();
|
||||
}
|
||||
});
|
||||
|
||||
function NavToggle() {
|
||||
$('.navbar-minimalize').trigger('click');
|
||||
}
|
||||
|
||||
function SmoothlyMenu() {
|
||||
if (!$('body').hasClass('mini-navbar')) {
|
||||
$('#side-menu').hide();
|
||||
setTimeout(function() {
|
||||
$('#side-menu').fadeIn(500);
|
||||
},
|
||||
100);
|
||||
} else if ($('body').hasClass('fixed-sidebar')) {
|
||||
$('#side-menu').hide();
|
||||
setTimeout(function() {
|
||||
$('#side-menu').fadeIn(500);
|
||||
},
|
||||
300);
|
||||
} else {
|
||||
$('#side-menu').removeAttr('style');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* iframe处理
|
||||
*/
|
||||
$(function() {
|
||||
//计算元素集合的总宽度
|
||||
function calSumWidth(elements) {
|
||||
var width = 0;
|
||||
$(elements).each(function() {
|
||||
width += $(this).outerWidth(true);
|
||||
});
|
||||
return width;
|
||||
}
|
||||
|
||||
//滚动到指定选项卡
|
||||
function scrollToTab(element) {
|
||||
var marginLeftVal = calSumWidth($(element).prevAll()),
|
||||
marginRightVal = calSumWidth($(element).nextAll());
|
||||
// 可视区域非tab宽度
|
||||
var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
|
||||
//可视区域tab宽度
|
||||
var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
|
||||
//实际滚动宽度
|
||||
var scrollVal = 0;
|
||||
if ($(".page-tabs-content").outerWidth() < visibleWidth) {
|
||||
scrollVal = 0;
|
||||
} else if (marginRightVal <= (visibleWidth - $(element).outerWidth(true) - $(element).next().outerWidth(true))) {
|
||||
if ((visibleWidth - $(element).next().outerWidth(true)) > marginRightVal) {
|
||||
scrollVal = marginLeftVal;
|
||||
var tabElement = element;
|
||||
while ((scrollVal - $(tabElement).outerWidth()) > ($(".page-tabs-content").outerWidth() - visibleWidth)) {
|
||||
scrollVal -= $(tabElement).prev().outerWidth();
|
||||
tabElement = $(tabElement).prev();
|
||||
}
|
||||
}
|
||||
} else if (marginLeftVal > (visibleWidth - $(element).outerWidth(true) - $(element).prev().outerWidth(true))) {
|
||||
scrollVal = marginLeftVal - $(element).prev().outerWidth(true);
|
||||
}
|
||||
$('.page-tabs-content').animate({
|
||||
marginLeft: 0 - scrollVal + 'px'
|
||||
},
|
||||
"fast");
|
||||
}
|
||||
|
||||
//查看左侧隐藏的选项卡
|
||||
function scrollTabLeft() {
|
||||
var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
|
||||
// 可视区域非tab宽度
|
||||
var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
|
||||
//可视区域tab宽度
|
||||
var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
|
||||
//实际滚动宽度
|
||||
var scrollVal = 0;
|
||||
if ($(".page-tabs-content").width() < visibleWidth) {
|
||||
return false;
|
||||
} else {
|
||||
var tabElement = $(".menuTab:first");
|
||||
var offsetVal = 0;
|
||||
while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { //找到离当前tab最近的元素
|
||||
offsetVal += $(tabElement).outerWidth(true);
|
||||
tabElement = $(tabElement).next();
|
||||
}
|
||||
offsetVal = 0;
|
||||
if (calSumWidth($(tabElement).prevAll()) > visibleWidth) {
|
||||
while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
|
||||
offsetVal += $(tabElement).outerWidth(true);
|
||||
tabElement = $(tabElement).prev();
|
||||
}
|
||||
scrollVal = calSumWidth($(tabElement).prevAll());
|
||||
}
|
||||
}
|
||||
$('.page-tabs-content').animate({
|
||||
marginLeft: 0 - scrollVal + 'px'
|
||||
},
|
||||
"fast");
|
||||
}
|
||||
|
||||
//查看右侧隐藏的选项卡
|
||||
function scrollTabRight() {
|
||||
var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
|
||||
// 可视区域非tab宽度
|
||||
var tabOuterWidth = calSumWidth($(".content-tabs").children().not(".menuTabs"));
|
||||
//可视区域tab宽度
|
||||
var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
|
||||
//实际滚动宽度
|
||||
var scrollVal = 0;
|
||||
if ($(".page-tabs-content").width() < visibleWidth) {
|
||||
return false;
|
||||
} else {
|
||||
var tabElement = $(".menuTab:first");
|
||||
var offsetVal = 0;
|
||||
while ((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) { //找到离当前tab最近的元素
|
||||
offsetVal += $(tabElement).outerWidth(true);
|
||||
tabElement = $(tabElement).next();
|
||||
}
|
||||
offsetVal = 0;
|
||||
while ((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
|
||||
offsetVal += $(tabElement).outerWidth(true);
|
||||
tabElement = $(tabElement).next();
|
||||
}
|
||||
scrollVal = calSumWidth($(tabElement).prevAll());
|
||||
if (scrollVal > 0) {
|
||||
$('.page-tabs-content').animate({
|
||||
marginLeft: 0 - scrollVal + 'px'
|
||||
},
|
||||
"fast");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//通过遍历给菜单项加上data-index属性
|
||||
$(".menuItem").each(function(index) {
|
||||
if (!$(this).attr('data-index')) {
|
||||
$(this).attr('data-index', index);
|
||||
}
|
||||
});
|
||||
|
||||
function menuItem() {
|
||||
// 获取标识数据
|
||||
var dataUrl = $(this).attr('href'),
|
||||
dataIndex = $(this).data('index'),
|
||||
menuName = $.trim($(this).text()),
|
||||
flag = true;
|
||||
if (dataUrl == undefined || $.trim(dataUrl).length == 0) return false;
|
||||
|
||||
// 选项卡菜单已存在
|
||||
$('.menuTab').each(function() {
|
||||
if ($(this).data('id') == dataUrl) {
|
||||
if (!$(this).hasClass('active')) {
|
||||
$(this).addClass('active').siblings('.menuTab').removeClass('active');
|
||||
scrollToTab(this);
|
||||
// 显示tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == dataUrl) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
flag = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
// 选项卡菜单不存在
|
||||
if (flag) {
|
||||
var str = '<a href="javascript:;" class="active menuTab" data-id="' + dataUrl + '">' + menuName + ' <i class="fa fa-times-circle"></i></a>';
|
||||
$('.menuTab').removeClass('active');
|
||||
|
||||
// 添加选项卡对应的iframe
|
||||
var str1 = '<iframe class="RuoYi_iframe" name="iframe' + dataIndex + '" width="100%" height="100%" src="' + dataUrl + '" frameborder="0" data-id="' + dataUrl + '" seamless></iframe>';
|
||||
$('.mainContent').find('iframe.RuoYi_iframe').hide().parents('.mainContent').append(str1);
|
||||
|
||||
// 添加选项卡
|
||||
$('.menuTabs .page-tabs-content').append(str);
|
||||
scrollToTab($('.menuTab.active'));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$('.menuItem').on('click', menuItem);
|
||||
|
||||
// 关闭选项卡菜单
|
||||
function closeTab() {
|
||||
var closeTabId = $(this).parents('.menuTab').data('id');
|
||||
var currentWidth = $(this).parents('.menuTab').width();
|
||||
|
||||
// 当前元素处于活动状态
|
||||
if ($(this).parents('.menuTab').hasClass('active')) {
|
||||
|
||||
// 当前元素后面有同辈元素,使后面的一个元素处于活动状态
|
||||
if ($(this).parents('.menuTab').next('.menuTab').size()) {
|
||||
|
||||
var activeId = $(this).parents('.menuTab').next('.menuTab:eq(0)').data('id');
|
||||
$(this).parents('.menuTab').next('.menuTab:eq(0)').addClass('active');
|
||||
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == activeId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
var marginLeftVal = parseInt($('.page-tabs-content').css('margin-left'));
|
||||
if (marginLeftVal < 0) {
|
||||
$('.page-tabs-content').animate({
|
||||
marginLeft: (marginLeftVal + currentWidth) + 'px'
|
||||
},
|
||||
"fast");
|
||||
}
|
||||
|
||||
// 移除当前选项卡
|
||||
$(this).parents('.menuTab').remove();
|
||||
|
||||
// 移除tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == closeTabId) {
|
||||
$(this).remove();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 当前元素后面没有同辈元素,使当前元素的上一个元素处于活动状态
|
||||
if ($(this).parents('.menuTab').prev('.menuTab').size()) {
|
||||
var activeId = $(this).parents('.menuTab').prev('.menuTab:last').data('id');
|
||||
$(this).parents('.menuTab').prev('.menuTab:last').addClass('active');
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == activeId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// 移除当前选项卡
|
||||
$(this).parents('.menuTab').remove();
|
||||
|
||||
// 移除tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == closeTabId) {
|
||||
$(this).remove();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
// 当前元素不处于活动状态
|
||||
else {
|
||||
// 移除当前选项卡
|
||||
$(this).parents('.menuTab').remove();
|
||||
|
||||
// 移除相应tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == closeTabId) {
|
||||
$(this).remove();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
scrollToTab($('.menuTab.active'));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$('.menuTabs').on('click', '.menuTab i', closeTab);
|
||||
|
||||
//关闭其他选项卡
|
||||
function closeOtherTabs() {
|
||||
$('.page-tabs-content').children("[data-id]").not(":first").not(".active").each(function() {
|
||||
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
|
||||
$(this).remove();
|
||||
});
|
||||
$('.page-tabs-content').css("margin-left", "0");
|
||||
}
|
||||
$('.tabCloseOther').on('click', closeOtherTabs);
|
||||
|
||||
//滚动到已激活的选项卡
|
||||
function showActiveTab() {
|
||||
scrollToTab($('.menuTab.active'));
|
||||
}
|
||||
$('.tabShowActive').on('click', showActiveTab);
|
||||
|
||||
// 点击选项卡菜单
|
||||
function activeTab() {
|
||||
if (!$(this).hasClass('active')) {
|
||||
var currentId = $(this).data('id');
|
||||
// 显示tab对应的内容区
|
||||
$('.mainContent .RuoYi_iframe').each(function() {
|
||||
if ($(this).data('id') == currentId) {
|
||||
$(this).show().siblings('.RuoYi_iframe').hide();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$(this).addClass('active').siblings('.menuTab').removeClass('active');
|
||||
scrollToTab(this);
|
||||
}
|
||||
}
|
||||
|
||||
$('.menuTabs').on('click', '.menuTab', activeTab);
|
||||
|
||||
//刷新iframe
|
||||
function refreshTab() {
|
||||
var currentId = $('.page-tabs-content').find('.active').attr('data-id');
|
||||
var target = $('.RuoYi_iframe[data-id="' + currentId + '"]');
|
||||
var url = target.attr('src');
|
||||
target.attr('src', url).ready();
|
||||
}
|
||||
|
||||
// 刷新按钮
|
||||
$('.tabReload').on('click', refreshTab);
|
||||
|
||||
$('.menuTabs').on('dblclick', '.menuTab', refreshTab);
|
||||
|
||||
// 左移按扭
|
||||
$('.tabLeft').on('click', scrollTabLeft);
|
||||
|
||||
// 右移按扭
|
||||
$('.tabRight').on('click', scrollTabRight);
|
||||
|
||||
// 关闭全部
|
||||
$('.tabCloseAll').on('click',
|
||||
function() {
|
||||
$('.page-tabs-content').children("[data-id]").not(":first").each(function() {
|
||||
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').remove();
|
||||
$(this).remove();
|
||||
});
|
||||
$('.page-tabs-content').children("[data-id]:first").each(function() {
|
||||
$('.RuoYi_iframe[data-id="' + $(this).data('id') + '"]').show();
|
||||
$(this).addClass("active");
|
||||
});
|
||||
$('.page-tabs-content').css("margin-left", "0");
|
||||
});
|
||||
});
|
159
src/main/resources/static/ruoyi/js/ry-ui.js
Normal file
159
src/main/resources/static/ruoyi/js/ry-ui.js
Normal file
@ -0,0 +1,159 @@
|
||||
/**
|
||||
* 通用方法封装处理
|
||||
* Copyright (c) 2018 ruoyi
|
||||
*/
|
||||
$(function(){
|
||||
// 消息窗体
|
||||
$.modalMsg = function(content, type) {
|
||||
if (type != undefined) {
|
||||
var icon = "";
|
||||
if (type == 'warning') {
|
||||
icon = 0;
|
||||
}
|
||||
else if (type == 'success') {
|
||||
icon = 1;
|
||||
}
|
||||
else if (type == 'error') {
|
||||
icon = 2;
|
||||
}
|
||||
layer.msg(content, { icon: icon, time: 2000, shift: 0 });
|
||||
$(".layui-layer-msg").find('i.' + icon).parents('.layui-layer-msg').addClass('layui-layer-msg-' + type);
|
||||
} else {
|
||||
layer.msg(content);
|
||||
}
|
||||
}
|
||||
// 弹出窗体
|
||||
$.modalAlert = function(content, type) {
|
||||
var icon = "";
|
||||
if (type == 'warning') {
|
||||
icon = 0;
|
||||
} else if (type == 'success') {
|
||||
icon = 1;
|
||||
} else if (type == 'error') {
|
||||
icon = 2;
|
||||
} else {
|
||||
icon = 3;
|
||||
}
|
||||
layer.alert(content, {
|
||||
icon: icon,
|
||||
title: "系统提示",
|
||||
btn: ['确认'],
|
||||
btnclass: ['btn btn-primary'],
|
||||
});
|
||||
}
|
||||
// 确认窗体
|
||||
$.modalConfirm = function (content, callBack) {
|
||||
layer.confirm(content, {
|
||||
icon: 3,
|
||||
title: "系统提示",
|
||||
btn: ['确认', '取消'],
|
||||
btnclass: ['btn btn-primary', 'btn btn-danger'],
|
||||
}, function () {
|
||||
callBack(true);
|
||||
}, function () {
|
||||
callBack(false)
|
||||
});
|
||||
}
|
||||
// 关闭窗体
|
||||
$.modalClose = function () {
|
||||
var index = parent.layer.getFrameIndex(window.name); //先得到当前iframe层的索引
|
||||
var $IsdialogClose = top.$("#layui-layer" + index).find('.layui-layer-btn').find("#IsdialogClose");
|
||||
var IsClose = $IsdialogClose.is(":checked");
|
||||
if ($IsdialogClose.length == 0) {
|
||||
IsClose = true;
|
||||
}
|
||||
if (IsClose) {
|
||||
parent.layer.close(index);
|
||||
} else {
|
||||
parent.location.reload();
|
||||
}
|
||||
}
|
||||
// 刷新父窗体
|
||||
$.parentReload = function () {
|
||||
parent.location.reload();
|
||||
return false;
|
||||
}
|
||||
// 初始bootstrap table数据
|
||||
$.initTable = function (_columns, _url) {
|
||||
$('.bootstrap-table').bootstrapTable({
|
||||
method: 'get', // 请求方式(*)
|
||||
dataType: "json", // 返回格式(*)
|
||||
url: _url, // 请求后台的URL(*)
|
||||
pagination: true, // 是否显示分页(*)
|
||||
pageSize: 10, // 每页的记录行数(*)
|
||||
pageNumber: 1, // 初始化加载第一页,默认第一页
|
||||
pageList: [10, 25, 50], // 可供选择的每页的行数(*)
|
||||
search: true, // 是否显示搜索框功能
|
||||
singleSelect: false, // 是否禁止多选
|
||||
iconSize: 'outline', // 图标大小:undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
|
||||
toolbar: '#tableToolbar', // 指定工作栏
|
||||
sidePagination: "server", // 启用服务端分页
|
||||
showRefresh: true, // 是否显示刷新按钮
|
||||
showColumns: true, // 是否显示隐藏某列下拉框
|
||||
showToggle: true, // 是否显示详细视图和列表视图的切换按钮
|
||||
cache: false, // 是否使用缓存
|
||||
showExport: true, // 是否支持导出文件
|
||||
queryParams: function(params) {
|
||||
return {
|
||||
// 传递参数查询参数
|
||||
pageSize: params.limit,
|
||||
pageNum: params.offset / params.limit + 1,
|
||||
searchValue: params.search,
|
||||
orderByColumn: params.sort,
|
||||
isAsc: params.order
|
||||
};
|
||||
},
|
||||
columns: _columns
|
||||
});
|
||||
}
|
||||
//初始化表格树,并展开树
|
||||
$.initTreeTable = function (_id, _parentId, _columns, _url) {
|
||||
$.initTreeTable(_id, _parentId, _columns, _url, true);
|
||||
}
|
||||
//初始化表格树,_expandAll true展开 false 不展开
|
||||
$.initTreeTable = function (_id, _parentId, _columns, _url, _expandAll) {
|
||||
$('.bootstrap-table').bootstrapTreeTable({
|
||||
code : _id, // 用于设置父子关系
|
||||
parentCode : _parentId, // 用于设置父子关系
|
||||
type: 'get', // 请求方式(*)
|
||||
url: _url, // 请求后台的URL(*)
|
||||
ajaxParams : {}, // 请求数据的ajax的data属性
|
||||
expandColumn : '0', // 在哪一列上面显示展开按钮
|
||||
striped : false, // 是否各行渐变色
|
||||
bordered : true, // 是否显示边框
|
||||
expandAll : _expandAll, // 是否全部展开
|
||||
showRefresh: true, // 是否显示刷新按钮
|
||||
columns: _columns
|
||||
});
|
||||
}
|
||||
// 刷新bootstrap table数据
|
||||
$.refreshTable = function () {
|
||||
$('.bootstrap-table').bootstrapTable('refresh');
|
||||
}
|
||||
// 获取bootstrap table选中项
|
||||
$.getSelections = function (_id) {
|
||||
return $.map($('.bootstrap-table').bootstrapTable('getSelections'), function (row) {
|
||||
return row[_id];
|
||||
});
|
||||
}
|
||||
// 获取选中复选框项
|
||||
$.getCheckeds = function (_name) {
|
||||
var roleIds = "";
|
||||
$('input:checkbox[name="' + _name + '"]:checked').each(function(i) {
|
||||
if (0 == i) {
|
||||
roleIds = $(this).val();
|
||||
} else {
|
||||
roleIds += ("," + $(this).val());
|
||||
}
|
||||
});
|
||||
return roleIds;
|
||||
}
|
||||
// 复选框事件绑定
|
||||
if ($.fn.select2 !== undefined) {
|
||||
$("select.form-control:not(.noselect2)").each(function () {
|
||||
$(this).select2().on("change", function () {
|
||||
$(this).valid();
|
||||
})
|
||||
})
|
||||
}
|
||||
});
|
20
src/main/resources/static/ruoyi/monitor/job/add.js
Normal file
20
src/main/resources/static/ruoyi/monitor/job/add.js
Normal file
@ -0,0 +1,20 @@
|
||||
$("#form-job-add").validate({
|
||||
rules:{
|
||||
jobName:{
|
||||
required:true,
|
||||
},
|
||||
jobGroup:{
|
||||
required:true,
|
||||
},
|
||||
cronExpression:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
_ajax_save("/monitor/job/save", $("#form-job-add").serialize());
|
||||
}
|
20
src/main/resources/static/ruoyi/monitor/job/edit.js
Normal file
20
src/main/resources/static/ruoyi/monitor/job/edit.js
Normal file
@ -0,0 +1,20 @@
|
||||
$("#form-job-edit").validate({
|
||||
rules:{
|
||||
jobName:{
|
||||
required:true,
|
||||
},
|
||||
jobGroup:{
|
||||
required:true,
|
||||
},
|
||||
cronExpression:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
edit();
|
||||
}
|
||||
});
|
||||
|
||||
function edit() {
|
||||
_ajax_save("/monitor/job/save", $("#form-job-edit").serialize());
|
||||
}
|
119
src/main/resources/static/ruoyi/monitor/job/job.js
Normal file
119
src/main/resources/static/ruoyi/monitor/job/job.js
Normal file
@ -0,0 +1,119 @@
|
||||
var prefix = "/monitor/job"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'jobId',
|
||||
title: '任务编号'
|
||||
},
|
||||
{
|
||||
field: 'jobName',
|
||||
title: '任务名称'
|
||||
},
|
||||
{
|
||||
field: 'jobGroup',
|
||||
title: '任务组名'
|
||||
},
|
||||
{
|
||||
field: 'methodName',
|
||||
title: '方法名称'
|
||||
},
|
||||
{
|
||||
field: 'params',
|
||||
title: '方法参数'
|
||||
},
|
||||
{
|
||||
field: 'cronExpression',
|
||||
title: '执行表达式'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">暂停</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push(statusTools(row));
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" mce_href="#" onclick="edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" onclick="remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
function statusTools(row) {
|
||||
if (row.status == 1) {
|
||||
return '<a class="btn btn-primary btn-sm ' + statusFlag + '" href="#" title="启用" onclick="start(this,\'' + row.jobId + '\')"><i class="fa fa-check"></i></a> ';
|
||||
} else {
|
||||
return '<a class="btn btn-primary btn-sm ' + statusFlag + '" href="#" title="停用" onclick="stop(this,\'' + row.jobId + '\')"><i class="fa fa-minus"></i></a> ';
|
||||
}
|
||||
}
|
||||
|
||||
/*调度任务-停用*/
|
||||
function stop(obj, jobId) {
|
||||
$.modalConfirm("确认要停用吗?", function(r) {
|
||||
_ajax(prefix + "/changeStatus/", { "jobId": jobId, "status": 1 }, "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
/*调度任务-启用*/
|
||||
function start(obj, jobId) {
|
||||
$.modalConfirm("确认要启用吗?", function(r) {
|
||||
_ajax(prefix + "/changeStatus/", { "jobId": jobId, "status": 0 }, "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
/*调度任务-新增*/
|
||||
function add() {
|
||||
var url = prefix + '/add';
|
||||
layer_showAuto("新增调度任务", url);
|
||||
}
|
||||
|
||||
/*调度任务-修改*/
|
||||
function edit(jobId) {
|
||||
var url = prefix + '/edit/' + jobId;
|
||||
layer_showAuto("修改调度任务", url);
|
||||
}
|
||||
|
||||
// 单条删除
|
||||
function remove(id) {
|
||||
$.modalConfirm("确定要删除选中调度任务吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + id, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("jobId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
||||
|
||||
//调度日志查询
|
||||
function jobLog(id) {
|
||||
var url = '/monitor/jobLog';
|
||||
createMenuItem(url, "调度日志");
|
||||
}
|
77
src/main/resources/static/ruoyi/monitor/job/jobLog.js
Normal file
77
src/main/resources/static/ruoyi/monitor/job/jobLog.js
Normal file
@ -0,0 +1,77 @@
|
||||
var prefix = "/monitor/jobLog"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'jobLogId',
|
||||
title: '任务日志编号'
|
||||
},
|
||||
{
|
||||
field: 'jobName',
|
||||
title: '任务名称'
|
||||
},
|
||||
{
|
||||
field: 'jobGroup',
|
||||
title: '任务组名'
|
||||
},
|
||||
{
|
||||
field: 'methodName',
|
||||
title: '方法名称'
|
||||
},
|
||||
{
|
||||
field: 'params',
|
||||
title: '方法参数'
|
||||
},
|
||||
{
|
||||
field: 'jobMessage',
|
||||
title: '日志信息'
|
||||
},
|
||||
{
|
||||
field: 'isException',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">异常</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" onclick="remove(\'' + row.jobLogId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
// 单条删除
|
||||
function remove(jobLogId) {
|
||||
$.modalConfirm("确定要删除选中岗位吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + jobLogId, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("jobLogId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
var prefix = "/monitor/logininfor"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'infoId',
|
||||
title: '访问编号'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'ipaddr',
|
||||
title: '主机'
|
||||
},
|
||||
{
|
||||
field: 'browser',
|
||||
title: '浏览器'
|
||||
},
|
||||
{
|
||||
field: 'os',
|
||||
title: '操作系统'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">成功</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">失败</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'msg',
|
||||
title: '操作信息'
|
||||
},
|
||||
{
|
||||
field: 'loginTime',
|
||||
title: '登录时间'
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("infoId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
80
src/main/resources/static/ruoyi/monitor/online/online.js
Normal file
80
src/main/resources/static/ruoyi/monitor/online/online.js
Normal file
@ -0,0 +1,80 @@
|
||||
var prefix = "/monitor/online"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'sessionId',
|
||||
title: '会话编号'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'deptName',
|
||||
title: '部门名称'
|
||||
},
|
||||
{
|
||||
field: 'ipaddr',
|
||||
title: '主机'
|
||||
},
|
||||
{
|
||||
field: 'browser',
|
||||
title: '浏览器'
|
||||
},
|
||||
{
|
||||
field: 'os',
|
||||
title: '操作系统'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 'on_line') {
|
||||
return '<span class="label label-success">在线</span>';
|
||||
} else if (value == 'off_line') {
|
||||
return '<span class="label label-primary">离线</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'startTimestamp',
|
||||
title: '登录时间'
|
||||
},
|
||||
{
|
||||
field: 'lastAccessTime',
|
||||
title: '最后访问时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var msg = '<a class="btn btn-warning btn-sm ' + forceFlag + '" href="#" title="强退" onclick="forceLogout(\'' + row.sessionId + '\')"><i class="fa fa-remove"></i></a> ';
|
||||
return msg;
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
// 单条强退
|
||||
function forceLogout(id) {
|
||||
$.modalConfirm("确定要强制选中用户下线吗?", function(r) {
|
||||
_ajax(prefix + "/forceLogout/" + id, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量强退
|
||||
function batchForceLogout() {
|
||||
var rows = $.getSelections("sessionId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchForceLogout', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
76
src/main/resources/static/ruoyi/monitor/operlog/operlog.js
Normal file
76
src/main/resources/static/ruoyi/monitor/operlog/operlog.js
Normal file
@ -0,0 +1,76 @@
|
||||
var prefix = "/monitor/operlog"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'operId',
|
||||
title: '日志编号'
|
||||
},
|
||||
{
|
||||
field: 'title',
|
||||
title: '模块'
|
||||
},
|
||||
{
|
||||
field: 'action',
|
||||
title: '功能'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'deptName',
|
||||
title: '部门名称'
|
||||
},
|
||||
{
|
||||
field: 'operIp',
|
||||
title: '主机'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '操作状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">成功</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">异常</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'operTime',
|
||||
title: '操作时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + detailFlag + '" href="#" title="详细信息" onclick="detail(\'' + row.operId + '\')"><i class="fa fa-search"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
/*操作日志-详细*/
|
||||
function detail(id) {
|
||||
var url = prefix + '/detail/' + id;
|
||||
layer_showAuto("操作日志详细", url);
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("operId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
44
src/main/resources/static/ruoyi/system/dept/add.js
Normal file
44
src/main/resources/static/ruoyi/system/dept/add.js
Normal file
@ -0,0 +1,44 @@
|
||||
$("#form-dept-add").validate({
|
||||
rules:{
|
||||
deptName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: "/system/dept/checkDeptNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
"deptName" : function() {
|
||||
return $("input[name='deptName']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
orderNum:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"deptName": {
|
||||
remote: "部门已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
function update() {
|
||||
_ajax_save("/system/dept/save", $("#form-dept-add").serialize());
|
||||
}
|
||||
|
||||
/*部门管理-新增-选择父部门树*/
|
||||
function selectDeptTree() {
|
||||
var deptId = $("#treeId").val();
|
||||
var url = "/system/dept/selectDeptTree/" + deptId;
|
||||
layer_show("选择部门", url, '380', '380');
|
||||
}
|
80
src/main/resources/static/ruoyi/system/dept/dept.js
Normal file
80
src/main/resources/static/ruoyi/system/dept/dept.js
Normal file
@ -0,0 +1,80 @@
|
||||
var prefix = "/system/dept"
|
||||
|
||||
window.onload = function() {
|
||||
loading();
|
||||
};
|
||||
|
||||
function loading() {
|
||||
var columns = [{
|
||||
field : 'deptName',
|
||||
title : '部门名称'
|
||||
},
|
||||
{
|
||||
field : 'orderNum',
|
||||
title : '排序'
|
||||
},
|
||||
{
|
||||
field : 'status',
|
||||
title : '状态',
|
||||
formatter : function(item, index) {
|
||||
if (item.status == '0') {
|
||||
return '<span class="label label-primary">正常</span>';
|
||||
} else if (item.status == '1') {
|
||||
return '<span class="label label-danger">禁用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
title : '创建时间',
|
||||
formatter : function(row, index) {
|
||||
return formatDate(row.createTime,"yyyy-MM-dd");
|
||||
}
|
||||
},
|
||||
{
|
||||
title : '操作',
|
||||
align : 'center',
|
||||
formatter : function(row, index) {
|
||||
if(row.parentId != 0) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" mce_href="#" onclick="edit(\'' + row.deptId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + addFlag + '" href="#" title="新增" mce_href="#" onclick="add(\'' + row.deptId + '\')"><i class="fa fa-plus"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" mce_href="#" onclick="remove(\'' + row.deptId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTreeTable('deptId', 'parentId', columns, url);
|
||||
}
|
||||
|
||||
/*部门管理-新增*/
|
||||
function add(deptId) {
|
||||
var url = prefix + '/add/' + deptId;
|
||||
layer_showAuto("新增部门", url);
|
||||
}
|
||||
|
||||
/*部门管理-修改*/
|
||||
function edit(deptId) {
|
||||
var url = prefix + '/edit/' + deptId;
|
||||
layer_showAuto("修改部门", url);
|
||||
}
|
||||
|
||||
/*部门管理-删除*/
|
||||
function remove(deptId) {
|
||||
layer.confirm("确定要删除部门吗?",{icon: 3, title:'提示'},function(index){
|
||||
$.ajax({
|
||||
type : 'get',
|
||||
url: prefix + "/remove/" + deptId,
|
||||
success : function(r) {
|
||||
if (r.code == 0) {
|
||||
layer.msg(r.msg, { icon: 1, time: 1000 });
|
||||
loading();
|
||||
} else {
|
||||
layer.alert(r.msg, { icon: 2, title: "系统提示" });
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
47
src/main/resources/static/ruoyi/system/dept/edit.js
Normal file
47
src/main/resources/static/ruoyi/system/dept/edit.js
Normal file
@ -0,0 +1,47 @@
|
||||
$("#form-dept-edit").validate({
|
||||
rules:{
|
||||
deptName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: "/system/dept/checkDeptNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
"deptId": function() {
|
||||
return $("input[name='deptId']").val();
|
||||
},
|
||||
"deptName": function() {
|
||||
return $("input[name='deptName']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
orderNum:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"deptName": {
|
||||
remote: "部门已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
function update() {
|
||||
_ajax_save("/system/dept/save", $("#form-dept-edit").serialize());
|
||||
}
|
||||
|
||||
/*部门管理-修改-选择部门树*/
|
||||
function selectDeptTree() {
|
||||
var deptId = $("#treeId").val();
|
||||
var url = "/system/dept/selectDeptTree/" + deptId;
|
||||
layer_show("选择部门", url, '380', '380');
|
||||
}
|
147
src/main/resources/static/ruoyi/system/dept/tree.js
Normal file
147
src/main/resources/static/ruoyi/system/dept/tree.js
Normal file
@ -0,0 +1,147 @@
|
||||
// 树结构初始化加载
|
||||
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
|
||||
callback:{onClick:function(event, treeId, treeNode){
|
||||
var treeId = treeNode.id;
|
||||
var treeName = treeNode.name;
|
||||
$("#treeId").val(treeId);
|
||||
$("#treeName").val(treeName);
|
||||
}}
|
||||
}, tree, loadTree = function(){
|
||||
$.get("/system/dept/treeData", function(data) {
|
||||
var treeName = $("#treeName").val();
|
||||
tree = $.fn.zTree.init($("#tree"), setting, data);
|
||||
// 展开第一级节点
|
||||
var nodes = tree.getNodesByParam("level", 0);
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
tree.expandNode(nodes[i], true, false, false);
|
||||
selectCheckNode(treeName,nodes[i]);
|
||||
}
|
||||
// 展开第二级节点
|
||||
nodes = tree.getNodesByParam("level", 1);
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
tree.expandNode(nodes[i], true, false, false);
|
||||
selectCheckNode(treeName,nodes[i]);
|
||||
}
|
||||
// 展开第二级节点
|
||||
nodes = tree.getNodesByParam("level", 2);
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
tree.expandNode(nodes[i], true, false, false);
|
||||
selectCheckNode(treeName,nodes[i]);
|
||||
}
|
||||
}, null, null, "正在加载,请稍后...");
|
||||
};
|
||||
|
||||
$(function() {
|
||||
loadTree();
|
||||
});
|
||||
|
||||
function selectCheckNode(treeName, node) {
|
||||
if(treeName == node.name){
|
||||
tree.selectNode(node, true);
|
||||
}
|
||||
}
|
||||
|
||||
$('#btnExpand').click(function() {
|
||||
tree.expandAll(true);
|
||||
});
|
||||
$('#btnCollapse').click(function() {
|
||||
tree.expandAll(false);
|
||||
});
|
||||
|
||||
function loadUser(){
|
||||
var treeId = $("#treeId").val();
|
||||
var treeName = $("#treeName").val();
|
||||
parent.$("#treeId").val(treeId);
|
||||
parent.$("#treeName").val(treeName);
|
||||
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
|
||||
parent.layer.close(index);
|
||||
}
|
||||
|
||||
var lastValue = "", nodeList = [], key = $("#keyword");
|
||||
key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
|
||||
key.bind("keydown", function (e){if(e.which == 13){searchNode();}});
|
||||
|
||||
function focusKey(e) {
|
||||
if (key.hasClass("empty")) {
|
||||
key.removeClass("empty");
|
||||
}
|
||||
}
|
||||
|
||||
function blurKey(e) {
|
||||
if (key.get(0).value === "") {
|
||||
key.addClass("empty");
|
||||
}
|
||||
searchNode(e);
|
||||
}
|
||||
|
||||
function searchNode() {
|
||||
var value = $.trim(key.get(0).value);
|
||||
var keyType = "name";
|
||||
if (lastValue === value) {
|
||||
return;
|
||||
}
|
||||
lastValue = value;
|
||||
var nodes = tree.getNodes();
|
||||
if (value == "") {
|
||||
showAllNode(nodes);
|
||||
return;
|
||||
}
|
||||
hideAllNode(nodes);
|
||||
nodeList = tree.getNodesByParamFuzzy(keyType, value);
|
||||
updateNodes(nodeList);
|
||||
}
|
||||
|
||||
function hideAllNode(nodes){
|
||||
var tree = $.fn.zTree.getZTreeObj("tree");
|
||||
nodes = tree.transformToArray(nodes);
|
||||
for(var i=nodes.length-1; i>=0; i--) {
|
||||
tree.hideNode(nodes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function showAllNode(nodes){
|
||||
nodes = tree.transformToArray(nodes);
|
||||
for(var i=nodes.length-1; i>=0; i--) {
|
||||
if(nodes[i].getParentNode()!=null){
|
||||
tree.expandNode(nodes[i],false,false,false,false);
|
||||
}else{
|
||||
tree.expandNode(nodes[i],true,true,false,false);
|
||||
}
|
||||
tree.showNode(nodes[i]);
|
||||
showAllNode(nodes[i].children);
|
||||
}
|
||||
}
|
||||
|
||||
function updateNodes(nodeList) {
|
||||
tree.showNodes(nodeList);
|
||||
for(var i=0, l=nodeList.length; i<l; i++) {
|
||||
var treeNode = nodeList[i];
|
||||
showChildren(treeNode);
|
||||
showParent(treeNode)
|
||||
}
|
||||
}
|
||||
|
||||
function showChildren(treeNode){
|
||||
if (treeNode.isParent){
|
||||
for(var idx in treeNode.children){
|
||||
var node = treeNode.children[idx];
|
||||
tree.showNode(node);
|
||||
showChildren(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
function showParent(treeNode){
|
||||
var parentNode;
|
||||
while((parentNode = treeNode.getParentNode()) != null){
|
||||
tree.showNode(parentNode);
|
||||
tree.expandNode(parentNode, true, false, false);
|
||||
treeNode = parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
function search($this) {
|
||||
$('#search').slideToggle(200);
|
||||
$('#btnShow').toggle();
|
||||
$('#btnHide').toggle();
|
||||
$('#keyword').focus();
|
||||
}
|
17
src/main/resources/static/ruoyi/system/dict/data/add.js
Normal file
17
src/main/resources/static/ruoyi/system/dict/data/add.js
Normal file
@ -0,0 +1,17 @@
|
||||
$("#form-dict-add").validate({
|
||||
rules:{
|
||||
dictLabel:{
|
||||
required:true,
|
||||
},
|
||||
dictValue:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
_ajax_save("/system/dict/data/save", $("#form-dict-add").serialize());
|
||||
}
|
91
src/main/resources/static/ruoyi/system/dict/data/data.js
Normal file
91
src/main/resources/static/ruoyi/system/dict/data/data.js
Normal file
@ -0,0 +1,91 @@
|
||||
var prefix = "/system/dict/data"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'dictCode',
|
||||
title: '字典编码'
|
||||
},
|
||||
{
|
||||
field: 'dictLabel',
|
||||
title: '字典标签'
|
||||
},
|
||||
{
|
||||
field: 'dictValue',
|
||||
title: '字典键值'
|
||||
},
|
||||
{
|
||||
field: 'dictSort',
|
||||
title: '字典排序'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '操作状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">禁用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'remark',
|
||||
title: '备注'
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑字典" mce_href="#" onclick="edit(\'' + row.dictCode + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" mce_href="#" onclick="remove(\'' + row.dictCode + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list?dictType=" + $("#dictType").val();
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
/*字典管理-新增*/
|
||||
function add() {
|
||||
var url = prefix + '/add/' + $("#dictType").val();
|
||||
layer_showAuto("新增字典类型", url);
|
||||
}
|
||||
|
||||
/*角色管理-修改*/
|
||||
function edit(dictCode) {
|
||||
var url = prefix + '/edit/' + dictCode;
|
||||
layer_showAuto("修改字典类型", url);
|
||||
}
|
||||
|
||||
/*字典列表-详细*/
|
||||
function detail(id) {
|
||||
createMenuItem(prefix + '/detail', "字典数据");
|
||||
}
|
||||
|
||||
//单条删除
|
||||
function remove(id) {
|
||||
$.modalConfirm("确定要删除选中字典数据吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + id, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("dictCode");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
17
src/main/resources/static/ruoyi/system/dict/data/edit.js
Normal file
17
src/main/resources/static/ruoyi/system/dict/data/edit.js
Normal file
@ -0,0 +1,17 @@
|
||||
$("#form-dict-edit").validate({
|
||||
rules:{
|
||||
dictLabel:{
|
||||
required:true,
|
||||
},
|
||||
dictValue:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
function update() {
|
||||
_ajax_save("/system/dict/data/save", $("#form-dict-edit").serialize());
|
||||
}
|
37
src/main/resources/static/ruoyi/system/dict/type/add.js
Normal file
37
src/main/resources/static/ruoyi/system/dict/type/add.js
Normal file
@ -0,0 +1,37 @@
|
||||
$("#form-dict-add").validate({
|
||||
rules:{
|
||||
dictName:{
|
||||
required:true,
|
||||
},
|
||||
dictType:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
remote: {
|
||||
url: "/system/dict/checkDictTypeUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
name : function() {
|
||||
return $.trim($("#dictType").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"dictType": {
|
||||
remote: "该字典类型已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
_ajax_save("/system/dict/save", $("#form-dict-add").serialize());
|
||||
}
|
40
src/main/resources/static/ruoyi/system/dict/type/edit.js
Normal file
40
src/main/resources/static/ruoyi/system/dict/type/edit.js
Normal file
@ -0,0 +1,40 @@
|
||||
$("#form-dict-edit").validate({
|
||||
rules:{
|
||||
dictName:{
|
||||
required:true,
|
||||
},
|
||||
dictType:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
remote: {
|
||||
url: "/system/dict/checkDictTypeUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
dictId : function() {
|
||||
return $.trim($("#dictId").val());
|
||||
},
|
||||
dictType : function() {
|
||||
return $.trim($("#dictType").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"dictType": {
|
||||
remote: "该字典类型已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
function update() {
|
||||
_ajax_save("/system/dict/save", $("#form-dict-edit").serialize());
|
||||
}
|
89
src/main/resources/static/ruoyi/system/dict/type/type.js
Normal file
89
src/main/resources/static/ruoyi/system/dict/type/type.js
Normal file
@ -0,0 +1,89 @@
|
||||
var prefix = "/system/dict"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'dictId',
|
||||
title: '字典主键'
|
||||
},
|
||||
{
|
||||
field: 'dictName',
|
||||
title: '字典名称'
|
||||
},
|
||||
{
|
||||
field: 'dictType',
|
||||
title: '字典类型'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '操作状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">禁用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'remark',
|
||||
title: '备注'
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" mce_href="#" onclick="edit(\'' + row.dictId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-info btn-sm ' + listFlag + '" href="#" title="详细" onclick="detail(\'' + row.dictId + '\')"><i class="fa fa-list-ul"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" mce_href="#" onclick="remove(\'' + row.dictId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
/*字典管理-新增*/
|
||||
function add() {
|
||||
var url = prefix + '/add';
|
||||
layer_showAuto("新增字典类型", url);
|
||||
}
|
||||
|
||||
/*角色管理-修改*/
|
||||
function edit(dictId) {
|
||||
var url = prefix + '/edit/' + dictId;
|
||||
layer_showAuto("修改字典类型", url);
|
||||
}
|
||||
|
||||
/*字典列表-详细*/
|
||||
function detail(dictId) {
|
||||
var url = prefix + '/detail/' + dictId;
|
||||
createMenuItem(url, "字典数据");
|
||||
}
|
||||
|
||||
//单条删除
|
||||
function remove(id) {
|
||||
$.modalConfirm("确定要删除选中字典吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + id, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("dictId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
83
src/main/resources/static/ruoyi/system/menu/add.js
Normal file
83
src/main/resources/static/ruoyi/system/menu/add.js
Normal file
@ -0,0 +1,83 @@
|
||||
$("#form-menu-add").validate({
|
||||
rules:{
|
||||
menuName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: "/system/menu/checkMenuNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
"menuName" : function() {
|
||||
return $.trim($("#menuName").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
orderNum:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"menuName": {
|
||||
remote: "菜单已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
$(function() {
|
||||
$("input[name='icon']").focus(function() {
|
||||
$(".icon-drop").show();
|
||||
});
|
||||
$("#form-menu-add").click(function(event) {
|
||||
var obj = event.srcElement || event.target;
|
||||
if (!$(obj).is("input[name='icon']")) {
|
||||
$(".icon-drop").hide();
|
||||
}
|
||||
});
|
||||
$(".icon-drop").find(".ico-list i").on("click", function() {
|
||||
$('#icon').val($(this).attr('class'));
|
||||
});
|
||||
$('input').on('ifChecked', function(event){
|
||||
var menuType = $(event.target).val();
|
||||
if (menuType == "M") {
|
||||
$("#url").parents(".form-group").hide();
|
||||
$("#perms").parents(".form-group").hide();
|
||||
$("#icon").parents(".form-group").show();
|
||||
} else if (menuType == "C") {
|
||||
$("#url").parents(".form-group").show();
|
||||
$("#perms").parents(".form-group").show();
|
||||
$("#icon").parents(".form-group").hide();
|
||||
} else if (menuType == "F") {
|
||||
$("#url").parents(".form-group").hide();
|
||||
$("#perms").parents(".form-group").show();
|
||||
$("#icon").parents(".form-group").hide();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
function add() {
|
||||
_ajax_save("/system/menu/save", $("#form-menu-add").serialize());
|
||||
}
|
||||
|
||||
/*菜单管理-新增-选择菜单树*/
|
||||
function selectMenuTree() {
|
||||
var menuId = $("#treeId").val();
|
||||
if(menuId > 0)
|
||||
{
|
||||
var url = "/system/menu/selectMenuTree/" + menuId;
|
||||
layer_show("选择菜单", url, '380', '380');
|
||||
}
|
||||
else
|
||||
{
|
||||
var url = "/system/menu/selectMenuTree/1";
|
||||
layer_show("选择菜单", url, '380', '380');
|
||||
}
|
||||
}
|
96
src/main/resources/static/ruoyi/system/menu/edit.js
Normal file
96
src/main/resources/static/ruoyi/system/menu/edit.js
Normal file
@ -0,0 +1,96 @@
|
||||
$(document).ready(function() {
|
||||
var menuType = $('input[name="menuType"]:checked').val();
|
||||
menuVisible(menuType);
|
||||
});
|
||||
|
||||
$("#form-menu-edit").validate({
|
||||
rules:{
|
||||
menuName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: "/system/menu/checkMenuNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
"menuId": function() {
|
||||
return $("input[name='menuId']").val();
|
||||
},
|
||||
"menuName": function() {
|
||||
return $("input[name='menuName']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
orderNum:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"menuName": {
|
||||
remote: "菜单已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
$(function() {
|
||||
$("input[name='icon']").focus(function() {
|
||||
$(".icon-drop").show();
|
||||
});
|
||||
$("#form-menu-edit").click(function(event) {
|
||||
var obj = event.srcElement || event.target;
|
||||
if (!$(obj).is("input[name='icon']")) {
|
||||
$(".icon-drop").hide();
|
||||
}
|
||||
});
|
||||
$(".icon-drop").find(".ico-list i").on("click",
|
||||
function() {
|
||||
$('#icon').val($(this).attr('class'));
|
||||
});
|
||||
$('input').on('ifChecked',
|
||||
function(event) {
|
||||
var menuType = $(event.target).val();
|
||||
menuVisible(menuType);
|
||||
});
|
||||
});
|
||||
|
||||
function menuVisible(menuType) {
|
||||
if (menuType == "M") {
|
||||
$("#url").parents(".form-group").hide();
|
||||
$("#perms").parents(".form-group").hide();
|
||||
$("#icon").parents(".form-group").show();
|
||||
} else if (menuType == "C") {
|
||||
$("#url").parents(".form-group").show();
|
||||
$("#perms").parents(".form-group").show();
|
||||
$("#icon").parents(".form-group").hide();
|
||||
} else if (menuType == "F") {
|
||||
$("#url").parents(".form-group").hide();
|
||||
$("#perms").parents(".form-group").show();
|
||||
$("#icon").parents(".form-group").hide();
|
||||
}
|
||||
}
|
||||
|
||||
function update() {
|
||||
_ajax_save("/system/menu/save", $("#form-menu-edit").serialize());
|
||||
}
|
||||
|
||||
/*菜单管理-修改-选择菜单树*/
|
||||
function selectMenuTree() {
|
||||
var menuId = $("#treeId").val();
|
||||
if(menuId > 0)
|
||||
{
|
||||
var url = "/system/menu/selectMenuTree/" + menuId;
|
||||
layer_show("选择菜单", url, '380', '380');
|
||||
}
|
||||
else
|
||||
{
|
||||
$.modalAlert("主菜单不能选择", "error");
|
||||
}
|
||||
}
|
104
src/main/resources/static/ruoyi/system/menu/menu.js
Normal file
104
src/main/resources/static/ruoyi/system/menu/menu.js
Normal file
@ -0,0 +1,104 @@
|
||||
var prefix = "/system/menu"
|
||||
|
||||
window.onload = function() {
|
||||
loading();
|
||||
};
|
||||
|
||||
function loading() {
|
||||
var columns = [
|
||||
{
|
||||
title : '菜单名称',
|
||||
field : 'menuName',
|
||||
formatter : function(row, index) {
|
||||
if(row.icon == null || row == "") {
|
||||
return row.menuName;
|
||||
} else {
|
||||
return '<i class="' + row.icon + '"></i> <span class="nav-label">' + row.menuName + '</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field : 'orderNum',
|
||||
title : '排序'
|
||||
},
|
||||
{
|
||||
field : 'url',
|
||||
title : '请求地址'
|
||||
},
|
||||
{
|
||||
title : '类型',
|
||||
field : 'menuType',
|
||||
align : 'center',
|
||||
valign : 'middle',
|
||||
formatter : function(item, index) {
|
||||
if (item.menuType == 'M') {
|
||||
return '<span class="label label-primary">目录</span>';
|
||||
}
|
||||
if (item.menuType == 'C') {
|
||||
return '<span class="label label-success">菜单</span>';
|
||||
}
|
||||
if (item.menuType == 'F') {
|
||||
return '<span class="label label-warning">按钮</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'visible',
|
||||
title: '可见',
|
||||
align: 'center',
|
||||
formatter: function(row, index) {
|
||||
if (row.visible == 0) {
|
||||
return '<span class="label label-success">显示</span>';
|
||||
} else if (row.visible == 1) {
|
||||
return '<span class="label label-danger">隐藏</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field : 'perms',
|
||||
title : '权限标识'
|
||||
},
|
||||
{
|
||||
title : '操作',
|
||||
align : 'center',
|
||||
formatter : function(row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" mce_href="#" onclick="edit(\'' + row.menuId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + addFlag + '" href="#" title="新增" mce_href="#" onclick="add(\'' + row.menuId + '\')"><i class="fa fa-plus"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" mce_href="#" onclick="remove(\'' + row.menuId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTreeTable('menuId', 'parentId', columns, url, false);
|
||||
}
|
||||
|
||||
/*菜单管理-新增*/
|
||||
function add(menuId) {
|
||||
var url = prefix + '/add/' + menuId;
|
||||
layer_showAuto("新增菜单", url);
|
||||
}
|
||||
|
||||
/*菜单管理-修改*/
|
||||
function edit(menuId) {
|
||||
var url = prefix + '/edit/' + menuId;
|
||||
layer_showAuto("修改菜单", url);
|
||||
}
|
||||
|
||||
/*菜单管理-删除*/
|
||||
function remove(menuId) {
|
||||
layer.confirm("确定要删除菜单吗?",{icon: 3, title:'提示'},function(index){
|
||||
$.ajax({
|
||||
type : 'get',
|
||||
url: prefix + "/remove/" + menuId,
|
||||
success : function(r) {
|
||||
if (r.code == 0) {
|
||||
layer.msg(r.msg, { icon: 1, time: 1000 });
|
||||
loading();
|
||||
} else {
|
||||
layer.alert(r.msg, { icon: 2, title: "系统提示" });
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
135
src/main/resources/static/ruoyi/system/menu/tree.js
Normal file
135
src/main/resources/static/ruoyi/system/menu/tree.js
Normal file
@ -0,0 +1,135 @@
|
||||
// 树结构初始化加载
|
||||
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
|
||||
callback:{onClick:function(event, treeId, treeNode){
|
||||
var treeId = treeNode.id;
|
||||
var treeName = treeNode.name;
|
||||
$("#treeId").val(treeId);
|
||||
$("#treeName").val(treeName);
|
||||
}}
|
||||
}, tree, loadTree = function(){
|
||||
$.get("/system/menu/menuTreeData", function(data) {
|
||||
var treeName = $("#treeName").val();
|
||||
tree = $.fn.zTree.init($("#tree"), setting, data);
|
||||
// 展开第一级节点
|
||||
var nodes = tree.getNodesByParam("level", 0);
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
tree.expandNode(nodes[i], false, false, false);
|
||||
selectCheckNode(treeName,nodes[i]);
|
||||
}
|
||||
}, null, null, "正在加载,请稍后...");
|
||||
};
|
||||
|
||||
$(function() {
|
||||
loadTree();
|
||||
});
|
||||
|
||||
function selectCheckNode(treeName, node) {
|
||||
if(treeName == node.name){
|
||||
tree.selectNode(node, true);
|
||||
}
|
||||
}
|
||||
|
||||
$('#btnExpand').click(function() {
|
||||
tree.expandAll(true);
|
||||
});
|
||||
$('#btnCollapse').click(function() {
|
||||
tree.expandAll(false);
|
||||
});
|
||||
|
||||
function loadMenu(){
|
||||
var treeId = $("#treeId").val();
|
||||
var treeName = $("#treeName").val();
|
||||
parent.$("#treeId").val(treeId);
|
||||
parent.$("#treeName").val(treeName);
|
||||
var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
|
||||
parent.layer.close(index);
|
||||
}
|
||||
|
||||
var lastValue = "", nodeList = [], key = $("#keyword");
|
||||
key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
|
||||
key.bind("keydown", function (e){if(e.which == 13){searchNode();}});
|
||||
|
||||
function focusKey(e) {
|
||||
if (key.hasClass("empty")) {
|
||||
key.removeClass("empty");
|
||||
}
|
||||
}
|
||||
|
||||
function blurKey(e) {
|
||||
if (key.get(0).value === "") {
|
||||
key.addClass("empty");
|
||||
}
|
||||
searchNode(e);
|
||||
}
|
||||
|
||||
function searchNode() {
|
||||
var value = $.trim(key.get(0).value);
|
||||
var keyType = "name";
|
||||
if (lastValue === value) {
|
||||
return;
|
||||
}
|
||||
lastValue = value;
|
||||
var nodes = tree.getNodes();
|
||||
if (value == "") {
|
||||
showAllNode(nodes);
|
||||
return;
|
||||
}
|
||||
hideAllNode(nodes);
|
||||
nodeList = tree.getNodesByParamFuzzy(keyType, value);
|
||||
updateNodes(nodeList);
|
||||
}
|
||||
|
||||
function hideAllNode(nodes){
|
||||
var tree = $.fn.zTree.getZTreeObj("tree");
|
||||
nodes = tree.transformToArray(nodes);
|
||||
for(var i=nodes.length-1; i>=0; i--) {
|
||||
tree.hideNode(nodes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
function showAllNode(nodes){
|
||||
nodes = tree.transformToArray(nodes);
|
||||
for(var i=nodes.length-1; i>=0; i--) {
|
||||
if(nodes[i].getParentNode()!=null){
|
||||
tree.expandNode(nodes[i],false,false,false,false);
|
||||
}else{
|
||||
tree.expandNode(nodes[i],true,true,false,false);
|
||||
}
|
||||
tree.showNode(nodes[i]);
|
||||
showAllNode(nodes[i].children);
|
||||
}
|
||||
}
|
||||
|
||||
function updateNodes(nodeList) {
|
||||
tree.showNodes(nodeList);
|
||||
for(var i=0, l=nodeList.length; i<l; i++) {
|
||||
var treeNode = nodeList[i];
|
||||
showChildren(treeNode);
|
||||
showParent(treeNode)
|
||||
}
|
||||
}
|
||||
|
||||
function showChildren(treeNode){
|
||||
if (treeNode.isParent){
|
||||
for(var idx in treeNode.children){
|
||||
var node = treeNode.children[idx];
|
||||
tree.showNode(node);
|
||||
showChildren(node);
|
||||
}
|
||||
}
|
||||
}
|
||||
function showParent(treeNode){
|
||||
var parentNode;
|
||||
while((parentNode = treeNode.getParentNode()) != null){
|
||||
tree.showNode(parentNode);
|
||||
tree.expandNode(parentNode, true, false, false);
|
||||
treeNode = parentNode;
|
||||
}
|
||||
}
|
||||
|
||||
function search($this) {
|
||||
$('#search').slideToggle(200);
|
||||
$('#btnShow').toggle();
|
||||
$('#btnHide').toggle();
|
||||
$('#keyword').focus();
|
||||
}
|
21
src/main/resources/static/ruoyi/system/post/add.js
Normal file
21
src/main/resources/static/ruoyi/system/post/add.js
Normal file
@ -0,0 +1,21 @@
|
||||
$("#form-post-add").validate({
|
||||
rules:{
|
||||
postCode:{
|
||||
required:true,
|
||||
},
|
||||
postName:{
|
||||
required:true,
|
||||
},
|
||||
postSort:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
/** 岗位管理-新增岗位 */
|
||||
function add() {
|
||||
_ajax_save("/system/post/save", $("#form-post-add").serialize());
|
||||
}
|
21
src/main/resources/static/ruoyi/system/post/edit.js
Normal file
21
src/main/resources/static/ruoyi/system/post/edit.js
Normal file
@ -0,0 +1,21 @@
|
||||
$("#form-post-edit").validate({
|
||||
rules:{
|
||||
postCode:{
|
||||
required:true,
|
||||
},
|
||||
postName:{
|
||||
required:true,
|
||||
},
|
||||
postSort:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
edit();
|
||||
}
|
||||
});
|
||||
|
||||
/** 岗位管理-修改岗位 */
|
||||
function edit() {
|
||||
_ajax_save("/system/post/save", $("#form-post-edit").serialize());
|
||||
}
|
82
src/main/resources/static/ruoyi/system/post/post.js
Normal file
82
src/main/resources/static/ruoyi/system/post/post.js
Normal file
@ -0,0 +1,82 @@
|
||||
var prefix = "/system/post"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'postId',
|
||||
title: '岗位编号'
|
||||
},
|
||||
{
|
||||
field: 'postCode',
|
||||
title: '岗位编码'
|
||||
},
|
||||
{
|
||||
field: 'postName',
|
||||
title: '岗位名称'
|
||||
},
|
||||
{
|
||||
field: 'postSort',
|
||||
title: '显示顺序'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" mce_href="#" onclick="edit(\'' + row.postId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" onclick="remove(\'' + row.postId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
/*岗位管理-新增*/
|
||||
function add() {
|
||||
var url = prefix + '/add';
|
||||
layer_showAuto("新增岗位", url);
|
||||
}
|
||||
|
||||
/*岗位管理-修改*/
|
||||
function edit(postId) {
|
||||
var url = prefix + '/edit/' + postId;
|
||||
layer_showAuto("修改岗位", url);
|
||||
}
|
||||
|
||||
// 单条删除
|
||||
function remove(id) {
|
||||
$.modalConfirm("确定要删除选中岗位吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + id, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("postId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
102
src/main/resources/static/ruoyi/system/role/add.js
Normal file
102
src/main/resources/static/ruoyi/system/role/add.js
Normal file
@ -0,0 +1,102 @@
|
||||
// 树结构初始化加载
|
||||
var setting = {
|
||||
check:{enable:true,nocheckInherit:true,chkboxType:{"Y":"ps","N":"ps"}},
|
||||
view:{selectedMulti:false,nameIsHTML: true},
|
||||
data:{simpleData:{enable:true},key:{title:"title"}},
|
||||
callback:{
|
||||
beforeClick: function (treeId, treeNode, clickFlag) {
|
||||
var menuTrees = $.fn.zTree.getZTreeObj(treeId);
|
||||
menuTrees.checkNode(treeNode, !treeNode.checked, true, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}, menuTrees, loadTree = function(){
|
||||
$.get("/system/menu/roleMenuTreeData", function(data) {
|
||||
menuTrees = $.fn.zTree.init($("#menuTrees"), setting, data); //.expandAll(true);
|
||||
}, null, null, "正在加载,请稍后...");
|
||||
};loadTree();
|
||||
|
||||
$("#form-role-add").validate({
|
||||
rules:{
|
||||
roleName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: "/system/role/checkRoleNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
"roleName" : function() {
|
||||
return $.trim($("#roleName").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
roleKey:{
|
||||
required:true,
|
||||
},
|
||||
roleSort:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"roleName": {
|
||||
remote: "角色已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
function getCheckeds() {
|
||||
var menuIds = "";
|
||||
var treeNodes = menuTrees.getCheckedNodes(true);
|
||||
for (var i = 0; i < treeNodes.length; i++) {
|
||||
if (0 == i) {
|
||||
menuIds = treeNodes[i].id;
|
||||
} else {
|
||||
menuIds += ("," + treeNodes[i].id);
|
||||
}
|
||||
}
|
||||
return menuIds;
|
||||
}
|
||||
|
||||
function add() {
|
||||
var roleName = $("input[name='roleName']").val();
|
||||
var roleKey = $("input[name='roleKey']").val();
|
||||
var roleSort = $("input[name='roleSort']").val();
|
||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||
var remark = $("input[name='remark']").val();
|
||||
var menuIds = getCheckeds();
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : "/system/role/save",
|
||||
data : {
|
||||
"roleName": roleName,
|
||||
"roleKey": roleKey,
|
||||
"roleSort": roleSort,
|
||||
"status": status,
|
||||
"remark": remark,
|
||||
"menuIds": menuIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modalAlert("系统错误", "error");
|
||||
},
|
||||
success : function(data) {
|
||||
if (data.code == 0) {
|
||||
parent.layer.msg("新增成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
|
||||
$.parentReload();
|
||||
});
|
||||
} else {
|
||||
$.modalAlert(data.msg, "error");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
107
src/main/resources/static/ruoyi/system/role/edit.js
Normal file
107
src/main/resources/static/ruoyi/system/role/edit.js
Normal file
@ -0,0 +1,107 @@
|
||||
// 树结构初始化加载
|
||||
var setting = {
|
||||
check:{enable:true,nocheckInherit:true,chkboxType:{"Y":"ps","N":"ps"}},
|
||||
view:{selectedMulti:false,nameIsHTML: true},
|
||||
data:{simpleData:{enable:true},key:{title:"title"}},
|
||||
callback:{
|
||||
beforeClick: function (treeId, treeNode, clickFlag) {
|
||||
var menuTrees = $.fn.zTree.getZTreeObj(treeId);
|
||||
menuTrees.checkNode(treeNode, !treeNode.checked, true, true);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}, menuTrees, loadTree = function(){
|
||||
$.get("/system/menu/roleMenuTreeData?roleId=" + $("#roleId").val(), function(data) {
|
||||
menuTrees = $.fn.zTree.init($("#menuTrees"), setting, data); //.expandAll(true);
|
||||
}, null, null, "正在加载,请稍后...");
|
||||
};loadTree();
|
||||
|
||||
$("#form-role-edit").validate({
|
||||
rules:{
|
||||
roleName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: "/system/role/checkRoleNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
"roleId": function() {
|
||||
return $("input[name='roleId']").val();
|
||||
},
|
||||
"roleName": function() {
|
||||
return $("input[name='roleName']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
roleKey:{
|
||||
required:true,
|
||||
},
|
||||
roleSort:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"roleName": {
|
||||
remote: "角色已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
function getCheckeds() {
|
||||
var menuIds = "";
|
||||
var treeNodes = menuTrees.getCheckedNodes(true);
|
||||
for (var i = 0; i < treeNodes.length; i++) {
|
||||
if (0 == i) {
|
||||
menuIds = treeNodes[i].id;
|
||||
} else {
|
||||
menuIds += ("," + treeNodes[i].id);
|
||||
}
|
||||
}
|
||||
return menuIds;
|
||||
}
|
||||
|
||||
function update() {
|
||||
var roleId = $("input[name='roleId']").val();
|
||||
var roleName = $("input[name='roleName']").val();
|
||||
var roleKey = $("input[name='roleKey']").val();
|
||||
var roleSort = $("input[name='roleSort']").val();
|
||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||
var remark = $("input[name='remark']").val();
|
||||
var menuIds = getCheckeds();
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : "/system/role/save",
|
||||
data : {
|
||||
"roleId": roleId,
|
||||
"roleName": roleName,
|
||||
"roleKey": roleKey,
|
||||
"roleSort": roleSort,
|
||||
"status": status,
|
||||
"remark": remark,
|
||||
"menuIds": menuIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modalAlert("系统错误", "error");
|
||||
},
|
||||
success : function(data) {
|
||||
if (data.code == 0) {
|
||||
parent.layer.msg("修改成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
|
||||
$.parentReload();
|
||||
});
|
||||
} else {
|
||||
$.modalAlert(data.msg, "error");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
82
src/main/resources/static/ruoyi/system/role/role.js
Normal file
82
src/main/resources/static/ruoyi/system/role/role.js
Normal file
@ -0,0 +1,82 @@
|
||||
var prefix = "/system/role"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'roleId',
|
||||
title: '角色编号'
|
||||
},
|
||||
{
|
||||
field: 'roleName',
|
||||
title: '角色名称'
|
||||
},
|
||||
{
|
||||
field: 'roleKey',
|
||||
title: '权限字符'
|
||||
},
|
||||
{
|
||||
field: 'roleSort',
|
||||
title: '显示顺序'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="label label-danger">禁用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" mce_href="#" onclick="edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" onclick="remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i></a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
/*角色管理-新增*/
|
||||
function add() {
|
||||
var url = prefix + '/add';
|
||||
layer_showAuto("新增角色", url);
|
||||
}
|
||||
|
||||
/*角色管理-修改*/
|
||||
function edit(roleId) {
|
||||
var url = prefix + '/edit/' + roleId;
|
||||
layer_showAuto("修改角色", url);
|
||||
}
|
||||
|
||||
// 单条删除
|
||||
function remove(id) {
|
||||
$.modalConfirm("确定要删除选中角色吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + id, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量删除
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("roleId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
96
src/main/resources/static/ruoyi/system/user/add.js
Normal file
96
src/main/resources/static/ruoyi/system/user/add.js
Normal file
@ -0,0 +1,96 @@
|
||||
$("#form-user-add").validate({
|
||||
rules:{
|
||||
loginName:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
remote: {
|
||||
url: "/system/user/checkUserNameUnique",
|
||||
type: "post",
|
||||
dataType: "text",
|
||||
data: {
|
||||
name : function() {
|
||||
return $.trim($("#loginName").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
userName:{
|
||||
required:true,
|
||||
},
|
||||
password:{
|
||||
required:true,
|
||||
minlength: 6
|
||||
},
|
||||
email:{
|
||||
required:true,
|
||||
email:true
|
||||
},
|
||||
phonenumber:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"loginName": {
|
||||
remote: "用户已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
function add() {
|
||||
var userId = $("input[name='userId']").val();
|
||||
var deptId = $("input[name='deptId']").val();
|
||||
var loginName = $("input[name='loginName']").val();
|
||||
var userName = $("input[name='userName']").val();
|
||||
var password = $("input[name='password']").val();
|
||||
var email = $("input[name='email']").val();
|
||||
var phonenumber = $("input[name='phonenumber']").val();
|
||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||
var roleIds = $.getCheckeds("role");
|
||||
var postIds = $("#post").val() + "";
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : "/system/user/save",
|
||||
data : {
|
||||
"userId": userId,
|
||||
"deptId": deptId,
|
||||
"loginName": loginName,
|
||||
"userName": userName,
|
||||
"password": password,
|
||||
"email": email,
|
||||
"phonenumber": phonenumber,
|
||||
"status": status,
|
||||
"roleIds": roleIds,
|
||||
"postIds": postIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modalAlert("系统错误", "error");
|
||||
},
|
||||
success : function(data) {
|
||||
if (data.code == 0) {
|
||||
parent.layer.msg("新增成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
|
||||
$.parentReload();
|
||||
});
|
||||
} else {
|
||||
$.modalAlert(data.msg, "error");
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*用户管理-新增-选择部门树*/
|
||||
function selectDeptTree() {
|
||||
var treeId = $("#treeId").val();
|
||||
var deptId = treeId == null || treeId == "" ? "100" : treeId;
|
||||
var url = "/system/dept/selectDeptTree/" + deptId;
|
||||
layer_show("选择部门", url, '380', '380');
|
||||
}
|
69
src/main/resources/static/ruoyi/system/user/edit.js
Normal file
69
src/main/resources/static/ruoyi/system/user/edit.js
Normal file
@ -0,0 +1,69 @@
|
||||
$("#form-user-edit").validate({
|
||||
rules:{
|
||||
userName:{
|
||||
required:true,
|
||||
},
|
||||
password:{
|
||||
required:true,
|
||||
minlength: 6
|
||||
},
|
||||
email:{
|
||||
required:true,
|
||||
email:true
|
||||
},
|
||||
phonenumber:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
update();
|
||||
}
|
||||
});
|
||||
|
||||
function update() {
|
||||
var userId = $("input[name='userId']").val();
|
||||
var deptId = $("input[name='deptId']").val();
|
||||
var userName = $("input[name='userName']").val();
|
||||
var password = $("input[name='password']").val();
|
||||
var email = $("input[name='email']").val();
|
||||
var phonenumber = $("input[name='phonenumber']").val();
|
||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||
var roleIds = $.getCheckeds("role");
|
||||
var postIds = $("#post").val() + "";
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : "/system/user/save",
|
||||
data : {
|
||||
"userId": userId,
|
||||
"deptId": deptId,
|
||||
"userName": userName,
|
||||
"password": password,
|
||||
"email": email,
|
||||
"phonenumber": phonenumber,
|
||||
"status": status,
|
||||
"roleIds": roleIds,
|
||||
"postIds": postIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modalAlert("系统错误", "error");
|
||||
},
|
||||
success : function(data) {
|
||||
if (data.code == 0) {
|
||||
parent.layer.msg("修改成功,正在刷新数据请稍后……",{icon:1,time: 500,shade: [0.1,'#fff']},function(){
|
||||
$.parentReload();
|
||||
});
|
||||
} else {
|
||||
$.modalAlert(data.msg, "error");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*用户管理-修改-选择部门树*/
|
||||
function selectDeptTree() {
|
||||
var deptId = $("#treeId").val();
|
||||
var url = "/system/dept/selectDeptTree/" + deptId;
|
||||
layer_show("选择部门", url, '380', '380');
|
||||
}
|
144
src/main/resources/static/ruoyi/system/user/user.js
Normal file
144
src/main/resources/static/ruoyi/system/user/user.js
Normal file
@ -0,0 +1,144 @@
|
||||
var prefix = "/system/user"
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
$('body').layout({ west__size: 185 });
|
||||
queryUserList();
|
||||
queryDeptTreeDaTa();
|
||||
});
|
||||
|
||||
function queryUserList() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'userId',
|
||||
title: '用户ID'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'userName',
|
||||
title: '用户名称'
|
||||
},
|
||||
{
|
||||
field: 'email',
|
||||
title: '邮箱'
|
||||
},
|
||||
{
|
||||
field: 'phonenumber',
|
||||
title: '手机'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == '0') {
|
||||
return '<span class="label label-success">正常</span>';
|
||||
} else if (value == '1') {
|
||||
return '<span class="label label-danger">禁用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if(row.userType == "N") {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-primary btn-sm ' + editFlag + '" href="#" title="编辑" onclick="edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i></a> ');
|
||||
actions.push('<a class="btn btn-warning btn-sm ' + removeFlag + '" href="#" title="删除" onclick="remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i></a> ');
|
||||
actions.push('<a class="btn btn-success btn-sm ' + resetPwdFlag + '" href="#" title="重置" onclick="resetPwd(\'' + row.userId + '\')"><i class="fa fa-key"></i></a>');
|
||||
return actions.join('');
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
}
|
||||
|
||||
function queryDeptTreeDaTa()
|
||||
{
|
||||
// 树结构初始化加载
|
||||
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
|
||||
callback:{onClick:function(event, treeId, treeNode){
|
||||
tree.expandNode(treeNode);
|
||||
var opt = { query : { deptId : treeNode.id, parentId : treeNode.pId, } };
|
||||
$('.bootstrap-table').bootstrapTable('refresh', opt);
|
||||
}}
|
||||
}, tree, loadTree = function(){
|
||||
$.get("/system/dept/treeData", function(data) {
|
||||
tree = $.fn.zTree.init($("#tree"), setting, data); //.expandAll(true);
|
||||
// 展开第一级节点
|
||||
var nodes = tree.getNodesByParam("level", 0);
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
tree.expandNode(nodes[i], true, false, false);
|
||||
}
|
||||
// 展开第二级节点
|
||||
nodes = tree.getNodesByParam("level", 1);
|
||||
for (var i = 0; i < nodes.length; i++) {
|
||||
tree.expandNode(nodes[i], true, false, false);
|
||||
}
|
||||
}, null, null, "正在加载,请稍后...");
|
||||
};loadTree();
|
||||
|
||||
$('#btnExpand').click(function() {
|
||||
tree.expandAll(true);
|
||||
$(this).hide();
|
||||
$('#btnCollapse').show();
|
||||
});
|
||||
$('#btnCollapse').click(function() {
|
||||
tree.expandAll(false);
|
||||
$(this).hide();
|
||||
$('#btnExpand').show();
|
||||
});
|
||||
$('#btnRefresh').click(function() {
|
||||
loadTree();
|
||||
});
|
||||
}
|
||||
|
||||
/*用户管理-删除*/
|
||||
function remove(userId) {
|
||||
$.modalConfirm("确定要删除选中用户吗?", function(r) {
|
||||
_ajax(prefix + "/remove/" + userId, "", "post", r);
|
||||
})
|
||||
}
|
||||
|
||||
/*用户管理-修改*/
|
||||
function edit(userId) {
|
||||
var url = prefix + '/edit/' + userId;
|
||||
layer_showAuto("修改用户", url);
|
||||
}
|
||||
|
||||
/*用户管理-新增*/
|
||||
function add() {
|
||||
var url = prefix + '/add';
|
||||
layer_showAuto("新增用户", url);
|
||||
}
|
||||
|
||||
/*用户管理-重置密码*/
|
||||
function resetPwd(userId) {
|
||||
var url = prefix + '/resetPwd/' + userId;
|
||||
layer_show("重置密码", url, '800', '300');
|
||||
}
|
||||
|
||||
// 批量强退
|
||||
function batchRemove() {
|
||||
var rows = $.getSelections("userId");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要删除的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要删除选中的" + rows.length + "条数据吗?", function(r) {
|
||||
_ajax(prefix + '/batchRemove', { "ids": rows }, "post", r);
|
||||
});
|
||||
}
|
58
src/main/resources/static/ruoyi/tool/gen/gen.js
Normal file
58
src/main/resources/static/ruoyi/tool/gen/gen.js
Normal file
@ -0,0 +1,58 @@
|
||||
var prefix = "/tool/gen"
|
||||
|
||||
$(function() {
|
||||
var columns = [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'tableName',
|
||||
title: '表名称'
|
||||
},
|
||||
{
|
||||
field: 'tableComment',
|
||||
title: '表描述'
|
||||
},
|
||||
{
|
||||
field: 'createTime',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
field: 'updateTime',
|
||||
title: '更新时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var msg = '<a class="btn btn-primary btn-sm" href="#" title="生成" onclick="genCode(\'' + row.tableName + '\')"><i class="fa fa-bug"></i></a> ';
|
||||
return msg;
|
||||
}
|
||||
}];
|
||||
var url = prefix + "/list";
|
||||
$.initTable(columns, url);
|
||||
});
|
||||
|
||||
// 生成代码
|
||||
function genCode(tableName) {
|
||||
$.modalConfirm("确定要生成" + tableName + "表代码吗?", function(r) {
|
||||
if (!r) {
|
||||
return;
|
||||
}
|
||||
location.href = prefix + "/genCode/" + tableName;
|
||||
})
|
||||
}
|
||||
|
||||
//批量生成代码
|
||||
function batchGenCode() {
|
||||
var rows = $.getSelections("tableName");
|
||||
if (rows.length == 0) {
|
||||
$.modalMsg("请选择要生成的数据", "warning");
|
||||
return;
|
||||
}
|
||||
$.modalConfirm("确认要生成选中的" + rows.length + "条数据吗?", function(r) {
|
||||
if (!r) {
|
||||
return;
|
||||
}
|
||||
location.href = prefix + "/batchGenCode?tables=" + JSON.stringify(rows);
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user