delete views
This commit is contained in:
parent
a258ba6cc2
commit
2dc5321128
@ -1,221 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
||||||
<title>CatchAdmin 后台开发框架</title>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_LIBS__/layui/css/layui.css"/>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_MODULE__/admin.css?v=315"/>
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
<style>
|
|
||||||
/** 卡片轮播图样式 */
|
|
||||||
.admin-carousel .layui-carousel-ind {
|
|
||||||
position: absolute;
|
|
||||||
top: -41px;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin-carousel .layui-carousel-ind ul {
|
|
||||||
background: 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin-carousel .layui-carousel-ind li {
|
|
||||||
background-color: #e2e2e2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin-carousel .layui-carousel-ind li.layui-this {
|
|
||||||
background-color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 广告位轮播图 */
|
|
||||||
.admin-news .layui-carousel-ind {
|
|
||||||
height: 45px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin-news a {
|
|
||||||
display: block;
|
|
||||||
line-height: 60px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<!-- 加载动画 -->
|
|
||||||
<div class="page-loading">
|
|
||||||
<div class="ball-loader">
|
|
||||||
<span></span><span></span><span></span><span></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 正文开始 -->
|
|
||||||
<div class="layui-fluid">
|
|
||||||
<div class="layui-row layui-col-space15">
|
|
||||||
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">
|
|
||||||
访问量<span class="layui-badge layui-bg-blue pull-right">周</span>
|
|
||||||
</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<p class="lay-big-font">99,666</p>
|
|
||||||
<p>总计访问量<span class="pull-right">88万 <i class="layui-icon layui-icon-flag"></i></span></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">
|
|
||||||
下载<span class="layui-badge layui-bg-black pull-right">月</span>
|
|
||||||
</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<p class="lay-big-font">33,555</p>
|
|
||||||
<p>新下载<span class="pull-right">10% <i class="layui-icon"></i></span></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">
|
|
||||||
Start<span class="layui-badge layui-bg-green pull-right">周</span>
|
|
||||||
</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<p class="lay-big-font">99,666</p>
|
|
||||||
<p>总Start数<span class="pull-right">88万 <i class="layui-icon layui-icon-rate"></i></span></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-xs12 layui-col-sm6 layui-col-md3">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">
|
|
||||||
活跃用户<span class="layui-badge layui-bg-orange pull-right">月</span>
|
|
||||||
</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<p class="lay-big-font">66,666</p>
|
|
||||||
<p>最近一个月<span class="pull-right">15% <i class="layui-icon layui-icon-user"></i></span></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-row layui-col-space15">
|
|
||||||
<div class="layui-col-lg8 layui-col-md7">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">更新日志</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<ul class="layui-timeline">
|
|
||||||
<li class="layui-timeline-item">
|
|
||||||
<i class="layui-icon layui-timeline-axis"></i>
|
|
||||||
<div class="layui-timeline-content layui-text">
|
|
||||||
<h3 class="layui-timeline-title">
|
|
||||||
V1.0
|
|
||||||
<small>catchAdmin 后台框架发布</small> 
|
|
||||||
<span class="layui-badge-rim">2019-12-15</span>
|
|
||||||
</h3>
|
|
||||||
<ul>
|
|
||||||
<li>基于 Thinkphp6 & layui 开发</li>
|
|
||||||
<li>完整的权限管理</li>
|
|
||||||
<li>模块化开发方式</li>
|
|
||||||
<li>...</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
<li class="layui-timeline-item">
|
|
||||||
<i class="layui-icon layui-timeline-axis"></i>
|
|
||||||
<div class="layui-timeline-content layui-text">
|
|
||||||
<div class="layui-timeline-title">
|
|
||||||
CatchAdmin 开发中... <span class="layui-badge-rim">更早</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-lg4 layui-col-md5">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">后台框架</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<table class="layui-table layui-text">
|
|
||||||
<colgroup>
|
|
||||||
<col width="100">
|
|
||||||
<col>
|
|
||||||
</colgroup>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>PHP 版本</td>
|
|
||||||
<td>{$Think.PHP_VERSION}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MYSQL 版本</td>
|
|
||||||
<td>{$mysql_version}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>WEB 服务器</td>
|
|
||||||
<td>{$_SERVER['SERVER_SOFTWARE']}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>操作系统</td>
|
|
||||||
<td>{$Think.PHP_OS}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>opcache (建议开启)</td>
|
|
||||||
{if condition="function_exists('opcache_get_configuration')"}
|
|
||||||
<td>{:opcache_get_configuration()['directives']['opcache.enable'] ? '开启' : '关闭' }</td>
|
|
||||||
{else/}
|
|
||||||
<td>未开启</td>
|
|
||||||
{/if}
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>最大执行时间</td>
|
|
||||||
<td>{:get_cfg_var("max_execution_time")} s</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>上传限制大小(M)</td>
|
|
||||||
<td>{:get_cfg_var ("upload_max_filesize")}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>当前时间</td>
|
|
||||||
<td>{:date("Y-m-d H:i:s")}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>核心框架</td>
|
|
||||||
<td>Thinkphp v6</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- js部分 -->
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_LIBS__/layui/layui.js"></script>
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_JS__/common.js?v=315"></script>
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'carousel'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var carousel = layui.carousel;
|
|
||||||
var device = layui.device;
|
|
||||||
|
|
||||||
// 渲染轮播
|
|
||||||
carousel.render({
|
|
||||||
elem: '.layui-carousel',
|
|
||||||
width: '100%',
|
|
||||||
height: '60px',
|
|
||||||
arrow: 'none',
|
|
||||||
autoplay: true,
|
|
||||||
trigger: device.ios || device.android ? 'click' : 'hover',
|
|
||||||
anim: 'fade'
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,38 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
||||||
<title>403</title>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_LIBS__/layui/css/layui.css"/>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_MODULE__/admin.css?v=315"/>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_CSS__/error-page.css"/>
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<!-- 正文开始 -->
|
|
||||||
<div class="error-page">
|
|
||||||
<img class="error-page-img" src="__CATCH_ADMIN_IMAGES__/ic_403.png">
|
|
||||||
<div class="error-page-info">
|
|
||||||
<h1>403</h1>
|
|
||||||
<div class="error-page-info-desc">{$msg}</div>
|
|
||||||
<div>
|
|
||||||
{if ($code == 10006)}
|
|
||||||
<a href="{:url('login')}" class="layui-btn">返回登录</a>
|
|
||||||
{else/}
|
|
||||||
<button onclick="history(-1)" class="layui-btn">返回上一页</button>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- js部分 -->
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_LIBS__/layui/layui.js"></script>
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_JS__/common.js?v=315"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,142 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
||||||
<link href="__CATCH_ADMIN_IMAGES__/favicon.ico" rel="icon">
|
|
||||||
<title>CatchAdmin 后台管理系统</title>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_LIBS__/layui/css/layui.css"/>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_MODULE__/admin.css?v=315"/>
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
</head>
|
|
||||||
<body class="layui-layout-body">
|
|
||||||
<div class="layui-layout layui-layout-admin">
|
|
||||||
<!-- 头部 -->
|
|
||||||
<div class="layui-header">
|
|
||||||
<div class="layui-logo">
|
|
||||||
<img src="__CATCH_ADMIN_IMAGES__/logo.png"/>
|
|
||||||
<cite>CatchAdmin</cite>
|
|
||||||
</div>
|
|
||||||
<ul class="layui-nav layui-layout-left">
|
|
||||||
<li class="layui-nav-item" lay-unselect>
|
|
||||||
<a ew-event="flexible" title="侧边伸缩"><i class="layui-icon layui-icon-shrink-right"></i></a>
|
|
||||||
</li>
|
|
||||||
<li class="layui-nav-item" lay-unselect>
|
|
||||||
<a ew-event="refresh" title="刷新"><i class="layui-icon layui-icon-refresh-3"></i></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
<ul class="layui-nav layui-layout-right">
|
|
||||||
<!-- <li class="layui-nav-item" lay-unselect>
|
|
||||||
<a ew-event="message" title="消息">
|
|
||||||
<i class="layui-icon layui-icon-notice"></i>
|
|
||||||
<span class="layui-badge-dot"></span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="layui-nav-item" lay-unselect>
|
|
||||||
<a ew-event="note" title="便签"><i class="layui-icon layui-icon-note"></i></a>
|
|
||||||
</li>-->
|
|
||||||
<li class="layui-nav-item layui-hide-xs" lay-unselect>
|
|
||||||
<a ew-event="fullScreen" title="全屏"><i class="layui-icon layui-icon-screen-full"></i></a>
|
|
||||||
</li>
|
|
||||||
<li class="layui-nav-item" lay-unselect>
|
|
||||||
<a>
|
|
||||||
<img src="__CATCH_ADMIN_IMAGES__/head.png" class="layui-nav-img">
|
|
||||||
<cite>{$username}</cite>
|
|
||||||
</a>
|
|
||||||
<dl class="layui-nav-child">
|
|
||||||
<!--<dd lay-unselect>
|
|
||||||
<a ew-href="javascript:;">个人中心</a>
|
|
||||||
</dd>
|
|
||||||
<dd lay-unselect>
|
|
||||||
<a ew-event="psw">修改密码</a>
|
|
||||||
</dd>
|
|
||||||
<hr>-->
|
|
||||||
<dd lay-unselect>
|
|
||||||
<a id="logout">退出</a>
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
</li>
|
|
||||||
<li class="layui-nav-item" lay-unselect>
|
|
||||||
<a ew-event="theme" title="主题"><i class="layui-icon layui-icon-more-vertical"></i></a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 侧边栏 -->
|
|
||||||
<div class="layui-side">
|
|
||||||
<div class="layui-side-scroll">
|
|
||||||
<ul class="layui-nav layui-nav-tree arrow2" lay-filter="admin-side-nav" lay-accordion="true"
|
|
||||||
style="margin-top: 15px;">
|
|
||||||
{foreach $menus as $key => $menu }
|
|
||||||
<li class="layui-nav-item">
|
|
||||||
{if (!empty($menu['children']))}
|
|
||||||
<a><i class="layui-icon layui-icon-home"></i> <cite>{$menu['permission_name']}</cite></a>
|
|
||||||
<dl class="layui-nav-child">
|
|
||||||
{foreach $menu['children'] as $m}
|
|
||||||
{if (!empty($m['children']))}
|
|
||||||
<a><i class="layui-icon layui-icon-home"></i> <cite>{$m['permission_name']}</cite></a>
|
|
||||||
<dl class="layui-nav-child">
|
|
||||||
{foreach $m['children'] as $_m}
|
|
||||||
<dd><a lay-href="{:url($_m['route'])}">{$_m['permission_name']}</a></dd>
|
|
||||||
{/foreach}
|
|
||||||
</dl>
|
|
||||||
{else/}
|
|
||||||
<dd><a lay-href="{:url($m['route'])}">{$m['permission_name']}</a></dd>
|
|
||||||
{/if}
|
|
||||||
{/foreach}
|
|
||||||
</dl>
|
|
||||||
{else/}
|
|
||||||
<a lay-href="{:url($menu['route'])}"><i class="layui-icon layui-icon-unlink"></i> <cite>{$menu['permission_name']}</cite></a>
|
|
||||||
{/if}
|
|
||||||
</li>
|
|
||||||
{/foreach}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 主体部分 -->
|
|
||||||
<div class="layui-body"></div>
|
|
||||||
<!-- 底部 -->
|
|
||||||
<div class="layui-footer">
|
|
||||||
copyright 2017 ~ © {:date('Y', time())} <a href="https://catchadmin.com" target="_blank">catchadmin.com</a> all rights reserved.
|
|
||||||
<span class="pull-right">Version 2.0</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 加载动画 -->
|
|
||||||
<div class="page-loading">
|
|
||||||
<div class="ball-loader">
|
|
||||||
<span></span><span></span><span></span><span></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- js部分 -->
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_LIBS__/layui/layui.js"></script>
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_JS__/common.js?v=315"></script>
|
|
||||||
<script>
|
|
||||||
layui.use(['index', 'admin'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var index = layui.index;
|
|
||||||
var admin = layui.admin;
|
|
||||||
|
|
||||||
// 默认加载主页
|
|
||||||
index.loadHome({
|
|
||||||
menuPath: '{:url("dashboard")}',
|
|
||||||
menuName: '<i class="layui-icon layui-icon-home"></i>'
|
|
||||||
});
|
|
||||||
$(document).on('click','#logout',function(){
|
|
||||||
admin.req('{:url("logout")}', {}, function (response) {
|
|
||||||
if (response.code === 10000) {
|
|
||||||
window.location.href = "{:url('login')}";
|
|
||||||
}
|
|
||||||
}, 'post')
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,259 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en" class="bg-white">
|
|
||||||
<head>
|
|
||||||
<title>设置</title>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_LIBS__/layui/css/layui.css"/>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_MODULE__/admin.css?v=315"/>
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
overflow-x: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.layui-card-body {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme-div {
|
|
||||||
padding-left: 15px;
|
|
||||||
padding-top: 20px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btnTheme {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 0 6px 15px 0;
|
|
||||||
padding: 4px;
|
|
||||||
border: 1px solid #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btnTheme img {
|
|
||||||
width: 80px;
|
|
||||||
height: 50px;
|
|
||||||
border: 1px solid #f2f2f2;
|
|
||||||
background: #F2F2F2;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btnTheme:hover, .btnTheme.active {
|
|
||||||
border-color: #5FB878;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-menu-item {
|
|
||||||
display: block;
|
|
||||||
height: 50px;
|
|
||||||
line-height: 50px;
|
|
||||||
font-size: 16px;
|
|
||||||
border-bottom: 1px solid #e8e8e8;
|
|
||||||
color: #333;
|
|
||||||
padding: 0px 25px;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-menu-item:first-child {
|
|
||||||
border-top: 1px solid #e8e8e8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-menu-item:hover {
|
|
||||||
background: #F2F2F2;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-menu-item .layui-icon {
|
|
||||||
padding-right: 10px;
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-menu-item:after {
|
|
||||||
content: "\e602";
|
|
||||||
font-family: layui-icon !important;
|
|
||||||
position: absolute;
|
|
||||||
right: 16px;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.more-menu-item.no-icon:after {
|
|
||||||
content: "";
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 设置表单样式 */
|
|
||||||
.set-item-label {
|
|
||||||
display: inline-block;
|
|
||||||
height: 38px;
|
|
||||||
line-height: 38px;
|
|
||||||
padding-left: 20px;
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.set-item-ctrl {
|
|
||||||
display: inline-block;
|
|
||||||
height: 38px;
|
|
||||||
line-height: 38px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.set-item-ctrl > * {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
|
|
||||||
<!-- 加载动画 -->
|
|
||||||
<div class="page-loading">
|
|
||||||
<div class="ball-loader">
|
|
||||||
<span></span><span></span><span></span><span></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-card-header">设置主题</div>
|
|
||||||
<div class="layui-card-body">
|
|
||||||
<!-- 主题列表 -->
|
|
||||||
<div class="theme-div"></div>
|
|
||||||
|
|
||||||
<!-- 导航 -->
|
|
||||||
<div class="more-menu">
|
|
||||||
<a class="more-menu-item" href="https://gitee.com/jaguarjack/catchAdmin" target="_blank">
|
|
||||||
<i class="layui-icon layui-icon-read" style="font-size: 19px;"></i> Git 地址
|
|
||||||
</a>
|
|
||||||
<a class="more-menu-item" href="https://catchadmin.com" target="_blank">
|
|
||||||
<i class="layui-icon layui-icon-tabs" style="font-size: 16px;"></i> 官网
|
|
||||||
</a>
|
|
||||||
<!--<a class="more-menu-item" href="https://demo.easyweb.vip/theme" target="_blank">
|
|
||||||
<i class="layui-icon layui-icon-theme"></i> 主题生成器
|
|
||||||
</a>-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- 控制开关 -->
|
|
||||||
<div class="layui-form" style="margin: 25px 0;">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="set-item-label">页 脚:</label>
|
|
||||||
<div class="set-item-ctrl">
|
|
||||||
<input id="setFooter" lay-filter="setFooter" type="checkbox" lay-skin="switch" lay-text="开启|关闭">
|
|
||||||
</div>
|
|
||||||
<label class="set-item-label"> Tab 记忆:</label>
|
|
||||||
<div class="set-item-ctrl">
|
|
||||||
<input id="setTab" lay-filter="setTab" type="checkbox" lay-skin="switch" lay-text="开启|关闭">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="set-item-label">多标签:</label>
|
|
||||||
<div class="set-item-ctrl">
|
|
||||||
<input id="setMoreTab" lay-filter="setMoreTab" type="checkbox" lay-skin="switch" lay-text="开启|关闭">
|
|
||||||
</div>
|
|
||||||
<label class="set-item-label">切换刷新:</label>
|
|
||||||
<div class="set-item-ctrl">
|
|
||||||
<input id="setRefresh" lay-filter="setRefresh" type="checkbox" lay-skin="switch" lay-text="开启|关闭">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="set-item-label">导航箭头:</label>
|
|
||||||
<div class="set-item-ctrl">
|
|
||||||
<input lay-filter="navArrow" type="radio" value="" title="默认" name="navArrow">
|
|
||||||
<input lay-filter="navArrow" type="radio" value="arrow2" title="箭头" name="navArrow">
|
|
||||||
<input lay-filter="navArrow" type="radio" value="arrow3" title="加号" name="navArrow">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_LIBS__/layui/layui.js"></script>
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_JS__/common.js?v=315"></script>
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var leftNav = '.layui-layout-admin>.layui-side>.layui-side-scroll>.layui-nav';
|
|
||||||
var mainTab = '.layui-body>.layui-tab[lay-filter="admin-pagetabs"]';
|
|
||||||
|
|
||||||
var themes = [
|
|
||||||
{title: '黑白主题', theme: 'admin'},
|
|
||||||
{title: '黑色主题', theme: 'black'},
|
|
||||||
{title: '蓝色主题', theme: 'blue'},
|
|
||||||
{title: '藏青主题', theme: 'cyan'},
|
|
||||||
{title: '黄色主题', theme: 'yellow'},
|
|
||||||
{title: '绿色主题', theme: 'green'},
|
|
||||||
{title: '粉红主题', theme: 'pink'},
|
|
||||||
{title: '紫白主题', theme: 'purple-white'},
|
|
||||||
{title: '紫色主题', theme: 'purple'},
|
|
||||||
{title: '白色主题', theme: 'white'},
|
|
||||||
{title: '红白主题', theme: 'red-white'},
|
|
||||||
{title: '红色主题', theme: 'red'}
|
|
||||||
];
|
|
||||||
for (var i = 0; i < themes.length; i++) {
|
|
||||||
var str = '<div class="btnTheme" theme="theme-' + themes[i].theme + '" title="' + themes[i].title + '">';
|
|
||||||
str += ' <img src="__CATCH_ADMIN_MODULE__/theme/img/theme-' + themes[i].theme + '.png">';
|
|
||||||
str += ' </div>';
|
|
||||||
$('.theme-div').append(str)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 切换主题
|
|
||||||
var mTheme = layui.data(admin.tableName).theme;
|
|
||||||
$('.btnTheme[theme=' + (mTheme ? mTheme : admin.defaultTheme) + ']').addClass('active');
|
|
||||||
$('.btnTheme').click(function () {
|
|
||||||
$('.btnTheme').removeClass('active');
|
|
||||||
$(this).addClass('active');
|
|
||||||
admin.changeTheme($(this).attr('theme'));
|
|
||||||
});
|
|
||||||
|
|
||||||
// 关闭/开启页脚
|
|
||||||
var openFooter = layui.data(admin.tableName).openFooter;
|
|
||||||
$('#setFooter').prop('checked', openFooter == undefined ? true : openFooter);
|
|
||||||
form.on('switch(setFooter)', function (data) {
|
|
||||||
var checked = data.elem.checked;
|
|
||||||
layui.data(admin.tableName, {key: 'openFooter', value: checked});
|
|
||||||
checked ? top.layui.jquery('body.layui-layout-body').removeClass('close-footer') : top.layui.jquery('body.layui-layout-body').addClass('close-footer');
|
|
||||||
});
|
|
||||||
|
|
||||||
// 关闭/开启Tab记忆功能
|
|
||||||
$('#setTab').prop('checked', top.layui.index.cacheTab);
|
|
||||||
form.on('switch(setTab)', function (data) {
|
|
||||||
top.layui.index.setTabCache(data.elem.checked);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 切换Tab自动刷新
|
|
||||||
var tabAutoRefresh = layui.data(admin.tableName).tabAutoRefresh;
|
|
||||||
$('#setRefresh').prop('checked', tabAutoRefresh == undefined ? false : tabAutoRefresh);
|
|
||||||
form.on('switch(setRefresh)', function (data) {
|
|
||||||
var checked = data.elem.checked;
|
|
||||||
layui.data(admin.tableName, {key: 'tabAutoRefresh', value: checked});
|
|
||||||
checked ? top.layui.jquery(mainTab).attr('lay-autoRefresh', 'true') : top.layui.jquery(mainTab).removeAttr('lay-autoRefresh');
|
|
||||||
});
|
|
||||||
|
|
||||||
// 关闭/开启多标签
|
|
||||||
var openTab = layui.data(admin.tableName).openTab;
|
|
||||||
$('#setMoreTab').prop('checked', openTab == undefined ? top.layui.index.pageTabs : openTab);
|
|
||||||
form.on('switch(setMoreTab)', function (data) {
|
|
||||||
var checked = data.elem.checked;
|
|
||||||
layui.data(admin.tableName, {key: 'openTab', value: checked});
|
|
||||||
admin.putTempData('indexTabs', undefined); // 清除缓存的Tab
|
|
||||||
top.location.reload();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 导航小三角
|
|
||||||
var navArrow = layui.data(admin.tableName).navArrow;
|
|
||||||
if (navArrow == undefined) {
|
|
||||||
var $sideNav = top.layui.jquery('.layui-side .layui-nav-tree');
|
|
||||||
navArrow = $sideNav.hasClass('arrow2') ? 'arrow2' : $sideNav.hasClass('arrow3') ? 'arrow3' : '';
|
|
||||||
}
|
|
||||||
$('[name="navArrow"][value="' + (navArrow ? navArrow : '') + '"]').prop('checked', 'true');
|
|
||||||
form.on('radio(navArrow)', function (data) {
|
|
||||||
layui.data(admin.tableName, {key: 'navArrow', value: data.value});
|
|
||||||
top.layui.jquery(leftNav).removeClass('arrow2 arrow3');
|
|
||||||
data.value && top.layui.jquery(leftNav).addClass(data.value);
|
|
||||||
});
|
|
||||||
|
|
||||||
form.render('checkbox');
|
|
||||||
form.render('radio');
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,130 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8"/>
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
||||||
<title>登录</title>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_LIBS__/layui/css/layui.css"/>
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_CSS__/login.css?v=315">
|
|
||||||
<link rel="stylesheet" href="__CATCH_ADMIN_MODULE__/admin.css?v=315">
|
|
||||||
<!--[if lt IE 9]>
|
|
||||||
<script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
|
|
||||||
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
|
|
||||||
<![endif]-->
|
|
||||||
<script>
|
|
||||||
if (window != top) {
|
|
||||||
top.location.replace(location.href);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
.captcha {
|
|
||||||
width: 114px;
|
|
||||||
height: 38px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="login-wrapper">
|
|
||||||
<div class="login-header">
|
|
||||||
<img src="__CATCH_ADMIN_IMAGES__/logo.png"> CatchAdmin 后台管理系统
|
|
||||||
</div>
|
|
||||||
<div class="login-body">
|
|
||||||
<div class="layui-card">
|
|
||||||
<div class="layui-card-header">
|
|
||||||
<i class="layui-icon layui-icon-engine"></i> 用户登录
|
|
||||||
</div>
|
|
||||||
<form class="layui-card-body layui-form layui-form-pane">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-username"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="email" type="text" placeholder="邮箱" class="layui-input"
|
|
||||||
lay-verType="tips" lay-verify="required|email" required/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-password"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input name="password" type="password" placeholder="密码" class="layui-input"
|
|
||||||
lay-verType="tips" lay-verify="required" required/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<label class="layui-form-label"><i class="layui-icon layui-icon-vercode"></i></label>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<div class="layui-row inline-block">
|
|
||||||
<div class="layui-col-xs7">
|
|
||||||
<input name="captcha" type="text" placeholder="验证码" class="layui-input"
|
|
||||||
autocomplete="off" lay-verType="tips" lay-verify="required" required/>
|
|
||||||
</div>
|
|
||||||
<div class="layui-col-xs5" style="padding-left: 6px;">
|
|
||||||
<img src="{:url('catch/captcha')}" alt="captcha" class="captcha" onclick="this.src = this.src + '?t=' + (new Date).getTime();"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<!--<a href="javascript:;" class="layui-link">帐号注册</a>-->
|
|
||||||
<!--<a href="javascript:;" class="layui-link pull-right">忘记密码?</a>-->
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<button lay-filter="login-submit" class="layui-btn layui-btn-fluid" lay-submit>登 录</button>
|
|
||||||
</div>
|
|
||||||
<!--<div class="layui-form-item login-other">
|
|
||||||
<label>第三方登录</label>
|
|
||||||
<a href="javascript:;"><i class="layui-icon layui-icon-login-qq"></i></a>
|
|
||||||
<a href="javascript:;"><i class="layui-icon layui-icon-login-wechat"></i></a>
|
|
||||||
<a href="javascript:;"><i class="layui-icon layui-icon-login-weibo"></i></a>
|
|
||||||
</div>-->
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="login-footer">
|
|
||||||
<p>© 2015 ~ {:date('Y', time())} @catchAdmin 版权所有</p>
|
|
||||||
<!--<p>
|
|
||||||
<span><a href="https://easyweb.vip" target="_blank">获取授权</a></span>
|
|
||||||
<span><a href="https://easyweb.vip/doc/" target="_blank">开发文档</a></span>
|
|
||||||
<span><a href="https://demo.easyweb.vip/spa/" target="_blank">单页面版</a></span>
|
|
||||||
</p>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- js部分 -->
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_LIBS__/layui/layui.js"></script>
|
|
||||||
<script type="text/javascript" src="__CATCH_ADMIN_JS__/common.js?v=315"></script>
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
|
|
||||||
// 表单提交
|
|
||||||
form.on('submit(login-submit)', function (obj) {
|
|
||||||
$.ajax({
|
|
||||||
url: "{:url('login')}",
|
|
||||||
type: 'post',
|
|
||||||
data: obj.field,
|
|
||||||
success: function(response) {
|
|
||||||
if (response.code === 10000) {
|
|
||||||
layer.msg(response.msg, {
|
|
||||||
icon: 1,
|
|
||||||
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
|
||||||
}, function () {
|
|
||||||
//do something
|
|
||||||
window.location.href = '/';
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
layer.msg(response.msg, {
|
|
||||||
icon: 2,
|
|
||||||
time: 2000 //2秒关闭(如果不配置,默认是3秒)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,22 +0,0 @@
|
|||||||
{$form|raw}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin', 'formX'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var mUser = admin.getLayerData('#permission'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
form.render();
|
|
||||||
// 回显数据
|
|
||||||
form.val('role', mUser);
|
|
||||||
// 表单提交事件
|
|
||||||
form.on('submit(submitPermission)', function (data) {
|
|
||||||
admin.req('{:url("permission")}', data.field, function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
admin.putLayerData('formOk', true, '#permission'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
admin.closeDialog('#permission'); // 关闭页面层弹窗
|
|
||||||
}, 'post');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,22 +0,0 @@
|
|||||||
{$form|raw}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin', 'formX'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var mUser = admin.getLayerData('#permission'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
form.render();
|
|
||||||
// 回显数据
|
|
||||||
form.val('permission', mUser);
|
|
||||||
// 表单提交事件
|
|
||||||
form.on('submit(submitPermission)', function (data) {
|
|
||||||
admin.req('permission/'+ "{$permission_id}", data.field, function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
admin.putLayerData('formOk', true, '#permission'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
admin.closeDialog('#permission'); // 关闭页面层弹窗
|
|
||||||
}, 'put');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,200 +0,0 @@
|
|||||||
{extend name="$layout"}
|
|
||||||
{block name="title"}角色管理{/block}
|
|
||||||
{block name="search"}
|
|
||||||
<div class="layui-form toolbar">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<!--<div class="layui-inline">
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<input id="edtSearchAuth" class="layui-input" type="text" placeholder="输入角色名称"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<button id="btnSearchAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索
|
|
||||||
</button>-->
|
|
||||||
<button id="btnAddAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button>
|
|
||||||
<!--</div>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="table"}
|
|
||||||
<table class="layui-table" id="tablePermission" lay-filter="tablePermission"></table>
|
|
||||||
<!-- 表格操作列 -->
|
|
||||||
<script type="text/html" id="tableBarAuth">
|
|
||||||
{:editButton()}
|
|
||||||
{:addButton('新增子菜单')}
|
|
||||||
{:deleteButton()}
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'table', 'admin', 'util', 'treeTable'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var table = layui.table;
|
|
||||||
var util = layui.util;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var treeTable = layui.treeTable;
|
|
||||||
|
|
||||||
var treeTb = treeTable.render({
|
|
||||||
tree: {
|
|
||||||
arrowType: 'arrow2',
|
|
||||||
iconIndex: 1, // 折叠图标显示在第几列
|
|
||||||
idName: 'id', // 自定义id字段的名称
|
|
||||||
childName: 'children', // 自定义标识是否还有子节点的字段名称
|
|
||||||
pidName: 'parent_id',
|
|
||||||
isPidData: true,
|
|
||||||
getIcon: function(d) { // 自定义图标
|
|
||||||
// d是当前行的数据
|
|
||||||
if (d.children.length) { // 判断是否有子集
|
|
||||||
return '<i class="ew-tree-icon ew-tree-icon-folder"></i>';
|
|
||||||
} else {
|
|
||||||
return '<i class="ew-tree-icon ew-tree-icon-file"></i>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
elem: '#tablePermission',
|
|
||||||
cellMinWidth: 100,
|
|
||||||
cols: [
|
|
||||||
{type: 'numbers', title: '#'},
|
|
||||||
{field: 'permission_name', title: '菜单名称', minWidth: 200},
|
|
||||||
{field: 'route', title: '菜单路由', templet: function (d) {
|
|
||||||
return escapeChars(d.route);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{field: 'method', title: '请求方法', width: 90},
|
|
||||||
{field: 'permission_mark', title: '权限标识'},
|
|
||||||
{field: 'type', title: '菜单类型', templet: function (d) {
|
|
||||||
return d.type == 1 ? '<button class="layui-btn layui-btn-primary layui-btn-xs">菜单</button>' :
|
|
||||||
'<button class="layui-btn layui-btn-primary layui-btn-xs">按钮</button>'
|
|
||||||
}, width: 90, align: 'center'
|
|
||||||
},
|
|
||||||
{field: 'sort', title: '排序', width:60, align: 'center'},
|
|
||||||
{
|
|
||||||
field: 'created_at', sort: true, templet: function (d) {
|
|
||||||
return util.toDateString(d.created_at);
|
|
||||||
}, title: '创建时间', maxWidth: 100
|
|
||||||
},
|
|
||||||
{templet: '#tableBarAuth', title: '操作', align: 'center', minWidth: 150}
|
|
||||||
],
|
|
||||||
reqData: function(data, callback) {
|
|
||||||
// 在这里写ajax请求,通过callback方法回调数据
|
|
||||||
$.get('{:url("permissions")}', function (res) {
|
|
||||||
callback(res.data); // 参数是数组类型
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 添加按钮点击事件
|
|
||||||
$('#btnAddAuth').click(function () {
|
|
||||||
showEditModel();
|
|
||||||
});
|
|
||||||
function escapeChars(str) {
|
|
||||||
str = str.replace(/&/g, '&');
|
|
||||||
str = str.replace(/</g, '<');
|
|
||||||
str = str.replace(/>/g, '>');
|
|
||||||
str = str.replace(/'/g, '´');
|
|
||||||
str = str.replace(/"/g, '"');
|
|
||||||
str = str.replace(/\|/g, '¦');
|
|
||||||
return str;
|
|
||||||
}
|
|
||||||
// 工具条点击事件
|
|
||||||
treeTable.on('tool(tablePermission)', function (obj) {
|
|
||||||
var data = obj.data;
|
|
||||||
var layEvent = obj.event;
|
|
||||||
if (layEvent === 'edit') { // 修改
|
|
||||||
showEditModel(data);
|
|
||||||
} else if (layEvent === 'del') { // 删除
|
|
||||||
doDel(obj);
|
|
||||||
} else {
|
|
||||||
showEditModel(data, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
treeTable.on('row(tablePermission)', function(obj){
|
|
||||||
console.log(obj.value); //得到修改后的值
|
|
||||||
console.log(obj.field); //当前编辑的字段名
|
|
||||||
console.log(obj.data); //所在行的所有相关数据
|
|
||||||
});
|
|
||||||
// 删除
|
|
||||||
function doDel(obj) {
|
|
||||||
layer.confirm('确定要删除“' + obj.data.permission_name + '”吗?', {
|
|
||||||
skin: 'layui-layer-admin',
|
|
||||||
shade: .1
|
|
||||||
}, function (index) {
|
|
||||||
layer.close(index);
|
|
||||||
admin.req('/permission/'+ obj.data.id, {}, function (response) {
|
|
||||||
if (response.code === 10000) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
obj.del()
|
|
||||||
} else {
|
|
||||||
layer.msg(response.msg, {icon: 2});
|
|
||||||
}
|
|
||||||
}, 'delete');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示表单弹窗
|
|
||||||
// 显示表单弹窗
|
|
||||||
function showEditModel(permission, addPermission= false) {
|
|
||||||
var layIndex = admin.open({
|
|
||||||
title: addPermission ? '新增子菜单' : ((permission ? '修改' : '添加') + '菜单'),
|
|
||||||
url: addPermission ? '/permission/create' + '?id='+permission.id : (permission ? '/permission/'+permission.id + '/edit': '/permission/create'),
|
|
||||||
data: addPermission ? '' : permission, // 传递数据到表单页面
|
|
||||||
end: function () {
|
|
||||||
if (admin.getLayerData(layIndex, 'formOk')) { // 判断表单操作成功标识
|
|
||||||
if (addPermission) {
|
|
||||||
treeTb.reload();
|
|
||||||
setTimeout(function () {
|
|
||||||
treeTb.expand(permission.id)
|
|
||||||
}, 200)
|
|
||||||
} else {
|
|
||||||
if (permission) {
|
|
||||||
treeTb.reload();
|
|
||||||
setTimeout(function () {
|
|
||||||
treeTb.expand(permission.id)
|
|
||||||
}, 200)
|
|
||||||
} else {
|
|
||||||
treeTb.reload(); // 成功刷新表格
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
success: function (layero, dIndex) {
|
|
||||||
// 弹窗超出范围不出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 搜索按钮点击事件
|
|
||||||
$('#btnSearchAuth').click(function () {
|
|
||||||
$('#edtSearchAuth').removeClass('layui-form-danger');
|
|
||||||
var keyword = $('#edtSearchAuth').val();
|
|
||||||
var $tds = $('#tableAuth').next('.treeTable').find('.layui-table-body tbody tr td');
|
|
||||||
$tds.css('background-color', 'transparent');
|
|
||||||
if (!keyword) {
|
|
||||||
layer.tips('请输入关键字', '#edtSearchAuth', {tips: [1, '#ff4c4c']});
|
|
||||||
$('#edtSearchAuth').addClass('layui-form-danger');
|
|
||||||
$('#edtSearchAuth').focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var searchCount = 0;
|
|
||||||
$tds.each(function () {
|
|
||||||
if ($(this).text().indexOf(keyword) >= 0) {
|
|
||||||
$(this).css('background-color', '#FAE6A0');
|
|
||||||
if (searchCount == 0) {
|
|
||||||
$('body,html').stop(true);
|
|
||||||
$('body,html').animate({scrollTop: $(this).offset().top - 150}, 500);
|
|
||||||
}
|
|
||||||
searchCount++;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (searchCount == 0) {
|
|
||||||
layer.msg("没有匹配结果", {icon: 5, anim: 6});
|
|
||||||
} else {
|
|
||||||
treetable.expandAll('#tableAuth');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
@ -1,35 +0,0 @@
|
|||||||
{$form|raw}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin', 'formX', 'authtree'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var authtree = layui.authtree;
|
|
||||||
var mUser = admin.getLayerData('#role'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
// 回显数据
|
|
||||||
form.val('role', mUser);
|
|
||||||
// 表单提交事件
|
|
||||||
form.on('submit(submitRole)', function (data) {
|
|
||||||
admin.req('{:url("role")}', data.field, function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
admin.putLayerData('formOk', true, '#role'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
admin.closeDialog('#role'); // 关闭页面层弹窗
|
|
||||||
}, 'post');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
admin.req('{:url("/role/get/permissions")}',{parent_id:"{$parent_id}"}, function (response) {
|
|
||||||
authtree.render('#permissions', response.data.permissions,{
|
|
||||||
inputname: 'permissionids[]',
|
|
||||||
layfilter: 'lay-check-auth',
|
|
||||||
autowidth: true,
|
|
||||||
nameKey: 'permission_name',
|
|
||||||
valueKey: 'id',
|
|
||||||
childKey: 'children',
|
|
||||||
collapseLeafNode: true,
|
|
||||||
theme: 'auth-skin-default',
|
|
||||||
});
|
|
||||||
})
|
|
||||||
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,36 +0,0 @@
|
|||||||
{$form|raw}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin', 'formX', 'authtree'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var mUser = admin.getLayerData('#role'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
var authtree = layui.authtree;
|
|
||||||
|
|
||||||
// 回显数据
|
|
||||||
form.val('role', mUser);
|
|
||||||
admin.req('{:url("/role/get/permissions")}',{role_id:"{$role_id}", parent_id:"{$parent_id}"}, function (response) {
|
|
||||||
authtree.render('#permissions', response.data.permissions,{
|
|
||||||
inputname: 'permissionids[]',
|
|
||||||
layfilter: 'lay-check-auth',
|
|
||||||
autowidth: true,
|
|
||||||
nameKey: 'permission_name',
|
|
||||||
valueKey: 'id',
|
|
||||||
childKey: 'children',
|
|
||||||
collapseLeafNode: true,
|
|
||||||
theme: 'auth-skin-default',
|
|
||||||
checkedKey: response.data.hasPermissions
|
|
||||||
});
|
|
||||||
})
|
|
||||||
// 表单提交事件
|
|
||||||
form.on('submit(submitRole)', function (data) {
|
|
||||||
admin.req('role/'+ "{$role_id}", data.field, function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
admin.putLayerData('formOk', true, '#role'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
admin.closeDialog('#role'); // 关闭页面层弹窗
|
|
||||||
}, 'put');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,178 +0,0 @@
|
|||||||
{extend name="$layout"}
|
|
||||||
{block name="title"}角色管理{/block}
|
|
||||||
{block name="search"}
|
|
||||||
<div class="layui-form toolbar">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<!--<div class="layui-inline">
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<input id="edtSearchAuth" class="layui-input" type="text" placeholder="输入角色名称"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<button id="btnSearchAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索
|
|
||||||
</button>-->
|
|
||||||
<button id="btnAddAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button>
|
|
||||||
<!--</div>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="table"}
|
|
||||||
<table class="layui-table" id="tableRole"></table>
|
|
||||||
<!-- 表格操作列 -->
|
|
||||||
<script type="text/html" id="tableBarAuth">
|
|
||||||
{:editButton()}
|
|
||||||
{:addButton('新增子角色')}
|
|
||||||
{:deleteButton()}
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'table', 'admin', 'util', 'treeTable'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var table = layui.table;
|
|
||||||
var util = layui.util;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var treeTable = layui.treeTable;
|
|
||||||
|
|
||||||
var treeTb = treeTable.render({
|
|
||||||
tree: {
|
|
||||||
arrowType: 'arrow2',
|
|
||||||
iconIndex: 1, // 折叠图标显示在第几列
|
|
||||||
idName: 'id', // 自定义id字段的名称
|
|
||||||
childName: 'children', // 自定义标识是否还有子节点的字段名称
|
|
||||||
pidName: 'parent_id',
|
|
||||||
isPidData: true,
|
|
||||||
getIcon: function(d) { // 自定义图标
|
|
||||||
// d是当前行的数据
|
|
||||||
if (d.children.length) { // 判断是否有子集
|
|
||||||
return '<i class="ew-tree-icon ew-tree-icon-folder"></i>';
|
|
||||||
} else {
|
|
||||||
return '<i class="ew-tree-icon ew-tree-icon-file"></i>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
elem: '#tableRole',
|
|
||||||
cellMinWidth: 100,
|
|
||||||
cols: [
|
|
||||||
{type: 'numbers', title: '#'},
|
|
||||||
{field: 'role_name', title: '角色名称', minWidth: 100},
|
|
||||||
{field: 'description', title: '角色描述'},
|
|
||||||
{
|
|
||||||
field: 'created_at', sort: true, templet: function (d) {
|
|
||||||
return util.toDateString(d.created_at);
|
|
||||||
}, title: '创建时间', maxWidth: 100
|
|
||||||
},
|
|
||||||
{templet: '#tableBarAuth', title: '操作', align: 'center', minWidth: 120}
|
|
||||||
],
|
|
||||||
reqData: function(data, callback) {
|
|
||||||
// 在这里写ajax请求,通过callback方法回调数据
|
|
||||||
$.get('{:url("roles")}', function (res) {
|
|
||||||
callback(res.data); // 参数是数组类型
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 添加按钮点击事件
|
|
||||||
$('#btnAddAuth').click(function () {
|
|
||||||
showEditModel();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 工具条点击事件
|
|
||||||
treeTable.on('tool(tableRole)', function (obj) {
|
|
||||||
var data = obj.data;
|
|
||||||
var layEvent = obj.event;
|
|
||||||
if (layEvent === 'edit') { // 修改
|
|
||||||
showEditModel(data);
|
|
||||||
} else if (layEvent === 'del') { // 删除
|
|
||||||
doDel(obj);
|
|
||||||
} else {
|
|
||||||
showEditModel(data, true);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 删除
|
|
||||||
function doDel(obj) {
|
|
||||||
layer.confirm('确定要删除“' + obj.data.role_name + '”吗?', {
|
|
||||||
skin: 'layui-layer-admin',
|
|
||||||
shade: .1
|
|
||||||
}, function (index) {
|
|
||||||
layer.close(index);
|
|
||||||
admin.req('/role/'+ obj.data.id, {}, function (response) {
|
|
||||||
if (response.code === 10000) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
obj.del()
|
|
||||||
} else {
|
|
||||||
layer.msg(response.msg, {icon: 2});
|
|
||||||
}
|
|
||||||
}, 'delete');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 显示表单弹窗
|
|
||||||
// 显示表单弹窗
|
|
||||||
function showEditModel(mRole, addRole = false) {
|
|
||||||
var layIndex = admin.open({
|
|
||||||
title: addRole ? '新增子角色' : ((mRole ? '修改' : '添加') + '角色'),
|
|
||||||
url: addRole ? '/role/create' + '?id='+mRole.id : (mRole ? '/role/'+mRole.id + '/edit': '/role/create'),
|
|
||||||
data: addRole ? '' : mRole, // 传递数据到表单页面
|
|
||||||
area: '700px',
|
|
||||||
end: function () {
|
|
||||||
if (admin.getLayerData(layIndex, 'formOk')) { // 判断表单操作成功标识
|
|
||||||
if (addRole) {
|
|
||||||
treeTb.reload();
|
|
||||||
setTimeout(function () {
|
|
||||||
treeTb.expand(mRole.id)
|
|
||||||
}, 200)
|
|
||||||
} else {
|
|
||||||
if (mRole) {
|
|
||||||
treeTb.reload();
|
|
||||||
setTimeout(function () {
|
|
||||||
treeTb.expand(mRole.id)
|
|
||||||
}, 200)
|
|
||||||
} else {
|
|
||||||
treeTb.reload(); // 成功刷新表格
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
success: function (layero, dIndex) {
|
|
||||||
// 弹窗超出范围不出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 搜索按钮点击事件
|
|
||||||
$('#btnSearchAuth').click(function () {
|
|
||||||
$('#edtSearchAuth').removeClass('layui-form-danger');
|
|
||||||
var keyword = $('#edtSearchAuth').val();
|
|
||||||
var $tds = $('#tableAuth').next('.treeTable').find('.layui-table-body tbody tr td');
|
|
||||||
$tds.css('background-color', 'transparent');
|
|
||||||
if (!keyword) {
|
|
||||||
layer.tips('请输入关键字', '#edtSearchAuth', {tips: [1, '#ff4c4c']});
|
|
||||||
$('#edtSearchAuth').addClass('layui-form-danger');
|
|
||||||
$('#edtSearchAuth').focus();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var searchCount = 0;
|
|
||||||
$tds.each(function () {
|
|
||||||
if ($(this).text().indexOf(keyword) >= 0) {
|
|
||||||
$(this).css('background-color', '#FAE6A0');
|
|
||||||
if (searchCount == 0) {
|
|
||||||
$('body,html').stop(true);
|
|
||||||
$('body,html').animate({scrollTop: $(this).offset().top - 150}, 500);
|
|
||||||
}
|
|
||||||
searchCount++;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (searchCount == 0) {
|
|
||||||
layer.msg("没有匹配结果", {icon: 5, anim: 6});
|
|
||||||
} else {
|
|
||||||
treetable.expandAll('#tableAuth');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
@ -1,113 +0,0 @@
|
|||||||
{extend name="$layout"}
|
|
||||||
{block name="title"}登录日志{/block}
|
|
||||||
{block name="search"}
|
|
||||||
<div class="layui-form toolbar">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<!--<div class="layui-inline">
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<input id="edtSearchAuth" class="layui-input" type="text" placeholder="输入角色名称"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<button id="btnSearchAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索
|
|
||||||
</button>-->
|
|
||||||
<button id="optimize" class="layui-btn icon-btn"><i class="layui-icon"></i>优化</button>
|
|
||||||
<button id="backup" class="layui-btn layui-btn-normal icon-btn"><i class="layui-icon"></i>备份</button>
|
|
||||||
<!--</div>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="table"}
|
|
||||||
<table class="layui-table" id="database" lay-filter="database"></table>
|
|
||||||
<!-- 表格操作列 -->cl
|
|
||||||
<script type="text/html" id="operate">
|
|
||||||
{:editButton('查看', 'view')}
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'table', 'util', 'admin'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var table = layui.table;
|
|
||||||
var admin = layui.admin;
|
|
||||||
|
|
||||||
table.render({
|
|
||||||
elem: '#database',
|
|
||||||
url: '{:url("tables")}',
|
|
||||||
page: true,
|
|
||||||
response: {
|
|
||||||
statusCode: 10000,
|
|
||||||
},
|
|
||||||
// toolbar: true,
|
|
||||||
cellMinWidth: 100,
|
|
||||||
cols: [[
|
|
||||||
{type: 'checkbox'},
|
|
||||||
{field: 'Name', title: '表名'},
|
|
||||||
{field: 'Engine', title: '表引擎'},
|
|
||||||
{field: 'Collation', title: '数据集'},
|
|
||||||
{field: 'Rows',title: '数据行数'},
|
|
||||||
{field: 'Index_length', title: '索引大小', templet: function (d) {
|
|
||||||
if (d.Index_length < (1024 * 1024)) {
|
|
||||||
return Math.round(d.Index_length / 1024) + 'KB'
|
|
||||||
} else {
|
|
||||||
return Math.round(d.Index_length/(1024 * 1024)) + 'MB'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{field: 'Data_length', title: '数据大小', templet: function (d) {
|
|
||||||
if (d.Data_length < (1024 * 1024)) {
|
|
||||||
return Math.round(d.Data_length / 1024) + 'KB'
|
|
||||||
} else {
|
|
||||||
return Math.round(d.Data_length/(1024 * 1024)) + 'MB'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{field: 'Create_time', title: '创建时间'},
|
|
||||||
{field: 'Comment', title: '表注释'},
|
|
||||||
{align: 'center', toolbar: '#operate', title: '操作'}
|
|
||||||
]],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 工具条点击事件
|
|
||||||
table.on('tool(database)', function (obj) {
|
|
||||||
if (obj.event === 'view') { // 查看
|
|
||||||
admin.open({
|
|
||||||
title: '查看表结构',
|
|
||||||
url: '/table/view/'+obj.data.Name,
|
|
||||||
area: '900px',
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#optimize').click(function () {
|
|
||||||
var checkRows = table.checkStatus('database');
|
|
||||||
if (checkRows.data.length == 0) {
|
|
||||||
layer.msg('选择需要优化的表', {icon: 2});
|
|
||||||
} else {
|
|
||||||
var name = [];
|
|
||||||
checkRows.data.map(function(item,index){
|
|
||||||
name.push(item.Name)
|
|
||||||
});
|
|
||||||
admin.req("{:url('table/optimize')}", {data:name},function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1})
|
|
||||||
}, 'post')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#backup').click(function () {
|
|
||||||
var checkRows = table.checkStatus('database');
|
|
||||||
if (checkRows.data.length == 0) {
|
|
||||||
layer.msg('选择需要备份的表', {icon: 2});
|
|
||||||
} else {
|
|
||||||
var name = [];
|
|
||||||
checkRows.data.map(function(item,index){
|
|
||||||
name.push(item.Name)
|
|
||||||
});
|
|
||||||
admin.req("{:url('table/backup')}", {data:name},function (response) {
|
|
||||||
layer.msg(response.msg, {icon: response.code === 10000 ? 1 : 2})
|
|
||||||
}, 'post')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
@ -1,39 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<title>Title</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div style="padding: 10px">
|
|
||||||
<table class="layui-table">
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>字段</th>
|
|
||||||
<th>类型</th>
|
|
||||||
<th>字符集</th>
|
|
||||||
<th>Null</th>
|
|
||||||
<th>索引</th>
|
|
||||||
<th>默认值</th>
|
|
||||||
<th>权限</th>
|
|
||||||
<th>注释</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
{foreach $table as $field}
|
|
||||||
<tr>
|
|
||||||
<td>{$field['Field']}</td>
|
|
||||||
<td>{$field['Type']}</td>
|
|
||||||
<td>{$field['Collation']}</td>
|
|
||||||
<td>{$field['Null']}</td>
|
|
||||||
<td>{$field['Key']}</td>
|
|
||||||
<td>{$field['Default']}</td>
|
|
||||||
<td>{$field['Privileges']}</td>
|
|
||||||
<td>{$field['Comment']}</td>
|
|
||||||
</tr>
|
|
||||||
{/foreach}
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,68 +0,0 @@
|
|||||||
{extend name="$layout"}
|
|
||||||
{block name="title"}登录日志{/block}
|
|
||||||
{block name="search"}
|
|
||||||
<div class="layui-form toolbar">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-inline">
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<input id="edtSearchAuth" class="layui-input" type="text" placeholder="输入角色名称"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<button id="btnSearchAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索
|
|
||||||
</button>
|
|
||||||
<button id="empty" class="layui-btn icon-btn"><i class="layui-icon"></i>清空</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="table"}
|
|
||||||
<table class="layui-table" id="log"></table>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'table', 'util', 'admin'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var table = layui.table;
|
|
||||||
var util = layui.util;
|
|
||||||
var admin = layui.admin;
|
|
||||||
|
|
||||||
var t = table.render({
|
|
||||||
elem: '#log',
|
|
||||||
url: '{:url("log/login")}',
|
|
||||||
page: true,
|
|
||||||
response: {
|
|
||||||
statusCode: 10000,
|
|
||||||
},
|
|
||||||
// toolbar: true,
|
|
||||||
cellMinWidth: 100,
|
|
||||||
cols: [[
|
|
||||||
{type: 'id', title: '序号', field: 'id'},
|
|
||||||
{field: 'login_name', title: '登录名'},
|
|
||||||
{field: 'login_ip', title: '登录IP'},
|
|
||||||
{field: 'browser', title: '浏览器'},
|
|
||||||
{field: 'os', title: '操作系统'},
|
|
||||||
{field: 'status', title: '状态', templet: function (d) {
|
|
||||||
return d.status === 1 ?
|
|
||||||
'<button class="layui-btn layui-btn-xs">成功</button>' :
|
|
||||||
'<button class="layui-btn layui-btn-xs layui-btn-danger">失败</button>'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'login_at', templet: function (d) {
|
|
||||||
return util.toDateString(d.login_at);
|
|
||||||
}, title: '登录时间'
|
|
||||||
},
|
|
||||||
]],
|
|
||||||
});
|
|
||||||
$('#empty').click(function () {
|
|
||||||
layer.confirm('确定清空日志吗?', function () {
|
|
||||||
admin.req("{:url('loginLog/empty')}", {}, function (response) {
|
|
||||||
layer.msg(response.msg, {icon:1});
|
|
||||||
t.reload();
|
|
||||||
}, 'delete')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
@ -1,63 +0,0 @@
|
|||||||
{extend name="$layout"}
|
|
||||||
{block name="title"}操作日志{/block}
|
|
||||||
{block name="search"}
|
|
||||||
<div class="layui-form toolbar">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<!--<div class="layui-inline">
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<input id="edtSearchAuth" class="layui-input" type="text" placeholder="输入角色名称"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<button id="btnSearchAuth" class="layui-btn icon-btn"><i class="layui-icon"></i>搜索
|
|
||||||
</button>-->
|
|
||||||
<button id="empty" class="layui-btn icon-btn"><i class="layui-icon"></i>清空</button>
|
|
||||||
<!--</div>-->
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="table"}
|
|
||||||
<table class="layui-table" id="log"></table>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'table', 'util', 'admin'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var table = layui.table;
|
|
||||||
var util = layui.util;
|
|
||||||
var admin = layui.admin;
|
|
||||||
|
|
||||||
var t = table.render({
|
|
||||||
elem: '#log',
|
|
||||||
url: '{:url("log/operate")}',
|
|
||||||
page: true,
|
|
||||||
response: {
|
|
||||||
statusCode: 10000,
|
|
||||||
},
|
|
||||||
// toolbar: true,
|
|
||||||
cellMinWidth: 100,
|
|
||||||
cols: [[
|
|
||||||
{type: 'id', title: '序号', field: 'id'},
|
|
||||||
{field: 'module', title: '模块'},
|
|
||||||
{field: 'ip', title: 'IP'},
|
|
||||||
{field: 'operate', title: 'operate'},
|
|
||||||
{field: 'creator', title: '操作者'},
|
|
||||||
{field: 'method', title: '请求方法'},
|
|
||||||
{
|
|
||||||
field: 'created_at', sort: true, templet: function (d) {
|
|
||||||
return util.toDateString(d.created_at);
|
|
||||||
}, title: '创建时间'
|
|
||||||
},
|
|
||||||
]],
|
|
||||||
});
|
|
||||||
$('#empty').click(function () {
|
|
||||||
layer.confirm('确定清空日志吗?', function () {
|
|
||||||
admin.req("{:url('operateLog/empty')}", {}, function (response) {
|
|
||||||
layer.msg(response.msg, {icon:1});
|
|
||||||
t.reload();
|
|
||||||
}, 'delete')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
@ -1,38 +0,0 @@
|
|||||||
{$form|raw}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin', 'formX','authtree'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var authtree = layui.authtree;
|
|
||||||
var mUser = admin.getLayerData('#userForm'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
// 回显数据
|
|
||||||
form.val('userForm', mUser);
|
|
||||||
|
|
||||||
// 表单提交事件
|
|
||||||
form.on('submit(submitUser)', function (data) {
|
|
||||||
var url = mUser ? '{:url("user")}' : '{:url("user")}';
|
|
||||||
admin.req(url, data.field, function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
admin.putLayerData('formOk', true, '#userForm'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
admin.closeDialog('#userForm'); // 关闭页面层弹窗
|
|
||||||
}, 'post');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
admin.req('{:url("/user/get/roles")}',{}, function (response) {
|
|
||||||
authtree.render('#roles', response.data.roles,{
|
|
||||||
inputname: 'roleids[]',
|
|
||||||
layfilter: 'lay-check-auth',
|
|
||||||
autowidth: true,
|
|
||||||
nameKey: 'role_name',
|
|
||||||
valueKey: 'id',
|
|
||||||
childKey: 'children',
|
|
||||||
collapseLeafNode: true,
|
|
||||||
theme: 'auth-skin-default',
|
|
||||||
autochecked: false,
|
|
||||||
autoclose: false,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,40 +0,0 @@
|
|||||||
{$form|raw}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'admin', 'formX', 'authtree'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var admin = layui.admin;
|
|
||||||
var authtree = layui.authtree;
|
|
||||||
var mUser = admin.getLayerData('#userForm'); // 列表页面传递的数据,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
// 回显数据
|
|
||||||
form.val('userForm', mUser);
|
|
||||||
var uid = "{$uid}";
|
|
||||||
admin.req('{:url("/user/get/roles")}',{uid:uid}, function (response) {
|
|
||||||
authtree.render('#roles', response.data.roles, {
|
|
||||||
inputname: 'roleids[]',
|
|
||||||
primaryKey: 'id',
|
|
||||||
parentKey: 'parent_id',
|
|
||||||
layfilter: 'lay-check-auth',
|
|
||||||
autowidth: true,
|
|
||||||
nameKey: 'role_name',
|
|
||||||
valueKey: 'id',
|
|
||||||
childKey: 'children',
|
|
||||||
collapseLeafNode: true,
|
|
||||||
theme: 'auth-skin-default',
|
|
||||||
checkedKey: response.data.hasRoles,
|
|
||||||
autochecked: false,
|
|
||||||
autoclose: false,
|
|
||||||
});
|
|
||||||
});
|
|
||||||
// 表单提交事件
|
|
||||||
form.on('submit(submitUser)', function (data) {
|
|
||||||
admin.req('/user/' + uid, data.field, function (response) {
|
|
||||||
layer.msg(response.msg, {icon: 1});
|
|
||||||
admin.putLayerData('formOk', true, '#userForm'); // 设置操作成功的标识,#modelUserForm这个只要写弹窗内任意一个元素的id即可
|
|
||||||
admin.closeDialog('#userForm'); // 关闭页面层弹窗
|
|
||||||
}, 'put');
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
@ -1,194 +0,0 @@
|
|||||||
{extend name="$layout"}
|
|
||||||
{block name="title"}用户管理{/block}
|
|
||||||
{block name="search"}
|
|
||||||
<div class="layui-form toolbar">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label w-auto">用户名:</label>
|
|
||||||
<div class="layui-input-inline">
|
|
||||||
<input name="username" class="layui-input" type="text" placeholder="输入用户名"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label w-auto">邮箱:</label>
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<input name="email" class="layui-input" type="text" placeholder="输入邮箱"/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label w-auto">状态:</label>
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<select name="status">
|
|
||||||
<option value="">选择状态</option>
|
|
||||||
<option value="1">正常</option>
|
|
||||||
<option value="2">禁用</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline">
|
|
||||||
<label class="layui-form-label w-auto">回收站:</label>
|
|
||||||
<div class="layui-input-inline mr0">
|
|
||||||
<select name="trash">
|
|
||||||
<option value="">选择</option>
|
|
||||||
<option value="1">恢复数据</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-inline" style="padding-right: 110px;">
|
|
||||||
<button class="layui-btn icon-btn" lay-filter="formSubSearchUser" lay-submit>
|
|
||||||
<i class="layui-icon"></i>搜索
|
|
||||||
</button>
|
|
||||||
<button id="btnAddUser" class="layui-btn icon-btn"><i class="layui-icon"></i>添加</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/block}
|
|
||||||
{block name="table"}
|
|
||||||
<table class="layui-table" id="tableUser" lay-filter="tableUser"></table>
|
|
||||||
<!-- 表格操作列 -->
|
|
||||||
<script type="text/html" id="tableBarUser">
|
|
||||||
{:editButton()}
|
|
||||||
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="{{d.deleted_at ? 'recover' : 'del'}}">{{d.deleted_at ? '恢复' : '删除'}}</a>
|
|
||||||
</script>
|
|
||||||
<!-- 表格状态列 -->
|
|
||||||
<script type="text/html" id="tableStateUser">
|
|
||||||
<input type="checkbox" lay-filter="ckStateUser" value="{{d.id}}" lay-skin="switch"
|
|
||||||
lay-text="正常|禁用" {{d.status==1?'checked':''}}/>
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
||||||
{block name="script"}
|
|
||||||
<script>
|
|
||||||
layui.use(['layer', 'form', 'table', 'util', 'admin'], function () {
|
|
||||||
var $ = layui.jquery;
|
|
||||||
var layer = layui.layer;
|
|
||||||
var form = layui.form;
|
|
||||||
var table = layui.table;
|
|
||||||
var util = layui.util;
|
|
||||||
var admin = layui.admin;
|
|
||||||
|
|
||||||
// 渲染表格
|
|
||||||
var insTb = table.render({
|
|
||||||
elem: '#tableUser',
|
|
||||||
url: '{:url("users")}',
|
|
||||||
page: true,
|
|
||||||
response: {
|
|
||||||
statusCode: 10000,
|
|
||||||
},
|
|
||||||
toolbar: true,
|
|
||||||
cellMinWidth: 100,
|
|
||||||
cols: [[
|
|
||||||
{type: 'id', title: '#', field: 'id'},
|
|
||||||
{field: 'username', sort: true, title: '用户名'},
|
|
||||||
{field: 'email', sort: true, title: '邮箱'},
|
|
||||||
{field: 'status', sort: true, title: '状态', templet: '#tableStateUser'},
|
|
||||||
{
|
|
||||||
field: 'created_at', sort: true, templet: function (d) {
|
|
||||||
return util.toDateString(d.created_at);
|
|
||||||
}, title: '创建时间'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
field: 'updated_at', sort: true, templet: function (d) {
|
|
||||||
return util.toDateString(d.updated_at);
|
|
||||||
}, title: '更新时间'
|
|
||||||
},
|
|
||||||
{align: 'center', toolbar: '#tableBarUser', title: '操作', minWidth: 200}
|
|
||||||
]],
|
|
||||||
});
|
|
||||||
|
|
||||||
// 添加
|
|
||||||
$('#btnAddUser').click(function () {
|
|
||||||
showEditModel();
|
|
||||||
});
|
|
||||||
|
|
||||||
// 搜索
|
|
||||||
form.on('submit(formSubSearchUser)', function (data) {
|
|
||||||
insTb.reload({where: data.field}, 'data');
|
|
||||||
});
|
|
||||||
|
|
||||||
// 工具条点击事件
|
|
||||||
table.on('tool(tableUser)', function (obj) {
|
|
||||||
var data = obj.data;
|
|
||||||
var layEvent = obj.event;
|
|
||||||
if (layEvent === 'edit') { // 修改
|
|
||||||
showEditModel(data);
|
|
||||||
} else if (layEvent === 'del') { // 删除
|
|
||||||
doDel(data.id, data.username);
|
|
||||||
} else if (layEvent === 'reset') { // 重置密码
|
|
||||||
resetPsw(data.id, data.username);
|
|
||||||
} else if (layEvent === 'recover') {
|
|
||||||
recover(data.id, data.username);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
function recover(uid, username) {
|
|
||||||
layer.confirm('确定要恢复“' + username + '”吗?', {
|
|
||||||
skin: 'layui-layer-admin',
|
|
||||||
shade: .1
|
|
||||||
}, function (i) {
|
|
||||||
layer.close(i);
|
|
||||||
admin.req('/user/recover/'+ uid,{}, function(res){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
if (res.code == 10000) {
|
|
||||||
layer.msg(res.msg, {icon: 1});
|
|
||||||
insTb.reload({}, 'data');
|
|
||||||
} else {
|
|
||||||
layer.msg(res.msg, {icon: 2});
|
|
||||||
}
|
|
||||||
}, 'put');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// 显示表单弹窗
|
|
||||||
function showEditModel(mUser) {
|
|
||||||
var layIndex = admin.open({
|
|
||||||
title: (mUser ? '修改' : '添加') + '用户',
|
|
||||||
url: mUser ? '/user/'+mUser.id + '/edit':'/user/create',
|
|
||||||
data: mUser, // 传递数据到表单页面
|
|
||||||
area: '500px',
|
|
||||||
end: function () {
|
|
||||||
if (admin.getLayerData(layIndex, 'formOk')) { // 判断表单操作成功标识
|
|
||||||
insTb.reload(); // 成功刷新表格
|
|
||||||
}
|
|
||||||
},
|
|
||||||
success: function (layero, dIndex) {
|
|
||||||
// 弹窗超出范围不出现滚动条
|
|
||||||
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除
|
|
||||||
function doDel(userId, nickName) {
|
|
||||||
layer.confirm('确定要删除“' + nickName + '”吗?', {
|
|
||||||
skin: 'layui-layer-admin',
|
|
||||||
shade: .1
|
|
||||||
}, function (i) {
|
|
||||||
layer.close(i);
|
|
||||||
admin.req('/user/'+ userId,{}, function(res){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
if (res.code == 10000) {
|
|
||||||
layer.msg(res.msg, {icon: 1});
|
|
||||||
insTb.reload({}, 'data');
|
|
||||||
} else {
|
|
||||||
layer.msg(res.msg, {icon: 2});
|
|
||||||
}
|
|
||||||
}, 'delete');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改用户状态
|
|
||||||
form.on('switch(ckStateUser)', function (obj) {
|
|
||||||
admin.req('/user/switch/status/'+obj.value,{}, function(res){
|
|
||||||
layer.closeAll('loading');
|
|
||||||
if (res.code == 10000) {
|
|
||||||
layer.msg(res.msg, {icon: 1});
|
|
||||||
} else {
|
|
||||||
layer.msg(res.msg, {icon: 2});
|
|
||||||
$(obj.elem).prop('checked', !obj.elem.checked);
|
|
||||||
form.render('checkbox');
|
|
||||||
}
|
|
||||||
}, 'put');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
{/block}
|
|
Loading…
x
Reference in New Issue
Block a user