delete 2.0
This commit is contained in:
@ -1,23 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 404</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
<h1>404</h1>
|
||||
<h3 class="font-bold">找不到网页!</h3>
|
||||
<div class="error-desc">
|
||||
对不起,您正在寻找的页面已经找到。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。
|
||||
<a href="javascript:top.document.location.href='/'" class="btn btn-primary m-t">主页</a>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/jquery.min.js?v=2.1.4"></script>
|
||||
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,24 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 500</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
<h1>500</h1>
|
||||
<h3 class="font-bold">内部服务器错误!</h3>
|
||||
|
||||
<div class="error-desc">
|
||||
服务器遇到意外事件,不允许完成请求。我们抱歉。您可以返回主页面。
|
||||
<a href="javascript:top.document.location.href='/'" class="btn btn-primary m-t">主页</a>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/jquery.min.js?v=2.1.4"></script>
|
||||
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,24 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>RuoYi - 403</title>
|
||||
<link href="/css/bootstrap.min.css" rel="stylesheet"/>
|
||||
<link href="/css/animate.css" rel="stylesheet"/>
|
||||
<link href="/css/style.css" rel="stylesheet"/>
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="middle-box text-center animated fadeInDown">
|
||||
<h1>403</h1>
|
||||
<h3 class="font-bold">您没有访问权限!</h3>
|
||||
|
||||
<div class="error-desc">
|
||||
对不起,您正在寻找的页面已经找到。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。
|
||||
<a href="javascript:top.document.location.href='/'" class="btn btn-primary m-t">主页</a>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/js/jquery.min.js?v=2.1.4"></script>
|
||||
<script src="/js/bootstrap.min.js?v=3.3.6"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,46 +0,0 @@
|
||||
<head th:fragment="header">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title></title>
|
||||
<meta name="keywords" content="">
|
||||
<meta name="description" content="">
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/layui.css}" rel="stylesheet" >
|
||||
<link th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
|
||||
<!-- bootstrap-table 表格插件样式 -->
|
||||
<link th:href="@{/ajax/libs/bootstrap-table/bootstrap-table.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ajax/libs/jqTreeGrid/jquery.treegrid.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/checkbox.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ajax/libs/select/select2.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.min.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
<div th:fragment="footer">
|
||||
<script th:src="@{/js/jquery.min.js}"></script>
|
||||
<script th:src="@{/js/bootstrap.min.js}"></script>
|
||||
|
||||
<!-- bootstrap-table 表格插件 -->
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/bootstrap-table.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/toolbar/bootstrap-table-toolbar.min.js}"></script>
|
||||
<!-- jquery-validate 表单验证插件 -->
|
||||
<script th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/validate/jquery.validate.extend.js}"></script>
|
||||
<!-- jquery-validate 表单树插件 -->
|
||||
<script th:src="@{/ajax/libs/jqTreeGrid/jquery.treegrid.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/jqTreeGrid/jquery.treegrid.extension.js}"></script>
|
||||
<!-- jquery-export 表格导出插件 -->
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/bootstrap-table-export.js}"></script>
|
||||
<script th:src="@{/ajax/libs/bootstrap-table/extensions/export/tableExport.js}"></script>
|
||||
<!-- 遮罩层 -->
|
||||
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
||||
<script th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=2.0.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.min.js?v=2.0.0}"></script>
|
||||
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
|
||||
</div>
|
@ -1,139 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="renderer" content="webkit">
|
||||
<title>若依管理系统首页</title>
|
||||
<meta name="keywords" content="若依管理系统首页">
|
||||
<meta name="description" content="若依管理系统首页">
|
||||
<!--[if lt IE 9]>
|
||||
<meta http-equiv="refresh" content="0;ie.html"/>
|
||||
<![endif]-->
|
||||
<link th:href="@{favicon.ico}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/animate.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/css/style.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ruoyi/css/ry-ui.min.css?v=2.0.0}" rel="stylesheet"/>
|
||||
<style type="text/css">
|
||||
.nav > li:hover .dropdown-menu {display: block;}
|
||||
</style>
|
||||
</head>
|
||||
<body class="fixed-sidebar full-height-layout gray-bg" style="overflow: hidden" th:classappend="${@configService.selectConfigByKey('sys.index.skinName')}">
|
||||
<div id="wrapper">
|
||||
|
||||
<!--左侧导航开始-->
|
||||
<nav class="navbar-default navbar-static-side" role="navigation">
|
||||
<div class="nav-close">
|
||||
<i class="fa fa-times-circle"></i>
|
||||
</div>
|
||||
<div class="sidebar-collapse">
|
||||
<ul class="nav" id="side-menu">
|
||||
<li class="nav-header">
|
||||
<div class="dropdown profile-element"> <span>
|
||||
<img th:src="(${user.avatar} == '') ? '/img/profile.jpg' : '/profile/' + ${user.avatar}" alt="image" class="img-circle" height="60" width="60"/></span>
|
||||
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
|
||||
<span class="clear"><span class="block m-t-xs"><strong class="font-bold">[[${user.userName}]]</strong></span>
|
||||
<span class="text-muted text-xs block"><span>[[${user.dept.deptName}]]</span> <b class="caret"></b></span> </span> </a>
|
||||
<ul class="dropdown-menu animated fadeInRight m-t-xs">
|
||||
<li><a class="menuItem" th:href="@{/system/user/profile}">个人信息</a></li>
|
||||
<li class="divider"></li>
|
||||
<li><a th:href="@{logout}">退出</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li class="active">
|
||||
<a href="index.html"><i class="fa fa-home"></i> <span class="nav-label">主页</span> <span class="fa arrow"></span></a>
|
||||
<ul class="nav nav-second-level">
|
||||
<li class="active"><a class="menuItem" th:href="@{/system/main}">了解若依</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li th:each="menu : ${menus}">
|
||||
<a href="#">
|
||||
<i class="fa fa fa-bar-chart-o" th:class="${menu.icon}"></i>
|
||||
<span class="nav-label" th:text="${menu.menuName}">一级菜单</span>
|
||||
<span class="fa arrow"></span>
|
||||
</a>
|
||||
<ul class="nav nav-second-level collapse">
|
||||
<li th:each="cmenu : ${menu.children}">
|
||||
<a class="menuItem" th:text="${cmenu.menuName}" th:href="@{${cmenu.url}}">二级菜单</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
<!--左侧导航结束-->
|
||||
|
||||
<!--右侧部分开始-->
|
||||
<div id="page-wrapper" class="gray-bg dashbard-1">
|
||||
<div class="row border-bottom">
|
||||
<nav class="navbar navbar-static-top" role="navigation"
|
||||
style="margin-bottom: 0">
|
||||
<div class="navbar-header">
|
||||
|
||||
<a class="navbar-minimalize minimalize-styl-2 btn btn-default " href="#" title="收起菜单">
|
||||
<i class="fa fa-bars"></i>
|
||||
</a>
|
||||
<form role="search" class="navbar-form-custom" method="post" action="">
|
||||
<div class="form-group">
|
||||
<input type="text" placeholder="请输入您需要查找的内容 …" class="form-control" name="top-search" id="top-search">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<ul class="nav navbar-top-links navbar-right">
|
||||
<li>
|
||||
<span class="m-r-sm text-muted welcome-message">欢迎来到若依管理后台.</span>
|
||||
</li>
|
||||
<li><a id="fullScreen"><i class="fa fa-arrows-alt"></i>全屏</a></li>
|
||||
<li><a th:href="@{logout}"><i class="fa fa-sign-out"></i>退出</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
<div class="row content-tabs">
|
||||
<button class="roll-nav roll-left tabLeft">
|
||||
<i class="fa fa-backward"></i>
|
||||
</button>
|
||||
<nav class="page-tabs menuTabs">
|
||||
<div class="page-tabs-content">
|
||||
<a href="javascript:;" class="active menuTab" data-id="/system/main">首页</a>
|
||||
</div>
|
||||
</nav>
|
||||
<button class="roll-nav roll-right tabRight">
|
||||
<i class="fa fa-forward"></i>
|
||||
</button>
|
||||
<div class="btn-group roll-nav roll-right">
|
||||
<button class="dropdown J_tabClose" data-toggle="dropdown">
|
||||
页签操作<span class="caret"></span>
|
||||
</button>
|
||||
<ul role="menu" class="dropdown-menu dropdown-menu-right">
|
||||
<li><a class="tabCloseCurrent" href="javascript:void();">关闭当前</a></li>
|
||||
<li><a class="tabCloseOther" href="javascript:void();">关闭其他</a></li>
|
||||
<li><a class="tabCloseAll" href="javascript:void();">全部关闭</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<a href="#" class="roll-nav roll-right tabReload"><i class="fa fa-refresh"></i> 刷新</a>
|
||||
</div>
|
||||
<div class="row mainContent" id="content-main">
|
||||
<iframe class="RuoYi_iframe" name="iframe0" width="100%" height="100%" data-id="/system/main"
|
||||
th:src="@{/system/main}" frameborder="0" seamless></iframe>
|
||||
</div>
|
||||
<div class="footer">
|
||||
<div class="pull-right">© [[${copyrightYear}]] RuoYi Copyright </div>
|
||||
</div>
|
||||
</div>
|
||||
<!--右侧部分结束-->
|
||||
</div>
|
||||
<!-- 全局js -->
|
||||
<script th:src="@{/js/jquery.min.js}"></script>
|
||||
<script th:src="@{/js/bootstrap.min.js}"></script>
|
||||
<script th:src="@{/js/plugins/metisMenu/jquery.metisMenu.js}"></script>
|
||||
<script th:src="@{/js/plugins/slimscroll/jquery.slimscroll.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
||||
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.min.js?v=2.0.0}"></script>
|
||||
<script th:src="@{/ruoyi/index.js}"></script>
|
||||
<script th:src="@{/ajax/libs/fullscreen/jquery.fullscreen.js}"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<title>若依管理系统 - 登录</title>
|
||||
<meta name="keywords" content="若依管理系统">
|
||||
<meta name="description" content="RuoYi">
|
||||
<link href="../static/css/bootstrap.min.css" th:href="@{css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/font-awesome.css" th:href="@{css/font-awesome.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/style.css" th:href="@{css/style.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/login.min.css" th:href="@{css/login.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/ajax/libs/iCheck/custom.css" th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
|
||||
<link href="../static/ruoyi/css/ry-ui.min.css" th:href="@{/ruoyi/css/ry-ui.min.css?v=2.0.0}" rel="stylesheet"/>
|
||||
<!--[if lt IE 9]>
|
||||
<meta http-equiv="refresh" content="0;ie.html" />
|
||||
<![endif]-->
|
||||
<link rel="shortcut icon" href="../static/favicon.ico" th:href="@{favicon.ico}"/>
|
||||
<script>
|
||||
if(window.top!==window.self){window.top.location=window.location};
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body class="signin">
|
||||
|
||||
<div class="signinpanel">
|
||||
<div class="row">
|
||||
<div class="col-sm-7">
|
||||
<div class="signin-info">
|
||||
<div class="logopanel m-b">
|
||||
<h1><img alt="[ 若依 ]" src="../static/ruoyi.png" th:src="@{/ruoyi.png}"></h1>
|
||||
</div>
|
||||
<div class="m-b"></div>
|
||||
<h4>欢迎使用 <strong>若依 后台管理系统</strong></h4>
|
||||
<ul class="m-b">
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> SpringBoot</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Mybatis</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Shiro</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Thymeleaf</li>
|
||||
<li><i class="fa fa-arrow-circle-o-right m-r-xs"></i> Bootstrap</li>
|
||||
</ul>
|
||||
<strong>还没有账号? <a href="#">立即注册»</a></strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<form id="signupForm">
|
||||
<h4 class="no-margins">登录:</h4>
|
||||
<p class="m-t-md">你若不离不弃,我必生死相依</p>
|
||||
<input type="text" name="username" class="form-control uname" placeholder="用户名" value="admin" />
|
||||
<input type="password" name="password" class="form-control pword m-b" placeholder="密码" value="admin123" />
|
||||
<div class="row" th:if="${captchaEbabled==true}">
|
||||
<div class="col-xs-6">
|
||||
<input type="text" name="validateCode" class="form-control code" placeholder="验证码" maxlength="5">
|
||||
</div>
|
||||
<div class="col-xs-6">
|
||||
<a href="javascript:void(0);" title="点击更换验证码">
|
||||
<img th:src="@{captcha/captchaImage(type=${captchaType})}" class="imgcode" width="85%"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<input class="i-checks" type="checkbox" name="rememberme" /> 记住我
|
||||
<button class="btn btn-success btn-block" id="btnSubmit" data-loading="正在验证登录,请稍后...">登录</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="signup-footer">
|
||||
<div class="pull-left">
|
||||
© 2018 All Rights Reserved. RuoYi
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; var captchaType = [[${captchaType}]]; </script>
|
||||
<!-- 全局js -->
|
||||
<script src="../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
|
||||
<script src="../static/js/bootstrap.min.js" th:src="@{/js/bootstrap.min.js}"></script>
|
||||
<!-- 验证插件 -->
|
||||
<script src="../static/ajax/libs/validate/jquery.validate.min.js" th:src="@{/ajax/libs/validate/jquery.validate.min.js}"></script>
|
||||
<script src="../static/ajax/libs/validate/messages_zh.min.js" th:src="@{/ajax/libs/validate/messages_zh.min.js}"></script>
|
||||
<script src="../static/ajax/libs/layer/layer.min.js" th:src="@{/ajax/libs/layer/layer.min.js}"></script>
|
||||
<script src="../static/ajax/libs/iCheck/icheck.min.js" th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||
<script src="../static/ajax/libs/blockUI/jquery.blockUI.js" th:src="@{/ajax/libs/blockUI/jquery.blockUI.js}"></script>
|
||||
<script src="http://tajs.qq.com/stats?sId=62048022"></script>
|
||||
<script src="../static/ruoyi/js/ry-ui.min.js?v=2.0.0" th:src="@{/ruoyi/js/ry-ui.min.js?v=2.0.0}"></script>
|
||||
<script src="../static/ruoyi/login.js" th:src="@{/ruoyi/login.js}"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,444 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!--360浏览器优先以webkit内核解析-->
|
||||
<title>若依介绍</title>
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/main/animate.min.css" th:href="@{/css/main/animate.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/main/style.min862f.css" th:href="@{/css/main/style.min862f.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
|
||||
<body class="gray-bg">
|
||||
<div class="row border-bottom white-bg dashboard-header">
|
||||
<div class="col-sm-12">
|
||||
<blockquote class="text-warning" style="font-size:14px">您是否需要自己做一款后台、会员中心等等的,但是又缺乏html等前端知识…。
|
||||
<br>您是否一直在苦苦寻找一款适合自己的后台主题…
|
||||
<br>…………
|
||||
<h4 class="text-danger">那么,现在若依来了。</h4>
|
||||
</blockquote>
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<h2>Hello,Guest</h2>
|
||||
<small>移动设备访问请扫描以下二维码:</small>
|
||||
<br>
|
||||
<br>
|
||||
<img th:src="@{/img/qr_code.png}" width="100%" style="max-width:264px;">
|
||||
<br>
|
||||
</div>
|
||||
<div class="col-sm-5">
|
||||
<h2>若依后台管理框架</h2>
|
||||
<p>一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适自己的。于是利用空闲休息时间开始自己写一套后台系统。如此有了若依管理系统。,她可以用于所有的Web应用程序,如<b>网站管理后台</b>,<b>网站会员中心</b>,<b>CMS</b>,<b>CRM</b>,<b>OA</b>等等,当然,您也可以对她进行深度定制,以做出更强系统。所有前端后台代码封装过后十分精简易上手,出错概率低。同时支持移动客户端访问。系统会陆续更新一些实用功能。</p>
|
||||
<p>
|
||||
<b>当前版本:</b><span>v[[${version}]]</span>
|
||||
</p>
|
||||
<p>
|
||||
<span class="label label-warning">¥免费开源</span>
|
||||
</p>
|
||||
<br>
|
||||
<p>
|
||||
<a class="btn btn-success btn-outline" href="https://gitee.com/y_project/RuoYi" target="_blank">
|
||||
<i class="fa fa-cloud"> </i> 访问码云
|
||||
</a>
|
||||
<a class="btn btn-white btn-bitbucket" href="http://ruoyi.club/" target="_blank">
|
||||
<i class="fa fa-home"></i> 访问主页
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<h4>技术选型:</h4>
|
||||
<ol>
|
||||
<li>核心框架:Spring Boot。</li>
|
||||
<li>安全框架:Apache Shiro。</li>
|
||||
<li>模板引擎:Thymeleaf。</li>
|
||||
<li>持久层框架:MyBatis。</li>
|
||||
<li>定时任务:Quartz。</li>
|
||||
<li>数据库连接池:Druid。</li>
|
||||
<li>工具类:Fastjson。</li>
|
||||
<li>更多……</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="wrapper wrapper-content">
|
||||
<div class="row">
|
||||
<div class="col-sm-4">
|
||||
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>联系信息</h5>
|
||||
|
||||
</div>
|
||||
<div class="ibox-content">
|
||||
<p><i class="fa fa-send-o"></i> 官网:<a href="http://www.ruoyi.club" target="_blank">http://www.ruoyi.club</a>
|
||||
</p>
|
||||
<p><i class="fa fa-qq"></i> QQ群:<a href="https://jq.qq.com/?_wv=1027&k=5HBAaYN" target="_blank">1389287</a>
|
||||
</p>
|
||||
<p><i class="fa fa-weixin"></i> 微信:<a href="javascript:;">/ *若依</a>
|
||||
</p>
|
||||
<p><i class="fa fa-credit-card"></i> 支付宝:<a href="javascript:;" class="支付宝信息">/ *若依</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>更新日志</h5>
|
||||
</div>
|
||||
<div class="ibox-content no-padding">
|
||||
<div class="panel-body">
|
||||
<div class="panel-group" id="version">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v20">v2.0.0</a><code class="pull-right">2018.08.08</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v20" class="panel-collapse collapse in">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>升级SpringBoot到最新版本2.0.3</li>
|
||||
<li>新增公告管理</li>
|
||||
<li>表单校验示提体验优化</li>
|
||||
<li>前端通用方法封装调整</li>
|
||||
<li>前端去除js文件,合并到html</li>
|
||||
<li>操作加载遮罩层</li>
|
||||
<li>支持全屏模式操作</li>
|
||||
<li>支持注解导出数据</li>
|
||||
<li>系统支持多查询&下载</li>
|
||||
<li>系统样式调整</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v16">v1.1.6</a><code class="pull-right">2018.06.04</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v16" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增用户列表部门列</li>
|
||||
<li>新增登录地点</li>
|
||||
<li>新增swagger</li>
|
||||
<li>修复排序数字校验</li>
|
||||
<li>优化头像上传文件类型限定为图片</li>
|
||||
<li>新增XSS过滤</li>
|
||||
<li>新增热部署提高开发效率</li>
|
||||
<li>修复treegrid居中无效</li>
|
||||
<li>角色多条件查询</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v15">v1.1.5</a><code class="pull-right">2018.05.28</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v15" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>优化登录失败刷新验证码</li>
|
||||
<li>新增用户登陆地址时间</li>
|
||||
<li>修复ajax超时退出问题</li>
|
||||
<li>新增html调用数据字典(若依首创)</li>
|
||||
<li>调整系统部分样式</li>
|
||||
<li>新增用户逻辑删除</li>
|
||||
<li>新增管理员不允许删除修改</li>
|
||||
<li>升级bootstrapTable到最新版本1.12.1</li>
|
||||
<li>升级layer到最新版本3.1.1</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v14">v1.1.4</a><code class="pull-right">2018.05.20</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v14" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增参数管理</li>
|
||||
<li>修复头像上传bug</li>
|
||||
<li>手机邮箱唯一校验</li>
|
||||
<li>支持手机邮箱登录</li>
|
||||
<li>代码生成优化</li>
|
||||
<li>支持模糊查询</li>
|
||||
<li>支持切换主题皮肤</li>
|
||||
<li>修改权限即时生效</li>
|
||||
<li>修复页签Tab关闭问题</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v13">v1.1.3</a><code class="pull-right">2018.05.14</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v13" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增验证码(数组计算、字符验证)</li>
|
||||
<li>新增cookie记住我</li>
|
||||
<li>新增头像上传</li>
|
||||
<li>用户名密码长度限制</li>
|
||||
<li>通用字段提取</li>
|
||||
<li>支持自定义条件查询</li>
|
||||
<li>部门名称必填、时间格式调整</li>
|
||||
<li>其他细节优化</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v12">v1.1.2</a><code class="pull-right">2018.05.07</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v12" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增个人信息修改</li>
|
||||
<li>菜单存在子菜单不允许删除</li>
|
||||
<li>菜单分配角色不允许删除</li>
|
||||
<li>角色分配人员不允许删除</li>
|
||||
<li>岗位使用后不允许删除</li>
|
||||
<li>保证用户的数据完整性加入事物</li>
|
||||
<li>新增环境使用手册、数据建模</li>
|
||||
<li>Thymeleaf升级到3.0</li>
|
||||
<li>支持非ROOT部署</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v11">v1.1.1</a><code class="pull-right">2018.04.23</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v11" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增表单构建器</li>
|
||||
<li>代码生成优化</li>
|
||||
<li>支持新增主部门</li>
|
||||
<li>支持选择上级部门、上级菜单</li>
|
||||
<li>新增字典管理单条删除</li>
|
||||
<li>优化一些其他细节</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v10">v1.1.0</a><code class="pull-right">2018.04.20</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v10" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>支持密码盐</li>
|
||||
<li>支持新增主目录</li>
|
||||
<li>支持批量生成代码</li>
|
||||
<li>支持表格导出(csv、txt、doc、excel)</li>
|
||||
<li>自动适应宽高模式窗体</li>
|
||||
<li>重复校验(角色名、菜单名、部门名)</li>
|
||||
<li>优化一些其他细节</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v09">v1.0.9</a><code class="pull-right">2018.04.14</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v09" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增代码生成(生成包括 java、html、js、xml、sql)</li>
|
||||
<li>新增按钮权限控制隐藏(若依首创)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v08">v1.0.8</a><code class="pull-right">2018.04.08</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v08" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增定时任务(新增、修改、删除、查询、启动/暂停)</li>
|
||||
<li>新增调度日志(查询、删除)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v07">v1.0.7</a><code class="pull-right">2018.04.04</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v07" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增岗位管理(新增、修改、删除、查询)</li>
|
||||
<li>优化用户管理,菜单管理部分细节</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v06">v1.0.6</a><code class="pull-right">2018.03.15</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v06" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增字典管理(新增、删除、修改、查询、数据选择)</li>
|
||||
<li>新增用户密码重置</li>
|
||||
<li>优化一些其他细节</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v05">v1.0.5</a><code class="pull-right">2018.03.12</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v05" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增菜单管理(新增、删除、修改、查询、图标选择)</li>
|
||||
<li>部门管理优化(添加责任人、联系电话、邮箱、修改者)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v04">v1.0.4</a><code class="pull-right">2018.03.11</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v04" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增角色管理(新增、删除、修改、查询、菜单选择)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v03">v1.0.3</a><code class="pull-right">2018.03.08</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v03" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增用户管理(新增、删除、修改、查询、部门选择)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v02">v1.0.2</a><code class="pull-right">2018.03.04</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v02" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增部门管理 (新增、删除、修改、查询)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h5 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v01">v1.0.1</a><code class="pull-right">2018.03.03</code>
|
||||
</h5>
|
||||
</div>
|
||||
<div id="v01" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>新增在线用户 (批量强退、单条强退、查询)</li>
|
||||
<li>新增登录日志 (批量删除、查询)</li>
|
||||
<li>新增操作日志 (批量删除、查询、详细)</li>
|
||||
<li>新增数据监控 (监控DB池连接和SQL的执行)</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a data-toggle="collapse" data-parent="#version" href="#v00">v1.0.0</a><code class="pull-right">2018.03.01</code>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="v00" class="panel-collapse collapse">
|
||||
<div class="panel-body">
|
||||
<ol>
|
||||
<li>若依管理系统正式发布。</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>捐赠</h5>
|
||||
</div>
|
||||
<div class="ibox-content">
|
||||
<div class="alert alert-warning">
|
||||
请作者喝杯咖啡。
|
||||
</div>
|
||||
<p id="pay-qrcode">
|
||||
<a href="javascript:;"><img th:src="@{/img/pay.png}" width="100%" alt="请使用手机支付宝或者微信扫码支付">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script th:src="@{/js/jquery.min.js}"></script>
|
||||
<script th:src="@{/js/bootstrap.min.js}"></script>
|
||||
</body>
|
||||
</html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-job-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">任务名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="jobName" id="jobName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">任务组名:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="jobGroup" id="jobGroup">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">方法名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="methodName" id="methodName"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">方法参数:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="params" id="params"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">cron表达式:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="cronExpression" id="cronExpression"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_job_status')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "monitor/job"
|
||||
|
||||
$("#form-job-add").validate({
|
||||
rules:{
|
||||
jobName:{
|
||||
required:true,
|
||||
},
|
||||
jobGroup:{
|
||||
required:true,
|
||||
},
|
||||
cronExpression:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(prefix + "/save", $('#form-job-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-job-edit" th:object="${job}">
|
||||
<input id="jobId" name="jobId" type="hidden" th:field="*{jobId}"/>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">任务名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="jobName" id="jobName" th:field="*{jobName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">任务组名:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="jobGroup" id="jobGroup" th:field="*{jobGroup}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">方法名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="methodName" id="methodName" th:field="*{methodName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">方法参数:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="params" id="params" th:field="*{params}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">cron表达式:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="cronExpression" id="cronExpression" th:field="*{cronExpression}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_job_status')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:field="*{status}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text" th:field="*{jobName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "monitor/job"
|
||||
|
||||
$("#form-job-edit").validate({
|
||||
rules:{
|
||||
jobName:{
|
||||
required:true,
|
||||
},
|
||||
jobGroup:{
|
||||
required:true,
|
||||
},
|
||||
cronExpression:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(prefix + "/save", $('#form-job-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,158 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
任务名称:<input type="text" name="jobName"/>
|
||||
</li>
|
||||
<li>
|
||||
方法名称:<input type="text" name="methodName"/>
|
||||
</li>
|
||||
<li>
|
||||
任务状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_job_status')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="monitor:job:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
<a class="btn btn-outline btn-info btn-rounded" onclick="javascript:jobLog()" shiro:hasPermission="monitor:job:list">
|
||||
<i class="fa fa-list"></i> 日志
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('monitor:job:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('monitor:job:remove')}]];
|
||||
var statusFlag = [[${@permissionService.hasPermi('monitor:job:changeStatus')}]];
|
||||
var prefix = ctx + "monitor/job"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
modalName: "任务",
|
||||
search: false,
|
||||
showExport: false,
|
||||
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="badge badge-primary">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">暂停</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push(statusTools(row));
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function statusTools(row) {
|
||||
if (row.status == 1) {
|
||||
return '<a class="btn btn-info btn-xs ' + statusFlag + '" href="#" onclick="start(this,\'' + row.jobId + '\')"><i class="fa fa-play"></i>启用</a> ';
|
||||
} else {
|
||||
return '<a class="btn btn-warning btn-xs ' + statusFlag + '" href="#" onclick="stop(this,\'' + row.jobId + '\')"><i class="fa fa-pause"></i>暂停</a> ';
|
||||
}
|
||||
}
|
||||
|
||||
/*调度任务-停用*/
|
||||
function stop(obj, jobId) {
|
||||
$.modal.confirm("确认要停用任务吗?", function() {
|
||||
$.operate.post(prefix + "/changeStatus", { "jobId": jobId, "status": 1 });
|
||||
})
|
||||
}
|
||||
|
||||
/*调度任务-启用*/
|
||||
function start(obj, jobId) {
|
||||
$.modal.confirm("确认要启用任务吗?", function() {
|
||||
$.operate.post(prefix + "/changeStatus", { "jobId": jobId, "status": 0 });
|
||||
})
|
||||
}
|
||||
|
||||
//调度日志查询
|
||||
function jobLog(id) {
|
||||
var url = ctx + 'monitor/jobLog';
|
||||
createMenuItem(url, "调度日志");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,118 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
任务名称:<input type="text" name="jobName"/>
|
||||
</li>
|
||||
<li>
|
||||
方法名称:<input type="text" name="methodName"/>
|
||||
</li>
|
||||
<li>
|
||||
执行状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_common_status')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="monitor:job:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var removeFlag = [[${@permissionService.hasPermi('monitor:job:remove')}]];
|
||||
var prefix = ctx + "monitor/jobLog"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
modalName: "日志",
|
||||
search: false,
|
||||
showExport: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'jobLogId',
|
||||
title: '任务日志编号'
|
||||
},
|
||||
{
|
||||
field: 'jobName',
|
||||
title: '任务名称'
|
||||
},
|
||||
{
|
||||
field: 'jobGroup',
|
||||
title: '任务组名'
|
||||
},
|
||||
{
|
||||
field: 'methodName',
|
||||
title: '方法名称'
|
||||
},
|
||||
{
|
||||
field: 'params',
|
||||
title: '方法参数'
|
||||
},
|
||||
{
|
||||
field: 'jobMessage',
|
||||
title: '日志信息'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="badge badge-primary">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">失败</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.jobLogId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,112 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
登录地址:<input type="text" name="ipaddr"/>
|
||||
</li>
|
||||
<li>
|
||||
登录名称:<input type="text" name="loginName"/>
|
||||
</li>
|
||||
<li>
|
||||
登录状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_common_status')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="monitor:logininfor:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="include :: footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "monitor/logininfor"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "loginTime",
|
||||
sortOrder: "desc",
|
||||
search: false,
|
||||
showExport: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'infoId',
|
||||
title: '访问编号'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'ipaddr',
|
||||
title: '登录地址'
|
||||
},
|
||||
{
|
||||
field: 'loginLocation',
|
||||
title: '登录地点'
|
||||
},
|
||||
{
|
||||
field: 'browser',
|
||||
title: '浏览器'
|
||||
},
|
||||
{
|
||||
field: 'os',
|
||||
title: '操作系统'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '登录状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="badge badge-primary">成功</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">失败</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'msg',
|
||||
title: '操作信息'
|
||||
},
|
||||
{
|
||||
field: 'loginTime',
|
||||
title: '登录时间'
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,137 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
登录地址:<input type="text" name="ipaddr"/>
|
||||
</li>
|
||||
<li>
|
||||
操作人员:<input type="text" name="loginName"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="javascript:batchForceLogout()" shiro:hasPermission="monitor:online:batchForceLogout">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var forceFlag = [[${@permissionService.hasPermi('monitor:online:forceLogout')}]];
|
||||
var prefix = ctx + "monitor/online"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "lastAccessTime",
|
||||
sortOrder: "desc",
|
||||
search: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'sessionId',
|
||||
title: '会话编号'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'deptName',
|
||||
title: '部门名称'
|
||||
},
|
||||
{
|
||||
field: 'ipaddr',
|
||||
title: '主机'
|
||||
},
|
||||
{
|
||||
field: 'longinLocation',
|
||||
title: '登录地点'
|
||||
},
|
||||
{
|
||||
field: 'browser',
|
||||
title: '浏览器'
|
||||
},
|
||||
{
|
||||
field: 'os',
|
||||
title: '操作系统'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '会话状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 'on_line') {
|
||||
return '<span class="badge badge-primary">在线</span>';
|
||||
} else if (value == 'off_line') {
|
||||
return '<span class="badge badge-danger">离线</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'startTimestamp',
|
||||
title: '登录时间'
|
||||
},
|
||||
{
|
||||
field: 'lastAccessTime',
|
||||
title: '最后访问时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var msg = '<a class="btn btn-danger btn-xs ' + forceFlag + '" href="#" onclick="forceLogout(\'' + row.sessionId + '\')"><i class="fa fa-sign-out"></i>强退</a> ';
|
||||
return msg;
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
// 单条强退
|
||||
function forceLogout(sessionId) {
|
||||
$.modal.confirm("确定要强制选中用户下线吗?", function() {
|
||||
var data = { "sessionId": sessionId };
|
||||
$.operate.post(prefix + "/forceLogout", data);
|
||||
})
|
||||
}
|
||||
|
||||
// 批量强退
|
||||
function batchForceLogout() {
|
||||
var rows = $.table.selectColumns("sessionId");
|
||||
if (rows.length == 0) {
|
||||
$.modal.alertWarning("请选择要强退的用户");
|
||||
return;
|
||||
}
|
||||
$.modal.confirm("确认要强退选中的" + rows.length + "条数据吗?", function() {
|
||||
var url = prefix + "/batchForceLogout";
|
||||
var data = { "ids": rows };
|
||||
$.operate.post(url, data);
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,53 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m-t" id="signupForm">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">操作模块:</label>
|
||||
<div class="form-control-static" th:text="${operLog.title} + ' / ' + ${operLog.action}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">登录信息:</label>
|
||||
<div class="form-control-static" th:text="${operLog.operName} + ' / ' + ${operLog.deptName} + ' / ' + ${operLog.operIp}+ ' / ' + ${operLog.operLocation}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">请求地址:</label>
|
||||
<div class="form-control-static" th:text="${operLog.operUrl}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">操作方法:</label>
|
||||
<div class="form-control-static" th:text="${operLog.method}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">请求参数:</label>
|
||||
<div class="form-control-static" th:text="${operLog.operParam}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label">状态:</label>
|
||||
<div class="form-control-static" th:class="${operLog.status == '0' ? 'label label-primary' : 'label label-danger'}" th:text="${operLog.status == '0' ? '正常' : '异常'}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" th:style="'display:' + ${operLog.status == '0' ? 'none' : 'block'}">
|
||||
<label class="col-sm-2 control-label">异常信息:</label>
|
||||
<div class="form-control-static" th:text="${operLog.errorMsg}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
</body>
|
||||
</html>
|
@ -1,152 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
系统模块:<input type="text" name="title"/>
|
||||
</li>
|
||||
<li>
|
||||
操作人员:<input type="text" name="operName"/>
|
||||
</li>
|
||||
<li>
|
||||
操作类型:<select name="action" th:with="type=${@dictService.selectDictData('sys_oper_type')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="monitor:logininfor:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var detailFlag = [[${@permissionService.hasPermi('monitor:operlog:detail')}]];
|
||||
var prefix = ctx + "monitor/operlog"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "operTime",
|
||||
sortOrder: "desc",
|
||||
search: false,
|
||||
showExport: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'operId',
|
||||
title: '日志编号'
|
||||
},
|
||||
{
|
||||
field: 'title',
|
||||
title: '系统模块'
|
||||
},
|
||||
{
|
||||
field: 'action',
|
||||
title: '操作类型',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 1) {
|
||||
return '<span class="badge badge-primary">新增</span>';
|
||||
} else if (value == 2) {
|
||||
return '<span class="badge badge-primary">修改</span>';
|
||||
} else if (value == 3) {
|
||||
return '<span class="badge badge-warning">保存</span>';
|
||||
} else if (value == 4) {
|
||||
return '<span class="badge badge-danger">删除</span>';
|
||||
} else if (value == 5) {
|
||||
return '<span class="badge badge-primary">授权</span>';
|
||||
} else if (value == 6) {
|
||||
return '<span class="badge badge-warning">导出</span>';
|
||||
} else if (value == 7) {
|
||||
return '<span class="badge badge-warning">导入</span>';
|
||||
} else if (value == 8) {
|
||||
return '<span class="badge badge-danger">强退</span>';
|
||||
} else if (value == 9) {
|
||||
return '<span class="badge badge-danger">禁止访问</span>';
|
||||
} else if (value == 10) {
|
||||
return '<span class="badge badge-warning">生成代码</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'operName',
|
||||
title: '操作人员'
|
||||
},
|
||||
{
|
||||
field: 'deptName',
|
||||
title: '部门名称'
|
||||
},
|
||||
{
|
||||
field: 'operIp',
|
||||
title: '主机'
|
||||
},
|
||||
{
|
||||
field: 'operLocation',
|
||||
title: '操作地点'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '操作状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="badge badge-primary">成功</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">异常</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'operTime',
|
||||
title: '操作时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-warning btn-xs ' + detailFlag + '" href="#" onclick="detail(\'' + row.operId + '\')"><i class="fa fa-search"></i>详细</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
/*操作日志-详细*/
|
||||
function detail(id) {
|
||||
var url = prefix + '/detail/' + id;
|
||||
$.modal.open("操作日志详细", url);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,90 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-config-add" name="form-config-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configName" name="configName" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数键名:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configKey" name="configKey" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数键值:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configValue" name="configValue" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">系统内置:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_yes_no')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="configType" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<textarea id="remark" name="remark" class="form-control"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/config"
|
||||
|
||||
$("#form-config-add").validate({
|
||||
rules: {
|
||||
configKey: {
|
||||
required: true,
|
||||
remote: {
|
||||
url: prefix + "/checkConfigKeyUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"configKey": function() {
|
||||
return $("input[name='configKey']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
configName: {
|
||||
required: true
|
||||
},
|
||||
configValue: {
|
||||
required: true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"configKey": {
|
||||
remote: "参数键名已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
$.operate.save(prefix + "/save", $('#form-config-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,115 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
参数名称:<input type="text" name="configName"/>
|
||||
</li>
|
||||
<li>
|
||||
参数键名:<input type="text" name="configKey"/>
|
||||
</li>
|
||||
<li>
|
||||
系统内置:<select name="configType" th:with="type=${@dictService.selectDictData('sys_yes_no')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="system:config:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:config:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:config:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:config:remove')}]];
|
||||
var prefix = ctx + "system/config"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
modalName: "参数",
|
||||
search: false,
|
||||
showExport: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'configId',
|
||||
title: '参数主键'
|
||||
},
|
||||
{
|
||||
field: 'configName',
|
||||
title: '参数名称'
|
||||
},
|
||||
{
|
||||
field: 'configKey',
|
||||
title: '参数键名'
|
||||
},
|
||||
{
|
||||
field: 'configValue',
|
||||
title: '参数键值'
|
||||
},
|
||||
{
|
||||
field: 'configType',
|
||||
title: '系统内置',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 'Y') {
|
||||
return '<span class="badge badge-primary">是</span>';
|
||||
} else if (value == 'N') {
|
||||
return '<span class="badge badge-danger">否</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.configId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.configId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,94 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-config-edit" th:object="${config}">
|
||||
<input id="configId" name="configId" th:field="*{configId}" type="hidden">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configName" name="configName" th:field="*{configName}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数键名:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configKey" name="configKey" th:field="*{configKey}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">参数键值:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="configValue" name="configValue" th:field="*{configValue}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">系统内置:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_yes_no')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="configType" th:value="${dict['dictValue']}" th:field="*{configType}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<textarea id="remark" name="remark" class="form-control">[[*{remark}]]</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/config"
|
||||
|
||||
$("#form-config-edit").validate({
|
||||
rules: {
|
||||
configKey: {
|
||||
required: true,
|
||||
remote: {
|
||||
url: prefix + "/checkConfigKeyUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"configId": function() {
|
||||
return $("input[name='configId']").val();
|
||||
},
|
||||
"configKey": function() {
|
||||
return $("input[name='configKey']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
configName: {
|
||||
required: true
|
||||
},
|
||||
configValue: {
|
||||
required: true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"configKey": {
|
||||
remote: "参数键名已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
$.operate.save(prefix + "/save", $('#form-config-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,109 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-dept-add">
|
||||
<input id="treeId" name="parentId" type="hidden" th:value="${dept.deptId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">上级部门:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" onclick="selectDeptTree()" id="treeName" readonly="true" th:value="${dept.deptName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="deptName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示排序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="orderNum">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">负责人:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="leader">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">联系电话:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="phone">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/dept"
|
||||
|
||||
$("#form-dept-add").validate({
|
||||
rules:{
|
||||
deptName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: prefix + "/checkDeptNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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){
|
||||
$.operate.save(prefix + "/save", $('#form-dept-add').serialize());
|
||||
}
|
||||
});
|
||||
|
||||
/*部门管理-新增-选择父部门树*/
|
||||
function selectDeptTree() {
|
||||
var deptId = $("#treeId").val();
|
||||
var url = prefix + "/selectDeptTree/" + deptId;
|
||||
$.modal.open("选择部门", url, '380', '380');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,104 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<style type="text/css">
|
||||
.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}
|
||||
</style>
|
||||
<body class="gray-bg">
|
||||
<div class="wrapper wrapper-content">
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<div class="form-group">
|
||||
<a type="button" class="btn btn-outline btn-default" onclick="$.operate.add(100)" shiro:hasPermission="system:dept:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var addFlag = [[${@permissionService.hasPermi('system:dept:add')}]];
|
||||
var editFlag = [[${@permissionService.hasPermi('system:dept:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:dept:remove')}]];
|
||||
var prefix = ctx + "system/dept"
|
||||
|
||||
window.onload = function() {
|
||||
loading();
|
||||
};
|
||||
|
||||
function loading() {
|
||||
var options = {
|
||||
id: "deptId",
|
||||
parentId: "parentId",
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add/{id}",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove/{id}",
|
||||
modalName: "部门",
|
||||
columns: [{
|
||||
field: 'deptName',
|
||||
title: '部门名称',
|
||||
},
|
||||
{
|
||||
field: 'orderNum',
|
||||
title: '排序',
|
||||
align: "center"
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: "center",
|
||||
formatter: function(item, index) {
|
||||
if (item.status == '0') {
|
||||
return '<span class="badge badge-primary">正常</span>';
|
||||
} else if (item.status == '1') {
|
||||
return '<span class="badge badge-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createTimeStr',
|
||||
title: '创建时间',
|
||||
align: "center"
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(row, index) {
|
||||
if (row.parentId != 0) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.deptId + '\')"><i class="fa fa-edit">编辑</i></a> ');
|
||||
actions.push('<a class="btn btn-info btn-xs ' + addFlag + '" href="#" onclick="$.operate.add(\'' + row.deptId + '\')"><i class="fa fa-plus">新增</i></a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="remove(\'' + row.deptId + '\')"><i class="fa fa-remove">删除</i></a>');
|
||||
return actions.join('');
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.treeTable.init(options);
|
||||
}
|
||||
|
||||
function remove(id) {
|
||||
$.modal.confirm("确定删除该条" + $.table._option.modalName + "信息吗?", function() {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url: prefix + "/remove/" + id,
|
||||
success : function(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
$.modal.alertSuccess(result.msg);
|
||||
loading();
|
||||
} else {
|
||||
$.modal.alertError(result.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,112 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-dept-edit" th:object="${dept}">
|
||||
<input name="deptId" type="hidden" th:field="*{deptId}" />
|
||||
<input id="treeId" name="parentId" type="hidden" th:field="*{parentId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">上级部门:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" id="treeName" onclick="selectDeptTree()" readonly="true" th:field="*{parentName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="deptName" th:field="*{deptName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示排序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="orderNum" th:field="*{orderNum}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">负责人:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="leader" th:field="*{leader}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">联系电话:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="phone" th:field="*{phone}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="email" th:field="*{email}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:field="*{status}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/dept"
|
||||
|
||||
$("#form-dept-edit").validate({
|
||||
rules:{
|
||||
deptName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: prefix + "/checkDeptNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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){
|
||||
$.operate.save(prefix + "/save", $('#form-dept-edit').serialize());
|
||||
}
|
||||
});
|
||||
|
||||
/*部门管理-修改-选择部门树*/
|
||||
function selectDeptTree() {
|
||||
var deptId = $("#treeId").val();
|
||||
var url = prefix + "/selectDeptTree/" + deptId;
|
||||
$.modal.open("选择部门", url, '380', '380');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,183 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
||||
<style>
|
||||
body{height:auto;font-family: "Microsoft YaHei";}
|
||||
button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
||||
</style>
|
||||
<body class="hold-transition box box-main">
|
||||
<input id="treeId" name="treeId" type="hidden"/>
|
||||
<input id="treeName" name="treeName" type="hidden" th:value="${treeName}"/>
|
||||
<div class="wrapper"><div class="treeShowHideButton" onclick="search();">
|
||||
<label id="btnShow" title="显示搜索" style="display:none;">︾</label>
|
||||
<label id="btnHide" title="隐藏搜索">︽</label>
|
||||
</div>
|
||||
<div class="treeSearchInput" id="search">
|
||||
<label for="keyword">关键字:</label><input type="text" class="empty" id="keyword" maxlength="50">
|
||||
<button class="btn" id="btn" onclick="searchNode()"> 搜索 </button>
|
||||
</div>
|
||||
<div class="treeExpandCollapse">
|
||||
<a href="javascript:" id="btnExpand">展开</a> /
|
||||
<a href="javascript:" id="btnCollapse">折叠</a>
|
||||
</div>
|
||||
<div id="tree" class="ztree treeselect"></div>
|
||||
</div>
|
||||
<div class="layui-layer-btn">
|
||||
<a class="layui-layer-btn0" th:onclick="'javascript:loadObj()'"><i class="fa fa-check"></i> 确定</a>
|
||||
<a class="layui-layer-btn1" onclick="$.modal.close()"><i class="fa fa-close"></i> 关闭</a>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
||||
<script th:inline="javascript">
|
||||
// 树结构初始化加载
|
||||
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(ctx + "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 loadObj(){
|
||||
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();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,94 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-dict-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">字典标签:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictLabel" id="dictLabel"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">字典键值:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictValue" id="dictValue"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">字典类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" id="dictType" name="dictType" readonly="true" th:value="${dictType}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">样式属性:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" id="cssClass" name="cssClass">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">系统默认:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_yes_no')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="isDefault" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">字典排序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictSort">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/dict/data"
|
||||
|
||||
$("#form-dict-add").validate({
|
||||
rules:{
|
||||
dictLabel:{
|
||||
required:true,
|
||||
},
|
||||
dictValue:{
|
||||
required:true,
|
||||
},
|
||||
dictSort:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(prefix + "/save", $('#form-dict-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,128 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
字典类型:<input type="text" id="dictType" name="dictType" th:value="${dict.dictType}"/>
|
||||
</li>
|
||||
<li>
|
||||
字典标签:<input type="text" name="dictLabel"/>
|
||||
</li>
|
||||
<li>
|
||||
数据状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" th:onclick="'javascript:$.operate.add(\''+${dict.dictType}+'\')'" shiro:hasPermission="system:dict:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:dict:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:dict:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:dict:remove')}]];
|
||||
var prefix = ctx + "system/dict/data"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add/{id}",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
queryParams: queryParams,
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
modalName: "数据",
|
||||
search: false,
|
||||
showExport: false,
|
||||
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="badge badge-primary">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'remark',
|
||||
title: '备注'
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.dictCode + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.dictCode + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
function queryParams(params) {
|
||||
return {
|
||||
dictType: $("#dictType").val()
|
||||
};
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,95 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-dict-edit" th:object="${dict}">
|
||||
<input name="dictCode" type="hidden" th:field="*{dictCode}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">字典标签:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictLabel" id="dictLabel" th:field="*{dictLabel}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">字典键值:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictValue" id="dictValue" th:field="*{dictValue}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">字典类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" readonly="true" th:field="*{dictType}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">样式属性:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" id="cssClass" name="cssClass" th:field="*{cssClass}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">系统默认:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_yes_no')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="isDefault" th:value="${dict['dictValue']}" th:field="*{isDefault}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">字典排序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictSort" th:field="*{dictSort}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:field="*{status}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text" th:field="*{remark}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/dict/data"
|
||||
|
||||
$("#form-dict-edit").validate({
|
||||
rules:{
|
||||
dictLabel:{
|
||||
required:true,
|
||||
},
|
||||
dictValue:{
|
||||
required:true,
|
||||
},
|
||||
dictSort:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(prefix + "/save", $('#form-dict-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,83 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.w3.org/1999/xhtml">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-dict-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">字典名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictName" id="dictName"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">字典类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictType" id="dictType">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/dict"
|
||||
|
||||
$("#form-dict-add").validate({
|
||||
rules:{
|
||||
dictName:{
|
||||
required:true,
|
||||
},
|
||||
dictType:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
remote: {
|
||||
url: prefix + "/checkDictTypeUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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){
|
||||
$.operate.save(prefix + "/save", $('#form-dict-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,87 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns:th="http://www.w3.org/1999/xhtml">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-dict-edit" th:object="${dict}">
|
||||
<input id="dictId" name="dictId" type="hidden" th:field="*{dictId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">字典名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictName" id="dictName" th:field="*{dictName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">字典类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="dictType" id="dictType" th:field="*{dictType}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:field="*{status}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text" th:field="*{remark}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/dict"
|
||||
|
||||
$("#form-dict-edit").validate({
|
||||
rules:{
|
||||
dictName:{
|
||||
required:true,
|
||||
},
|
||||
dictType:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
remote: {
|
||||
url: prefix + "/checkDictTypeUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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){
|
||||
$.operate.save(prefix + "/save", $('#form-dict-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,128 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
字典名称:<input type="text" name="dictName"/>
|
||||
</li>
|
||||
<li>
|
||||
字典类型:<input type="text" name="dictType"/>
|
||||
</li>
|
||||
<li>
|
||||
字典状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="system:dict:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:dict:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:dict:edit')}]];
|
||||
var listFlag = [[${@permissionService.hasPermi('system:dict:list')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:dict:remove')}]];
|
||||
var prefix = ctx + "system/dict"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
modalName: "类型",
|
||||
search: false,
|
||||
showExport: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'dictId',
|
||||
title: '字典主键'
|
||||
},
|
||||
{
|
||||
field: 'dictName',
|
||||
title: '字典名称'
|
||||
},
|
||||
{
|
||||
field: 'dictType',
|
||||
title: '字典类型',
|
||||
formatter: function(value, row, index) {
|
||||
return '<a href="#" onclick="detail(\'' + row.dictId + '\')">' + value + '</a>';
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == 0) {
|
||||
return '<span class="badge badge-primary">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'remark',
|
||||
title: '备注'
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.dictId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-info btn-xs ' + listFlag + '" href="#" onclick="detail(\'' + row.dictId + '\')"><i class="fa fa-list-ul"></i>列表</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.dictId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
/*字典列表-详细*/
|
||||
function detail(dictId) {
|
||||
var url = prefix + '/detail/' + dictId;
|
||||
createMenuItem(url, "字典数据");
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,159 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/iCheck/custom.css" th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-menu-add">
|
||||
<input id="treeId" name="parentId" type="hidden" th:value="${menu.menuId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">上级菜单:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" onclick="selectMenuTree()" id="treeName" readonly="true" th:value="${menu.menuName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<label class="checkbox-inline i-checks"> <input type="radio" name="menuType" value="M" /> 目录 </label>
|
||||
<label class="checkbox-inline i-checks"> <input type="radio" name="menuType" value="C" /> 菜单 </label>
|
||||
<label class="checkbox-inline i-checks"> <input type="radio" name="menuType" value="F" /> 按钮 </label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="menuName" id="menuName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">请求地址:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="url" name="url" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">权限标识:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="perms" name="perms" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示排序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="orderNum">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">图标:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="icon" name="icon" class="form-control" type="text" placeholder="选择图标">
|
||||
<div class="ms-parent" style="width: 100%;">
|
||||
<div class="icon-drop animated flipInX" style="display: none;max-height:200px;overflow-y:auto">
|
||||
<div data-th-include="system/menu/icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_show_hide')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="visible" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||
<script>
|
||||
var prefix = ctx + "system/menu"
|
||||
$("#form-menu-add").validate({
|
||||
rules:{
|
||||
menuName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: prefix + "/checkMenuNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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){
|
||||
$.operate.save(prefix + "/save", $('#form-menu-add').serialize());
|
||||
}
|
||||
});
|
||||
|
||||
$(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 selectMenuTree() {
|
||||
var menuId = $("#treeId").val();
|
||||
if(menuId > 0) {
|
||||
var url = prefix + "/selectMenuTree/" + menuId;
|
||||
$.modal.open("选择菜单", url, '380', '380');
|
||||
}
|
||||
else {
|
||||
var url = prefix + "/selectMenuTree/1";
|
||||
$.modal.open("选择菜单", url, '380', '380');
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,174 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/iCheck/custom.css" th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-menu-edit" th:object="${menu}">
|
||||
<input name="menuId" type="hidden" th:field="*{menuId}" />
|
||||
<input id="treeId" name="parentId" type="hidden" th:field="*{parentId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">上级菜单:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" onclick="selectMenuTree()" id="treeName" readonly="true" th:value="${menu.parentName == null ? '无' : menu.parentName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<label class="checkbox-inline i-checks"> <input type="radio" th:field="*{menuType}" name="menuType" value="M" /> 目录 </label>
|
||||
<label class="checkbox-inline i-checks"> <input type="radio" th:field="*{menuType}" name="menuType" value="C" /> 菜单 </label>
|
||||
<label class="checkbox-inline i-checks"> <input type="radio" th:field="*{menuType}" name="menuType" value="F" /> 按钮 </label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="menuName" id="menuName" th:field="*{menuName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">请求地址:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="url" name="url" class="form-control" type="text" th:field="*{url}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">权限标识:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="perms" name="perms" class="form-control" type="text" th:field="*{perms}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示排序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="orderNum" th:field="*{orderNum}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">图标:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="icon" name="icon" class="form-control" type="text" placeholder="选择图标" th:field="*{icon}">
|
||||
<div class="ms-parent" style="width: 100%;">
|
||||
<div class="icon-drop animated flipInX" style="display: none;max-height:200px;overflow-y:auto">
|
||||
<div data-th-include="system/menu/icon"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_show_hide')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="visible" th:value="${dict['dictValue']}" th:field="*{visible}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||
<script>
|
||||
var prefix = ctx + "system/menu"
|
||||
|
||||
$(document).ready(function() {
|
||||
var menuType = $('input[name="menuType"]:checked').val();
|
||||
menuVisible(menuType);
|
||||
});
|
||||
|
||||
$("#form-menu-edit").validate({
|
||||
rules:{
|
||||
menuName:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: prefix + "/checkMenuNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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){
|
||||
$.operate.save(prefix + "/save", $('#form-menu-edit').serialize());
|
||||
}
|
||||
});
|
||||
|
||||
$(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 selectMenuTree() {
|
||||
var menuId = $("#treeId").val();
|
||||
if(menuId > 0) {
|
||||
var url = prefix + "/selectMenuTree/" + menuId;
|
||||
$.modal.open("选择菜单", url, '380', '380');
|
||||
}
|
||||
else {
|
||||
$.modal.alertError("主菜单不能选择");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,928 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Font Awesome Ico list</title>
|
||||
<link href="/css/font-awesome.min.css" th:href="@{/css/font-awesome.min.css}" rel="stylesheet"/>
|
||||
<script src="/js/jquery.min.js"></script>
|
||||
<style type="text/css">
|
||||
.ico-list .fa{
|
||||
margin: 5px;
|
||||
padding: 5px;
|
||||
cursor:pointer;
|
||||
font-size: 18px;
|
||||
width: 28px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.ico-list .fa:hover {
|
||||
background-color: #1d9d74;
|
||||
color: #ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="ico-list">
|
||||
<i class="fa fa-address-book" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-address-book-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-address-card" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-address-card-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-adjust" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-american-sign-language-interpreting" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-anchor" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-archive" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-area-chart" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-arrows" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-arrows-h" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-arrows-v" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-asl-interpreting" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-assistive-listening-systems" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-asterisk" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-at" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-audio-description" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-automobile" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-balance-scale" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-ban" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bank" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bar-chart" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bar-chart-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-barcode" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bars" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bath" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bathtub" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-0" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-1" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-2" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-3" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-4" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-empty" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-full" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-half" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-quarter" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-battery-three-quarters" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bed" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-beer" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bell" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bell-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bell-slash" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bell-slash-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bicycle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-binoculars" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-birthday-cake" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-blind" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bluetooth" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bluetooth-b" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bolt" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bomb" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-book" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bookmark" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bookmark-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-braille" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-briefcase" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bug" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-building" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-building-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bullhorn" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bullseye" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-bus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cab" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calculator" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calendar" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calendar-check-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calendar-minus-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calendar-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calendar-plus-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-calendar-times-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-camera" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-camera-retro" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-car" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-caret-square-o-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-caret-square-o-left" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-caret-square-o-right" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-caret-square-o-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cart-arrow-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cart-plus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-certificate" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-check" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-check-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-check-circle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-check-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-check-square-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-child" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-circle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-circle-o-notch" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-circle-thin" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-clock-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-clone" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-close" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cloud" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cloud-download" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cloud-upload" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-code" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-code-fork" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-coffee" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cog" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cogs" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-comment" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-comment-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-commenting" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-commenting-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-comments" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-comments-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-compass" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-copyright" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-creative-commons" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-credit-card" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-credit-card-alt" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-crop" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-crosshairs" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cube" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cubes" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-cutlery" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-dashboard" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-database" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-deaf" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-deafness" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-desktop" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-diamond" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-dot-circle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-download" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-drivers-license" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-drivers-license-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-edit" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-ellipsis-h" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-ellipsis-v" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-envelope" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-envelope-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-envelope-open" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-envelope-open-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-envelope-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-eraser" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-exchange" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-exclamation" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-exclamation-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-external-link" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-external-link-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-eye" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-eye-slash" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-eyedropper" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-fax" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-feed" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-female" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-fighter-jet" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-archive-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-audio-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-code-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-excel-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-image-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-movie-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-pdf-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-photo-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-picture-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-powerpoint-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-sound-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-video-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-word-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-file-zip-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-film" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-filter" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-fire" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-fire-extinguisher" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-flag" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-flag-checkered" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-flag-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-flash" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-flask" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-folder" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-folder-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-folder-open" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-folder-open-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-frown-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-futbol-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-gamepad" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-gavel" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-gear" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-gears" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-gift" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-glass" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-globe" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-graduation-cap" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-group" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-grab-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-lizard-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-paper-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-peace-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-pointer-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-rock-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-scissors-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-spock-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hand-stop-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-handshake-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hard-of-hearing" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hashtag" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hdd-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-headphones" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-heart" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-heart-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-heartbeat" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-history" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-home" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hotel" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-1" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-2" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-3" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-end" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-half" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-hourglass-start" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-i-cursor" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-id-badge" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-id-card" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-id-card-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-image" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-inbox" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-industry" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-info" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-info-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-institution" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-key" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-keyboard-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-language" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-laptop" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-leaf" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-legal" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-lemon-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-level-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-level-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-life-bouy" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-life-buoy" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-life-ring" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-life-saver" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-lightbulb-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-line-chart" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-location-arrow" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-lock" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-low-vision" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-magic" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-magnet" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mail-forward" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mail-reply" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mail-reply-all" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-male" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-map" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-map-marker" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-map-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-map-pin" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-map-signs" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-meh-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-microchip" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-microphone" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-microphone-slash" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-minus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-minus-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-minus-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-minus-square-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mobile" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mobile-phone" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-money" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-moon-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mortar-board" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-motorcycle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-mouse-pointer" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-music" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-navicon" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-newspaper-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-object-group" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-object-ungroup" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-paint-brush" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-paper-plane" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-paper-plane-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-paw" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-pencil" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-pencil-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-pencil-square-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-percent" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-phone" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-phone-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-photo" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-picture-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-pie-chart" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-plane" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-plug" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-plus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-plus-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-plus-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-plus-square-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-podcast" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-power-off" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-print" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-puzzle-piece" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-qrcode" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-question" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-question-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-quote-left" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-quote-right" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-random" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-recycle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-refresh" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-registered" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-remove" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-reorder" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-reply" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-reply-all" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-retweet" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-road" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-rocket" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-rss" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-rss-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-s15" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-search" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-search-minus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-search-plus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-send" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-send-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-server" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-share" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-share-alt" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-share-alt-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-share-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-share-square-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-shield" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-ship" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-shopping-bag" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-shopping-basket" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-shopping-cart" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-shower" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sign-in" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sign-language" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sign-out" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-signal" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-signing" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sitemap" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sliders" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-smile-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-snowflake-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-soccer-ball-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-alpha-asc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-alpha-desc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-amount-asc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-amount-desc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-asc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-desc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-numeric-asc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-numeric-desc" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sort-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-space-shuttle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-spinner" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-spoon" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-square" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-square-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-star" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-star-half" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-star-half-empty" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-star-half-full" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-star-half-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-star-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sticky-note" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sticky-note-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-street-view" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-suitcase" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-sun-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-support" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tablet" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tachometer" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tag" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tags" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tasks" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-taxi" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-television" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-terminal" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-0" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-1" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-2" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-3" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-4" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-empty" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-full" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-half" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-quarter" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thermometer-three-quarters" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thumb-tack" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thumbs-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thumbs-o-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thumbs-o-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-thumbs-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-ticket" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-times" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-times-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-times-circle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-times-rectangle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-times-rectangle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tint" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-toggle-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-toggle-left" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-toggle-off" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-toggle-on" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-toggle-right" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-toggle-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-trademark" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-trash" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-trash-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tree" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-trophy" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-truck" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tty" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-tv" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-umbrella" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-universal-access" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-university" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-unlock" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-unlock-alt" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-unsorted" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-upload" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user-circle" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user-circle-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user-plus" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user-secret" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-user-times" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-users" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-vcard" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-vcard-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-video-camera" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-volume-control-phone" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-volume-down" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-volume-off" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-volume-up" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-warning" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-wheelchair" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-wheelchair-alt" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-wifi" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-window-close" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-window-close-o" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-window-maximize" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-window-minimize" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-window-restore" aria-hidden="true"></i>
|
||||
|
||||
<i class="fa fa-wrench" aria-hidden="true"></i>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
@ -1,135 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<style type="text/css">
|
||||
.fixed-table-container{position:relative;clear:both;border:1px solid #ddd;border-radius:4px;-webkit-border-radius:4px;-moz-border-radius:4px}
|
||||
</style>
|
||||
<body class="gray-bg">
|
||||
<div class="wrapper wrapper-content">
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<div class="form-group">
|
||||
<a type="button" class="btn btn-outline btn-default" onclick="$.operate.add(0)" shiro:hasPermission="system:menu:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var addFlag = [[${@permissionService.hasPermi('system:menu:add')}]];
|
||||
var editFlag = [[${@permissionService.hasPermi('system:menu:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:menu:remove')}]];
|
||||
var prefix = ctx + "system/menu"
|
||||
|
||||
window.onload = function() {
|
||||
loading();
|
||||
};
|
||||
|
||||
function loading() {
|
||||
var options = {
|
||||
id: "menuId",
|
||||
parentId: "parentId",
|
||||
expandAll: false,
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add/{id}",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove/{id}",
|
||||
modalName: "菜单",
|
||||
columns: [{
|
||||
title: '菜单名称',
|
||||
field: 'menuName',
|
||||
width: '20%',
|
||||
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: '排序',
|
||||
width: '10%',
|
||||
align: "center"
|
||||
},
|
||||
{
|
||||
field: 'url',
|
||||
title: '请求地址',
|
||||
width: '15%',
|
||||
align: "center"
|
||||
},
|
||||
{
|
||||
title: '类型',
|
||||
field: 'menuType',
|
||||
width: '10%',
|
||||
align: "center",
|
||||
formatter: function(item, index) {
|
||||
if (item.menuType == 'M') {
|
||||
return '<span class="label label-success">目录</span>';
|
||||
}
|
||||
else if (item.menuType == 'C') {
|
||||
return '<span class="label label-primary">菜单</span>';
|
||||
}
|
||||
else if (item.menuType == 'F') {
|
||||
return '<span class="label label-warning">按钮</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'visible',
|
||||
title: '可见',
|
||||
width: '10%',
|
||||
align: "center",
|
||||
formatter: function(row, index) {
|
||||
if (row.visible == 0) {
|
||||
return '<span class="badge badge-primary">显示</span>';
|
||||
} else if (row.visible == 1) {
|
||||
return '<span class="badge badge-danger">隐藏</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'perms',
|
||||
title: '权限标识',
|
||||
width: '15%',
|
||||
align: "center",
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
width: '20%',
|
||||
align: "center",
|
||||
formatter: function(row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.menuId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-info btn-xs ' + addFlag + '" href="#" onclick="$.operate.add(\'' + row.menuId + '\')"><i class="fa fa-plus"></i>新增</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="remove(\'' + row.menuId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.treeTable.init(options);
|
||||
}
|
||||
|
||||
function remove(id) {
|
||||
$.modal.confirm("确定删除该条" + $.table._option.modalName + "信息吗?", function() {
|
||||
$.ajax({
|
||||
type : 'post',
|
||||
url: prefix + "/remove/" + id,
|
||||
success : function(result) {
|
||||
if (result.code == web_status.SUCCESS) {
|
||||
$.modal.alertSuccess(result.msg);
|
||||
loading();
|
||||
} else {
|
||||
$.modal.alertError(result.msg);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,171 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
||||
<style>
|
||||
body{height:auto;font-family: "Microsoft YaHei";}
|
||||
button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
|
||||
</style>
|
||||
<body class="hold-transition box box-main">
|
||||
<input id="treeId" name="treeId" type="hidden"/>
|
||||
<input id="treeName" name="treeName" type="hidden" th:value="${treeName}"/>
|
||||
<div class="wrapper"><div class="treeShowHideButton" onclick="search();">
|
||||
<label id="btnShow" title="显示搜索" style="display:none;">︾</label>
|
||||
<label id="btnHide" title="隐藏搜索">︽</label>
|
||||
</div>
|
||||
<div class="treeSearchInput" id="search">
|
||||
<label for="keyword">关键字:</label><input type="text" class="empty" id="keyword" maxlength="50">
|
||||
<button class="btn" id="btn" onclick="searchNode()"> 搜索 </button>
|
||||
</div>
|
||||
<div class="treeExpandCollapse">
|
||||
<a href="javascript:" id="btnExpand">展开</a> /
|
||||
<a href="javascript:" id="btnCollapse">折叠</a>
|
||||
</div>
|
||||
<div id="tree" class="ztree treeselect"></div>
|
||||
</div>
|
||||
<div class="layui-layer-btn">
|
||||
<a class="layui-layer-btn0" th:onclick="'javascript:loadObj()'"><i class="fa fa-check"></i> 确定</a>
|
||||
<a class="layui-layer-btn1" onclick="$.modal.close()"><i class="fa fa-close"></i> 关闭</a>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
||||
<script th:inline="javascript">
|
||||
// 树结构初始化加载
|
||||
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(ctx + "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 loadObj(){
|
||||
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();
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,73 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link th:href="@{/ajax/libs/summernote/summernote.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ajax/libs/summernote/summernote-bs3.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-notice-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告标题:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="noticeTitle" name="noticeTitle" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="noticeType" class="form-control m-b" th:with="type=${@dictService.selectDictData('sys_notice_type')}">
|
||||
<option th:each="dict : ${type}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告内容:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="noticeContent" name="noticeContent" type="hidden">
|
||||
<div class="summernote"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_notice_status')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/summernote/summernote.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/summernote/summernote-zh-CN.js}"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
$('.summernote').summernote({
|
||||
height : '220px',
|
||||
lang : 'zh-CN'
|
||||
});
|
||||
|
||||
var prefix = ctx + "system/notice"
|
||||
$("#form-notice-add").validate({
|
||||
rules:{
|
||||
noticeTitle:{
|
||||
required:true,
|
||||
}
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
var sHTML = $('.summernote').code();
|
||||
$("#noticeContent").val(sHTML);
|
||||
$.operate.save(prefix + "/save", $('#form-notice-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,77 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link th:href="@{/ajax/libs/summernote/summernote.css}" rel="stylesheet"/>
|
||||
<link th:href="@{/ajax/libs/summernote/summernote-bs3.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-notice-edit" th:object="${notice}">
|
||||
<input id="noticeId" name="noticeId" th:field="*{noticeId}" type="hidden">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告标题:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="noticeTitle" name="noticeTitle" th:field="*{noticeTitle}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告类型:</label>
|
||||
<div class="col-sm-8">
|
||||
<select name="noticeType" class="form-control m-b" th:with="type=${@dictService.selectDictData('sys_notice_type')}">
|
||||
<option th:each="dict : ${type}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}" th:field="*{noticeType}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告内容:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="noticeContent" name="noticeContent" th:field="*{noticeContent}" type="hidden">
|
||||
<div id="editor" class="summernote"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">公告状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_notice_status')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:field="*{status}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/summernote/summernote.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/summernote/summernote-zh-CN.js}"></script>
|
||||
<script type="text/javascript">
|
||||
$(function() {
|
||||
$('.summernote').summernote({
|
||||
height : '220px',
|
||||
lang : 'zh-CN'
|
||||
});
|
||||
var content = $("#noticeContent").val();
|
||||
$('#editor').code(content);
|
||||
});
|
||||
|
||||
var prefix = ctx + "system/notice"
|
||||
$("#form-notice-edit").validate({
|
||||
rules:{
|
||||
xxxx:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
var sHTML = $('.summernote').code();
|
||||
$("#noticeContent").val(sHTML);
|
||||
$.operate.save(prefix + "/save", $('#form-notice-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,119 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
公告标题:<input type="text" name="noticeTitle"/>
|
||||
</li>
|
||||
<li>
|
||||
操作人员:<input type="text" name="createBy"/>
|
||||
</li>
|
||||
<li>
|
||||
公告类型:<select name="noticeType" th:with="type=${@dictService.selectDictData('sys_notice_type')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.addFull()" shiro:hasPermission="system:notice:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:notice:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:notice:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:notice:remove')}]];
|
||||
var prefix = ctx + "system/notice"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
modalName: "公告",
|
||||
search: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field : 'noticeId',
|
||||
title : '序号'
|
||||
},
|
||||
{
|
||||
field : 'noticeTitle',
|
||||
title : '公告标题'
|
||||
},
|
||||
{
|
||||
field: 'noticeType',
|
||||
title: '公告类型',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == '1') {
|
||||
return '<span class="label label-warning">通知</span>';
|
||||
} else if (value == '2') {
|
||||
return '<span class="badge badge-success">公告</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == '0') {
|
||||
return '<span class="badge badge-primary">正常</span>';
|
||||
} else if (value == '1') {
|
||||
return '<span class="badge badge-danger">关闭</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field : 'createBy',
|
||||
title : '创建者'
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.editFull(\'' + row.noticeId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.noticeId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,72 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-post-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">岗位编码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="postCode" id="postCode"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">岗位名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="postName" id="postName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示顺序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="postSort" id="postSort">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">岗位状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:checked="${dict['isDefault'] == 'Y' ? true : false}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/post"
|
||||
|
||||
$("#form-post-add").validate({
|
||||
rules:{
|
||||
postCode:{
|
||||
required:true,
|
||||
},
|
||||
postName:{
|
||||
required:true,
|
||||
},
|
||||
postSort:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(prefix + "/save", $('#form-post-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,73 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-post-edit" th:object="${post}">
|
||||
<input id="postId" name="postId" type="hidden" th:field="*{postId}"/>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">岗位编码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="postCode" id="postCode" th:field="*{postCode}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">岗位名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="postName" id="postName" th:field="*{postName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示顺序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="postSort" id="postSort" th:field="*{postSort}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">岗位状态:</label>
|
||||
<div class="col-sm-8" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<div th:each="dict : ${type}" th:class="${dict['cssClass']}">
|
||||
<input type="radio" th:id="${dict['dictCode']}" name="status" th:value="${dict['dictValue']}" th:field="*{status}">
|
||||
<label th:for="${dict['dictCode']}" th:text="${dict['dictLabel']}"></label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text" th:field="*{remark}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "system/post"
|
||||
|
||||
$("#form-post-edit").validate({
|
||||
rules:{
|
||||
postCode:{
|
||||
required:true,
|
||||
},
|
||||
postName:{
|
||||
required:true,
|
||||
},
|
||||
postSort:{
|
||||
required:true,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(prefix + "/save", $('#form-post-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,116 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
岗位编码:<input type="text" name="postCode"/>
|
||||
</li>
|
||||
<li>
|
||||
岗位名称:<input type="text" name="postName"/>
|
||||
</li>
|
||||
<li>
|
||||
岗位状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<button class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="system:post:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</button>
|
||||
<button class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:post:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:post:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:post:remove')}]];
|
||||
var prefix = ctx + "system/post"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "postSort",
|
||||
modalName: "岗位",
|
||||
search: false,
|
||||
showExport: false,
|
||||
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="badge badge-primary">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.postId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.postId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,160 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css" th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-role-add">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">角色名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="roleName" id="roleName"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">权限字符:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="roleKey" id="roleKey">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示顺序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="roleSort" id="roleSort">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="onoffswitch">
|
||||
<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="status" name="status">
|
||||
<label class="onoffswitch-label" for="status">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单权限</label>
|
||||
<div class="col-sm-8">
|
||||
<div id="menuTrees" class="ztree"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
||||
<script type="text/javascript">
|
||||
// 树结构初始化加载
|
||||
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(ctx + "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: ctx + "system/role/checkRoleNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"roleName": {
|
||||
remote: "角色已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
add();
|
||||
}
|
||||
});
|
||||
|
||||
function selectCheckeds() {
|
||||
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 = selectCheckeds();
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : ctx + "system/role/save",
|
||||
data : {
|
||||
"roleName": roleName,
|
||||
"roleKey": roleKey,
|
||||
"roleSort": roleSort,
|
||||
"status": status,
|
||||
"remark": remark,
|
||||
"menuIds": menuIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modal.alertError("系统错误");
|
||||
},
|
||||
success : function(data) {
|
||||
$.modal.saveSuccess(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,166 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css" th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-role-edit" th:object="${role}">
|
||||
<input id="roleId" name="roleId" type="hidden" th:field="*{roleId}"/>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">角色名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="roleName" id="roleName" th:field="*{roleName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">权限字符:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="roleKey" id="roleKey" th:field="*{roleKey}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">显示顺序:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="roleSort" id="roleSort" th:field="*{roleSort}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="onoffswitch">
|
||||
<input type="checkbox" th:checked="${role.status == '0' ? true : false}" class="onoffswitch-checkbox" id="status" name="status">
|
||||
<label class="onoffswitch-label" for="status">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">备注:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="remark" name="remark" class="form-control" type="text" th:field="*{remark}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">菜单权限</label>
|
||||
<div class="col-sm-8">
|
||||
<div id="menuTrees" class="ztree"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
||||
<script type="text/javascript">
|
||||
// 树结构初始化加载
|
||||
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(ctx + "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: ctx + "system/role/checkRoleNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
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,
|
||||
digits:true
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"roleName": {
|
||||
remote: "角色已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
edit();
|
||||
}
|
||||
});
|
||||
|
||||
function selectCheckeds() {
|
||||
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 edit() {
|
||||
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 = selectCheckeds();
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : ctx + "system/role/save",
|
||||
data : {
|
||||
"roleId": roleId,
|
||||
"roleName": roleName,
|
||||
"roleKey": roleKey,
|
||||
"roleSort": roleSort,
|
||||
"status": status,
|
||||
"remark": remark,
|
||||
"menuIds": menuIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modal.alertError("系统错误");
|
||||
},
|
||||
success : function(data) {
|
||||
$.operate.saveSuccess(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,116 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
角色名称:<input type="text" name="roleName"/>
|
||||
</li>
|
||||
<li>
|
||||
权限字符:<input type="text" name="roleKey"/>
|
||||
</li>
|
||||
<li>
|
||||
角色状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="system:role:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:role:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:role:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:role:remove')}]];
|
||||
var prefix = ctx + "system/role"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "roleSort",
|
||||
modalName: "角色",
|
||||
search: false,
|
||||
showExport: false,
|
||||
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="badge badge-primary">正常</span>';
|
||||
} else if (value == 1) {
|
||||
return '<span class="badge badge-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.roleId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.roleId + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,229 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-user-add">
|
||||
<input name="deptId" type="hidden" id="treeId"/>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">登录名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" id="loginName" name="loginName"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="deptName" onclick="selectDeptTree()" readonly="true" id="treeName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">用户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="userName" id="userName">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">密码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="password" name="password" id="password" th:value="${@configService.selectConfigByKey('sys.user.initPassword')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="email" id="email">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">手机:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="phonenumber" id="phonenumber">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">性别:</label>
|
||||
<div class="col-sm-8">
|
||||
<select id="sex" class="form-control m-b" th:with="type=${@dictService.selectDictData('sys_user_sex')}">
|
||||
<option th:each="dict : ${type}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="onoffswitch">
|
||||
<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="status" name="status">
|
||||
<label class="onoffswitch-label" for="status">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">岗位:</label>
|
||||
<div class="col-sm-8">
|
||||
<select id="post" name="post" class="form-control select2-hidden-accessible" multiple="">
|
||||
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}"></option>
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">角色:</label>
|
||||
<div class="col-sm-8">
|
||||
<label th:each="role:${roles}" class="checkbox-inline i-checks">
|
||||
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/select/select2.js}"></script>
|
||||
<script>
|
||||
$("#form-user-add").validate({
|
||||
rules:{
|
||||
loginName:{
|
||||
required:true,
|
||||
minlength: 2,
|
||||
maxlength: 20,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkLoginNameUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
name : function() {
|
||||
return $.trim($("#loginName").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function(data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
userName:{
|
||||
required:true,
|
||||
},
|
||||
deptName:{
|
||||
required:true,
|
||||
},
|
||||
password:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
maxlength: 20
|
||||
},
|
||||
email:{
|
||||
required:true,
|
||||
email:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkEmailUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
name: function () {
|
||||
return $.trim($("#email").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function (data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
phonenumber:{
|
||||
required:true,
|
||||
isPhone:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkPhoneUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
name: function () {
|
||||
return $.trim($("#phonenumber").val());
|
||||
}
|
||||
},
|
||||
dataFilter: function (data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"loginName": {
|
||||
remote: "用户已经存在"
|
||||
},
|
||||
"email": {
|
||||
remote: "Email已经存在"
|
||||
},
|
||||
"phonenumber":{
|
||||
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 sex = $("#sex option:selected").val();
|
||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||
var roleIds = $.form.selectCheckeds("role");
|
||||
var postIds = $.form.selectSelects("post");
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : ctx + "system/user/save",
|
||||
data : {
|
||||
"userId": userId,
|
||||
"deptId": deptId,
|
||||
"loginName": loginName,
|
||||
"userName": userName,
|
||||
"password": password,
|
||||
"email": email,
|
||||
"phonenumber": phonenumber,
|
||||
"sex": sex,
|
||||
"status": status,
|
||||
"roleIds": roleIds,
|
||||
"postIds": postIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modal.alertError("系统错误");
|
||||
},
|
||||
success : function(data) {
|
||||
$.operate.saveSuccess(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*用户管理-新增-选择部门树*/
|
||||
function selectDeptTree() {
|
||||
var treeId = $("#treeId").val();
|
||||
var deptId = treeId == null || treeId == "" ? "100" : treeId;
|
||||
var url = ctx + "system/dept/selectDeptTree/" + deptId;
|
||||
$.modal.open("选择部门", url, '380', '380');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,198 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/iCheck/custom.css" th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-user-edit" th:object="${user}">
|
||||
<input name="userId" type="hidden" th:field="*{userId}" />
|
||||
<input name="deptId" type="hidden" th:field="*{deptId}" id="treeId"/>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">登录名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" readonly="true" th:field="*{loginName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="deptName" onclick="selectDeptTree()" readonly="true" id="treeName" th:field="*{dept.deptName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">用户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="userName" id="userName" th:field="*{userName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="email" id="email" th:field="*{email}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">手机:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="phonenumber" id="phonenumber" th:field="*{phonenumber}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">性别:</label>
|
||||
<div class="col-sm-8">
|
||||
<select id="sex" class="form-control m-b" th:with="type=${@dictService.selectDictData('sys_user_sex')}">
|
||||
<option th:each="dict : ${type}" th:text="${dict['dictLabel']}" th:value="${dict['dictValue']}" th:field="*{sex}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">状态:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="onoffswitch">
|
||||
<input type="checkbox" th:checked="${user.status == '0' ? true : false}" class="onoffswitch-checkbox" id="status" name="status">
|
||||
<label class="onoffswitch-label" for="status">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">岗位:</label>
|
||||
<div class="col-sm-8">
|
||||
<select id="post" name="post" class="form-control select2-hidden-accessible" multiple="">
|
||||
<option th:each="post:${posts}" th:value="${post.postId}" th:text="${post.postName}" th:selected="${post.flag}"></option>
|
||||
</select>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">角色:</label>
|
||||
<div class="col-sm-8">
|
||||
<label th:each="role:${roles}" class="checkbox-inline i-checks">
|
||||
<input name="role" type="checkbox" th:value="${role.roleId}" th:text="${role.roleName}" th:checked="${role.flag}">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/select/select2.js}"></script>
|
||||
<script>
|
||||
$("#form-user-edit").validate({
|
||||
rules:{
|
||||
userName:{
|
||||
required:true,
|
||||
},
|
||||
deptName:{
|
||||
required:true,
|
||||
},
|
||||
email:{
|
||||
required:true,
|
||||
email:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkEmailUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"userId": function() {
|
||||
return $("input[name='userId']").val();
|
||||
},
|
||||
"email": function() {
|
||||
return $("input[name='email']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function (data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
phonenumber:{
|
||||
required:true,
|
||||
isPhone:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkPhoneUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"userId": function() {
|
||||
return $("input[name='userId']").val();
|
||||
},
|
||||
"phonenumber": function() {
|
||||
return $("input[name='phonenumber']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function (data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"email": {
|
||||
remote: "Email已经存在"
|
||||
},
|
||||
"phonenumber":{
|
||||
remote: "手机号码已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
edit();
|
||||
}
|
||||
});
|
||||
|
||||
function edit() {
|
||||
var userId = $("input[name='userId']").val();
|
||||
var deptId = $("input[name='deptId']").val();
|
||||
var userName = $("input[name='userName']").val();
|
||||
var email = $("input[name='email']").val();
|
||||
var phonenumber = $("input[name='phonenumber']").val();
|
||||
var sex = $("#sex option:selected").val();
|
||||
var status = $("input[name='status']").is(':checked') == true ? 0 : 1;
|
||||
var roleIds = $.form.selectCheckeds("role");
|
||||
var postIds = $.form.selectSelects("post");
|
||||
$.ajax({
|
||||
cache : true,
|
||||
type : "POST",
|
||||
url : ctx + "system/user/save",
|
||||
data : {
|
||||
"userId": userId,
|
||||
"deptId": deptId,
|
||||
"userName": userName,
|
||||
"email": email,
|
||||
"phonenumber": phonenumber,
|
||||
"sex": sex,
|
||||
"status": status,
|
||||
"roleIds": roleIds,
|
||||
"postIds": postIds
|
||||
},
|
||||
async : false,
|
||||
error : function(request) {
|
||||
$.modal.alertError("系统错误");
|
||||
},
|
||||
success : function(data) {
|
||||
$.operate.saveSuccess(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/*用户管理-修改-选择部门树*/
|
||||
function selectDeptTree() {
|
||||
var deptId = $("#treeId").val();
|
||||
var url = ctx + "system/dept/selectDeptTree/" + deptId;
|
||||
$.modal.open("选择部门", url, '380', '380');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,81 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<title>用户头像修改</title>
|
||||
<link href="/ajax/libs/cropbox/cropbox.css" th:href="@{/ajax/libs/cropbox/cropbox.css}" rel="stylesheet"/>
|
||||
<body class="white-bg">
|
||||
<input name="userId" id="userId" type="hidden" th:value="${user.userId}" />
|
||||
<div class="container">
|
||||
<div class="imageBox">
|
||||
<div class="thumbBox"></div>
|
||||
<div class="spinner" style="display: none">Loading...</div>
|
||||
</div>
|
||||
<div class="action">
|
||||
<div class="new-contentarea tc">
|
||||
<a href="javascript:void(0)" class="upload-img"> <label for="avatar">上传图像</label> </a>
|
||||
<input type="file" class="" name="avatar" id="avatar" accept="image/*"/>
|
||||
</div>
|
||||
<input type="button" id="btnCrop" class="Btnsty_peyton" value="裁切" />
|
||||
<input type="button" id="btnZoomIn" class="Btnsty_peyton" value="+" />
|
||||
<input type="button" id="btnZoomOut" class="Btnsty_peyton" value="-" />
|
||||
<input type="button" id="blobSubmit" class="Btnsty_peyton" value="提交" />
|
||||
</div>
|
||||
<div class="cropped"></div>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script th:src="@{/ajax/libs/cropbox/cropbox.js}"></script>
|
||||
<script type="text/javascript">
|
||||
$(window).load(function() {
|
||||
var options = {
|
||||
thumbBox: '.thumbBox',
|
||||
spinner: '.spinner',
|
||||
imgSrc: '/img/profile.jpg'
|
||||
}
|
||||
var cropper = $('.imageBox').cropbox(options);
|
||||
$('#avatar').on('change',
|
||||
function() {
|
||||
var reader = new FileReader();
|
||||
reader.onload = function(e) {
|
||||
options.imgSrc = e.target.result;
|
||||
//根据MIME判断上传的文件是不是图片类型
|
||||
if((options.imgSrc).indexOf("image/")==-1){
|
||||
parent.layer.alert("文件格式错误,请上传图片类型,如:JPG,JEPG,PNG后缀的文件。", {icon: 2,title:"系统提示"});
|
||||
} else {
|
||||
cropper = $('.imageBox').cropbox(options);
|
||||
}
|
||||
}
|
||||
reader.readAsDataURL(this.files[0]);
|
||||
})
|
||||
$('#blobSubmit').on('click', function(){
|
||||
var img = cropper.getBlob();
|
||||
var formdata = new FormData();
|
||||
formdata.append("avatarfile", img);
|
||||
formdata.append("userId", $("#userId").val());
|
||||
$.ajax({
|
||||
url: ctx + "system/user/profile/updateAvatar",
|
||||
data: formdata,
|
||||
type: "post",
|
||||
processData: false,
|
||||
contentType: false,
|
||||
success: function(result) {
|
||||
$.operate.saveSuccess(result);
|
||||
}
|
||||
})
|
||||
})
|
||||
$('#btnCrop').on('click', function(){
|
||||
var img = cropper.getDataURL();
|
||||
$('.cropped').html('');
|
||||
$('.cropped').append('<img src="'+img+'" align="absmiddle" style="width:64px;margin-top:4px;border-radius:64px;box-shadow:0px 0px 12px #7E7E7E;" ><p>64px*64px</p>');
|
||||
$('.cropped').append('<img src="'+img+'" align="absmiddle" style="width:128px;margin-top:4px;border-radius:128px;box-shadow:0px 0px 12px #7E7E7E;"><p>128px*128px</p>');
|
||||
$('.cropped').append('<img src="'+img+'" align="absmiddle" style="width:180px;margin-top:4px;border-radius:180px;box-shadow:0px 0px 12px #7E7E7E;"><p>180px*180px</p>');
|
||||
})
|
||||
$('#btnZoomIn').on('click', function(){
|
||||
cropper.zoomIn();
|
||||
})
|
||||
$('#btnZoomOut').on('click', function(){
|
||||
cropper.zoomOut();
|
||||
})
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,125 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-user-edit" th:object="${user}">
|
||||
<input name="userId" type="hidden" th:field="*{userId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">登录名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" readonly="true" th:field="*{loginName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">部门名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" readonly="true" th:field="*{dept.deptName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">用户名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="userName" id="userName" th:field="*{userName}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">邮箱:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="email" th:field="*{email}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">手机:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" name="phonenumber" id="phonenumber" th:field="*{phonenumber}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">性别:</label>
|
||||
<div class="col-sm-8">
|
||||
<div class="radio radio-info radio-inline">
|
||||
<input type="radio" id="radio1" th:field="*{sex}" name="sex" value="0">
|
||||
<label for="radio1">男</label>
|
||||
</div>
|
||||
<div class="radio radio-danger radio-inline">
|
||||
<input type="radio" id="radio2" th:field="*{sex}" name="sex" value="1">
|
||||
<label for="radio2">女</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script>
|
||||
$("#form-user-edit").validate({
|
||||
rules:{
|
||||
userName:{
|
||||
required:true,
|
||||
},
|
||||
email:{
|
||||
required:true,
|
||||
email:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkEmailUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"userId": function() {
|
||||
return $("input[name='userId']").val();
|
||||
},
|
||||
"email": function() {
|
||||
return $("input[name='email']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function (data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
phonenumber:{
|
||||
required:true,
|
||||
isPhone:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/checkPhoneUnique",
|
||||
type: "post",
|
||||
dataType: "json",
|
||||
data: {
|
||||
"userId": function() {
|
||||
return $("input[name='userId']").val();
|
||||
},
|
||||
"phonenumber": function() {
|
||||
return $("input[name='phonenumber']").val();
|
||||
}
|
||||
},
|
||||
dataFilter: function (data, type) {
|
||||
if (data == "0") return true;
|
||||
else return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
messages: {
|
||||
"email": {
|
||||
remote: "Email已经存在"
|
||||
},
|
||||
"phonenumber":{
|
||||
remote: "手机号码已经存在"
|
||||
}
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(ctx + "system/user/profile/update", $('#form-user-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,79 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<!--360浏览器优先以webkit内核解析-->
|
||||
<title>个人信息</title>
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
<link href="../static/css/bootstrap.min.css" th:href="@{/css/bootstrap.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/font-awesome.min.css" th:href="@{/css/font-awesome.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/main/animate.min.css" th:href="@{/css/main/animate.min.css}" rel="stylesheet"/>
|
||||
<link href="../static/css/main/style.min862f.css" th:href="@{/css/main/style.min862f.css}" rel="stylesheet"/>
|
||||
</head>
|
||||
|
||||
<body class="gray-bg">
|
||||
<div class="wrapper wrapper-content">
|
||||
<div class="row animated fadeInRight">
|
||||
<div class="col-sm-6">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>个人信息</h5>
|
||||
<div class="ibox-tools">
|
||||
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="profile.html#">
|
||||
<i class="fa fa-edit"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="javascript:edit()">修改信息</a></li>
|
||||
<li><a href="javascript:resetPwd()">修改密码</a></li>
|
||||
<li><a href="javascript:avatar()">修改头像</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact-box">
|
||||
<div class="col-sm-4">
|
||||
<div class="text-center">
|
||||
<img alt="image" class="img-circle m-t-xs img-responsive" th:src="(${user.avatar} == '') ? '/img/profile.jpg' : '/profile/' + ${user.avatar}">
|
||||
<div class="m-t-xs font-bold">[[${user.loginIp}]]</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<h3><strong>[[${user.loginName}]]</strong></h3>
|
||||
<p><i class="fa fa-user"></i> [[${user.userName}]] / [[${#strings.defaultString(roleGroup,'无角色')}]]
|
||||
<p><i class="fa fa-phone"></i> [[${user.phonenumber}]]</p>
|
||||
<p><i class="fa fa-group"></i> [[${user.dept.deptName}]] / [[${#strings.defaultString(postGroup,'无岗位')}]]</p>
|
||||
<p><i class="fa fa-transgender"></i> [[${user.sex}]]</p>
|
||||
<p><i class="fa fa-envelope-o"></i> [[${user.email}]]</p>
|
||||
<p><i class="fa fa-calendar"></i> [[${user.createTimeStr}]]</p>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div th:include="include::footer"></div>
|
||||
<script>
|
||||
var userId = [[${user.userId}]];
|
||||
/*用户信息-修改*/
|
||||
function edit() {
|
||||
var url = ctx + "system/user/profile/edit/" + userId;
|
||||
$.modal.open("修改用户", url);
|
||||
}
|
||||
/*用户管理-重置密码*/
|
||||
function resetPwd() {
|
||||
var url = ctx + 'system/user/profile/resetPwd/' + userId;
|
||||
$.modal.open("重置密码", url, '800', '500');
|
||||
}
|
||||
/*用户管理-头像*/
|
||||
function avatar() {
|
||||
var url = ctx + 'system/user/profile/avatar/' + userId;
|
||||
$.modal.open("修改头像", url);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,92 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-user-resetPwd">
|
||||
<input name="userId" type="hidden" th:value="${user.userId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">登录名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" readonly="true" name="loginName" th:value="${user.loginName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">旧密码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="password" name="oldPassword" id="oldPassword">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">新密码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="password" name="password" id="password">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">再次确认:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="password" name="confirm" id="confirm">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
|
||||
<script>
|
||||
$("#form-user-resetPwd").validate({
|
||||
rules:{
|
||||
oldPassword:{
|
||||
required:true,
|
||||
remote: {
|
||||
url: ctx + "system/user/profile/checkPassword",
|
||||
type: "get",
|
||||
dataType: "json",
|
||||
data: {
|
||||
password: function() {
|
||||
return $("input[name='oldPassword']").val();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
password: {
|
||||
required: true,
|
||||
minlength: 5,
|
||||
maxlength: 20
|
||||
},
|
||||
confirm: {
|
||||
required: true,
|
||||
equalTo: "#password"
|
||||
}
|
||||
},
|
||||
messages: {
|
||||
oldPassword: {
|
||||
required: "请输入原密码",
|
||||
remote: "原密码错误"
|
||||
},
|
||||
password: {
|
||||
required: "请输入新密码",
|
||||
minlength: "密码不能小于6个字符",
|
||||
maxlength: "密码不能大于20个字符"
|
||||
},
|
||||
confirm: {
|
||||
required: "请再次输入新密码",
|
||||
equalTo: "两次密码输入不一致"
|
||||
}
|
||||
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(ctx + "system/user/profile/resetPwd", $('#form-user-resetPwd').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,46 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-user-resetPwd">
|
||||
<input name="userId" type="hidden" th:value="${user.userId}" />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label ">登录名称:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="text" readonly="true" name="loginName" th:value="${user.loginName}"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">输入密码:</label>
|
||||
<div class="col-sm-8">
|
||||
<input class="form-control" type="password" name="password" id="password" value="123456">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script type="text/javascript">
|
||||
$("#form-user-resetPwd").validate({
|
||||
rules:{
|
||||
password:{
|
||||
required:true,
|
||||
minlength: 5,
|
||||
maxlength: 20
|
||||
},
|
||||
},
|
||||
submitHandler:function(form){
|
||||
$.operate.save(ctx + "system/user/resetPwd", $('#form-user-resetPwd').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
@ -1,213 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"
|
||||
xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/jquery-layout/jquery.layout-latest.css" th:href="@{/ajax/libs/jquery-layout/jquery.layout-latest.css}" rel="stylesheet"/>
|
||||
<link href="/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css" th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
|
||||
|
||||
<body class="gray-bg">
|
||||
<div class="ui-layout-west">
|
||||
<div class="main-content">
|
||||
<div class="box box-main">
|
||||
<div class="box-header">
|
||||
<div class="box-title">
|
||||
<i class="fa icon-grid"></i> 组织机构
|
||||
</div>
|
||||
<div class="box-tools pull-right">
|
||||
<a type="button" class="btn btn-box-tool menuItem" href="#" onclick="dept()" title="管理机构"><i class="fa fa-edit"></i></a>
|
||||
<button type="button" class="btn btn-box-tool" id="btnExpand" title="展开" style="display:none;"><i class="fa fa-chevron-up"></i></button>
|
||||
<button type="button" class="btn btn-box-tool" id="btnCollapse" title="折叠"><i class="fa fa-chevron-down"></i></button>
|
||||
<button type="button" class="btn btn-box-tool" id="btnRefresh" title="刷新机构"><i class="fa fa-refresh"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-layout-content">
|
||||
<div id="tree" class="ztree"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container-div ui-layout-center">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<input type="hidden" id="deptId" name="deptId">
|
||||
<input type="hidden" id="parentId" name="parentId">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
登录名称:<input type="text" name="loginName"/>
|
||||
</li>
|
||||
<li>
|
||||
手机号码:<input type="text" name="phonenumber"/>
|
||||
</li>
|
||||
<li>
|
||||
用户状态:<select name="status" th:with="type=${@dictService.selectDictData('sys_normal_disable')}">
|
||||
<option value="">所有</option>
|
||||
<option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option>
|
||||
</select>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel($('form').attr('id'))"><i class="fa fa-download"></i> 下载</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="system:user:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</a>
|
||||
<a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="system:user:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:src="@{/ajax/libs/jquery-layout/jquery.layout-latest.js}"></script>
|
||||
<script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('system:user:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('system:user:remove')}]];
|
||||
var resetPwdFlag = [[${@permissionService.hasPermi('system:user:resetPwd')}]];
|
||||
var prefix = ctx + "system/user"
|
||||
|
||||
$(document).ready(function(){
|
||||
$('body').layout({ west__size: 185 });
|
||||
queryUserList();
|
||||
queryDeptTreeDaTa();
|
||||
});
|
||||
|
||||
function queryUserList() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
exportUrl: prefix + "/export",
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
modalName: "用户",
|
||||
search: false,
|
||||
showExport: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'userId',
|
||||
title: '用户ID'
|
||||
},
|
||||
{
|
||||
field: 'loginName',
|
||||
title: '登录名称'
|
||||
},
|
||||
{
|
||||
field: 'userName',
|
||||
title: '用户名称'
|
||||
},
|
||||
{
|
||||
field: 'dept.deptName',
|
||||
title: '部门'
|
||||
},
|
||||
{
|
||||
field: 'email',
|
||||
title: '邮箱'
|
||||
},
|
||||
{
|
||||
field: 'phonenumber',
|
||||
title: '手机'
|
||||
},
|
||||
{
|
||||
field: 'status',
|
||||
title: '状态',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
if (value == '0') {
|
||||
return '<span class="badge badge-primary">正常</span>';
|
||||
} else if (value == '1') {
|
||||
return '<span class="badge badge-danger">停用</span>';
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.userId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.userId + '\')"><i class="fa fa-remove"></i>删除</a> ');
|
||||
actions.push('<a class="btn btn-info btn-xs ' + resetPwdFlag + '" href="#" onclick="resetPwd(\'' + row.userId + '\')"><i class="fa fa-key"></i>重置</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
}
|
||||
|
||||
function queryDeptTreeDaTa()
|
||||
{
|
||||
// 树结构初始化加载
|
||||
var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
|
||||
callback:{onClick:function(event, treeId, treeNode){
|
||||
tree.expandNode(treeNode);
|
||||
$("#deptId").val(treeNode.id);
|
||||
$("#parentId").val(treeNode.pId);
|
||||
$.table.search($('form').attr('id'));
|
||||
}}
|
||||
}, tree, loadTree = function(){
|
||||
$.get(ctx + "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 dept() {
|
||||
var url = ctx + "system/dept";
|
||||
createMenuItem(url, "部门管理");
|
||||
}
|
||||
|
||||
/*用户管理-重置密码*/
|
||||
function resetPwd(userId) {
|
||||
var url = prefix + '/resetPwd/' + userId;
|
||||
$.modal.open("重置密码", url, '800', '300');
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,167 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<link href="/ajax/libs/iCheck/custom.css" th:href="@{/ajax/libs/iCheck/custom.css}" rel="stylesheet"/>
|
||||
<link href="/ajax/libs/datapicker/datepicker3.css" th:href="@{/ajax/libs/datapicker/datepicker3.css}" rel="stylesheet"/>
|
||||
<style>
|
||||
.droppable-active{background-color:#ffe!important}.tools a{cursor:pointer;font-size:80%}.form-body .col-md-6,.form-body .col-md-12{min-height:400px}.draggable{cursor:move}
|
||||
</style>
|
||||
<body class="gray-bg">
|
||||
<div class="wrapper wrapper-content">
|
||||
<div class="row">
|
||||
<div class="col-sm-5">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>元素</h5>
|
||||
<div class="ibox-tools">
|
||||
<a class="collapse-link">
|
||||
<i class="fa fa-chevron-up"></i>
|
||||
</a>
|
||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
|
||||
<i class="fa fa-wrench"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-user">
|
||||
<li><a href="#">基本</a>
|
||||
</li>
|
||||
<li><a href="#">其他</a>
|
||||
</li>
|
||||
</ul>
|
||||
<a class="close-link">
|
||||
<i class="fa fa-times"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ibox-content">
|
||||
<div class="alert alert-info">
|
||||
拖拽左侧的表单元素到右侧区域,即可生成相应的HTML代码,表单代码,轻松搞定!
|
||||
</div>
|
||||
<form role="form" class="form-horizontal m-t">
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">文本框:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="text" name="" class="form-control" placeholder="请输入文本">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">密码框:</label>
|
||||
<div class="col-sm-9">
|
||||
<input type="password" class="form-control" name="password" placeholder="请输入密码">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">下拉框:</label>
|
||||
<div class="col-sm-9">
|
||||
<select class="form-control" name="">
|
||||
<option>选项 1</option>
|
||||
<option>选项 2</option>
|
||||
<option>选项 3</option>
|
||||
<option>选项 4</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">纯文本:</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<p class="form-control-static">这里是纯文字信息</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">单选框:
|
||||
</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<label class="radio-inline i-checks"><input type="radio" checked="" value="option1" id="optionsRadios1" name="optionsRadios">选项1</label>
|
||||
<label class="radio-inline i-checks"><input type="radio" value="option2" id="optionsRadios2" name="optionsRadios">选项2</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">复选框:</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<label class="checkbox-inline i-checks">
|
||||
<input type="checkbox" value="option1" id="inlineCheckbox1">选项1</label>
|
||||
<label class="checkbox-inline i-checks">
|
||||
<input type="checkbox" value="option2" id="inlineCheckbox2">选项2</label>
|
||||
<label class="checkbox-inline i-checks">
|
||||
<input type="checkbox" value="option3" id="inlineCheckbox3">选项3</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">切换按钮:
|
||||
</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<div class="onoffswitch">
|
||||
<input type="checkbox" th:checked="true" class="onoffswitch-checkbox" id="status" name="status">
|
||||
<label class="onoffswitch-label" for="status">
|
||||
<span class="onoffswitch-inner"></span>
|
||||
<span class="onoffswitch-switch"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group draggable">
|
||||
<label class="col-sm-3 control-label">日期选择:</label>
|
||||
|
||||
<div class="col-sm-9">
|
||||
<div class="form-group">
|
||||
<div class="input-group date">
|
||||
<span class="input-group-addon"><i class="fa fa-calendar"></i></span>
|
||||
<input type="text" class="form-control" value="2018-04-20">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="hr-line-dashed"></div>
|
||||
<div class="form-group draggable">
|
||||
<div class="col-sm-12 col-sm-offset-3">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm-7">
|
||||
<div class="ibox float-e-margins">
|
||||
<div class="ibox-title">
|
||||
<h5>拖拽左侧表单元素到此区域</h5>
|
||||
<div class="ibox-tools">
|
||||
请选择显示的列数:
|
||||
<select id="n-columns">
|
||||
<option value="1">显示1列</option>
|
||||
<option value="2">显示2列</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ibox-content">
|
||||
<div class="row form-body form-horizontal m-t">
|
||||
<div class="col-md-12 droppable sortable">
|
||||
</div>
|
||||
<div class="col-md-6 droppable sortable" style="display: none;">
|
||||
</div>
|
||||
<div class="col-md-6 droppable sortable" style="display: none;">
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-warning" data-clipboard-text="testing" id="copy-to-clipboard">复制代码</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:src="@{/js/jquery-ui-1.10.4.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs/iCheck/icheck.min.js}"></script>
|
||||
<script th:src="@{/ajax/libs//datapicker/bootstrap-datepicker.js}"></script>
|
||||
<script th:src="@{/ajax/libs/beautifyhtml/beautifyhtml.js}"></script>
|
||||
<script>
|
||||
$(document).ready(function(){setup_draggable();$("#n-columns").on("change",function(){var v=$(this).val();if(v==="1"){var $col=$(".form-body .col-md-12").toggle(true);$(".form-body .col-md-6 .draggable").each(function(i,el){$(this).remove().appendTo($col)});$(".form-body .col-md-6").toggle(false)}else{var $col=$(".form-body .col-md-6").toggle(true);$(".form-body .col-md-12 .draggable").each(function(i,el){$(this).remove().appendTo(i%2?$col[1]:$col[0])});$(".form-body .col-md-12").toggle(false)}});$("#copy-to-clipboard").on("click",function(){var $copy=$(".form-body").clone().appendTo(document.body);$copy.find(".tools, :hidden").remove();$.each(["draggable","droppable","sortable","dropped","ui-sortable","ui-draggable","ui-droppable","form-body"],function(i,c){$copy.find("."+c).removeClass(c).removeAttr("style")});var html=html_beautify($copy.html());$copy.remove();$modal=get_modal(html).modal("show");$modal.find(".btn").remove();$modal.find(".modal-title").html("复制HTML代码");$modal.find(":input:first").select().focus();return false})});var setup_draggable=function(){$(".draggable").draggable({appendTo:"body",helper:"clone"});$(".droppable").droppable({accept:".draggable",helper:"clone",hoverClass:"droppable-active",drop:function(event,ui){$(".empty-form").remove();var $orig=$(ui.draggable);if(!$(ui.draggable).hasClass("dropped")){var $el=$orig.clone().addClass("dropped").css({"position":"static","left":null,"right":null}).appendTo(this);var id=$orig.find(":input").attr("id");if(id){id=id.split("-").slice(0,-1).join("-")+"-"+(parseInt(id.split("-").slice(-1)[0])+1);$orig.find(":input").attr("id",id);$orig.find("label").attr("for",id)}$('<p class="tools col-sm-12 col-sm-offset-3"> <a class="edit-link">编辑HTML<a> | <a class="remove-link">移除</a></p>').appendTo($el)}else{if($(this)[0]!=$orig.parent()[0]){var $el=$orig.clone().css({"position":"static","left":null,"right":null}).appendTo(this);$orig.remove()}}}}).sortable()};var get_modal=function(content){var modal=$('<div class="modal" style="overflow: auto;" tabindex="-1"> <div class="modal-dialog"><div class="modal-content"><div class="modal-header"><a type="button" class="close" data-dismiss="modal" aria-hidden="true">×</a><h4 class="modal-title">编辑HTML</h4></div><div class="modal-body ui-front"> <textarea class="form-control" style="min-height: 200px; margin-bottom: 10px;font-family: Monaco, Fixed">'+content+'</textarea><button class="btn btn-success">更新HTML</button></div> </div></div></div>').appendTo(document.body);return modal};$(document).on("click",".edit-link",function(ev){var $el=$(this).parent().parent();var $el_copy=$el.clone();var $edit_btn=$el_copy.find(".edit-link").parent().remove();var $modal=get_modal(html_beautify($el_copy.html())).modal("show");$modal.find(":input:first").focus();$modal.find(".btn-success").click(function(ev2){var html=$modal.find("textarea").val();if(!html){$el.remove()}else{$el.html(html);$edit_btn.appendTo($el)}$modal.modal("hide");return false})});$(document).on("click",".remove-link",function(ev){$(this).parent().parent().remove()});
|
||||
$(".input-group.date").datepicker({todayBtn: "linked",keyboardNavigation: !1,forceParse: !1,calendarWeeks: !0,autoclose: !0});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,101 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
|
||||
<div class="container-div">
|
||||
<div class="row">
|
||||
<div class="col-sm-12 select-info">
|
||||
<form id="operlog-form">
|
||||
<div class="select-list gd">
|
||||
<ul>
|
||||
<li>
|
||||
表名称:<input type="text" name="tableName"/>
|
||||
</li>
|
||||
<li>
|
||||
表描述:<input type="text" name="tableComment"/>
|
||||
</li>
|
||||
<li>
|
||||
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search($('form').attr('id'))"><i class="fa fa-search"></i> 搜索</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<a class="btn btn-outline btn-success btn-rounded" onclick="javascript:batchGenCode()" shiro:hasPermission="tool:gen:code">
|
||||
<i class="fa fa-download"></i> 批量生成
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-12 select-info order-table">
|
||||
<table id="bootstrap-table" data-mobile-responsive="true"></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "tool/gen"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
sortName: "createTime",
|
||||
sortOrder: "desc",
|
||||
search: false,
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
{
|
||||
field: 'tableName',
|
||||
title: '表名称'
|
||||
},
|
||||
{
|
||||
field: 'tableComment',
|
||||
title: '表描述'
|
||||
},
|
||||
{
|
||||
field: 'createDateTimeStr',
|
||||
title: '创建时间'
|
||||
},
|
||||
{
|
||||
field: 'updateDateTimeStr',
|
||||
title: '更新时间'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var msg = '<a class="btn btn-primary btn-xs" href="#" onclick="genCode(\'' + row.tableName + '\')"><i class="fa fa-bug"></i>生成代码</a> ';
|
||||
return msg;
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
|
||||
// 生成代码
|
||||
function genCode(tableName) {
|
||||
$.modal.confirm("确定要生成" + tableName + "表代码吗?", function() {
|
||||
location.href = prefix + "/genCode/" + tableName;
|
||||
layer.msg('执行成功,正在生成代码请稍后…', { icon: 1 });
|
||||
})
|
||||
}
|
||||
|
||||
//批量生成代码
|
||||
function batchGenCode() {
|
||||
var rows = $.table.selectColumns("tableName");
|
||||
if (rows.length == 0) {
|
||||
$.modal.alertWarning("请选择要生成的数据");
|
||||
return;
|
||||
}
|
||||
$.modal.confirm("确认要生成选中的" + rows.length + "条数据吗?", function() {
|
||||
location.href = prefix + "/batchGenCode?tables=" + JSON.stringify(rows);
|
||||
layer.msg('执行成功,正在生成代码请稍后…', { icon: 1 });
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,41 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-${classname}-add">
|
||||
#foreach($column in $columns)
|
||||
#if($column.columnName != $primaryKey.columnName)
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">${column.columnComment}:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="${column.attrname}" name="${column.attrname}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
#end
|
||||
#end
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "${moduleName}/${classname}"
|
||||
$("#form-${classname}-add").validate({
|
||||
rules:{
|
||||
xxxx:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
$.operate.save(prefix + "/save", $('#form-${classname}-add').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,42 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="white-bg">
|
||||
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
|
||||
<form class="form-horizontal m" id="form-${classname}-edit" th:object="${${classname}}">
|
||||
<input id="${primaryKey.attrname}" name="${primaryKey.attrname}" th:field="*{${primaryKey.attrname}}" type="hidden">
|
||||
#foreach($column in $columns)
|
||||
#if($column.columnName != $primaryKey.columnName)
|
||||
<div class="form-group">
|
||||
<label class="col-sm-3 control-label">${column.columnComment}:</label>
|
||||
<div class="col-sm-8">
|
||||
<input id="${column.attrname}" name="${column.attrname}" th:field="*{${column.attrname}}" class="form-control" type="text">
|
||||
</div>
|
||||
</div>
|
||||
#end
|
||||
#end
|
||||
<div class="form-group">
|
||||
<div class="form-control-static col-sm-offset-9">
|
||||
<button type="submit" class="btn btn-primary">提交</button>
|
||||
<button onclick="$.modal.close()" class="btn btn-danger" type="button">关闭</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div th:include="include::footer"></div>
|
||||
<script type="text/javascript">
|
||||
var prefix = ctx + "${moduleName}/${classname}"
|
||||
$("#form-${classname}-edit").validate({
|
||||
rules:{
|
||||
xxxx:{
|
||||
required:true,
|
||||
},
|
||||
},
|
||||
submitHandler: function(form) {
|
||||
$.operate.save(prefix + "/save", $('#form-${classname}-edit').serialize());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,55 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<meta charset="utf-8">
|
||||
<head th:include="include :: header"></head>
|
||||
<body class="gray-bg">
|
||||
<div class="wrapper wrapper-content">
|
||||
<div class="btn-group hidden-xs" id="toolbar" role="group">
|
||||
<button class="btn btn-outline btn-default" onclick="$.operate.add()" shiro:hasPermission="${moduleName}:${classname}:add">
|
||||
<i class="fa fa-plus"></i> 新增
|
||||
</button>
|
||||
<button class="btn btn-outline btn-default" onclick="$.operate.batRemove()" shiro:hasPermission="${moduleName}:${classname}:remove">
|
||||
<i class="fa fa-trash-o"></i> 删除
|
||||
</button>
|
||||
</div>
|
||||
<table id="bootstrap-table" data-mobile-responsive="true">
|
||||
</table>
|
||||
</div>
|
||||
<div th:include="include :: footer"></div>
|
||||
<script th:inline="javascript">
|
||||
var editFlag = [[${@permissionService.hasPermi('${moduleName}:${classname}:edit')}]];
|
||||
var removeFlag = [[${@permissionService.hasPermi('${moduleName}:${classname}:remove')}]];
|
||||
var prefix = ctx + "${moduleName}/${classname}"
|
||||
|
||||
$(function() {
|
||||
var options = {
|
||||
url: prefix + "/list",
|
||||
createUrl: prefix + "/add",
|
||||
updateUrl: prefix + "/edit/{id}",
|
||||
removeUrl: prefix + "/remove",
|
||||
modalName: "${tableComment}",
|
||||
columns: [{
|
||||
checkbox: true
|
||||
},
|
||||
#foreach($column in $columns)
|
||||
{
|
||||
field : '${column.attrname}',
|
||||
title : '${column.columnComment}'
|
||||
},
|
||||
#end
|
||||
{
|
||||
title: '操作',
|
||||
align: 'center',
|
||||
formatter: function(value, row, index) {
|
||||
var actions = [];
|
||||
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.${primaryKey.attrname} + '\')"><i class="fa fa-edit"></i>编辑</a> ');
|
||||
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.${primaryKey.attrname} + '\')"><i class="fa fa-remove"></i>删除</a>');
|
||||
return actions.join('');
|
||||
}
|
||||
}]
|
||||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
@ -1,107 +0,0 @@
|
||||
package ${package}.controller;
|
||||
|
||||
import java.util.List;
|
||||
import org.apache.shiro.authz.annotation.RequiresPermissions;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import ${package}.domain.${className};
|
||||
import ${package}.service.I${className}Service;
|
||||
import com.ruoyi.framework.web.controller.BaseController;
|
||||
import com.ruoyi.framework.web.page.TableDataInfo;
|
||||
import com.ruoyi.framework.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* ${tableComment} 信息操作处理
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
@Controller
|
||||
@RequestMapping("/${moduleName}/${classname}")
|
||||
public class ${className}Controller extends BaseController
|
||||
{
|
||||
private String prefix = "${moduleName}/${classname}";
|
||||
|
||||
@Autowired
|
||||
private I${className}Service ${classname}Service;
|
||||
|
||||
@RequiresPermissions("${moduleName}:${classname}:view")
|
||||
@GetMapping()
|
||||
public String ${classname}()
|
||||
{
|
||||
return prefix + "/${classname}";
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询${tableComment}列表
|
||||
*/
|
||||
@RequiresPermissions("${moduleName}:${classname}:list")
|
||||
@PostMapping("/list")
|
||||
@ResponseBody
|
||||
public TableDataInfo list(${className} ${classname})
|
||||
{
|
||||
startPage();
|
||||
List<${className}> list = ${classname}Service.select${className}List(${classname});
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增${tableComment}
|
||||
*/
|
||||
@RequiresPermissions("${moduleName}:${classname}:add")
|
||||
@GetMapping("/add")
|
||||
public String add()
|
||||
{
|
||||
return prefix + "/add";
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改${tableComment}
|
||||
*/
|
||||
@RequiresPermissions("${moduleName}:${classname}:edit")
|
||||
@GetMapping("/edit/{${primaryKey.attrname}}")
|
||||
public String edit(@PathVariable("${primaryKey.attrname}") ${primaryKey.attrType} ${primaryKey.attrname}, Model model)
|
||||
{
|
||||
${className} ${classname} = ${classname}Service.select${className}ById(${primaryKey.attrname});
|
||||
model.addAttribute("${classname}", ${classname});
|
||||
return prefix + "/edit";
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存${tableComment}
|
||||
*/
|
||||
@RequiresPermissions("${moduleName}:${classname}:save")
|
||||
@PostMapping("/save")
|
||||
@ResponseBody
|
||||
public AjaxResult save(${className} ${classname})
|
||||
{
|
||||
if (${classname}Service.save${className}(${classname}) > 0)
|
||||
{
|
||||
return success();
|
||||
}
|
||||
return error();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除${tableComment}
|
||||
*/
|
||||
@RequiresPermissions("${moduleName}:${classname}:remove")
|
||||
@PostMapping( "/remove")
|
||||
@ResponseBody
|
||||
public AjaxResult remove(String ids)
|
||||
{
|
||||
int rows = ${classname}Service.delete${className}ByIds(ids);
|
||||
if (rows > 0)
|
||||
{
|
||||
return success();
|
||||
}
|
||||
return error();
|
||||
}
|
||||
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
package ${package}.mapper;
|
||||
|
||||
import ${package}.domain.${className};
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ${tableComment} 数据层
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
public interface ${className}Mapper
|
||||
{
|
||||
/**
|
||||
* 查询${tableComment}信息
|
||||
*
|
||||
* @param ${primaryKey.attrname} ${tableComment}ID
|
||||
* @return ${tableComment}信息
|
||||
*/
|
||||
public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname});
|
||||
|
||||
/**
|
||||
* 查询${tableComment}列表
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return ${tableComment}集合
|
||||
*/
|
||||
public List<${className}> select${className}List(${className} ${classname});
|
||||
|
||||
/**
|
||||
* 新增${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert${className}(${className} ${classname});
|
||||
|
||||
/**
|
||||
* 修改${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int update${className}(${className} ${classname});
|
||||
|
||||
/**
|
||||
* 批量删除${tableComment}
|
||||
*
|
||||
* @param ${primaryKey.attrname}s 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int delete${className}ByIds(${primaryKey.attrType}[] ${primaryKey.attrname}s);
|
||||
|
||||
}
|
@ -1,63 +0,0 @@
|
||||
package ${package}.service;
|
||||
|
||||
import ${package}.domain.${className};
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ${tableComment} 服务层
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
public interface I${className}Service
|
||||
{
|
||||
/**
|
||||
* 查询${tableComment}信息
|
||||
*
|
||||
* @param ${primaryKey.attrname} ${tableComment}ID
|
||||
* @return ${tableComment}信息
|
||||
*/
|
||||
public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname});
|
||||
|
||||
/**
|
||||
* 查询${tableComment}列表
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return ${tableComment}集合
|
||||
*/
|
||||
public List<${className}> select${className}List(${className} ${classname});
|
||||
|
||||
/**
|
||||
* 新增${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int insert${className}(${className} ${classname});
|
||||
|
||||
/**
|
||||
* 修改${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int update${className}(${className} ${classname});
|
||||
|
||||
/**
|
||||
* 保存${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
public int save${className}(${className} ${classname});
|
||||
|
||||
|
||||
/**
|
||||
* 删除${tableComment}信息
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
public int delete${className}ByIds(String ids);
|
||||
|
||||
}
|
@ -1,106 +0,0 @@
|
||||
package ${package}.service;
|
||||
|
||||
import java.util.List;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import ${package}.mapper.${className}Mapper;
|
||||
import ${package}.domain.${className};
|
||||
import ${package}.service.I${className}Service;
|
||||
import com.ruoyi.common.support.Convert;
|
||||
|
||||
/**
|
||||
* ${tableComment} 服务层实现
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
@Service
|
||||
public class ${className}ServiceImpl implements I${className}Service
|
||||
{
|
||||
@Autowired
|
||||
private ${className}Mapper ${classname}Mapper;
|
||||
|
||||
/**
|
||||
* 查询${tableComment}信息
|
||||
*
|
||||
* @param ${primaryKey.attrname} ${tableComment}ID
|
||||
* @return ${tableComment}信息
|
||||
*/
|
||||
@Override
|
||||
public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname})
|
||||
{
|
||||
return ${classname}Mapper.select${className}ById(${primaryKey.attrname});
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询${tableComment}列表
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return ${tableComment}集合
|
||||
*/
|
||||
@Override
|
||||
public List<${className}> select${className}List(${className} ${classname})
|
||||
{
|
||||
return ${classname}Mapper.select${className}List(${classname});
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int insert${className}(${className} ${classname})
|
||||
{
|
||||
return ${classname}Mapper.insert${className}(${classname});
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int update${className}(${className} ${classname})
|
||||
{
|
||||
return ${classname}Mapper.update${className}(${classname});
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存${tableComment}
|
||||
*
|
||||
* @param ${classname} ${tableComment}信息
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int save${className}(${className} ${classname})
|
||||
{
|
||||
${primaryKey.attrType} ${primaryKey.attrname} = ${classname}.get${primaryKey.attrName}();
|
||||
int rows = 0;
|
||||
if (StringUtils.isNotNull(${primaryKey.attrname}))
|
||||
{
|
||||
rows = ${classname}Mapper.update${className}(${classname});
|
||||
}
|
||||
else
|
||||
{
|
||||
rows = ${classname}Mapper.insert${className}(${classname});
|
||||
}
|
||||
return rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除${tableComment}对象
|
||||
*
|
||||
* @param ids 需要删除的数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
public int delete${className}ByIds(String ids)
|
||||
{
|
||||
return ${classname}Mapper.delete${className}ByIds(Convert.toIntArray(ids));
|
||||
}
|
||||
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
package ${package}.domain;
|
||||
|
||||
import com.ruoyi.framework.web.domain.BaseEntity;
|
||||
#foreach ($column in $columns)
|
||||
#if($column.attrType == 'Date')
|
||||
import java.util.Date;
|
||||
#break
|
||||
#end
|
||||
#end
|
||||
|
||||
/**
|
||||
* ${tableComment}表 ${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${datetime}
|
||||
*/
|
||||
public class ${className} extends BaseEntity
|
||||
{
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
#foreach ($column in $columns)
|
||||
/** $column.columnComment */
|
||||
private $column.attrType $column.attrname;
|
||||
#end
|
||||
|
||||
#foreach ($column in $columns)
|
||||
/**
|
||||
* 设置:${column.columnComment}
|
||||
*/
|
||||
public void set${column.attrName}($column.attrType $column.attrname)
|
||||
{
|
||||
this.$column.attrname = $column.attrname;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取:${column.columnComment}
|
||||
*/
|
||||
public $column.attrType get${column.attrName}()
|
||||
{
|
||||
return $column.attrname;
|
||||
}
|
||||
|
||||
#end
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
values('${tableComment}', '3', '1', '/${moduleName}/${classname}', 'C', '0', '${moduleName}:${classname}:view', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '${tableComment}菜单');
|
||||
|
||||
-- 按钮父菜单ID
|
||||
SELECT @parentId := LAST_INSERT_ID();
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
values('${tableComment}查询', @parentId, '1', '#', 'F', '0', '${moduleName}:${classname}:list', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
|
||||
|
||||
insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
values('${tableComment}新增', @parentId, '2', '#', 'F', '0', '${moduleName}:${classname}:add', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
|
||||
|
||||
insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
values('${tableComment}修改', @parentId, '3', '#', 'F', '0', '${moduleName}:${classname}:edit', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
|
||||
|
||||
insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
values('${tableComment}删除', @parentId, '4', '#', 'F', '0', '${moduleName}:${classname}:remove', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
|
||||
|
||||
insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
|
||||
values('${tableComment}保存', @parentId, '5', '#', 'F', '0', '${moduleName}:${classname}:save', '#', 'admin', '2018-03-01', 'ry', '2018-03-01', '');
|
@ -1,62 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="${package}.mapper.${className}Mapper">
|
||||
|
||||
<resultMap type="${className}" id="${className}Result">
|
||||
#foreach ($column in $columns)
|
||||
<result property="${column.attrname}" column="${column.columnName}" />
|
||||
#end
|
||||
</resultMap>
|
||||
|
||||
<select id="select${className}ById" parameterType="${primaryKey.attrType}" resultMap="${className}Result">
|
||||
select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
|
||||
where ${primaryKey.columnName} = #{${primaryKey.attrname}}
|
||||
</select>
|
||||
|
||||
<select id="select${className}List" parameterType="${className}" resultMap="${className}Result">
|
||||
select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName}
|
||||
<where>
|
||||
#foreach($column in $columns)
|
||||
<if test="$column.attrname != null and $column.attrname.trim() != ''"> and $column.columnName = #{$column.attrname}</if>
|
||||
#end
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<insert id="insert${className}" parameterType="${className}"#if($primaryKey.extra == 'auto_increment') useGeneratedKeys="true" keyProperty="$primaryKey.attrname"#end>
|
||||
insert into ${tableName} (
|
||||
#foreach($column in $columns)
|
||||
#if($column.columnName != $primaryKey.columnName || $primaryKey.extra != 'auto_increment')
|
||||
<if test="$column.attrname != null and $column.attrname != '' ">$column.columnName#if($velocityCount != $columns.size()), #end</if>
|
||||
#end
|
||||
#end
|
||||
)values(
|
||||
#foreach($column in $columns)
|
||||
#if($column.columnName != $primaryKey.columnName || $primaryKey.extra != 'auto_increment')
|
||||
<if test="$column.attrname != null and $column.attrname != ''">#{$column.attrname}#if($velocityCount != $columns.size()), #end</if>
|
||||
#end
|
||||
#end
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="update${className}" parameterType="${className}">
|
||||
update ${tableName}
|
||||
<set>
|
||||
#foreach($column in $columns)
|
||||
#if($column.columnName != $primaryKey.columnName)
|
||||
<if test="$column.attrname != null and $column.attrname != ''">$column.columnName = #{$column.attrname}#if($velocityCount != $columns.size()), #end</if>
|
||||
#end
|
||||
#end
|
||||
</set>
|
||||
where ${primaryKey.columnName} = #{${primaryKey.attrname}}
|
||||
</update>
|
||||
|
||||
<delete id="delete${className}ByIds" parameterType="${primaryKey.attrType}">
|
||||
delete from ${tableName} where ${primaryKey.columnName} in
|
||||
<foreach item="${primaryKey.attrname}" collection="array" open="(" separator="," close=")">
|
||||
#{${primaryKey.attrname}}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
Reference in New Issue
Block a user